fix(firefox): preserve response header field boundaries - #42832
Devin Rousso (dcrousso) wants to merge 1 commit into
Conversation
This comment has been minimized.
This comment has been minimized.
🔴 All 8 failures look caused by this PRHi, I'm the Playwright bot and I triaged the failing CI run. Every failure is Firefox-only and lands squarely on response header splitting — including the four tests this PR adds. Dropping DetailsCaused by this PR
The Flaky (not blocking) The 6 flaky entries (beforeunload, video+trace, trace-viewer-scrub, third-party partitioned cookies, prefetch script body) all passed on retry and are unrelated to header parsing. I didn't dig into their history since they aren't failures. Triaged by the Playwright bot - agent run |
This comment has been minimized.
This comment has been minimized.
🟡 Almost certainly flakes — one I can't proveHi, I'm the Playwright bot and I triaged the MCP run. None of the 4 failures touch response headers: this PR only changes Firefox/Chromium header field handling, and the failing tests assert on browser listing, file upload, and WebMCP frame disambiguation. Three of them have a documented history of failing on other SHAs; the fourth has no history either way. DetailsPre-existing flake / infra
Uncertain
Triaged by the Playwright bot - agent run |
splitting response headers on commas corrupts values and invents field boundaries use the original fields reported by Juggler without parsing them again reuse Chromium's `Set-Cookie` splitter for fulfillment so multiple cookies remain separate fields
9cc86bd to
d8e3a91
Compare
Test results for "tests 1"4 flaky52544 passed, 1270 skipped Merge workflow run. |
Test results for "MCP"8937 passed, 1489 skipped Merge workflow run. |
| status: response.status, | ||
| statusText: network.statusText(response.status), | ||
| headers: response.headers, | ||
| headers: splitSetCookieHeader(response.headers), |
There was a problem hiding this comment.
aren't they already split here? My understanding is that now we pass split cookies between playwright and browser, but at which point can we glue them together so that this split is necessary?
There was a problem hiding this comment.
route.fulfill({ response }) uses APIResponse.prototype.headers which joins Set-Cookie values with \n so we still need to split them before fulfillment
splitting response headers on commas corrupts values and invents field boundaries
use the original fields reported by Juggler without parsing them again
reuse Chromium's
Set-Cookiesplitter for fulfillment so multiple cookies remain separate fieldswork towards #42687