PlayWright

PlayWrightのDEBUGモード

version "@playwright/test": "^1.34.0" 起こったこと Playwrightで特定のブラウザだけおかしい挙動しているように見えた。 まずはそれが事実か確認するために、そのブラウザでの動きを確認したい。 デバッグモードの起動方法 playwright.dev デバッグモード…

PlayWrightにisMobileがあった

Version情報 "@playwright/test": "^1.34.0" "parcel-bundler": "^1.12.5", "typescript": "^5.0.4" 起こったこと PCとスマホで要素が異なるサイトをE2Eテストしたい。 PlayWrightでスマホ版を動かさないといけない。 そんな中、PlayWrightのテスト内パラメ…

AWS Amplifyのテストフェーズではnpx playwright install chromiumeがいらなかった

日付 2023/03/02 起こったこと AWS Amplifyのテストフェーズで無理やりPlayWrightを使っているのだけれども、結果的にはnpx playwright install chromiumeコマンドを実行しなくても動いた そもそも AmplifyのE2EテストにはCypressが標準で使えるようになって…

PlayWrightでブラウザのログを取りたい

起こったこと ブラウザのconsole.xxx系で出力されるログをPlayWrightで検知したい on consoleを使う 以下のようにconsoleイベントをトリガーにコールバック関数を実行することが出来る。ただし、これはコンソールイベントが発火する前に設定しないといけない…

AWS LambdaでPlayWright(chromium)を動かした

起こったこと 特定のサイトのスクショを取りたい。WebAPIで叩いて動くAWS Lambda上でPlayWrightを起動し、スクショを取って返却するようにした。 これを実装するには結構な時間がかかったので共有したくなった。 ただし、実行速度が遅い。 正しくは値を返却…

AmplifyのテストフェーズでPlayWrightを実行してFailしたのだが、そのままデプロイされてしまった。

起こったこと AmplifyでPlaywrightを使おうと思った。しかし、Playwrightのテスト結果が落ちてもデプロイを中止してくれなかった。(Failしているのにデプロイしてしまう) おそらくだけど、テストコード内で終了コードを1にしてもデプロイを止めることはでき…

Playwrightで遷移先ページのタイトルを評価しようとしたら成功したり失敗したりした

起こったこと Playwrightで遷移先ページのタイトルを評価しようとしたら成功したり失敗したりとフレイキーなテストになってしまった。 Version "@playwright/test": "^1.28.1" コード 対象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> </main></body></html>

Playwrightで新規ページのURLをアサートしたい

起こったこと Playwrightでページ遷移のテストは書けるが、新規ページで開かれるURLのアサートの仕方がわからない。 version @playwright/test: "^1.28.1" コード test("foobartest", await ({ page, context }) =>{ const [newPage, _] = await Promise.all…

Playwrightでチェックボックスのチェックがついているラベルを取りたい

version "@playwright/test": "^1.22.2" 起こったこと Playwrightでチェックボックスのチェックがついているラベルの値を取りたい。 以下の画像なら["チェックボックス1", "チェックボックス2"]といった値。 <form> <div> <input type="checkbox" id="checkbox1" checked> <label for="checkbox1">チェックボックス1</label> </div> <div> <input type="checkbox" id="checkbox2" checked> </div></form>

Playwrightで非同期でボタンを複数押そうとしたら安定しなかった

version情報 "@playwright/test": "1.22.2" 起こったこと Webアプリケーション内にあるボタンを二つ押すと遷移できるページで、非同期で二つのボタンを押そうとしたけど出来なかった。 例 前提 例えば、ボタン1とボタン2を押すと下の要素に「二つのフラグが…

JSのモーダル(prompt)に入力したい

Version情報 "typescript": "^4.7.4" "@playwright/test": "^1.22.2" 起こったこと 特定のものを削除する際によく出る「deleteと入力してください」のあれをE2Eテストしようとしたらなんかうまくいかなかった。 こんな感じ <main> <div> <p id="test-text">この文字が邪魔なので消したい</p> <button id="delete"></button></div></main>…

インスペクションしたかった

Version情報 "typescript": "^4.7.4" "@playwright/test": "^1.22.2" 起こったこと PlayWrightを本番環境で実行するとGoogleAnaryticsで拾っちゃってこまったので、ブラウザ実行時にインスペクションし特定のURLへ送信するときにAbortした 書いたもの pageメ…

動的なページをpage.$でDOMを取ろうとするとうまくいったりいかなかったりした

version情報 Ubuntu: 20.04 "@playwright/test": "1.22.2" node: v16.15.1 起こったこと 動的なHTML要素をpage.$(QUERY)でとろうとしたら、Chromiumだけエラーになったりした。 <div id="add"> </div> const add = document.querySelector("#add") as HTMLDivElement; setTimeou…

page.locator(`text="foobar"`)だと取れなかったところ

version情報 "@playwright/test": "1.22.2" 起こったこと こういったインライン要素が入った文字を完全一致で取得できなかった。 <p id="foobar">foo<strong>bar</strong></p> await page.click(`text="foobar"`) /** *Timeout of 30000ms exceeded. page.click: Target closed =================…