重现步骤
git 克隆 https://github.com/anikethsaha/docsify
git checkout
e2e-test-puppeteer`npm 我
npm 运行测试:e2e
- 检查
sideBar.spec.js
的测试
运行 122 个测试中的 31 个测试将会失败
告诉我们您的环境:
- Puppeteer 版本:^2.0.0
- 平台/操作系统版本:Windows 10
- 网址(如果适用):https://travis-ci.org/docsifyjs/docsify/jobs/631003978?utm_medium=notification&utm_source=github_status
- Node.js 版本:v10.15.3
什么步骤会重现该问题?
npm 运行测试:e2e
请包含重现问题的代码。
预期结果是什么? 它应该运行所有测试用例 122
会发生什么? 但相反,它只运行 31 个测试,之后浏览器关闭,然后剩余的 91 个测试没有运行
上下文
我正在使用live-server
运行一个将为我的文件提供服务的服务器,并且它是在自定义 Jest 环境中完成的。
我有一个 sideBar.spec.js
文件,它通过单击所有侧边栏链接来测试所有侧边栏链接,然后使用 jest-image-snapshot
拍摄快照。 。
在此测试中,我使用 page.click
方法单击每个可能的 anchor 链接。
它没有运行剩余的 91 个测试。
我将超时时间增加到 300 秒,但它仍然在此之前停止。
我看到了一个奇怪的行为,那就是侧边栏带有一个切换按钮。所以默认情况下侧边栏是打开的。但在退出关闭浏览器之前,IDK 但它会切换侧边栏以将其关闭,然后关闭浏览器。
检查 sideBar.spec.js
的测试
您可以在此处找到测试的行为 https://travis-ci.org/docsifyjs/docsify/jobs/631003978?utm_medium=notification&utm_source=github_status
最佳答案
在执行所有测试之前浏览器不会关闭,事实并非如此。
在 beforeAll 钩子(Hook)中添加参数 browser = wait puppeteer.launch({headless: false})
,当您看到发生了什么时总是更容易。
我用你的代码玩了一段时间,并在控制台中检查了你尝试单击的选择器是否确实存在,但看起来它们并不存在。 (您也可以在您提供的日志中清楚地看到它: Node 不可见或不是 HTMLElement
等)
例如:
const cdnIds = [
'latest-version',
'specific-version',
'compressed-file',
'other-cdn'
]
cdnIds.forEach(id => {
test('go to #cdn?id=' + id, async done => {
await page.click(`a.section-link[href='#/cdn?id=${id}']`)
const ss = await page.screenshot()
expectThres(ss)
done()
})
})
没有匹配的选择器,例如 a.section-link[href='#/cdn?id=other-cdn']
或 a.section-link[href^=' #/cdn']
<-- 第二个应该匹配每个 cdnIds 数组。我想你需要重写你的测试。祝你好运
关于javascript - puppeteer 在运行所有 Jest 测试之前关闭浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59643104/