【发布时间】:2021-07-09 08:48:57
【问题描述】:
我正在尝试使用Jest 和PlayWright 截取失败的测试用例,处理函数在自定义环境中定义,如下所示
const PlaywrightEnvironment = require('jest-playwright-preset/lib/PlaywrightEnvironment')
.default
class CustomEnvironment extends PlaywrightEnvironment {
async setup() {
await super.setup()
}
async teardown() {
await super.teardown()
}
async handleTestEvent(event, state) {
if (event.name === 'test_done' && event.test.errors.length > 0) {
const parentName = event.test.parent.name.replace(/\W/g, '-')
const specName = event.test.name.replace(/\W/g, '-')
await this.global.page.screenshot({
path: `screenshots/${parentName}_${specName}.png`,
})
}
}
}
module.exports = CustomEnvironment;
但是,每次测试后我都会关闭页面..
afterEach(async () => {
await page.close();
});
这导致page 在截屏之前被关闭
测试套件无法运行
page.screenshot: Target page, context or browser has been closedError:
18 | const specName = event.test.name.replace(/\W/g, '-')
19 |
> 20 | await this.global.page.screenshot({
| ^
21 | path: `screenshots/${parentName}_${specName}.png`,
22 | })
23 | }
有没有办法将事件传递给afterEach,以便在发生错误时它不会关闭,或者有一种方法可以更同步地截屏,以便afterEach在截屏之前不会被执行拍了吗?
【问题讨论】:
标签: javascript typescript jestjs playwright