Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .github/workflows/fix-flakes-prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ down your step-1 ranking, re-checking each; only stop once the whole shortlist i
in that test's file since. Only move on if enough subsequent runs show the failures stopped;
a browser roll alone is not evidence of a fix.

Compare the test across every bot that runs it, not only the failing bot. A clean boundary
between stable, beta, and dev browser channels often points to a browser-version regression.
Read the exact versions from the job logs and record the failing and passing versions; channel
names alone do not identify the affected behaviour.

## 3. Reproduce on this OS

Read the test and its `error_message`.
Expand Down Expand Up @@ -77,6 +82,18 @@ Broader OS coverage comes from different agent runs on other OSes, not from you.
it.fixme(browserName === 'webkit' && isLinux, 'https://github.com/microsoft/playwright/issues/NNNNN');
```

For browser-specific failures, prefer the narrowest observed version predicate over a channel
predicate. Channels roll forward, so `channel === 'chrome'` can keep skipping the test after
the browser fixes the bug. If stable fails while beta/dev passes, use `browserVersion` or
`browserMajorVersion` and gate only the affected version:

```ts
it.fixme(browserName === 'chromium' && browserMajorVersion === 150, 'https://github.com/microsoft/playwright/issues/NNNNN');
```

Do not invent a wider threshold for untested versions. Keep a channel predicate only when the
same browser version behaves differently between channels.

Link an issue if one exists or explain why the test is skipped. **Default to `fixme`** β€” it parks
the debt and stays greppable. Use `skip` only if reproduction shows the test is genuinely
mis-scoped for that config (`skip` claims "this failure is expected and correct," which a
Expand Down
3 changes: 2 additions & 1 deletion tests/library/browsercontext-locale.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -225,8 +225,9 @@ it('should send user Accept-Language header', {

it('should send Accept-Language header on WebSocket handshake', {
annotation: [{ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/23732' }],
}, async ({ browser, server, browserName }) => {
}, async ({ browser, server, browserName, browserMajorVersion }) => {
it.fixme(browserName === 'firefox', 'Firefox does not send Accept-Language on WebSocket handshake');
it.fixme(browserName === 'chromium' && browserMajorVersion === 150, 'Chromium 150 sends the browser Accept-Language instead of the emulated locale on WebSocket handshake, https://github.com/microsoft/playwright/issues/23732');
const context = await browser.newContext({ locale: 'en-GB' });
const page = await context.newPage();
await page.goto(server.EMPTY_PAGE);
Expand Down
Loading