Commit graph

2122 commits

Author SHA1 Message Date
Pavel Feldman 427eca6f7e
chore: iterate towards recording into trace (2) (#32693) 2024-09-18 14:39:07 -07:00
Dmitry Gozman f9d9ad25de
feat(locator handler): perform checkpoit during locator.waitFor (#32683)
Fixes #32255.
2024-09-18 09:34:06 -07:00
Max Schmitt d4eecafa8a
test: listen always on 127.0.0.1 for client certificate tests (#32677) 2024-09-18 17:09:08 +02:00
Max Schmitt ec3db20743
test: fix toolbar hydration test under frozen suite (#32684) 2024-09-18 15:35:33 +02:00
Simon Knott 825df6c074
feat(har): record serverIPAddress for API requests (#32660)
Discovered working on
https://github.com/microsoft/playwright/pull/32658. We're recording the
remote server address for browser requests, but not for API requests.
This PR adds that for API requests.
2024-09-18 14:51:42 +02:00
Simon Knott 4460c98710
fix(har tracing): record response.bodySize for API requests (#32656)
A small drive-by that came out of working on
https://github.com/microsoft/playwright/issues/32653.
2024-09-18 08:21:10 +02:00
Simon Knott 8a97050822
feat(har): record securityDetails for API Requests (#32664)
While working on https://github.com/microsoft/playwright/pull/32658 I
discovered that we're recording `securityDetails` for browser requests,
but not for API requests. This PR fixes that.
2024-09-18 08:18:47 +02:00
Pavel Feldman 355c88f48f
chore: iterate towards recording into trace (#32646) 2024-09-17 18:26:44 -07:00
Yury Semikhatsky 4c4d74ca5b
chore: page.screenshot() in bidi (#32671)
The results are copied from the existing chromium expectations.
2024-09-17 16:51:56 -07:00
Yury Semikhatsky 8b84b20dd0
chore: back-forward in bidi (#32670) 2024-09-17 16:02:13 -07:00
Yury Semikhatsky 375a1c4982
chore: exposeBinding/exposeFunction in bidi (#32669) 2024-09-17 15:37:42 -07:00
Simon Knott 751b939d3a
feat(fetch): record timings (#32613)
Related to https://github.com/microsoft/playwright/issues/19621

Adds some instrumentation to collect timings for `APIRequestContext`
requests and adds them to the HAR trace. Doesn't yet expose them via an
API, but makes our `Duration` field in the trace viewer show a nice
duration:

<img width="1392" alt="Screenshot 2024-09-14 at 11 46 04"
src="https://github.com/user-attachments/assets/8020382d-9494-4634-9cfd-22b6f4a1d770">


I'm gonna add it to our API in a separate PR.

---------

Signed-off-by: Simon Knott <info@simonknott.de>
Co-authored-by: Dmitry Gozman <dgozman@gmail.com>
2024-09-17 16:11:21 +02:00
Simon Knott f6219e6e79
Revert "feat(tracing): add .pwtrace to trace file extension" (#32648)
Reverts microsoft/playwright#32581
Relates
https://github.com/microsoft/playwright/issues/32226#issuecomment-2351164727
2024-09-17 15:32:30 +02:00
Simon Knott b0f15b320f
fix(recorder): reattach toolbar if it was unmounted by framework hydration (#32637)
Closes https://github.com/microsoft/playwright/issues/32632. A side
effect of Remix's hydration implementation is that it throws away the
entire DOM. This is broadly discussed in
https://github.com/remix-run/remix/issues/4822 - there might be a fix in
coming React versions, but who knows.
Besides breaking browser extensions, this also deletes our toolbar!
This PR fixes it by periodically checking in on `x-pw-glass`, and
remounting it if it was unmounted. Hacky but effective!
2024-09-17 08:37:49 +02:00
Pavel Feldman 47713e8a66
chore: make recorder tests pass in frozen mode (#32645) 2024-09-16 22:47:54 -07:00
Yury Semikhatsky 2a347b5494
chore: support launchPersistentContext with bidi (#32641) 2024-09-16 17:31:26 -07:00
Pavel Feldman 6dbde62a6b
chore: simplify signal handling while recording (#32624) 2024-09-16 14:39:36 -07:00
Pavel Feldman 92c6408b94
fix(recorder): address the react race condition (#32628) 2024-09-16 13:47:13 -07:00
Max Schmitt 21d162c945
feat(client-certificates): add support for proxies (#32611)
Fixes https://github.com/microsoft/playwright/issues/32370
2024-09-16 17:57:33 +02:00
Simon Knott aeb4d182f7
feat(tracing): add .pwtrace to trace file extension (#32581)
Closes https://github.com/microsoft/playwright/issues/32226

I've updated every mention of `.trace.zip` except for the release notes.
2024-09-14 10:17:07 +02:00
Yury Semikhatsky 34876e9291
chore: cookies in intercepted bidi requests (#32623) 2024-09-13 18:29:35 -07:00
Matthew Jee f2a974b045
feat(api): add method to force garbage collection (#32383) 2024-09-13 23:09:36 +02:00
Playwright Service 5b28d2a84c
feat(firefox): roll to r1464 (#32614)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-09-13 18:12:43 +02:00
Max Schmitt 79cba7d704
chore: introduce option overrides on context/browser (#32606) 2024-09-13 17:34:34 +02:00
Simon Knott 48c7fb6b06
feat(library): accept FormData in fetch (#32602)
Closes https://github.com/microsoft/playwright/issues/26520 by accepting
`FormData`, which became stable in Node.js in v21.
2024-09-13 13:21:02 +02:00
Pavel Feldman cd4dabef8b
chore: remove stray codegen signal handling (#32599) 2024-09-12 14:38:23 -07:00
Pavel Feldman 7e3348eb0e
chore: recorder is trace viewer experiment (#32598) 2024-09-12 13:39:44 -07:00
Pavel Feldman de08e729ae
chore: move recorder trace to action collector (#32597) 2024-09-12 12:42:28 -07:00
Pavel Feldman d051495c7a
chore: perform double click while recording (#32576) 2024-09-12 11:40:44 -07:00
Playwright Service b1b33efebb
feat(chromium): roll to r1135 (#32591)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-09-12 13:46:15 +02:00
Simon Knott ec40890fd8
fix(tracing): use page swap timestamp to find closest screenshot (#32512)
Follow-up to https://github.com/microsoft/playwright/pull/32248. When we
have it, we should use the page swap timestamp we get from Chromium to
find the closest screenshot.
2024-09-10 14:32:33 +02:00
Rui Figueira f8562e4ca7
chore: improve error message when Array.toJSON misbehaves (#32508)
Fixes: #32507
2024-09-10 04:14:24 -07:00
Yury Semikhatsky c8a72d63ad
chore: run bidi firefox tests on ci (#32527) 2024-09-09 17:22:19 -07:00
Max Schmitt e5d6ee5bd8
chore: merge fetch params on server side (#32518)
https://github.com/microsoft/playwright-python/pull/2546#discussion_r1750090592
2024-09-09 22:28:08 +02:00
Max Schmitt 4b5422a3c7
fix(ui-mode): use server side path separator (#32523)
Fixes https://github.com/microsoft/playwright/issues/32323
2024-09-09 22:07:28 +02:00
Yury Semikhatsky d030965688
chore: addInitScript and auth (unsuccessful) in bidi (#32500) 2024-09-09 10:13:26 -07:00
Max Schmitt 718bd9b35f
devops: run BiDi tests (#32493) 2024-09-07 09:16:42 +02:00
Yury Semikhatsky f3ada9c654
chore: wheel input in bidi (#32499) 2024-09-06 17:10:14 -07:00
Yury Semikhatsky 37bc485827
chore: remove browser-specific bidi hacks (#32498)
Those were just workarounds for browser-specific bugs, they should be
fixed upstream.
* individual mouse down/up/down/up events don't trigger dblclick event
in Firefox
* setContent throws when document.open/write is called in the utility
context in Firefox
2024-09-06 16:40:24 -07:00
Yury Semikhatsky 11441c0fe1
fix: add missing await in adoptIfNeeded (#32497)
Otherwise it throws in Bidi.
2024-09-06 13:17:32 -07:00
Yury Semikhatsky f0e13164d7
chore: split firefox and chromium bidi implementations (#32478) 2024-09-05 18:31:56 -07:00
Yury Semikhatsky 752b171a13
chore: support bidi connection to chromium (#32474) 2024-09-05 14:56:07 -07:00
Playwright Service 5127efdc2a
feat(chromium): roll to r1134 (#32470)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-09-05 14:57:20 +02:00
Yury Semikhatsky 9a2c60a77c
chore: identify largest gaps in Bidi API (#32434)
This pull request introduces initial support for the WebDriver BiDi
protocol in Playwright. The primary goal of this PR is not to fully
implement BiDi but to experiment with the current state of the
specification and its implementation. We aim to identify the biggest
gaps and challenges that need to be addressed before considering BiDi as
the main protocol for Playwright.
2024-09-04 11:36:52 -07:00
Playwright Service 2fabd15fef
feat(firefox): roll to r1463 (#32439)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-09-04 08:49:10 +02:00
Yury Semikhatsky d7b9cf21db
chore: ignore third-party execution contexts (#32437)
* Only track main and utility world contexts
* Properly update click metadata
2024-09-03 23:00:59 -07:00
Playwright Service d9016e506e
feat(chromium): roll to r1133 (#32391)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-09-02 09:49:38 +02:00
Pavel Feldman 74a8e59096
chore: allow recorder rewrite annotations (#32381) 2024-08-29 14:16:01 -07:00
Yury Semikhatsky 896190edbb
Revert feat(addInitScript): support cjs modules (#32364)
Reverting https://github.com/microsoft/playwright/pull/32282 and
https://github.com/microsoft/playwright/pull/32240.
2024-08-28 15:39:48 -07:00
Yury Semikhatsky 5271fe1f26
chore: remove unused request param from route.continue (#32307) 2024-08-28 08:24:44 -07:00
Pavel Feldman ec681ca78c
chore: pass explicit recorder app factory (#32349) 2024-08-27 20:24:19 -07:00
Pavel Feldman 0b5456d00b
chore: perform action based on frame path (#32347) 2024-08-27 17:17:57 -07:00
Pavel Feldman a1df11011c
chore: split recorder into files (#32345) 2024-08-27 14:10:21 -07:00
Pavel Feldman bc87467b25
chore: generate simple dom descriptions in codegen (#32333) 2024-08-27 11:52:14 -07:00
Pavel Feldman 177576a51b
chore: add simple dom util (#32332) 2024-08-26 16:28:40 -07:00
Pavel Feldman 6f55b57e5a
chore: move codegen into its own folder (#32330) 2024-08-26 15:24:02 -07:00
Pavel Feldman 4340d153df
chore: deprecate locator.frameLocator() (#32306) 2024-08-26 10:28:54 -07:00
Max Schmitt 67d3d5f203
fix(clock): don't throw for |null| or |undefined| callbacks (#32309)
Fixes https://github.com/microsoft/playwright/issues/32293

This aligns it how Chromium and other browsers are doing it.
2024-08-26 09:26:38 -07:00
Max Schmitt 596f497633
fix: don't throw error on about:blank when blocking ServiceWorker (#32310)
Fixes https://github.com/microsoft/playwright/issues/32292
2024-08-26 08:27:21 -07:00
Playwright Service 5acd2dbf48
feat(webkit): roll to r2065 (#32322)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-26 10:25:59 +02:00
Dmitry Gozman abe6c04a54
chore: remove noWaitAfter from selectOption (#32283)
This follows removing this option from other methods in v1.46. The two
methods still supporting `noWaitAfter` are `click` and `press`.
2024-08-23 14:50:43 -07:00
Pavel Feldman 37eb66df10
chore: extract performAction in recorder (#32279) 2024-08-23 10:19:44 -07:00
Pavel Feldman 4edc076935
chore: load env from playwright.env when running codegen (#32280) 2024-08-23 10:19:36 -07:00
Max Schmitt 1b220c5289
chore: remove Chromium Windows proxy hacks (#31724)
Fixes https://github.com/microsoft/playwright/issues/17252
2024-08-23 15:17:00 +02:00
Dmitry Gozman 3a75f23ea1
fix(addInitScript): require non-undefined arg to trigger commonjs module (#32282) 2024-08-23 02:48:56 -07:00
Max Schmitt 16e76cb71a
fix(client-certificates): errors during http2 TLS handshake (#32258) 2024-08-22 15:13:54 +02:00
Dmitry Gozman 571f25a7d3
fix(role): hidden pseudos should not contribute to accessible name (#32251) 2024-08-21 11:14:41 -07:00
Dmitry Gozman d5a7495041
feat(addInitScript): support cjs modules when passing both path and arg (#32240)
This works with scripts bundled by:
- `esbuild entrypoint.ts --bundle --format=cjs --outfile=injected.js`
- webpack with a typical config
  ```js
  module.exports = {
    entry: { 'injected': './entrypoint.js', },
    output: {
      path: require('path').resolve(__dirname),
      filename: '[name].js',
      libraryTarget: 'commonjs2',
    },
  };
  ```
2024-08-21 09:46:38 -07:00
Yury Semikhatsky 918dbe5e3a
chore: start listening for navigation events before navigation starts (#32237)
There is a chance in case of cross-process navigation that the
navigation event comes before `navigateFrame` finishes.
2024-08-21 08:34:55 -07:00
Pavel Feldman 109cab66f1
chore: extract recorder dialog into a class (#32233) 2024-08-20 10:56:55 -07:00
Dmitry Gozman b4a9b247b4
fix(role): make sure to ignore style/script/noscript/template (#32231)
Even when these are a part of a hidden `aria-labelledby` traversal, all
browsers ignore them anyway.
2024-08-20 09:02:23 -07:00
Max Schmitt 010778f6c5
feat(client-certificates): allow passing certificates from memory (#32210) 2024-08-19 09:24:32 +02:00
Max Schmitt faf4853259
chore: validate client-certificates on context creation (#32168) 2024-08-19 09:02:14 +02:00
Max Schmitt 743565ee3e
chore: generate self-signed certificates for socks proxy (#32192) 2024-08-16 20:21:05 +02:00
Playwright Service e7b7c715b0
feat(chromium): roll to r1131 (#32174)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-15 20:41:27 +02:00
Max Schmitt a1d32d997c
fix(client-certificates): improve close handling from target and proxy (#32158) 2024-08-15 10:21:10 +02:00
Max Schmitt aac3a84321
fix(client-certificates): stall on tls handshake errors (#32163)
Extracted from https://github.com/microsoft/playwright/pull/32158.
2024-08-15 08:51:40 +02:00
Yury Semikhatsky 60900f8541
chore(webkit): add listeners directly without eventsHelper (#32149)
The listeners are never removed, so there is no point in wrapping them
with the helper
2024-08-14 08:38:49 -07:00
Max Schmitt 4daf5c2303
fix(client-certificates): when server does tls renegotiation (#32155)
Certain https servers like Microsoft IIS aka. TLS servers do the TLS
renegotiation after the TLS handshake. This ends up in two
`'secureConnect'` events due to an upstream Node.js bug:
https://github.com/nodejs/node/issues/54362

Drive-by: Move other listeners like `'close'` / `'end'` to `once()` as
well.

Relates https://github.com/microsoft/playwright/issues/32004
2024-08-14 15:11:29 +02:00
Dmitry Gozman f8eef3897c
chore: move urlMatch to isomorphic (#32142)
To be reused in injected code.
2024-08-13 12:47:02 -07:00
Yury Semikhatsky 6cc53cfce6
chore: move output parsing to concrete browsers (#32129) 2024-08-13 12:20:41 -07:00
Yury Semikhatsky a28f51a0f3
chore: use base BrowserType to reference browser types (#32125) 2024-08-12 22:20:58 -07:00
Kuba Janik 308381eeae
feat: allow URLSearchParams and string as params in APIRequestContext (#32120) 2024-08-12 14:22:03 -07:00
Max Schmitt 0d575b4ef6
chore: less 'as any' in html-reporter (#32117)
Signed-off-by: Max Schmitt <max@schmitt.mx>
Co-authored-by: Simon Knott <info@simonknott.de>
2024-08-12 15:17:42 +02:00
Dmitry Gozman a30a8805c9
fix(expect): account for timeout during the first locator handler check (#32095)
Also considered an alternative to not perform the locator handler check
during one-shot, but that would be somewhat against the promise of the
locator handler that is supposed to run **before** every expect check.

Fixes #32089.
2024-08-12 01:57:15 -07:00
Playwright Service 4d26036b7b
feat(webkit): roll to r2060 (#32082)
Reference: https://github.com/microsoft/playwright/pull/32108
2024-08-09 15:31:35 -07:00
Dmitry Gozman 9b3e0e5667
chore: simplify binding result dispatch (#32092)
We can now pass an Error object through evaluate.
2024-08-09 03:46:52 -07:00
Playwright Service 5cc1e7b299
feat(firefox): roll to r1462 (#32086)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-08 22:41:49 +02:00
Playwright Service 05732b50c8
feat(chromium): roll to r1130 (#32074)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-08 14:13:18 +02:00
faulpeltz ca25d2c802
fix: ubuntu version detection for linux mint 22 (#32049)
Add Linux Mint 22 (Ubuntu based distro) version detection for dependency
installation
Linux Mint 22.x -> Ubuntu 24.04

(also see original Linux Mint support PR #28085)
2024-08-07 14:28:03 -07:00
Dmitry Gozman ea747afcdd
chore: use a single binding for all Playwright needs (#32039)
This makes it easier to manage bindings, being just init scripts.
Fixes the BFCache binding problem.
Makes bindings removable in Firefox.

Fixes #31515.
2024-08-07 06:20:12 -07:00
Pavel Feldman 3c87f217df
feat(events): allow waiting for removeAllListeners (#31941) 2024-08-05 21:14:35 -07:00
Max Schmitt 613ccb8d5b
chore(client-certificates): rewrite error for unsupported PFX errors (#32008) 2024-08-05 14:42:29 +02:00
Max Schmitt 71e614dc5a
fix(client-certificates): report error to the browser if incorrect passphrase (#32007) 2024-08-05 10:54:33 +02:00
Max Schmitt d0c840f639
fix(clock): mock time in Event.prototype.timeStamp (#31986)
Ideally we generate the timestamp when the Event gets created. This
patch adds a best-effort logic, since we can't override the constructor
of natively created events, e.g. `MouseEvent`.

Fixes https://github.com/microsoft/playwright/issues/31924
2024-08-02 15:27:54 +02:00
Max Schmitt 878a6a499b
chore: prefer executablePath for page.pause() (#31985)
Motivation: For scenarios where
[`findChromiumChannel`](f17de8222f/packages/playwright-core/src/server/registry/index.ts (L1016))
throws (no branded browser and no normal browser is installed) we were
[silently
catching](f17de8222f/packages/playwright-core/src/server/recorder.ts (L79))
when calling `page.pause()`.

This patch does not invoke `findChromiumChannel` when the
inspectedContext is Chromium based and has an `executablePath`
specified.

Note this was already fixed by #6214, but regressed since then.

Fixes https://github.com/microsoft/playwright/issues/31967
2024-08-02 11:18:51 +02:00
Max Schmitt f17de8222f
chore: run client-certificate tests in service mode (#31973) 2024-08-02 08:34:28 +02:00
Yury Semikhatsky db0980a850
chore(fetch): include response text into failOnStatusCode errors (#31978)
Fixes https://github.com/microsoft/playwright/issues/31834
2024-08-01 17:53:43 -07:00
Simon Knott 76cca7fc2c
fix(ui): only populate settings once (#31958)
We populate `localStorage` using an init script. Currently, this script
isn't just run for the UI though, but also for all iframes. So we're
resetting `localStorage` every time the UI loads an iframe.

This hasn't been a problem in the past, because the only consumer of
`localStorage`, `Settings`, only read from `localStorage` once and kept
most state in `useState` afterwards. With
https://github.com/microsoft/playwright/pull/31911, this is no longer
true, so the bug starts biting us!

The fix is to ensure the init script isn't run on iframes.
2024-08-01 17:28:48 +02:00
Playwright Service 6c6f10b678
feat(chromium): roll to r1129 (#31955)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-01 14:32:44 +02:00