😺
PlaywrightのTimeoutの時間を変更する
Error: Timed out 5000ms waiting for expect(received).toHaveURL(expected)
Playwrightでテストを実行すると、上記のようにたまにtimeoutでこけてしまうことがあるので、timeoutの時間を変更して、timeoutしないようにしたいと思います。
まずは公式を確認。
デフォルトのtimeoutは下記のようになっています。
Timeout | デフォルト |
---|---|
Test timeout | 30000 ms (30秒) |
Expect timeout | 5000 ms (5秒) |
Test関数とExpect関数でタイムアウトの時間が違うようです。
timeoutの時間を変更するにはconfigで全体のタイムアウトの時間を変更する方法と、関数内で単一のtimeoutの時間を変更する方法の2通りあります。
configで全体のtimeoutの時間を変更
playwright.config.ts
import { defineConfig } from '@playwright/test';
export default defineConfig({
+ timeout: 5 * 60 * 1000, // testのtimeoutの時間を変更
+ expect: {
+ timeout: 10 * 1000, // expectのtimeoutの時間を変更
+ },
});
関数内で単一のtimeoutの時間を変更
Test Timeout
example.spec.ts
import { test, expect } from '@playwright/test';
test('very slow test', async ({ page }) => {
test.setTimeout(120000); // timeoutの時間を変更
// ...
});
またtest.slow()
でtimeoutの時間をデフォルトの 3 倍の時間にすることもできます。
example.spec.ts
import { test, expect } from '@playwright/test';
test('slow test', async ({ page }) => {
test.slow(); // timeoutの時間をデフォルトの3倍に変更
// ...
});
Expect Timeout
example.spec.ts
import { test, expect } from '@playwright/test';
test('basic test', async ({ page }) => {
// timeoutの時間を変更
await expect(page.getByRole('button')).toHaveText('Sign in', { timeout: 10000 });
});
Discussion