[microsoft/playwright][问题] - 挂钩和拆解

2024-05-09 281 views
3

大家好,请问一下,在规范文件中使用页面固定装置时,是否始终建议使用 test.afterAll 或 afterEach ?我有几个规格,并在 azure 上运行它们时注意到一些问题并出现错误:

“拆除“上下文”时超出了 30000 毫秒的测试超时。”

它是间歇性的,但在 afterEach 挂钩中添加 page.close() 时似乎已停止。但是,我可以看到安装 playwright 时自动创建的示例类中没有 afterEach 钩子(所以我不确定它是否 100% 需要)

我有一个规范,其中使用页面固定装置来进行不同的测试用例,而另一个规范则循环遍历值列表来执行测试,这两种情况都发生了。 IE:

示例1:

text.describe({
   test('test1' , async ({page})=> {
      //do something
   })

   test('test2' , async ({page})=> {
      //do something else
   })
})

示例2:

test.describe({
        for(const value of values){
          test(`test ${value}`, async ({ page }) => {
          await page.goto(`/value`);
        });
    }
})

回答

4

大家好,请问一下,在规范文件中使用页面固定装置时,是否始终建议使用 test.afterAll 或 afterEach ?

@imartinflores 不,不需要这个。我很惊讶它确实对你有帮助——你使用什么浏览器出现这个错误?

9

Test timeout of 30000ms exceeded while tearing down "context"@aslushnikov在将 @playwright/test 从 升级1.25.2到 后,我开始看到同样的 错误1.26.1。该错误发生在我们使用的所有浏览器中 - webkit、chromium 和 firefox。

5

@aslushnikov 谢谢,我正在使用 Chromium。老实说,这是我的假设,因为我使用钩子运行了几次并且它没有失败,但它也是间歇性的,所以如果我继续运行它,它可能会在某个时候失败。但是既然 @lianapache 提到了,我也在 PW 1.26 上..这个版本可能有问题吗?

2

@lianapache @imartinflores 你有机会向我们提供一份复制品吗?

2

@aslushnikov我可以尝试创建自己的存储库(使用相同类型的测试),看看是否可以以某种方式重现它。不幸的是,我无法分享我正在使用的项目,因为它是一个私人工作仓库。

4

那将是真棒。我们没有发现任何可能影响从 1.25 到 1.26 的这种行为变化的内容,因此重现将极大地帮助我们调试此问题。

让我暂时关闭此问题,但请提交另一个问题,因为您有重现。 (这样我们就不会意外忘记它)。

谢谢!

9

非常感谢您关注@aslushnikov!我会尝试一下,如果我能找到如何重现它,我将创建一个新的。再次感谢!

7

您好@aslushnikov,不确定这是否有帮助(我不想提交新问题,因为不确定这是否有帮助)。我尝试用一​​个新的剧作家项目重现这个问题,但我不能,所以我认为这可能与正在测试的应用程序有关。我打开了痕迹和视频,我可以看到:

动作看起来没问题: 图像

跟踪表明超时: 图像

但在视频中,我可以看到单击“验证”按钮后显示的错误消息,该按钮本应在跟踪中“超时”: 图像

测试非常简单,循环遍历 json 文件以从中获取一些值,总共 5 个测试在 5 个工作线程中运行:

test.describe("My Tests", ()=>{
 for(const val of values){
   test(`Display error message ${val.name}`, ({page})=> {
     await page.goto()
     await page.locator("#textbox").fill("")
     await page.locator("#Validate").click()
     await expect(page.locator("error message")).toContainText("ErrorMessage")
   })
   }
})

关于在哪里查看或获取更多相关日志的任何建议?谢谢!

2

最重要的是,我将 pw 降级到 1.25,并在两个版本的 ci 上运行了相同的测试。我在 1.26 上可以看到这个问题,但在 1.25 上却从未出现过

3

在 1.25 上也间歇性地看到这个问题,所以我肯定认为它与应用程序本身有关。然而,痕迹和视频中看到的内容让我有点困惑。在我得到的最后一条跟踪中,我可以看到 page.close() 超时

8

await请参阅#17869 - 当您忘记调用 Playwright API 时,也会出现相同的错误消息。非常不直观,所以我希望这个评论对未来的谷歌旅行者有所帮助。

6

await请参阅#17869 - 当您忘记调用 Playwright API 时,也会出现相同的错误消息。非常不直观,所以我希望这个评论对未来的谷歌旅行者有所帮助。

太感谢了 !!!!一直都是这个问题!!!

(我得到的错误 - 拆除“上下文”时超出了 75000 毫秒的测试超时。)结果是因为缺少等待