Puppeteer在运行所有开玩笑测试之前关闭浏览器



重现的步骤

  • git clone https://github.com/anikethsaha/docsify
  • git checkoute2e-test-puppeteer'
  • npm i
  • npm run test:e2e
  • 检查测试是否有sideBar.spec.js

它将失败运行 31 个测试中的 122 个测试

告诉我们您的环境:

  • 木偶师版本:^2.0.0
  • 平台/操作系统版本:视窗 10
  • 网址(如果适用(:https://travis-ci.org/docsifyjs/docsify/jobs/631003978?utm_medium=notification&utm_source=github_status
  • 节点.js版本:v10.15.3

哪些步骤将重现问题?npm run test:e2e

请包含重现该问题的代码。

  1. https://github.com/anikethsaha/docsify/blob/e2e-test-puppeteer/e2e/tests/sideBar.spec.js 2. 3.

预期结果是什么?它应该运行所有测试用例 122

相反,会发生什么?但相反,它只运行 31 个测试,浏览器在那之后关闭,然后剩下的 91 个测试没有运行

上下文

我正在使用live-server来运行一个将为我的文件提供服务的服务器,并且它是在自定义开玩笑环境中完成的。 我有一个sideBar.spec.js文件,它通过单击它们然后使用jest-image-snapshot拍摄快照来测试所有侧边栏链接。 在此测试中,我使用page.click方法单击每个可能的锚链接。 它未运行剩余的 91 个测试。我将超时增加到 300 秒,但它仍然在此之前停止。

我看到了一个奇怪的行为,即侧边栏带有一个切换按钮。因此,默认情况下,侧边栏是打开的。但是在退出关闭浏览器之前,IDK 但它正在切换侧边栏以关闭它,然后关闭浏览器。检查测试是否有sideBar.spec.js您可以在此处找到测试的行为 https://travis-ci.org/docsifyjs/docsify/jobs/631003978?utm_medium=notification&utm_source=github_status

浏览器在执行所有测试之前没有关闭,事实并非如此。 在之前所有钩子添加参数browser = await puppeteer.launch({headless: false}),当你看到发生了什么时,它总是更容易。

我用你的代码玩了一段时间,并在控制台中检查了你尝试点击的选择器是否真的存在,看起来它们不存在。 (您也可以在您提供的日志中清楚地看到它:Node is either not visible or not an 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 数组。我想你需要重写你的测试。祝你好运

最新更新