Skip to content

Instantly share code, notes, and snippets.

@mirao
Created October 8, 2025 18:17
Show Gist options
  • Select an option

  • Save mirao/707670c2378576f940c518b6e85b0794 to your computer and use it in GitHub Desktop.

Select an option

Save mirao/707670c2378576f940c518b6e85b0794 to your computer and use it in GitHub Desktop.
WebKit crash reproduction for Playwright 1.56 - Issue #37766
import { defineConfig, devices } from "@playwright/test";
/**
* See https://playwright.dev/docs/test-configuration.
*/
export default defineConfig({
testDir: "./",
/* Run tests in files in parallel */
fullyParallel: false,
/* Fail the build on CI if you accidentally left test.only in the source code. */
forbidOnly: !!process.env.CI,
/* Retry on CI only */
retries: process.env.CI ? 2 : 0,
/* Opt out of parallel tests on CI. */
workers: 1,
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
reporter: "list",
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
use: {
/* Base URL to use in actions like `await page.goto('/')`. */
// baseURL: 'http://127.0.0.1:3000',
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
trace: "on-first-retry",
},
/* Configure projects for major browsers */
projects: [
{
name: "webkit",
use: { ...devices["Desktop Safari"] },
},
],
});
import { test, expect } from "@playwright/test";
/**
* Reproduction test for WebKit crash issue in Playwright 1.56
* https://github.com/microsoft/playwright/issues/37766
*
* Steps to reproduce:
* 1. Navigate to https://playwright.dev
* 2. Click on "Get started"
* 3. Reload the page multiple times
* 4. Browser crashes after a few reloads
*/
test("WebKit crash on page reload", async ({ page }) => {
await page.goto("https://playwright.dev");
await page.click("text=Get started");
await page.waitForLoadState("networkidle");
// Reload the page multiple times
// The crash typically happens after 2-3 reloads
for (let i = 1; i <= 10; i++) {
await page.reload({ waitUntil: "load" });
await expect(page).toHaveURL(/.*intro/);
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment