Playwrightで遷移先ページのタイトルを評価しようとしたら成功したり失敗したりした
起こったこと
Playwrightで遷移先ページのタイトルを評価しようとしたら成功したり失敗したりとフレイキーなテストになってしまった。
Version
"@playwright/test": "^1.28.1"
コード
対象HTML
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>test</title> </head> <body> <main> <a href="https://ja.wikipedia.org/wiki/%E5%8F%8D%E5%B0%84%E6%98%9F%E9%9B%B2" target="_blank">反射星雲</a> </main> </body> </html>
Playwrightでは
import { test, expect } from "@playwright/test"; // baseUrlはlocalhostが設定されている test("Wikipediaへ別タブで遷移する", async ({ page }) => { await page.goto("/link.html"); const [page1] = await Promise.all([ page.waitForEvent("popup"), page.getByRole("link", { name: "反射星雲" }).click(), ]); expect(await page1.title()).toBe("反射星雲 - Wikipedia"); });
たまにfailする
こうした
DOMがロードされるのを待つようにした
import { test, expect } from "@playwright/test"; // baseUrlはlocalhostが設定されている test("Wikipediaへ別タブで遷移する", async ({ page }) => { await page.goto("/link.html"); const [page1] = await Promise.all([ page.waitForEvent("popup"), page.getByRole("link", { name: "反射星雲" }).click(), ]); await page.waitForLoadState("domcontentloaded"); // ここを追加 expect(await page1.title()).toBe("反射星雲 - Wikipedia"); });
安定するようになった。気がする。たまたまフレイキーなテストが成功し続けているだけかもしれない。