剧作家-如何访问测试功能之外的TestInfo ?



在剧作家中,是否有任何方法可以在测试函数之外访问当前TestInfo ?

我有一些测试需要访问当前的testInfo.snapshotDir。然而,需要testInfo的'e_compareImages'函数嵌套了好几层。将testInfo从test函数一直传递到需要该信息的函数是不实际的。

我知道e_compareImages()已经有一些访问当前testInfo,因为该函数调用toMatchSnapshot()(来自Jest的expect库),并且该函数从当前testInfo. snapshotdir

中提取正确的文件是否有任何方法的函数在actionHelper文件访问当前testInfo之外的期望断言?

我把我认为是相关的部分贴在了下面的文件中。

//LoginPage.test.js文件

const { test } = require('@playwright/test');
test("Verify logo on Login page", async () => {
await loginPage.verifyLogo();
});

//actionHelper.js文件

const { expect } = require('@playwright/test');
async e_compareImages(selector, expectedImageFileName) {
let locator= await this.page.locator(selector);
const actualImage = await locator.screenshot({scale: 'device'});
await expect(actualImage).toMatchSnapshot(expectedImageFileName);
}

我试过导入剧作家的global .js库并使用它的currentTestInfo(),但我一直无法让它工作。

是否有另一个库或一种方法来扩展现有的库来做我需要的?

如果您还需要其他信息,请告诉我。

您可以访问TestInfo在测试函数之外使用test方法的第二个参数:

async e_compareImages(testInfo, selector, expectedImageFileName) {
// ...
const actualImage = await locator.screenshot({scale: 'device'});
await expect(actualImage).toMatchSnapshot(testInfo, expectedImageFileName);
}
现在,当你调用e_compareImageTestInfo对象作为实参:
test("Verify logo on Login page", async (testInfo) => {
await loginPage.verifyLogo(testInfo);
});

我找到了我要找的东西。您可以使用下面的代码来要求全局库

var _globals = require("../node_modules/@playwright/test/lib/globals");

然后你可以使用这个函数直接获得当前的testInfo对象(不需要通过许多中间函数传递对象)

// Get the current test's testInfo object
async getCurrentTestInfo() {
const curTestInfo = await (0, _globals.currentTestInfo)();
return await curTestInfo
}

相关内容

  • 没有找到相关文章