在剧作家中,是否有任何方法可以在测试函数之外访问当前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
}