gpt4 book ai didi

javascript - puppeteer 在运行所有 Jest 测试之前关闭浏览器

转载 作者:太空宇宙 更新时间:2023-11-04 01:20:01 24 4
gpt4 key购买 nike

重现步骤

  • git 克隆 https://github.com/anikethsaha/docsify
  • git checkoute2e-test-puppeteer`
  • npm 我
  • npm 运行测试:e2e
  • 检查 sideBar.spec.js
  • 的测试

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

告诉我们您的环境:

什么步骤会重现该问题?npm 运行测试:e2e

请包含重现问题的代码。

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

预期结果是什么?它应该运行所有测试用例 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com