概要
Playwright
を用いて本番環境やステージング環境に対して E2E テストを実行する際に、 Sentry
や Karte
といった、分析などのための外部サービスにリクエストを送らないようにしたい。
対応方法
Page
インスタンスを生成したら以下の関数でモックする。
import { Page } from "@playwright/test";
export async function setupRequestMock(page: Page) {
const mockUrlList = [
'https://*.karte.io/**',
'https://*.intercom.io/**',
'https://*.sentry.io/**',
'https://*.newrelic.com/**',
]
for (const url of mockUrlList) {
await page.route(url, async (route, request) => {
console.log(`prevent request to ${request.url()}`)
await route.fulfill()
})
}
}
fulfill()
にすることでリクエストは成功するけど空のレスポンスを返すように。
abort()
にすることでリクエスト自体無効になるけど、リクエスト失敗扱いでコンソールエラーが表示されるのが気になった。
バージョン情報
- playwright 1.39.0
参考