383 Commits

Author SHA1 Message Date
Dmitry Gozman
d8d5289e86
fix(remote): make sure api calls reject before browser is closed (#31858)
Upon calling `browser.close()` or dropping remote connection, make sure
to reject api calls before resolving `browser.close()` and firing a
`disconnected` event.

This change aligns the order guarantee with non-remote case.
2024-07-25 09:57:34 -07:00
Max Schmitt
c4862c022c
chore: client certificates api review (#31826) 2024-07-23 22:56:36 +02:00
Yury Semikhatsky
383e4b3c73
Revert "feat: introduce touchscreen.touch() for dispatching raw touch… (#31823)
… events (#31457)"

This reverts commit a3e31fd2c4146e67a63ff4d3dc4f655533adcbde.
2024-07-23 10:29:37 -07:00
Max Schmitt
e11c0c0cbb
fix(connect): annotate internal api calls correctly (#31715) 2024-07-17 09:00:47 +02:00
Dmitry Gozman
6ee8f1de2d
Revert "chore: move artifacts recording to TestLifecycleInstrumentation (#30935)" (#31686)
This reverts commit ba5b46044469b783b64c94b9986460c38e020c77.
2024-07-15 07:01:51 -07:00
Dmitry Gozman
074cc7d467
Revert "feat(trace): record trace upon browser closure (#31563)" (#31677)
This reverts commit bc27ca225e69995f238192426df4ccb3f940a50d. Considered
too risky.
2024-07-15 01:08:51 -07:00
Max Schmitt
9569cb5c1e
feat: support client certificates (#31529)
Signed-off-by: Max Schmitt <max@schmitt.mx>
Co-authored-by: Dmitry Gozman <dgozman@gmail.com>
2024-07-12 11:42:24 +02:00
Dmitry Gozman
bc27ca225e
feat(trace): record trace upon browser closure (#31563)
Retaining traces in the following scenarios:
- browser crash;
- manual `browser.close()`;
- implicit `browser.close()` from the `browser` fixture upon test end.

This does not affect the library, where `browser.close()` will not
retain the trace and will close the browser as fast as possible.

References #31541, #31535, #31537.
2024-07-06 11:34:34 -07:00
Max Schmitt
1132667ffe
chore: bump TypeScript to v5.5 (#31532) 2024-07-05 16:31:08 +02:00
Max Schmitt
9dc7e40084
chore(electron): don't swallow close errors (#31509) 2024-07-01 22:00:03 +02:00
Pavel Feldman
f46ae15500
test(clock): fix clock mode bots (#31472) 2024-06-28 11:46:28 -07:00
Yury Semikhatsky
a3e31fd2c4
feat: introduce touchscreen.touch() for dispatching raw touch events (#31457) 2024-06-27 14:37:36 -07:00
Yury Semikhatsky
95fc2b8a8b
feat(fetch): maxRetries for fetch (#31386)
Fixes https://github.com/microsoft/playwright/issues/30978
2024-06-19 18:10:14 -07:00
Max Schmitt
5fc56283a6
fix(clock): throw for invalid date (#31356)
Fixes https://github.com/microsoft/playwright/issues/31354
2024-06-18 18:23:55 +02:00
Pavel Feldman
2a7f17d820
chore: fix simulated clock bots (#31301) 2024-06-17 09:17:38 -07:00
Max Schmitt
dcf4e4e054
feat: allow folder uploads (#31165) 2024-06-12 22:20:18 +02:00
Pavel Feldman
2b257ea963
chore(clock): introduce pauseAt (#31255) 2024-06-11 12:51:00 -07:00
Pavel Feldman
6399e8de4e
chore: clock api review (#31237) 2024-06-11 09:42:15 -07:00
Pavel Feldman
c516ba0ec8
api(clock): rework api based on the review (#31137) 2024-06-04 06:51:35 -07:00
Pavel Feldman
8bfd0eb6e4
chore: introduce clock test mode (#31110) 2024-05-31 14:44:26 -07:00
Pavel Feldman
76e977a934
chore: add clock.next() (#31097) 2024-05-31 08:09:24 -07:00
Pavel Feldman
170c457a61
feat(timers): a stab at fake timers (#31075) 2024-05-30 09:38:27 -07:00
Dmitry Gozman
ba5b460444
chore: move artifacts recording to TestLifecycleInstrumentation (#30935)
The spirit of this change is reverting #23153. Since that time, we have
moved tracing and `artifactsDir` lifetime into the test runner, so the
reason for revert is mitigated.

Fixes #30287, fixes #30718, fixes #30959.
2024-05-29 18:05:17 -07:00
Pavel Feldman
6675652269
chore: split client-side instrumentation into sync and async (#31054) 2024-05-28 14:29:57 -07:00
cavivie
a7599ad509
feat(api): add host option in launchServer options (#30999) 2024-05-27 11:24:23 +02:00
Pavel Feldman
964fe66ccc
chore: hint at unroute for handle errors (#30949) 2024-05-22 08:54:19 -07:00
Pavel Feldman
e7a11c0ca2
fix: propagate close reason to api context (#30945) 2024-05-21 18:05:58 -07:00
Yury Semikhatsky
042896472b
fix: route.continue should not change multipart form data body (#30863)
The bug was fixed in https://github.com/microsoft/playwright/pull/30734.
This PR adds a test and updates interception logic to not send post data
when it is not modified.

Fixes https://github.com/microsoft/playwright/issues/30788
2024-05-20 16:36:57 -07:00
Yury Semikhatsky
fb319e6d3d
fix: match client step and server action by explicit stepId (#30641)
Matching bu `apiName@wallTime` fails when two actions start at the same
time, e.g. two parallel api requests. Moreover, it results in trace
actions that have parent set to themselves, which in turn causes
infinite loop in the trace viewer. To avoid this problems we write
stepId explicitly to the library trace and use those step ids to find
corresponding test runner steps.

The stepId is passed via zone in case of expect, because the protocol
step is quite deep in the call chain after or explicitly in case of API
call steps created by the test runner instrumentation.
2024-05-14 12:10:46 -07:00
Dmitry Gozman
776b04e5ea
feat: APIRequestContext dispose reason (#30765)
Similarly to page.close, we pass test-runner specific reason to
facilitate better error messages.

```
  1) a.test.ts:10:11 › test

    Error: apiRequestContext.fetch: Fixture { request } from beforeAll cannot be reused in a test.
      - Recommended fix: use a separate { request } in the test.
      - Alternatively, manually create APIRequestContext in beforeAll and dispose it in afterAll.
    See https://playwright.dev/docs/api-testing#sending-api-requests-from-ui-tests for more details.

       9 |
      10 |       test('test', async () => {
    > 11 |         await context.fetch('http://example.com');
         |                       ^
      12 |       });
      13 |
```

Closes #29260.
2024-05-13 18:51:30 -07:00
Yury Semikhatsky
64b4ac1732
fix(electron): record har file (#30748)
Fixes https://github.com/microsoft/playwright/issues/30747
2024-05-10 15:32:01 -07:00
Yury Semikhatsky
ff35f651e6
chore: delete expired location handler from client map (#30574) 2024-05-01 13:04:21 -07:00
Dmitry Gozman
9bd2aea130
feat(locator handler): address api review feedback (#30554)
- Remove `handler` argument from `removeLocatorHandler`.
- Rename `allowStayingVisible` into `noWaitAfter`.
- Improve logging related to locator handler.
- Remove experimental badges.
2024-04-25 14:00:02 -07:00
Dmitry Gozman
59689c9c97
feat(addLocatorHandler): various improvements (#30494)
- Automatically waiting for the overlay locator to be hidden, with
`allowStayingVisible` opt-out.
- `times: 1` option.
- `removeLocatorHandler(locator, handler)` method.
- Passing `locator` as first argument to `handler`.

Fixes #30471. Fixes #30424. Fixes #29779.
2024-04-24 15:19:12 -07:00
Yury Semikhatsky
230a8437d3
feat(fetch): support FormData as multipart parameter (#30489)
Reference https://github.com/microsoft/playwright/issues/28070
2024-04-23 17:05:27 -07:00
Yury Semikhatsky
3bdbe4284e
fix(steps): make expect.toPass and expect.poll step containers (#30389)
Fixes https://github.com/microsoft/playwright/issues/30322
2024-04-16 16:18:37 -07:00
Yury Semikhatsky
73fce8fb98
chore: replace Zones with AsyncLocalStorage (#30381)
Reference https://github.com/microsoft/playwright/issues/30322
2024-04-16 12:51:20 -07:00
Max Schmitt
56a7adeb8a
test: unflake 'should not include trace resources from the previous chunks' test (#30257) 2024-04-12 19:48:53 +02:00
Dmitry Gozman
6d56b453ff
fix(connect): include websocket close reason in the error message (#30203)
When websocket disconnects during `browserType.connect()` call, the
error looks like this now:

```
browserType.connect: Custom error message received over WebSocket
```

Previously, it was a generic error:
```
browserType.connect: Target page, context or browser has been closed
```
2024-04-01 21:05:33 -07:00
Yury Semikhatsky
021c5c108c
chore: revert support of duplicate form data fields in multipart post data (#30127)
We want to adopt FormData API for the requests.

This is a revert of 4b3c596874156ac4c75c270466ab2c08e3d7132c and
a849ea97411714d50cda0a0d5c156decbdc2d814

Reference https://github.com/microsoft/playwright/issues/28070
2024-03-26 12:36:35 -07:00
Pavel Feldman
2de8a6b002
chore: move filter params into the clearCookies (#30111) 2024-03-26 08:12:26 -07:00
Yury Semikhatsky
a849ea9741
feat(fetch): multiple fields with the same name in post data (#30104)
Rerefence https://github.com/microsoft/playwright/issues/28070
2024-03-25 15:39:45 -07:00
Dmitry Gozman
95d649b406
feat: address api review feedback for 1.43 (#30066)
- Update docs for `trace: retain-on-first-failure`.
- Update docs for `devtools` option.
- Rename `Locator.enterFrame()` to `Locator.contentFrame()`.
- Rename `FrameLocator.exitFrame()` to `FrameLocator.owner()`.
2024-03-25 07:42:13 -07:00
Dmitry Gozman
70e6cdac57
feat: enterFrame/exitFrame (#29992)
This introduces `Locator.enterFrame()` and `FrameLocator.exitFrame()` to
convert between locator and frame locator.

Fixes #29336.
2024-03-18 13:42:08 -07:00
Max Schmitt
5bc6ca6345
fix: allow disposing ElementHandles multiple times (#29953)
Fixes https://github.com/microsoft/playwright/issues/29945
2024-03-15 16:26:56 +01:00
Max Schmitt
b158e4ef96
fix: postDataJSON without Content-Type header (#29918)
Regressed after
38fc74db7c.

Test coverage: Some tests were failing on the flakiness dashboard
2024-03-14 16:48:34 +01:00
Max Schmitt
38fc74db7c
fix: postDataJSON with application/x-www-form-urlencoded; charset=UTF-8 (#29889)
Fixes https://github.com/microsoft/playwright/issues/29872
2024-03-12 17:20:39 +01:00
PaulTriandafilov
8e48ee714d
feat(playwright-core): add remove cookies api (#29698) 2024-03-02 07:27:01 -08:00
Pavel Feldman
9d0430fa26
chore: strengthen linting (#29669) 2024-02-26 16:52:28 -08:00
Dmitry Gozman
f0244b8a76
chore: rename handleLocator to addLocatorHandler (#29443) 2024-02-09 15:18:50 -08:00