Playwrightをつかってみる - @ledsun blog でPlaywrightが最低限動く環境ができました。 リダイレクトレスポンスを扱うテストを書こうと思います。
Playwrightには Netwrok mockingという機能があります。 実行するテストからのHTTPリクエストをモックして書き換えることができます。
サンプルのコードは次のように動きます。
sequenceDiagram participant Client participant Server Client->>Server: https://playwright.dev/ Server->>Client: 200
これにモックを挟んでみます。
sequenceDiagram participant Client participant Server Client->>Server: Request http://exapmle.com/redirect Server->>Client: 301 Client->>Server: https://playwright.dev/ Server->>Client: 200 OK
最初の宛先を http://exapmle.com/redirect
に変更します。
このリクエストをモックして301 レスポンスを返します。
https://playwright.dev/
にリダイレクトします。
test.beforeEach(async ({ context }) => { await context.route(/redirect/, route => route.fulfill({ status: 301, headers: { location: 'https://playwright.dev/' } })); });
リクエストの宛先に redirect
を含むときにモックします。
route.fulfill
を使ってレスポンスを書き換えます。
テストも次のように書き換えます。
test('has title', async ({ page }) => { await page.goto('http://exapmle.com/redirect'); // Expect a title "to contain" a substring. await expect(page).toHaveTitle(/Playwright/); });
開くURLを http://exapmle.com/redirect
に変更します。
テストを実行してみましょう。
npx playwright test --project=chromium --ui
でテストを起動します。
次のように選択してテストを実行します。
- テスト:
has title
Network
タブ
Networkタブをみます。
と、期待通りに動いたことが確認できました。
よく見ると https://playwright.dev/js/redirection.js
へのリクエストもリダイレクトされています。