Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
439 commits
Select commit Hold shift + click to select a range
bb54af9
chore: set emulated viewport after the window size (#36133)
pavelfeldman May 29, 2025
b820ebd
feat(chromium): roll to r1177 (#36134)
microsoft-playwright-automation[bot] May 30, 2025
c587492
feat(chromium-tip-of-tree): roll to r1336 (#36140)
microsoft-playwright-automation[bot] May 30, 2025
43a086a
chore: render error context to copy prompt (#36123)
Skn0tt May 30, 2025
e58f076
chore: cleanup more state upon disconnect (#36132)
dgozman May 30, 2025
7cbc04e
browser(webkit): roll to 2178 & update permissions tests (#36135)
yury-s May 30, 2025
70d64a2
chore: chain routes from multiple connections (#36105)
dgozman May 30, 2025
011050f
feat(firefox): roll to r1487 (#36138)
microsoft-playwright-automation[bot] May 30, 2025
bc7dabe
chore: beautify install --list output (#36142)
yury-s May 30, 2025
f72f931
chore: remove browser.on('context') event (#36154)
dgozman Jun 2, 2025
0286244
chore: write own codeframe (#36156)
Skn0tt Jun 2, 2025
c9d3291
chore: remove Step prefix from trace and reports (#36149)
pavelfeldman Jun 2, 2025
f78918a
chore: fix removeInitScript implementation (#36159)
dgozman Jun 2, 2025
3e4284c
test: fix webview2 tests (#36172)
mxschmitt Jun 3, 2025
9cfbf4f
test: skip 'should work when registered on global' in driver mode (#3…
mxschmitt Jun 3, 2025
b69f703
feat(webkit): roll to r2181 (#36164)
microsoft-playwright-automation[bot] Jun 3, 2025
84108e5
feat(chromium-tip-of-tree): roll to r1337 (#36176)
microsoft-playwright-automation[bot] Jun 3, 2025
818b7d6
Revert "fix(esm): prevent ESM loading deadlock in certain import chai…
dgozman Jun 3, 2025
8d27a06
chore: reduce scrolling during clicks (#36175)
dgozman Jun 3, 2025
990fb68
chore: only use locator description if it is the last token (#36178)
pavelfeldman Jun 3, 2025
0a53380
chore: delete playwright-dashboard package (#36182)
yury-s Jun 3, 2025
8169ba0
feat(webkit): roll to r2182 (#36183)
microsoft-playwright-automation[bot] Jun 4, 2025
a0479cb
fix(test runner): prevent esm loader deadlock (#36187)
dgozman Jun 4, 2025
85519de
chore: update browser_patches to 9768715bd (#36191)
mxschmitt Jun 4, 2025
6e14ce0
chore: update WebKit version to 18.5 (#36190)
mxschmitt Jun 4, 2025
126239b
test: skip permission tests on Debian 11 (#36194)
mxschmitt Jun 4, 2025
5659432
test: skip scrolling tests on Android (#36195)
mxschmitt Jun 4, 2025
5f2e74a
test: skip another permission tests on Debian 11 (#36198)
mxschmitt Jun 4, 2025
0b2f80b
fix(chromium): refer to x86 and x86_64 as "x86" arch (#36193)
agg23 Jun 4, 2025
3abb8bd
test: unflake "should delete header with undefined value" (#36197)
dgozman Jun 4, 2025
6dc6651
test: mark inspector tests as slow (#36199)
mxschmitt Jun 4, 2025
2e57a78
chore: add release notes for v1.53 (#36196)
mxschmitt Jun 4, 2025
227b123
chore: mark v1.54.0-next (#36200)
mxschmitt Jun 4, 2025
e6bf21f
chore: launchServer() with userDataDir (#36185)
dgozman Jun 4, 2025
4b40a74
fix: allow matching against `about:blank` and other custom URLs (#36180)
agg23 Jun 4, 2025
085f7a8
fix: capture snapshot for ai during navigation (#36203)
pavelfeldman Jun 4, 2025
bd5a23f
chore: get rid of ready state type (#36177)
pavelfeldman Jun 4, 2025
090a451
fix(ai snapshot): wait for blocking CSS (#36206)
Skn0tt Jun 5, 2025
b25cb7f
chore: use 'Clear' step name for locator.clear() (#36208)
mxschmitt Jun 5, 2025
e313b8b
fix(trace-viewer): show fallback command on less precise paths (#36202)
agg23 Jun 5, 2025
3ab097b
chore: prepare to language ports roll (#36211)
dgozman Jun 5, 2025
b1734fd
cherry-pick(#36211): chore: prepare to language ports roll
dgozman Jun 5, 2025
a0eb891
chore: ensure progress runs with a timeout in fetch() (#36192)
dgozman Jun 5, 2025
f7fb274
cherry-pick(#36203): fix: capture snapshot for ai during navigation (…
pavelfeldman Jun 4, 2025
88e4873
cherry-pick(#36206): fix(ai snapshot): wait for blocking CSS (#36206)
Skn0tt Jun 5, 2025
54acf9c
Merge commit 'bc7dabece92ad106b79bbb03ac905a4cc4cd3967' into test
ruifigueira Jun 5, 2025
f2ec43c
chore: adjust to upstream main changes
ruifigueira May 7, 2025
2cc9261
chore: bump wrangler to 4.19.1
ruifigueira May 7, 2025
2bc8ed0
docs(context): document the `browser()` call from persistent context …
agg23 Jun 5, 2025
1870739
fix: ensure ElementHandlerDispatcher has FrameDispatcher parent (#36214)
dgozman Jun 6, 2025
1f643a3
cherry-pick(#36214): fix: ensure ElementHandlerDispatcher has FrameDi…
dgozman Jun 6, 2025
301481f
chore(client): remove unneeded _wrapApiCall(internal) (#36224)
Skn0tt Jun 6, 2025
34c2954
fix: java style selector string (#36227)
Skn0tt Jun 6, 2025
56eb92a
cherry-pick(#36227): fix: java style selector string
Skn0tt Jun 6, 2025
5f053c7
feat(chromium-tip-of-tree): roll to r1338 (#36221)
microsoft-playwright-automation[bot] Jun 6, 2025
237de4f
feat(chromium): roll to 1178 (#36231)
mxschmitt Jun 6, 2025
48ae259
cherry-pick(#36231): feat(chromium): roll to 1178
mxschmitt Jun 6, 2025
c930e67
feat(cookie): export/import chips cookies (#36168)
yury-s Jun 6, 2025
0ace76a
docs: mention trace viewer as debugging tool for the Mouse API class …
gwennlbh Jun 6, 2025
a7df837
test: remove special handling for getSelection() with Firefox from te…
whimboo Jun 7, 2025
f66a835
devops: add roll stable-test-runner automation (#36229)
mxschmitt Jun 10, 2025
937a921
feat(webkit): roll to r2183 (#36254)
microsoft-playwright-automation[bot] Jun 10, 2025
93dfdbf
chore(typo): if you intend (#36259)
Skn0tt Jun 10, 2025
92994a8
fix: restore proper class name escaping (#36258)
dgozman Jun 10, 2025
8ecfb12
cherry-pick(#36258): fix: restore proper class name escaping
dgozman Jun 10, 2025
3cb987f
fix(html-reporter): race condition where form submission used stale f…
mxschmitt Jun 10, 2025
3940798
cherry-pick(#36260): fix(html-reporter): race condition where form su…
mxschmitt Jun 10, 2025
a8f9c4d
test: unflake a few tests on Android (#36262)
dgozman Jun 10, 2025
d86787d
chore: roll stable-test-runner to 1.53.0-beta-1749049851000 (#36201)
mxschmitt Jun 10, 2025
6822777
chore: mark v1.53.0 (#36266)
mxschmitt Jun 10, 2025
c396674
test: add cookie with SameSite attribute (#36255)
yury-s Jun 10, 2025
c3c842c
fix(network): Include subdomains of localhost when including cookies …
simenbrekken Jun 10, 2025
a83193c
Merge v1.53.0 into merge-upstream
ruifigueira Jun 11, 2025
8420e53
docs: add upstream playwright version to README
ruifigueira Jun 11, 2025
df0e0fb
chore: make sure dispatchers work with SdkObjects (#36158)
dgozman Jun 11, 2025
d101492
fix(tests): lookup localhost subdomains on Win and Mac (#36285)
yury-s Jun 11, 2025
5d0d573
chore: remove PW_TEST_DISABLE_TRACING and _playwrightInstance (#36282)
dgozman Jun 11, 2025
3186574
chore: remove PLAYWRIGHT_SKIP_NAVIGATION_CHECK (#36283)
dgozman Jun 11, 2025
0c5d3f2
test: send secure cookies to subdomain.localhost (#36268)
yury-s Jun 11, 2025
64dd5ca
feat(firefox-beta): roll to r1483 (#36289)
microsoft-playwright-automation[bot] Jun 12, 2025
3c248ed
chore: remove PLAYWRIGHT_INPUT_FILE_TEXTBOX (#36281)
dgozman Jun 12, 2025
33d87d9
chore: accept Progress instance for raw input (#36280)
dgozman Jun 12, 2025
19718c0
chore: fix android socket on('close') (#36293)
dgozman Jun 12, 2025
bf3101f
feat(chromium): add local-fonts API permission (#36186)
mxschmitt Jun 12, 2025
1655ae9
feat(chromium): roll to r1179 (#36301)
microsoft-playwright-automation[bot] Jun 12, 2025
468237d
feat(chromium-tip-of-tree): roll to r1340 (#36306)
microsoft-playwright-automation[bot] Jun 12, 2025
15d033f
feat(webkit): roll to r2184 (#36309)
microsoft-playwright-automation[bot] Jun 13, 2025
0bf6c3d
chore: validate launchOptions options (#36276)
mxschmitt Jun 13, 2025
357ebfe
chore: make input actions "strict" in terms of timeout/abort (#36302)
dgozman Jun 16, 2025
fa9d67e
test: should fill programmatically enabled textarea (#36319)
Skn0tt Jun 16, 2025
a02722a
test: roll stable-test-runner to 1.54.0-alpha-2025-06-16 (#36322)
microsoft-playwright-automation[bot] Jun 16, 2025
6caf344
fix(list): avoid overwriting stdio logs from tests when writing statu…
agg23 Jun 16, 2025
baded72
feat(html): parse and render links in HTML report title (#36326)
agg23 Jun 16, 2025
1072d14
test: use role based selectors in trace-viewer tests (#36295)
mxschmitt Jun 16, 2025
764deda
chore: hide locator(':root') in Steps for toHaveTitle/URL (#36213)
mxschmitt Jun 16, 2025
90c6921
test: add failing oopif cdp bug (#36329)
Skn0tt Jun 16, 2025
114c9c0
chore(html): revert baded72 and use existing linkifyText (#36328)
agg23 Jun 16, 2025
ada2372
feat(webkit): roll to r2185 (#36335)
microsoft-playwright-automation[bot] Jun 17, 2025
a439191
chore: move HTTP server behaviour from WSServer to PlaywrightServer (…
Skn0tt Jun 17, 2025
4334911
feat(chromium-tip-of-tree): roll to r1341 (#36338)
microsoft-playwright-automation[bot] Jun 17, 2025
7e87033
feat(firefox): roll to r1488 (#36340)
microsoft-playwright-automation[bot] Jun 18, 2025
a7ff65c
feat(firefox-beta): roll to r1484 (#36341)
microsoft-playwright-automation[bot] Jun 18, 2025
8fcf838
chore: move some playwright-wide options to be per browser (#36342)
dgozman Jun 18, 2025
2576ce2
Revert "chore: reduce scrolling during clicks (#36175)" (#36346)
dgozman Jun 18, 2025
2973b0b
test: prevent indexeddb race conditions (#36347)
Skn0tt Jun 18, 2025
f050c3f
fix(trace): include method into "Fetch" action title (#36350)
dgozman Jun 18, 2025
50cb8a1
chore: prevent launching more browsers in server mode (#36353)
Skn0tt Jun 19, 2025
66e9030
chore: lift up playwright prelaunch (#36330)
Skn0tt Jun 19, 2025
5f65f32
test: update expectation for secure cookie test on WK Win (#36361)
yury-s Jun 19, 2025
07d1824
docs: correct spelling of 'informational' in README badge link (#36367)
mxschmitt Jun 20, 2025
ab7b18e
fix(ct): fsWatcher update comparison (#36366)
mxschmitt Jun 20, 2025
d4c0d75
chore: make fetch progress "strict" (#36318)
dgozman Jun 20, 2025
55cb7c9
chore: make navigation actions' progress "strict" (#36321)
dgozman Jun 20, 2025
20b8784
chore: make screenshot progress "strict" (#36323)
dgozman Jun 20, 2025
777d1e5
chore: use different babel import in tsxTransform (#36370)
mxschmitt Jun 20, 2025
173b455
fix(html-reporter): show filtered stats when filtering for labels/ann…
mxschmitt Jun 20, 2025
1357f0a
chore: simplify bidi browsers handling (#36363)
dgozman Jun 20, 2025
84c69ed
chore: make launch, newContext and newPage progress "strict" (#36336)
dgozman Jun 20, 2025
c0da193
chore: make various progress instances "strict" (#36349)
dgozman Jun 20, 2025
d3970a2
chore: smaller codex fixes (#36374)
mxschmitt Jun 20, 2025
71088f6
chore: refactor browser creation from PlaywrightConnection into Playw…
Skn0tt Jun 20, 2025
73f840c
chore: use isNonRetriableError in more places (#36373)
dgozman Jun 20, 2025
556fea9
fix: adding trialing slash detection logic back in urlToWSEndpoint (#…
stkevintan Jun 20, 2025
0027bd9
chore: browserserver, design two (#36382)
Skn0tt Jun 20, 2025
d8c257f
feat(chromium): roll to r1180 (#36384)
microsoft-playwright-automation[bot] Jun 20, 2025
41bcfc9
feat(webkit): roll to r2186 (#36391)
microsoft-playwright-automation[bot] Jun 21, 2025
ed7e552
chore: don't close other browsers in reuse-browsers mode (#36383)
Skn0tt Jun 23, 2025
07c4958
docs(clock): add snippets for 'Test with predefined time' for ports (…
mxschmitt Jun 23, 2025
6c26c5f
feat(chromium-tip-of-tree): roll to r1342 (#36379)
microsoft-playwright-automation[bot] Jun 23, 2025
06a065d
test: skip `should handle timeout properly 2` on tracing bots (#36399)
dgozman Jun 23, 2025
184fb04
test: roll stable-test-runner to 1.54.0-alpha-2025-06-23 (#36401)
microsoft-playwright-automation[bot] Jun 23, 2025
6693417
chore: make progress strict by default (#36389)
dgozman Jun 23, 2025
5013e2c
test: chromium tracing test rebase (#36403)
mxschmitt Jun 23, 2025
a5b68a5
devops: remove redundant scripts (#36408)
mxschmitt Jun 23, 2025
68d7f66
chore: move Page.close() tests to tests/library (#36390)
yury-s Jun 23, 2025
b1a1e11
chore: delete utils/doclint/generateFullConfigDoc.js (#36413)
mxschmitt Jun 23, 2025
896cb85
chore: fix Cannot find module '@testIsomorphic/types' in recorder (#3…
mxschmitt Jun 23, 2025
1170578
chore: make sure _generateLocatorString does not timeout (#36381)
dgozman Jun 24, 2025
c68c3f3
test: make babel test pass under Node.js 24 (#36420)
mxschmitt Jun 24, 2025
17a5f42
test: remove usage of url.parse (#36419)
mxschmitt Jun 24, 2025
1c3488a
feat(chromium-tip-of-tree): roll to r1343 (#36424)
microsoft-playwright-automation[bot] Jun 24, 2025
86c2ee6
chore: do not select a disabled option (#36418)
dgozman Jun 24, 2025
04b10c5
chore: bump commander.js version to 13 (#36426)
yury-s Jun 24, 2025
a41e16b
chore: use a single Progress instance for expect (#36407)
dgozman Jun 24, 2025
25e64e9
fix(cli): throw an error if invalid choice is specified for --update-…
yury-s Jun 24, 2025
6b231cb
chore: add playwright-mdd experiment (#36430)
pavelfeldman Jun 24, 2025
56594a0
fix: get rid of url.parse in network code (#36423)
mxschmitt Jun 25, 2025
2c78f84
feat(webkit): roll to r2187 (#36428)
microsoft-playwright-automation[bot] Jun 25, 2025
4097023
test: fix installation tests under Node.js 24 (#36434)
mxschmitt Jun 25, 2025
5efa065
chore: set title from global teardown (#36433)
Skn0tt Jun 25, 2025
2cc526a
devops: introduce Node.js 24 (Current) bots (#36402)
mxschmitt Jun 25, 2025
a3eff54
chore: migrate some dispatchers from CallMetadata to Progress (part 1…
dgozman Jun 25, 2025
a03dcc3
chore: add assert tools to mdd (#36437)
dgozman Jun 25, 2025
8529ff0
chore: abstract tool from specific context types (#36445)
pavelfeldman Jun 25, 2025
e4355f7
chore: migrate some dispatchers from CallMetadata to Progress (part 3…
dgozman Jun 26, 2025
ad745c7
chore(driver): roll driver to recent Node.js LTS version (#36454)
microsoft-playwright-automation[bot] Jun 26, 2025
735c536
fix(blob): correctly type pre-1.53 onTestEnd event for attachments (#…
agg23 Jun 26, 2025
bf5fea2
chore: migrate some dispatchers from CallMetadata to Progress (part 2…
dgozman Jun 26, 2025
216e6be
chore: add the codegen tool (#36446)
pavelfeldman Jun 26, 2025
56ccccd
docs: move note (#36432)
patrik-csak Jun 26, 2025
98caf34
chore: follow-up to connectOverCDP fetch logic (#36377)
mxschmitt Jun 26, 2025
ae18bae
test: improve Chrome Extension coverage with CDP/MV3 (#36472)
mxschmitt Jun 27, 2025
536c273
chore: use mutation observer to reset hover model (#36478)
pavelfeldman Jun 27, 2025
3a02f89
chore: implement lightweight recording mode (#36463)
pavelfeldman Jun 27, 2025
7fd8ec2
chore: work towards streaming recorder backend (#36484)
pavelfeldman Jun 27, 2025
b17e2eb
chore(aria): don't ignore top-level `containerMode` (#36471)
Skn0tt Jun 30, 2025
7d34033
test: roll stable-test-runner to 1.54.0-alpha-2025-06-30 (#36495)
microsoft-playwright-automation[bot] Jun 30, 2025
bb033f7
fix(c# codegen): properly capitalise popup alias (#36468)
Skn0tt Jun 30, 2025
184e2be
chore: migrate some dispatchers from CallMetadata to Progress (part 4…
dgozman Jun 30, 2025
f15c761
chore(reporter): strict typing for teleReceiver and merge (#36481)
agg23 Jun 30, 2025
ffa4618
test: use http endpoint instead of local file for codegen tests (#36498)
mxschmitt Jun 30, 2025
ba26f95
fix(chromium): fix compatibility with Edge msRelaunchNoCompatLayer fe…
mxschmitt Jun 30, 2025
61aac77
test: allow running routeWebSocket tests on different host (#36500)
mxschmitt Jun 30, 2025
c22f1fc
fix(firefox): do not dispatch OPTIONS request (#36503)
yury-s Jun 30, 2025
cdd1f75
chore: merge contextRecorder into recorder (#36487)
pavelfeldman Jun 30, 2025
954730d
chore: throw early error selector name clash (#36469)
Skn0tt Jul 1, 2025
16252b3
chore: rename timeout to waitTimeout in waitForTimeout (#36497)
dgozman Jul 1, 2025
ec13331
fix: reset proper properties on reused context (#36501)
dgozman Jul 1, 2025
151ef89
feat(webkit): roll to r2188 (#36475)
microsoft-playwright-automation[bot] Jul 1, 2025
f93f232
test: skip extension tests on chrome (#36479)
mxschmitt Jul 1, 2025
3f15a6b
test: use less localhost for cookies test (#36508)
mxschmitt Jul 1, 2025
9c164ff
devops: move WebKit Tracing tests to Ubuntu 24.04 (#36510)
mxschmitt Jul 1, 2025
790e6a4
chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /packages/…
dependabot[bot] Jul 1, 2025
eacc204
fix(role): support `<search>` element (#36512)
dgozman Jul 1, 2025
73c7609
feat(chromium): roll to r1181 (#36457)
microsoft-playwright-automation[bot] Jul 1, 2025
97014c7
feat(webkit): roll to r2189 (#36514)
microsoft-playwright-automation[bot] Jul 1, 2025
3287f5a
feat(aria): capture active element state (#36506)
yury-s Jul 1, 2025
06c359c
feat(html): add view trace button to top of test view (#36520)
agg23 Jul 1, 2025
4c35451
chore: set CURL_COOKIE_JAR_PATH env var for WK only in persistent mod…
mxschmitt Jul 1, 2025
be637ae
test: unflake MV3 extension test (#36526)
mxschmitt Jul 2, 2025
ed9b6dd
test: unflake toBeInViewport test (#36527)
mxschmitt Jul 2, 2025
04d1c08
feat(firefox): roll to r1489 (#36533)
microsoft-playwright-automation[bot] Jul 2, 2025
fc0b770
chore(codegen): move action update into the recorder app (#36523)
pavelfeldman Jul 3, 2025
5f2a001
feat(cli): open directly opens browser and does not invoke codegen (#…
agg23 Jul 3, 2025
b4e0c0b
feat(playwright-html-report): Added snippet parameter to playwright c…
agamjots05 Jul 3, 2025
86bd3eb
test: do not rely on localhost in tests (#36545)
mxschmitt Jul 3, 2025
c921c38
feat(codegen): add user-data-dir option (#35814)
agg23 Jul 3, 2025
80f9325
chore: reverse recorder <-> recorder app dep (#36544)
pavelfeldman Jul 3, 2025
22820d3
fix: make sure `asLocatorDescription()` tolerates invalid selectors (…
dgozman Jul 4, 2025
3fb78b6
chore: abort pending operations upon disconnect (#36496)
dgozman Jul 4, 2025
bbf198a
fix: use literals as a return value in ConsoleMessage's type (#36036)…
ReaZzy Jul 7, 2025
db2a52d
feat: add location information for annotations (#36542)
aslushnikov Jul 7, 2025
962f5ea
test: roll stable-test-runner to 1.54.0-alpha-2025-07-07 (#36571)
microsoft-playwright-automation[bot] Jul 7, 2025
13dd4fd
fix(ct): properly type `_wrapApiCall` references and mark as internal…
agg23 Jul 7, 2025
1a03721
fix: various WebSocketRoute issues (#36517)
dgozman Jul 7, 2025
cbd040d
test: fix fs.rmdir deprecation warning (#36578)
mxschmitt Jul 7, 2025
73d8edd
chore: set minimum Node.js version to 18 (#36582)
mxschmitt Jul 7, 2025
3d80c43
docs: support Node.js 24 (#36580)
mxschmitt Jul 7, 2025
3fc31ff
chore(html): reverse noSnippets option and add documentation (#36583)
agg23 Jul 7, 2025
3401a18
fix(url): add more custom prefixes captured by URL globbing (#36579)
agg23 Jul 7, 2025
f67d632
docs(extensions): update to Manifest v3 (#36586)
mxschmitt Jul 7, 2025
5e17b30
test: fix tests in driver mode (#36587)
mxschmitt Jul 7, 2025
dfdd47a
test: no deprecation warning during installation tests (#36576)
mxschmitt Jul 7, 2025
ebd74e9
test: fix Node.js deprecation warning DEP0190 in primary tests (#36577)
mxschmitt Jul 7, 2025
90c6e14
chore: resolve unroute all race (#36588)
pavelfeldman Jul 8, 2025
0b3c79a
fix(aria): process children of hidden elements (#36316)
Skn0tt Jul 8, 2025
a0cdb16
feat(webkit): roll to r2190 (#36584)
microsoft-playwright-automation[bot] Jul 8, 2025
544017c
feat(chromium-tip-of-tree): roll to r1345 (#36590)
microsoft-playwright-automation[bot] Jul 8, 2025
39a9305
chore: remove unnecessary casts to any (#36555)
agg23 Jul 8, 2025
966f7f5
chore: update dotnet channels generator (#36593)
dgozman Jul 8, 2025
4c25573
fix(ct): enhance error messages when no index.html template is provid…
agg23 Jul 8, 2025
360c653
fix(test): support whitespace in test tags (#36557)
agg23 Jul 8, 2025
44614ba
docs: clarify that the installation command also works for existing p…
rkrisztian Jul 8, 2025
f575771
test: remove useless aria/active test (#36596)
Skn0tt Jul 8, 2025
d3647da
chore(ports): ConsoleMessage.type remains as string in java and dotne…
Skn0tt Jul 8, 2025
117dfd1
fix(types): remove `partitionKey` from `storageState()` type (#36599)
dgozman Jul 8, 2025
5f4a0c7
fix(toMatchSnapshot): use consistent diff colors (#36605)
pavelfeldman Jul 8, 2025
689886c
chore: experimental recorder api (#36604)
pavelfeldman Jul 8, 2025
677ebc0
feat(webkit): roll to r2191 (#36602)
microsoft-playwright-automation[bot] Jul 8, 2025
2cbe965
chore: group attachments in terminal reporters (#36607)
pavelfeldman Jul 8, 2025
82b3ffd
test: unflake Chromium tracing tests (#36612)
mxschmitt Jul 9, 2025
6af944e
chore: unflake tracing screencast frames (#36613)
mxschmitt Jul 9, 2025
cd33649
chore: remove --use-angle in Chromium switches (#36614)
mxschmitt Jul 9, 2025
145e158
test: fix debug-controller.spec (#36616)
dgozman Jul 9, 2025
2edbe25
chore: update browser_patches to 9638cca873674fdb6c97a524be0d3ae4874f…
dgozman Jul 9, 2025
090e5aa
chore: update WebKit version to 26.0 (#36619)
dgozman Jul 9, 2025
ba32a24
chore: push action in context to the recorder app (#36611)
pavelfeldman Jul 9, 2025
fab3043
chore: v1.54 release notes (#36620)
dgozman Jul 9, 2025
82ce736
test: remove stale fixme/skips in capabilities spec (#36617)
mxschmitt Jul 9, 2025
12834b0
cherry-pick(#36624): chore: update v1.54 release notes
dgozman Jul 9, 2025
b01d0d1
chore: mark v1.54.0 (#36626)
dgozman Jul 9, 2025
3da07a7
cherry-pick(#36625): chore: render overlay on top of modal dom content
pavelfeldman Jul 9, 2025
0071756
cherry-pick(#36654): Revert "fix: get rid of url.parse in network cod…
Skn0tt Jul 11, 2025
97b6b88
chore: mark 1.54.1 (#36655)
Skn0tt Jul 11, 2025
5b15945
Revert "Merge upstream Playwright 1.53.0 (#45)"
ruifigueira Jul 24, 2025
0b8406b
Merge branch 'merge-1.53.0' into merge-1.54.1
ruifigueira Jul 25, 2025
d7eeef5
Revert "cherry-pick(#36231): feat(chromium): roll to 1178"
ruifigueira Jul 25, 2025
c9431f5
Merge tag 'v1.54.1' into merge-1.54.1
ruifigueira Jul 25, 2025
2b4478b
fix: adjust to 1.54.1 changes
ruifigueira Jul 25, 2025
46e6fdc
test: bump @playwright/test to 1.54.1
ruifigueira Jul 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
58 changes: 58 additions & 0 deletions .github/workflows/roll_stable_test_runner.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: "PR: bump stable-test-runner"
on:
workflow_dispatch:
schedule:
# At 10:00am UTC (3AM PST) every Monday
- cron: "0 10 * * 1"
jobs:
trigger-roll:
name: Trigger Roll
runs-on: ubuntu-24.04
if: github.repository == 'microsoft/playwright'
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: |
npm install @playwright/test@next
VERSION=$(node -e "console.log(require('./package.json').dependencies['@playwright/test'].replace('^', ''))")
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
working-directory: tests/playwright-test/stable-test-runner/
id: bump
- name: Prepare branch
id: prepare-branch
run: |
if [[ "$(git status --porcelain)" == "" ]]; then
echo "there are no changes";
exit 0;
fi
echo "HAS_CHANGES=1" >> $GITHUB_OUTPUT
BRANCH_NAME="roll-stable-test-runner/$(date +%Y-%b-%d)"
echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_OUTPUT
git config --global user.name microsoft-playwright-automation[bot]
git config --global user.email 203992400+microsoft-playwright-automation[bot]@users.noreply.github.com
git checkout -b "$BRANCH_NAME"
git add .
git commit -m "test: roll stable-test-runner to ${{ steps.bump.outputs.VERSION }}"
git push origin $BRANCH_NAME
- uses: actions/create-github-app-token@v2
id: app-token
with:
app-id: ${{ vars.PLAYWRIGHT_APP_ID }}
private-key: ${{ secrets.PLAYWRIGHT_PRIVATE_KEY }}
- name: Create Pull Request
if: ${{ steps.prepare-branch.outputs.HAS_CHANGES == '1' }}
uses: actions/github-script@v7
with:
github-token: ${{ steps.app-token.outputs.token }}
script: |
await github.rest.pulls.create({
owner: 'microsoft',
repo: 'playwright',
head: 'microsoft:${{ steps.prepare-branch.outputs.BRANCH_NAME }}',
base: 'main',
title: 'test: roll stable-test-runner to ${{ steps.bump.outputs.VERSION }}',
});
21 changes: 21 additions & 0 deletions .github/workflows/tests_others.yml
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,27 @@ jobs:
env:
PW_CLOCK: ${{ matrix.clock }}

test_legacy_progress_timeouts:
name: legacy progress timeouts
environment: ${{ github.event_name == 'push' && 'allow-uploading-flakiness-results' || null }}
permissions:
id-token: write # This is required for OIDC login (azure/login) to succeed
contents: read # This is required for actions/checkout to succeed
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/run-test
with:
node-version: 20
browsers-to-install: chromium
command: npm run test -- --project=chromium-*
bot-name: "legacy-progress-timeouts-linux"
flakiness-client-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_CLIENT_ID }}
flakiness-tenant-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_TENANT_ID }}
flakiness-subscription-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_SUBSCRIPTION_ID }}
env:
PLAYWRIGHT_LEGACY_TIMEOUTS: 1

test_electron:
name: Electron - ${{ matrix.os }}
environment: ${{ github.event_name == 'push' && 'allow-uploading-flakiness-results' || null }}
Expand Down
11 changes: 11 additions & 0 deletions .github/workflows/tests_primary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ jobs:
- os: ubuntu-22.04
node-version: 22
browser: chromium
- os: ubuntu-22.04
node-version: 24
browser: chromium
runs-on: ${{ matrix.os }}
permissions:
id-token: write # This is required for OIDC login (azure/login) to succeed
Expand Down Expand Up @@ -109,6 +112,14 @@ jobs:
node-version: 22
shardIndex: 2
shardTotal: 2
- os: ubuntu-latest
node-version: 24
shardIndex: 1
shardTotal: 2
- os: ubuntu-latest
node-version: 24
shardIndex: 2
shardTotal: 2
runs-on: ${{ matrix.os }}
permissions:
id-token: write # This is required for OIDC login (azure/login) to succeed
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/tests_secondary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,8 @@ jobs:
node_version: 20
- os: ubuntu-latest
node_version: 22
- os: ubuntu-latest
node_version: 24
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -176,11 +178,16 @@ jobs:
matrix:
include:
- browser: chromium
runs-on: ubuntu-22.04
- browser: firefox
runs-on: ubuntu-22.04
# See https://github.com/microsoft/playwright/issues/35586
- browser: webkit
runs-on: ubuntu-24.04
- browser: chromium
runs-on: ubuntu-22.04
channel: chromium-tip-of-tree
runs-on: ubuntu-22.04
runs-on: ${{ matrix.runs-on }}
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/run-test
Expand Down
4 changes: 2 additions & 2 deletions browser_patches/firefox/UPSTREAM_CONFIG.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
REMOTE_URL="https://github.com/mozilla/gecko-dev"
REMOTE_URL="https://github.com/mozilla-firefox/firefox"
BASE_BRANCH="release"
BASE_REVISION="9cbfae27052e4aaeb064d2d08e7e869f31ee4288"
BASE_REVISION="00656c9425c51ee035578ca6ebebe13c755b0375"
14 changes: 14 additions & 0 deletions browser_patches/firefox/juggler/NetworkObserver.js
Original file line number Diff line number Diff line change
Expand Up @@ -533,6 +533,8 @@ class NetworkRequest {
};

const { status, statusText, headers } = responseHead(this.httpChannel, opt_statusCode, opt_statusText);
if (redirectStatus.includes(status) && this._overriddenHeadersForRedirect)
this._overriddenHeadersForRedirect = filterHeadersForRedirect(this._overriddenHeadersForRedirect, this.httpChannel.requestMethod, status);
let remoteIPAddress = undefined;
let remotePort = undefined;
try {
Expand Down Expand Up @@ -808,6 +810,18 @@ function overrideRequestHeaders(httpChannel, headers) {
appendExtraHTTPHeaders(httpChannel, headers);
}

const redirectStatus = [301, 302, 303, 307, 308];

function filterHeadersForRedirect(headers, requestMethod, status) {
// HTTP-redirect fetch step 13 (https://fetch.spec.whatwg.org/#http-redirect-fetch)
if ((status === 301 || status === 302) && requestMethod === 'POST' ||
status === 303 && !['GET', 'HEAD'].includes(requestMethod)) {
const requestBodyHeaders = ['content-encoding', 'content-language', 'content-length', 'content-location', 'content-type'];
return headers.filter(header => !requestBodyHeaders.includes(header.name.toLowerCase()));
}
return headers;
}

function causeTypeToString(causeType) {
for (let key in Ci.nsIContentPolicy) {
if (Ci.nsIContentPolicy[key] === causeType)
Expand Down
160 changes: 151 additions & 9 deletions browser_patches/firefox/patches/bootstrap.diff
Original file line number Diff line number Diff line change
Expand Up @@ -2543,6 +2543,130 @@ index 704404c9f094640ad63b685d64bd5a396e733e4b..92bdc21b4d6a015cc2f2bb22781ec675
/**
* InterceptionTimeStamps is used to record the time stamps of the
* interception.
diff --git a/netwerk/protocol/http/nsHttpChannel.cpp b/netwerk/protocol/http/nsHttpChannel.cpp
index e4479400a4c574f652befbee7d83bd664aa2b840..2761dce9477f7f1622a82fe1da6472597ae82534 100644
--- a/netwerk/protocol/http/nsHttpChannel.cpp
+++ b/netwerk/protocol/http/nsHttpChannel.cpp
@@ -688,11 +688,9 @@ nsresult nsHttpChannel::OnBeforeConnect() {
// SecurityInfo.sys.mjs
mLoadInfo->SetHstsStatus(isSecureURI);

- RefPtr<mozilla::dom::BrowsingContext> bc;
- mLoadInfo->GetBrowsingContext(getter_AddRefs(bc));
// If bypassing the cache and we're forced offline
// we can just return the error here.
- if (bc && bc->Top()->GetForceOffline() &&
+ if (IsForcedOffline() &&
BYPASS_LOCAL_CACHE(mLoadFlags, LoadPreferCacheLoadOverBypass())) {
return NS_ERROR_OFFLINE;
}
@@ -805,9 +803,7 @@ nsresult nsHttpChannel::MaybeUseHTTPSRRForUpgrade(bool aShouldUpgrade,
return aStatus;
}

- RefPtr<mozilla::dom::BrowsingContext> bc;
- mLoadInfo->GetBrowsingContext(getter_AddRefs(bc));
- bool forceOffline = bc && bc->Top()->GetForceOffline();
+ bool forceOffline = IsForcedOffline();

if (mURI->SchemeIs("https") || aShouldUpgrade || !LoadUseHTTPSSVC() ||
forceOffline) {
@@ -1266,15 +1262,14 @@ nsresult nsHttpChannel::ContinueConnect() {
"CORS preflight must have been finished by the time we "
"do the rest of ContinueConnect");

- RefPtr<mozilla::dom::BrowsingContext> bc;
- mLoadInfo->GetBrowsingContext(getter_AddRefs(bc));
+ bool isForcedOffline = IsForcedOffline();

// we may or may not have a cache entry at this point
if (mCacheEntry) {
// read straight from the cache if possible...
if (CachedContentIsValid()) {
// If we're forced offline, and set to bypass the cache, return offline.
- if (bc && bc->Top()->GetForceOffline() &&
+ if (isForcedOffline &&
BYPASS_LOCAL_CACHE(mLoadFlags, LoadPreferCacheLoadOverBypass())) {
return NS_ERROR_OFFLINE;
}
@@ -1316,7 +1311,7 @@ nsresult nsHttpChannel::ContinueConnect() {
}

// We're about to hit the network. Don't if we're forced offline.
- if (bc && bc->Top()->GetForceOffline()) {
+ if (isForcedOffline) {
return NS_ERROR_OFFLINE;
}

@@ -1421,12 +1416,9 @@ void nsHttpChannel::SpeculativeConnect() {
// don't speculate if we are offline, when doing http upgrade (i.e.
// websockets bootstrap), or if we can't do keep-alive (because then we
// couldn't reuse the speculative connection anyhow).
- RefPtr<mozilla::dom::BrowsingContext> bc;
- mLoadInfo->GetBrowsingContext(getter_AddRefs(bc));
-
if (gIOService->IsOffline() || mUpgradeProtocolCallback ||
!(mCaps & NS_HTTP_ALLOW_KEEPALIVE) ||
- (bc && bc->Top()->GetForceOffline())) {
+ IsForcedOffline()) {
return;
}

@@ -4214,9 +4206,6 @@ nsresult nsHttpChannel::OpenCacheEntryInternal(bool isHttps) {
uint32_t cacheEntryOpenFlags;
bool offline = gIOService->IsOffline();

- RefPtr<mozilla::dom::BrowsingContext> bc;
- mLoadInfo->GetBrowsingContext(getter_AddRefs(bc));
-
bool maybeRCWN = false;

nsAutoCString cacheControlRequestHeader;
@@ -4227,7 +4216,7 @@ nsresult nsHttpChannel::OpenCacheEntryInternal(bool isHttps) {
return NS_OK;
}

- bool forceOffline = bc && bc->Top()->GetForceOffline();
+ bool forceOffline = IsForcedOffline();
if (offline || (mLoadFlags & INHIBIT_CACHING) || forceOffline) {
if (BYPASS_LOCAL_CACHE(mLoadFlags, LoadPreferCacheLoadOverBypass()) &&
!offline && !forceOffline) {
@@ -7300,6 +7289,20 @@ void nsHttpChannel::MaybeStartDNSPrefetch() {
}
}

+bool nsHttpChannel::IsForcedOffline() {
+ RefPtr<mozilla::dom::BrowsingContext> bc;
+ mLoadInfo->GetBrowsingContext(getter_AddRefs(bc));
+ if (bc && bc->Top()->GetForceOffline())
+ return true;
+
+ RefPtr<mozilla::dom::BrowsingContext> wbc;
+ mLoadInfo->GetWorkerAssociatedBrowsingContext(getter_AddRefs(wbc));
+ if (wbc && wbc->Top()->GetForceOffline())
+ return true;
+
+ return false;
+}
+
NS_IMETHODIMP
nsHttpChannel::GetEncodedBodySize(uint64_t* aEncodedBodySize) {
if (mCacheEntry && !LoadCacheEntryIsWriteOnly()) {
diff --git a/netwerk/protocol/http/nsHttpChannel.h b/netwerk/protocol/http/nsHttpChannel.h
index cb8b8b7406411edceb30aa53c9b9007a38058f84..ebdc5384ca20feda399b70532a3036174f1a7431 100644
--- a/netwerk/protocol/http/nsHttpChannel.h
+++ b/netwerk/protocol/http/nsHttpChannel.h
@@ -307,6 +307,10 @@ class nsHttpChannel final : public HttpBaseChannel,
void MaybeResolveProxyAndBeginConnect();
void MaybeStartDNSPrefetch();

+ // ---- Playwright begin
+ bool IsForcedOffline();
+ // ---- Playwright end
+
// Based on the proxy configuration determine the strategy for resolving the
// end server host name.
ProxyDNSStrategy GetProxyDNSStrategy();
diff --git a/parser/html/nsHtml5TreeOpExecutor.cpp b/parser/html/nsHtml5TreeOpExecutor.cpp
index d3b44cc62d3df49bbf842356cbdb153c82c3163c..23cf9bc83fb1faaf1c7406331b78e522b307cbf0 100644
--- a/parser/html/nsHtml5TreeOpExecutor.cpp
Expand Down Expand Up @@ -2669,22 +2793,40 @@ index 75555352b8a15a50e4a21e34fc8ede4e9246c7cc..72855a404effa42b6c55cd0c2fcb8bdd
// ignored for Linux.
const unsigned long CHROME_SUPPRESS_ANIMATION = 1 << 24;
diff --git a/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.sys.mjs b/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.sys.mjs
index 76fb919603e8d2b7864d351eb47be2a38e40e31e..cdfef96e20bea13799751154f4076bbcc2f827d4 100644
index 76fb919603e8d2b7864d351eb47be2a38e40e31e..9f1e880fe9027d1a2540ffeaa11fc0c4e1a36133 100644
--- a/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.sys.mjs
+++ b/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.sys.mjs
@@ -108,6 +108,12 @@ EnterprisePoliciesManager.prototype = {
@@ -108,7 +108,9 @@ EnterprisePoliciesManager.prototype = {
Services.prefs.clearUserPref(PREF_POLICIES_APPLIED);
}

+ // Playwright: Disable enterprise policies
+ if (true) {
+ this.status = Ci.nsIEnterprisePolicies.INACTIVE;
+ return;
+ }
+
let provider = this._chooseProvider();
- let provider = this._chooseProvider();
+ // --- Playwright begin ---
+ let provider = new PlaywrightPoliciesProvider();
+ // --- Playwright end ---

if (provider.failed) {
this.status = Ci.nsIEnterprisePolicies.FAILED;
@@ -631,6 +633,19 @@ class JSONPoliciesProvider {
}
}

+class PlaywrightPoliciesProvider extends JSONPoliciesProvider {
+ _getConfigurationFile() {
+ let prefPath = Services.prefs.getStringPref(PREF_ALTERNATE_PATH, "");
+ if (!prefPath)
+ return null;
+
+ dump(`Playwright: loading enterprise policies from ${prefPath}\n`);
+ let configFile = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
+ configFile.initWithPath(prefPath);
+ return configFile;
+ }
+}
+
class WindowsGPOPoliciesProvider {
constructor() {
this._policies = null;
diff --git a/toolkit/components/resistfingerprinting/nsUserCharacteristics.cpp b/toolkit/components/resistfingerprinting/nsUserCharacteristics.cpp
index 253171bed4dea54fc28bb4ddc9920823dbd9351c..6dc0e620b399ed9ee6b53f97bc080ec17ee4e1b5 100644
--- a/toolkit/components/resistfingerprinting/nsUserCharacteristics.cpp
Expand Down
3 changes: 3 additions & 0 deletions browser_patches/firefox/preferences/playwright.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ pref("dom.input_events.security.minTimeElapsedInMS", 0);

pref("dom.iframe_lazy_loading.enabled", false);

// Allows a custom "policies.json" file.
pref("browser.policies.alternatePath", getenv("PLAYWRIGHT_FIREFOX_POLICIES_JSON") || "");

// This setting is experimental and is only enabled on early betas.
// Disable it unconditionally since it breaks proxy tests.
pref("dom.security.https_first", false);
Expand Down
2 changes: 1 addition & 1 deletion browser_patches/webkit/UPSTREAM_CONFIG.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
REMOTE_URL="https://github.com/WebKit/WebKit.git"
BASE_BRANCH="main"
BASE_REVISION="4dd862e5ce1c10d77f72be94260164c5f13aafbd"
BASE_REVISION="153da00a252619799ba4b32cd0ac6c5b8faf6a35"
2 changes: 2 additions & 0 deletions browser_patches/webkit/embedder/Playwright/win/Common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ HINSTANCE hInst;
POINT s_windowPosition = { 100, 100 };
SIZE s_windowSize = { 500, 200 };

bool s_headless;

namespace WebCore {
float deviceScaleFactorForWindow(HWND);
}
Expand Down
1 change: 1 addition & 0 deletions browser_patches/webkit/embedder/Playwright/win/Common.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ std::wstring replaceString(std::wstring src, const std::wstring& oldValue, const
extern HINSTANCE hInst;
extern POINT s_windowPosition;
extern SIZE s_windowSize;
extern bool s_headless;

std::wstring createString(WKStringRef wkString);
std::wstring createString(WKURLRef wkURL);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,10 @@ static INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
std::wstring MainWindow::s_windowClass;
size_t MainWindow::s_numInstances;

bool MainWindow::s_headless = false;
bool MainWindow::s_controlledRemotely = false;
bool MainWindow::s_disableAcceleratedCompositing = false;

void MainWindow::configure(bool headless, bool controlledRemotely, bool disableAcceleratedCompositing) {
s_headless = headless;
void MainWindow::configure(bool controlledRemotely, bool disableAcceleratedCompositing) {
s_controlledRemotely = controlledRemotely;
s_disableAcceleratedCompositing = disableAcceleratedCompositing;
}
Expand Down
Loading
Loading