Yury Semikhatsky
82981a8091
fix: interception id not found error in route.continue ( #29180 )
...
We stopped catching all exceptions in
https://github.com/microsoft/playwright/pull/28539 in hope that we'll
get loadingFailed even before Fetch.continue/fulfill command's error.
Turns out this is racy and may fail if the test cancels the request
while we are continuing it. The following test could in theory reproduce
it if stars align and the timing is good:
```js
it('page.continue on canceled request', async ({ page }) => {
let resolveRoute;
const routePromise = new Promise<Route>(f => resolveRoute = f);
await page.route('http://test.com/x ', resolveRoute);
const evalPromise = page.evaluate(async () => {
const abortController = new AbortController();
(window as any).abortController = abortController;
return fetch('http://test.com/x ', { signal: abortController.signal }).catch(e => 'cancelled');
});
const route = await routePromise;
void page.evaluate(() => (window as any).abortController.abort());
await new Promise(f => setTimeout(f, 10));
await route.continue();
const req = await evalPromise;
expect(req).toBe('cancelled');
});
```
Fixes https://github.com/microsoft/playwright/issues/29123
2024-01-25 16:54:42 -08:00
Max Schmitt
4c4789c740
chore: validate deps during install ( #28932 )
...
Motivation: On Windows we call around 50 times `PrintDeps.exe` which
takes on a very fast machine 500+ms. On Linux we do it around 120 times
(`ldd`) which takes around 150ms.
This change validates the dependencies once on browser install (`npx
playwright install`). In case its failing, it will emit a warning, in
case of a success, it will create a marker file that the binary has been
validated. For future `launch()` calls, we'll read this file and if
exists, we'll not validate again. Otherwise we'll validate again.
Note: If the marker file is older than 30 days, the browser will be
validated again.
2024-01-25 20:55:53 +01:00
Dmitry Gozman
f5de6e5538
feat(codegen): generate multiple selectors to choose from ( #29154 )
...
When possible, "pick locator" generates:
- default locator;
- locator without any text;
- locator without css `#id`.
Fixes #27875 , fixes #5178 .
2024-01-25 07:35:58 -08:00
Dmitry Gozman
bc83d7084c
fix(chromium): emulate navigator.userAgentData along with UA ( #29159 )
...
Fixes #28989 , fixes #29139 .
2024-01-25 07:34:11 -08:00
Playwright Service
129f5bfdbe
feat(chromium): roll to r1100 ( #29167 )
...
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-01-25 15:24:49 +01:00
Max Schmitt
ba8d141de8
chore: drop Ubuntu 18.04 ( #29145 )
...
This will now yield:
```
root@a85fb37f0c96:/work# npx playwright install
Failed to install browsers
Error: ERROR: Playwright does not support chromium on ubuntu18.04-x64
```
On Ubuntu 18.04.
2024-01-24 17:46:20 +01:00
Dmitry Gozman
1ce3ca25a2
chore(role): cache element list by role ( #29130 )
2024-01-23 13:45:26 -08:00
Dmitry Gozman
8e607d509f
fix(recorder): disallow external imports ( #29129 )
...
Previously, new `Recorder` instance was given an existing
`InjectedScript`. However, we built a separate source for
`InjectedScript` vs `Recorder`, and both bundles contain their own copy
of all helper modules, e.g. `roleUtils`.
This resulted in two copies of helper modules, which is troublesome for
any module-level globals like a top-level cache. Depending on whether
`Recorder` or `InjectedScript` called into the helper, they would access
the different value of a module global, which lead to bugs.
To prevent this, we force any external dependencies to be imported
through the `InjectedScript.utils`.
2024-01-23 11:29:40 -08:00
Dmitry Gozman
5bc5056a1f
chore(role): cache pseudo content calculation ( #29115 )
2024-01-23 10:09:23 -08:00
Playwright Service
3e2d7fe7e7
feat(chromium): roll to r1099 ( #29120 )
...
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-01-23 13:34:59 +01:00
Dmitry Gozman
9b974e0026
chore: speedup frequent element text normalization ( #29113 )
...
We cache `ElementText` for frequent operations, but then call
`normalizeWhitespace` on it every time which burns a lot of CPU.
2024-01-22 21:33:56 -08:00
Yury Semikhatsky
b2de9bc865
fix: mock safari.pushNotification ( #29107 )
...
Fixes https://github.com/microsoft/playwright/issues/29032
2024-01-22 15:44:13 -08:00
Dmitry Gozman
f3fac6f4e9
feat: page.handleLocator that closes any interstitial pages/dialogs ( #29029 )
2024-01-19 12:35:00 -08:00
Max Schmitt
e551506c9e
Revert "feat(codegen): add range input recording support ( #28767 )" ( #29069 )
2024-01-19 19:47:59 +01:00
Max Schmitt
4a45724633
fix: open 0.0.0.0 as localhost ( #29054 )
...
Fixes https://github.com/microsoft/playwright/issues/29047
2024-01-18 22:21:49 +01:00
Pavel Feldman
03815b9eb1
chore: migrate to Node 18 lockFileVersion 3 ( #29051 )
2024-01-18 11:33:23 -08:00
Dmitry Gozman
e6d51cf7bd
chore: refactor actionability check to go through node-side retry ( #28982 )
...
This allows to inject a checkpoint in between the actionability checks.
Drive-by: cleanup `InjectedScriptPoll`-related code.
2024-01-16 19:11:41 -08:00
Dmitry Gozman
48317af1cc
feat(trace): preserve noscript when javascript is disabled ( #28971 )
...
Closes #27504 , closes #27532 .
2024-01-12 12:11:39 -08:00
Yury Semikhatsky
8936885a67
fix(chromium): preserve header overrides in redirects ( #28962 )
...
Reference https://github.com/microsoft/playwright/issues/28758
2024-01-12 08:55:20 -08:00
Playwright Service
3ace946fc2
feat(chromium): roll to r1097 ( #28949 )
...
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-01-11 14:38:16 +01:00
Yury Semikhatsky
19a4f15eb6
chore: remove redundant checks from network interception ( #28922 )
...
We only intercept requests in Playwright so these fields are always
undefined.
2024-01-09 13:35:51 -08:00
Max Schmitt
2ddf3a45f9
chore(firefox): rewrite error message for $HOME directory ownership mismatch ( #28921 )
...
Fixes https://github.com/microsoft/playwright/issues/28896
2024-01-09 20:40:39 +01:00
Max Schmitt
feece0f569
fix(deps): check only .dll/.exe files on Windows ( #28901 )
...
Fixes https://github.com/microsoft/playwright/issues/28846
2024-01-08 21:53:18 +01:00
Playwright Service
f428f0793f
feat(firefox): roll to r1438 ( #28882 )
...
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-01-05 21:11:34 +01:00
Playwright Service
572e656be0
feat(chromium): roll to r1096 ( #28878 )
...
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-01-05 13:21:50 +01:00
Playwright Service
a7c9060731
feat(webkit): roll to r1963 ( #28820 )
...
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-01-02 09:37:18 +01:00
Rui Figueira
778828cc43
feat(codegen): add range input recording support ( #28767 )
2023-12-30 17:22:57 -08:00
Yury Semikhatsky
ff99aa33b0
fix: input events triggered by playwright actions should have composed=true ( #28730 )
...
Fixes https://github.com/microsoft/playwright/issues/28726
2023-12-21 15:25:16 -08:00
Yury Semikhatsky
afc1ac7063
fix: errors in evaluate should be JavaScriptErrorInEvaluate ( #28706 )
...
Fixes https://github.com/microsoft/playwright/issues/28690
2023-12-19 10:47:43 -08:00
Max Schmitt
44c3ad5ceb
chore: make csharp library codegen more csharp like ( #28663 )
2023-12-15 10:24:26 -08:00
Yury Semikhatsky
f8d0204d2f
chore: provide better message for unhandled internal server errors ( #28653 )
...
This changes error message from `Error: ` to `Error: Protocol error
(Fetch.continueRequest): Internal server error, session closed.` when
running `npm run ctest -- --repeat-each 100 -x --headed --timeout 3000
--workers 1 library/browsercontext-route.spec.ts:172` prior to
9d91b7caf5 .
2023-12-14 13:49:11 -08:00
Dmitry Gozman
35e8c440c2
fix(dispatchers): separate gc bucket for main frame, increased limit ( #28629 )
...
- Keep main frames in a separate bucket, so that page methods that
redirect to the main frame continue to work.
- Increase default dispatchers limit to `10_000`.
- Increase dispatchers limit for `JSHandle`/`ElementHandle` to
`100_000`.
Fixes #28320 , #28503 .
2023-12-14 10:42:08 -08:00
Playwright Service
d4c66a6295
feat(chromium): roll to r1095 ( #28649 )
2023-12-14 08:58:59 -08:00
Yury Semikhatsky
9d91b7caf5
fix(route): silently catch errors when handling route on server ( #28612 )
...
This is a follow-up to 119afdf788 Since
continue/fulfill/abort now may throw on the server after page has been
closed, we need to catch the errors manually. On the client it's fixed
by the original change.
This fixes errors in the existing tests:
```
1) [chromium] › library/browsercontext-route.spec.ts:172:3 › should support Set-Cookie header ────
Error:
at ../packages/playwright-core/src/server/chromium/crConnection.ts:147
145 | const id = this._connection._rawSend(this._sessionId, method, params);
146 | return new Promise((resolve, reject) => {
> 147 | this._callbacks.set(id, { resolve, reject, error: new ProtocolError('error', method) });
| ^
148 | });
149 | }
150 |
at /Users/yurys/playwright/packages/playwright-core/src/server/chromium/crConnection.ts:147:57
at new Promise (<anonymous>)
at CRSession.send (/Users/yurys/playwright/packages/playwright-core/src/server/chromium/crConnection.ts:146:12)
at RouteImpl.continue (/Users/yurys/playwright/packages/playwright-core/src/server/chromium/crNetworkManager.ts:566:25)
at FrameManager.requestStarted (/Users/yurys/playwright/packages/playwright-core/src/server/frames.ts:299:23)
at CRNetworkManager._onRequest (/Users/yurys/playwright/packages/playwright-core/src/server/chromium/crNetworkManager.ts:314:57)
at CRNetworkManager._onRequestPaused (/Users/yurys/playwright/packages/playwright-core/src/server/chromium/crNetworkManager.ts:202:12)
at CRSession.emit (node:events:517:28)
at /Users/yurys/playwright/packages/playwright-core/src/server/chromium/crConnection.ts:172:14
at runNextTicks (node:internal/process/task_queues:60:5)
at processImmediate (node:internal/timers:447:9)
```

Reference https://github.com/microsoft/playwright/issues/28490
2023-12-13 09:34:20 -08:00
Yury Semikhatsky
66e056c306
fix: disable PaintHolding to be able to click in oopifs ( #28604 )
...
Fixes https://github.com/microsoft/playwright/issues/28023
2023-12-12 12:20:44 -08:00
Pavel Feldman
76ace0fc09
chore: workaround webkit screenshot animation issue ( #28582 )
2023-12-11 18:20:24 -08:00
Playwright Service
7827838d22
feat(chromium): roll to r1094 ( #28560 )
...
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2023-12-08 14:59:38 -08:00
Andrey Lushnikov
8d3a931377
feat(firefox): roll FF Stable & Beta to 1433 ( #28543 )
...
Fixes #28495
2023-12-08 10:48:44 -08:00
Yury Semikhatsky
119afdf788
fix: throw if fuliflled with unsupported status code ( #28539 )
...
If request gets cancelled by the page before we fulfill it, we receive
`loadingFailed` event. In that case we'll ignore interception error if
any, otherwise the error will be propagated to the caller.
Fixes https://github.com/microsoft/playwright/issues/28490
2023-12-07 16:57:39 -08:00
Dmitry Gozman
d587435efa
feat(trace): show target point for raw mouse apis ( #28459 )
...
Fixes #27931 .
2023-12-07 06:27:49 -08:00
Playwright Service
4b968412c9
feat(firefox): roll to r1430 ( #28489 )
...
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2023-12-05 13:00:30 -08:00
Max Schmitt
524ed3e269
fix(electron): after v28.0 ( #28499 )
...
Fixes https://github.com/microsoft/playwright/issues/28048
Relates https://github.com/electron/electron/issues/40501
2023-12-05 12:46:28 -08:00
Playwright Service
aadc9345fa
feat(webkit): roll to r1951 ( #28498 )
...
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2023-12-05 12:28:24 -08:00
Yury Semikhatsky
ab68d7b9de
fix(webkit): delay request event until requestIntercepted is received ( #28484 )
...
Previously we were wrongly firing `route` event for the request which
are not in fact intercepted (e.g. requests from service worker).
Related https://github.com/microsoft/playwright/pull/28414
Reference https://github.com/microsoft/playwright/issues/23781
2023-12-04 13:02:00 -08:00
Yury Semikhatsky
9a95d9a60c
chore: remove unused request._redirectedFrom ( #28485 )
2023-12-04 12:38:07 -08:00
Pavel Feldman
facec88c99
fix: speed up caret hiding while screenshotting ( #28460 )
...
Fixes #28375
2023-12-03 21:06:40 -08:00
Yury Semikhatsky
607a243380
chore: remove unused fields from wk network ( #28455 )
2023-12-01 14:51:41 -08:00
Yury Semikhatsky
b166189247
fix: disable memory cache when intercepting in webkit ( #28458 )
2023-12-01 14:49:27 -08:00
Pavel Feldman
0a7a10d0f6
feat(vrt): allow providing screenshot style ( #28229 )
2023-11-30 17:42:45 -08:00
Playwright Service
b06f9ab055
feat(chromium): roll to r1093 ( #28421 )
2023-11-30 05:41:23 -08:00
Pavel Feldman
022b36332d
chore: do not add to the internal action logs ( #28365 )
...
Fixes https://github.com/microsoft/playwright/issues/28319
2023-11-27 16:43:47 -08:00
Playwright Service
96ce1a8f88
feat(webkit): roll to r1949 ( #28358 )
...
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2023-11-27 21:51:30 +01:00
Alexander Kachkaev
41728e7098
chore(install): Improve ECONNRESET handling in downloadFile ( #28344 )
...
See
https://github.com/microsoft/playwright/issues/28329#issuecomment-1826753106
for context
2023-11-27 21:44:24 +01:00
Playwright Service
7dd121c784
feat(chromium): roll to r1092 ( #28312 )
...
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2023-11-23 16:04:35 +01:00
Yury Semikhatsky
82f970e5c1
chore: print more accurate MiB instead of Mb when downloading browsers ( #28304 )
...
Fixes https://github.com/microsoft/playwright/issues/28283
2023-11-23 11:09:38 +01:00
Max Schmitt
2f1b0d6ff7
fix(install): hang on server side connection close ( #28278 )
2023-11-22 20:26:21 +01:00
Pavel Feldman
3f55587dd8
feat(vrt): bring back wait for font loading ( #28226 )
2023-11-17 17:16:32 -08:00
Dmitry Gozman
738155d85d
fix(dispatcher): only remove stale dispatcher after sending "create" ( #28176 )
...
Otherwise, we might dispose objects referenced in the initializer of the
new object being created, which triggers an exception on the client.
2023-11-16 15:07:43 -08:00
Dmitry Gozman
61c089fcbd
feat(recorder): UX updates for assertion tools ( #28198 )
...
- No locator editor.
- No value editor for `toHaveValue`.
- Visual feedback for `toBeVisible`/`toHaveValue`.
- UI tweaks.
2023-11-16 13:19:36 -08:00
Dmitry Gozman
da6707f785
fix(chromium): properly detect session closed errors for oopifs ( #28197 )
...
Exposed by the flaky test `should not throw on exposeFunction when oopif
detaches`.
2023-11-16 11:44:10 -08:00
Max Schmitt
80bab8afae
fix(electron/android): re-add Element.prototype.checkVisibility check ( #28173 )
...
Regressed in https://github.com/microsoft/playwright/pull/28148 .
2023-11-15 15:10:13 -08:00
Playwright Service
0867c3ce5b
feat(chromium): roll to r1091 ( #28171 )
...
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2023-11-15 21:31:01 +01:00
Max Schmitt
611badcf74
fix: setInputFiles test in driver mode ( #28166 )
...
https://github.com/microsoft/playwright/pull/28156
2023-11-15 20:09:36 +01:00
Playwright Service
bb241abaff
feat(webkit): roll to r1944 ( #28148 )
...
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Max Schmitt <max@schmitt.mx>
2023-11-15 19:34:53 +01:00
Max Schmitt
b66839b039
fix(exposeFunction): exposeFunction should not leak client side BindingCalls ( #28163 )
...
This should already make it a bit better. There is more going on tho.
https://github.com/microsoft/playwright/issues/28146
2023-11-15 17:15:25 +01:00
Dmitry Gozman
557f3afd74
feat(recorder): assert value as a separate tool ( #28145 )
2023-11-14 15:17:42 -08:00
Dmitry Gozman
0a052cb4d6
feat(recorder): assert visibility tool ( #28142 )
2023-11-14 12:55:34 -08:00
Max Schmitt
2ac1cde879
fix(recorder): resize of assert overlay textarea ( #28137 )
2023-11-14 18:07:27 +01:00
Pavel Feldman
60a37f37ef
chore: allow tabbing from codemirror locator editor ( #28116 )
2023-11-14 08:13:29 -08:00
Dmitry Gozman
16aee8b5d0
fix(codegen): comment-out generated expects for library scripts ( #28118 )
...
- reverts "fix(codegen): generate expect import for library
(https://github.com/microsoft/playwright/pull/28107 )";
- comments-out generated expects.
2023-11-13 16:56:27 -08:00
Dmitry Gozman
36b99c3437
chore(recorder): standby mode, expose setModeRequested in DebugController ( #28117 )
2023-11-13 16:39:14 -08:00
Dmitry Gozman
2c3955a28c
chore: remove fake error from expect calls ( #28112 )
...
We used to have a fake `error` property, so that trace viewer shows
failed expectes as such. Today, we have a step for each expect that
contains a proper error. Sending the fake error to the client confuses
language ports.
2023-11-13 16:39:05 -08:00
Pavel Feldman
b0f75a6a3a
chore: allow editing locator while matching text ( #28115 )
2023-11-13 15:42:46 -08:00
Pavel Feldman
ae5cdf16f0
chore: allow asserting substring ( #28111 )
2023-11-13 14:38:04 -08:00
Max Schmitt
8b1c637c16
fix(codegen): generate expect import for library ( #28107 )
2023-11-13 21:54:30 +01:00
Pavel Feldman
cd70d51aa8
chore: remove redundant check for highlight liveness ( #28108 )
...
Closes https://github.com/microsoft/playwright/issues/28002
2023-11-13 11:44:25 -08:00
Pavel Feldman
db38f0d2df
chore: flag text mismatch when editing ( #28106 )
2023-11-13 11:44:06 -08:00
Dmitry Gozman
120f0228c5
feat(selector generator): try improving text candidate with heuristics ( #28074 )
...
- Drop number-like prefixes and/or suffixes.
- Trim long texts to a word boundary around 15-25 character.
2023-11-13 11:30:16 -08:00
Mattias Wallander
c6d154f9c4
feat: Add support for dispatching device motion events ( #28067 )
...
References #27887 .
2023-11-13 08:58:46 -08:00
Pavel Feldman
1b3349d091
chore: use codemirror in the on-hover locator editor ( #28090 )
2023-11-10 22:00:28 -08:00
Yury Semikhatsky
fae5dd898a
chore: remove from client check if browser is co-located with server ( #28071 )
...
Reference https://github.com/microsoft/playwright/issues/27792
2023-11-10 15:24:31 -08:00
Playwright Service
93d202c480
feat(chromium): roll to r1090 ( #28052 )
...
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2023-11-09 15:16:20 +01:00
Pavel Feldman
b004c1a0a7
chore: rework assert dialog ( #28043 )
2023-11-08 20:09:58 -08:00
Max Schmitt
5f527fedb1
fix: JSHandle preview text for non-ascii attributes/children ( #28038 )
...
This surfaced in .NET that the string in the driver got incorrectly cut,
then transferred to .NET as an invalid UTF8 character
[`\ud835`](https://charbase.com/d835-unicode-invalid-character ) which
.NET wasn't able to parse and threw an error.
Drive-by: Move similar function from
`packages/playwright-core/src/client/page.ts` into isomorphic
`stringUtils`.
https://github.com/microsoft/playwright-dotnet/issues/2748
2023-11-09 00:11:01 +01:00
Mattias Wallander
5a9fa69c6d
feat: Add support for dispatching device orientation events ( #27960 )
...
Fixes #27887
2023-11-08 09:50:25 -08:00
Pavel Feldman
061ded19b6
chore: place overlay inside the glass pane ( #28026 )
2023-11-07 19:36:12 -08:00
Max Schmitt
e788c711c6
fix: electron video tests ( #28004 )
2023-11-07 23:42:17 +01:00
Playwright Service
b9aaa38d3b
feat(firefox): roll to r1429 ( #28020 )
...
Fixes https://github.com/microsoft/playwright/issues/27682
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2023-11-07 22:20:55 +01:00
Pavel Feldman
eeda25c47f
chore(recorder): glue the overlay to the top ( #28021 )
2023-11-07 12:58:41 -08:00
Dmitry Gozman
810382c074
chore(recorder): more UX fixes for text assertions ( #27995 )
2023-11-06 16:40:33 -08:00
Pavel Feldman
87787dcc7d
chore: allow click close the page w/o errors ( #27994 )
2023-11-06 15:13:41 -08:00
Dmitry Gozman
ffd2e02aa3
feat(recorder): various UX fixes ( #27967 )
2023-11-04 21:18:27 -07:00
Dmitry Gozman
f401a482d2
fix(codegen): consume pointer events alongside mouse events ( #27949 )
...
Fixes #27926 .
2023-11-03 13:41:51 -07:00
Max Schmitt
326c9785b4
fix(trace-viewer): keep searchParams on / redirect ( #27956 )
...
Relates to https://github.com/microsoft/playwright/issues/27952 .
Might help future users too.
2023-11-03 17:38:55 +01:00
Max Schmitt
f9c4955fe8
fix(msedge): install with multiple artifacts ( #27939 )
...
The API response looked like this:
<img width="1584" alt="image"
src="https://github.com/microsoft/playwright/assets/17984549/89d32ad4-8770-48c3-b562-231ae7b9ef3b ">
-> multiple entries for `Windows` and `X64`, but some without artifacts.
-> We filter now for `artifacts.length > 0` which seems like a healthy
change.
Fixes https://github.com/microsoft/playwright/issues/22841
2023-11-02 15:30:40 -07:00
Dmitry Gozman
a7fd515626
chore(recorder): use designMode for text selection tool ( #27936 )
...
This allows us to barely support shadow dom, compared to no support at
all.
2023-11-02 13:47:53 -07:00
Playwright Service
059c865689
feat(chromium): roll to r1089 ( #27925 )
...
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2023-11-02 15:16:43 +01:00
Dmitry Gozman
07da88dcf1
feat(recorder): generate toHaveValue/toBeEmpty/toBeChecked ( #27913 )
2023-11-01 21:17:25 -07:00
Pavel Feldman
0f2de59b7c
chore: remove graceful browser.close cleanup ( #27916 )
2023-11-01 20:17:10 -07:00
Pavel Feldman
817a130cdc
chore: dispose-based callback termination ( #27911 )
2023-11-01 16:36:39 -07:00