Commit graph

3863 commits

Author SHA1 Message Date
오소현 8761dafc73
feat(test runner): allow to pass arbitrary location to test.step (#32504)
Fixes https://github.com/microsoft/playwright/issues/30160

### Description:
This pull request introduces the ability to specify custom locations for
test steps in Playwright. By enabling the provision of arbitrary
locations to the test.step method, it resolves the limitation where
helper methods obfuscate the original call site, providing more accurate
and meaningful location data in test reports.

### Motivation:
To enhance the utility and clarity of test reports in Playwright.
Specifically, it addresses the need to trace test steps back to their
precise location in the code, which is especially important when steps
are abstracted in helper functions. This feature is crucial for
maintaining accurate documentation and facilitating debugging processes.

### Changes:
Added functionality to pass a custom location object to test.step.

### Expected Outcome:
This PR is expected to significantly improve the precision and
usefulness of diagnostic data in test reports by allowing specific
locations within helper functions to be accurately documented. It
facilitates better tracking of test executions and simplifies the
debugging process, making it easier for developers to understand and
address issues within complex tests.

### References:
Closes https://github.com/microsoft/playwright/issues/30160 -
"[Feature]: allow to pass arbitrary location to test.step"

**Code Check**
I conducted tests on this new feature by integrating it into some
existing test codes, and it worked well. I will attach the code used for
testing and a screenshot showing the successful outcome.

<details>
<summary>toggle dropdown</summary>
<div markdown="1">

```
import type { Location } from '../../../packages/playwright/types/testReporter'
...
test('should respect the back button', async ({ page }) => {
    await page.locator('.todo-list li .toggle').nth(1).check();
    await checkNumberOfCompletedTodosInLocalStorage(page, 1);
...
    await test.step('Showing active items', async () => {
      await page.getByRole('link', { name: 'Active' }).click();
    }, {location});
```

<img width="1109" alt="image"
src="https://github.com/user-attachments/assets/359feafa-0949-4c71-9426-46debef21bdd">
</div>
</details>
2024-09-17 08:11:21 -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 ec2ae1ed2d
feat(watch mode): buffer mode (#32631)
Closes https://github.com/microsoft/playwright/issues/32578.

Adds a buffer mode that can be toggled by pressing <kbd>b</kbd>. When
engaged, changed test files are collected and shown on screen. The test
run is then kicked off by pressing <kbd>Enter</kbd>.

This changes the signal to start a test run from <kbd>Cmd+s</kbd> to a
<kbd>Enter</kbd> press in the test terminal. It should help users with
auto-save and make it easier to run on long-running tests. It feels very
similar to running `npx playwright test`, but without having to write a
filter.



https://github.com/user-attachments/assets/71e16139-9427-4e90-b523-8d218f09ed9d
2024-09-17 08:45:44 +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 6dbde62a6b
chore: simplify signal handling while recording (#32624) 2024-09-16 14:39:36 -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
Dmitry Gozman 268357238a
fix(expect): respect custom message in expect.poll (#32603)
Fixes #32582.
2024-09-16 00:10:06 -07: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
Max Schmitt 79cba7d704
chore: introduce option overrides on context/browser (#32606) 2024-09-13 17:34:34 +02:00
Simon Knott 9bb1c86f93
feat(test runner): don't run tests on --watch start (#32583)
Closes https://github.com/microsoft/playwright/issues/32580.
2024-09-13 17:24:38 +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 d051495c7a
chore: perform double click while recording (#32576) 2024-09-12 11:40:44 -07:00
Max Schmitt 8e82f53ceb
test: unskip various proxy tests (#32595)
Unskipping of various tests and revert the rest of
https://github.com/microsoft/playwright/pull/6350 since the upstream bug
has been fixed.
2024-09-12 20:31:22 +02:00
Simon Knott ef4be6afff
feat(test runner): make expect.extend immutable (#32366)
Changes `expect.extend` behaviour so that it doesn't mutate the global
instance and behaves closer to what users expect. This is formally a
breaking change, and I had to remove a test that asserts the breaking
behaviour.

TODO:
- [x] decide wether this is a separate method or a flag for
`expect.extend`
- [x] figure out if we need to change docs
2024-09-12 19:56:38 +02:00
Yury Semikhatsky d1926e2f9b
chore: do not store project name in expectations (#32575) 2024-09-11 15:15:10 -07:00
Yury Semikhatsky 678c454fea
test: update bidi expectations from recent run (#32574) 2024-09-11 14:59:28 -07:00
Yury Semikhatsky fd1f32556b
chore: run all tests with bidi by default (#32572)
Only use expectation files on CI to save resources
2024-09-11 14:24:32 -07:00
Yury Semikhatsky a8103abee6
chore: incremental bidi expectation update, ff expectations (#32570)
* Do not override expectations for the tests that didn't run or already
had expectations
* Sort expectations alphabetically
* Add firefox expectations
2024-09-11 13:33:25 -07:00
Max Schmitt 7458c3292c
fix(test-runner): do not consider retries for maxFailures (#32533)
Fixes https://github.com/microsoft/playwright/issues/26350
2024-09-11 20:35:26 +02:00
Yury Semikhatsky 1f0514536e
chore: add bidi test expectations in separate file (#32549)
Based on the expectations the tests that are expected to timeout or fail
will be skipped to save resources. The expectations can be manually
updated when corresponding feature is fixed.
2024-09-11 08:28:29 -07:00
Dmitry Gozman 7335fa602c
fix(trace viewer): do not show multiple action points in iframes (#32537)
When action has an input target, we assume there is a target element in
one of the frames and show action point in its center.

Fixes #32453.
2024-09-11 03:04:03 -07:00
Rui Figueira f8562e4ca7
chore: improve error message when Array.toJSON misbehaves (#32508)
Fixes: #32507
2024-09-10 04:14:24 -07:00
Max Schmitt 9fa06be49e
fix(ct): throw error if inline component is getting mounted (#32531)
What was happening?
- When we use CT, we go over the test files, look at the imports using
`tsxTransform.ts` and store them inside a map, these we feed into the
import registry which we build using Vite and have access inside the
browser
- In case of an inline component in the same file as where the test file
is, this is not happening.
- jsx-runtime via babel kicks in, transforms every JSX component in
something like that:

```
{
  __pw_type: 'jsx',
  type: [Function: MyInlineComponent],
  props: { value: 'Max' },
  key: undefined
}
```

this then gets passed into `wrapObject` which maps any function from the
Node.js side into expose function calls so they work inside the browser.
The assumption for `wrapObject` was to do it mostly for callbacks. So it
does for `type` - which is actually our component. We then pass this to
the React render function, which calls back the exposed function but we
never return anything, so it mounts `undefined`.

---

While there have been experiments from certain vendors to get the
'client only' code inside a server side file, we should throw for now to
not confuse users. We might revisit this in the future since Babel / TSX
doesn't support it outside of the box.

Fixes https://github.com/microsoft/playwright/issues/32167
2024-09-10 11:15:20 +02:00
Yury Semikhatsky c8a72d63ad
chore: run bidi firefox tests on ci (#32527) 2024-09-09 17:22:19 -07:00
Pavel Feldman 6d5889a52c
chore: revert the matcherResult in API (#32524) 2024-09-09 16:44:32 -07:00
Dmitry Gozman ae118674b8
fix(test runner): allow directory imports with path mapping (#32491)
We now hopefully align with `moduleResolution: bundler` tsconfig option,
allowing directory imports in every scenario, and allowing proper module
imports when not going through the type mapping.

This regressed in #32078. Fixes #32480, fixes #31811.
2024-09-09 14:01:20 -07:00
Dmitry Gozman 6bb005db85
fix(test runner): improve error message when not able to parse tsconfig (#32526) 2024-09-09 14:01:02 -07:00
Dmitry Gozman e6c5b6054d
test: fix project filter test (#32525)
It was erroneously passing projects separate by comma, which never
worked.
2024-09-09 14:00:51 -07:00
Pavel Feldman 9a313eecc9
chore: roll expect and move it to third party (#32458) 2024-09-09 13:12:20 -07:00
Simon Knott cc9c4cdd9a
chore: fix flaky screenshot test (#32517)
In this test, the trace recording goes super fast. Sometimes, this means
that the recording is finished before the screen recorder got a chance
to take a screenshot. If that happens, the tests fail because we never
show a screenshot.
This PR fixes the flakiness by delaying the trace recording so that
there's always a screenshot taken.
2024-09-09 14:00:38 +02:00
Max Schmitt ae02331d00
test: fix stress tests bots (#32513) 2024-09-09 12:52:40 +02:00
Max Schmitt 718bd9b35f
devops: run BiDi tests (#32493) 2024-09-07 09:16:42 +02:00
Yury Semikhatsky a113553f14
test: allow running oopif test without newBrowserCDPSession (#32496) 2024-09-06 13:49:37 -07:00
Yury Semikhatsky df2bc2d0dc
test: worker interception for existing workers (#32494)
Failing test for https://github.com/microsoft/playwright/issues/32355
2024-09-06 13:17:49 -07:00
Yury Semikhatsky d85527e9f6
test: some tests for expected API behavior (#32495)
Adding some tests discussed in
https://github.com/microsoft/playwright/pull/32434
2024-09-06 13:13:44 -07:00
Dmitry Gozman 1402dee9e6
Revert "fix(test runner): align with typescript behaviour for resolving index.js and package.json through path mapping (#32078)" (#32492)
This reverts commit effb1ae234.

This broke path mapping into directories in ESM mode. References #32480.
2024-09-06 12:08:10 -07:00
Simon Knott 3fe1263643
feat(trace viewer): show Screenshot instead of Snapshot (#32248)
Closes https://github.com/microsoft/playwright/issues/23964.

Trace snapshots are a best-effort snapshots of the browser DOM, but we
can't guarantee them to be exactly what the browser showed. One example
of this is `canvas` elements, where you just can't see their contents.
That makes snapshots useful, but not perfect.

For those cases where the snapshot doesn't show everything, this PR
introduces a new setting to show a screenshot instead. You won't be able
to scroll or inspect the DOM or select a locator anymore. But if the
snapshot was missing something, or displaying something wrong, you can
now check the screenshot instead.
2024-09-06 16:24:33 +02:00
Max Schmitt ed303208b3
test: update to android-35 SDK (Android 15) (#32430) 2024-09-06 14:27:56 +02:00
Simon Knott 0e3f4736cc
fix(test runner): always show all projects in selection (#32450)
Follow-up to
https://github.com/microsoft/playwright/pull/32156#discussion_r1741628770,
alternative solution to
https://github.com/microsoft/playwright/pull/32425.

Ensures we always show all projects in the watch mode project selector
by performing the initial `listTests` without any filters, and using its
result for the project selector.
2024-09-06 11:35:20 +02:00
Pavel Feldman a52eb0c9a0
chore: expose matcherResult on TestError (#32455) 2024-09-05 21:36:51 -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
Dmitry Gozman 1ba3db6864
chore: implement clear-cache through plugins (#32471)
Also switches it to task runner.
2024-09-05 13:50:16 -07:00
Dmitry Gozman d4c77ce260
chore: make find-related-test-files work through plugins (#32465)
Also switches it to the task runner.
2024-09-05 06:52:11 -07:00
Simon Knott 29f1541b14
chore: roll stable test runner to 1.47 beta (#32469) 2024-09-05 13:44:22 +02:00
Dmitry Gozman 91012833c6
chore: move 'dev-server' extensibility point to plugin (#32448)
Instead of plumbing it through a custom unspecified config field, make
it a part of plugin interface.

Additionally, use task runner for starting/stopping dev server.
2024-09-05 02:22:27 -07: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
Kuba Janik ee91bdc585
feat(ui-mode): display list of query params in request tab (#32443) 2024-09-04 07:54:44 -07:00
Dmitry Gozman 60631409d6
chore: make dev server only use public config (#32441)
In preparation to make it a part of a plugin.
2024-09-04 01:29:55 -07:00
Yury Semikhatsky 565aed6c39
Revert "chore: enforce tags format via typescript types (#32384)" (#32431)
After API review we decided to revert it:
* VSCode extension and UI mode users already get the (runtime) error if
the tag is not prefixed
* The typescript error message is not very nice
* The type change would break those clients that generate tests with
tags passed as string

This reverts commit 90e7b9ebac.
2024-09-03 10:07:08 -07:00
Simon Knott 201bad75d3
chore(test runner): rebase watch mode onto TestServerConnection (#32156)
Closes https://github.com/microsoft/playwright/issues/32076.

This PR rewrites `watchMode.ts` to use `TestServer` under the hood. It's
essentially a complete rewrite, so don't pay too much attention on the
old implementation. Note that there's no changes to tests, so all
behaviour we have specced out there still works.

To make this work without a superfluous WebSocket connection, I had to
refactor `TestServerConnection` a little. Originally, I pulled this into
a [separate PR](https://github.com/microsoft/playwright/pull/32132), but
then realised how small the refactoring is. So it's in this PR now. Let
me know if you'd like to land it separately.
2024-09-03 15:15:44 +02:00
Simon Knott f62f85ba51
fix(test runner): fix types to allow calling custom matchers on expect.poll (#32407)
The `'should support custom matchers'` test asserts that the
functionality works, but it was a type error. This PR updates the types
so that it's allowed.

Closes https://github.com/microsoft/playwright/issues/32408

---------

Signed-off-by: Simon Knott <info@simonknott.de>
Co-authored-by: Dmitry Gozman <dgozman@gmail.com>
2024-09-02 13:42:15 +02:00
Simon Knott cf8c14f884
feat(html reporter): open html attachments in new tab (#32389)
Closes https://github.com/microsoft/playwright/issues/32281.

HTML attachments get a linkified name that opens the attachment in a new
tab.
2024-09-02 08:35:53 +02:00
Kuba Janik a6b320e362
fix(ui-mode): format request body when headers are lower case (#32395)
Resolves https://github.com/microsoft/playwright/issues/32396

Currently, the request body is not formatted when content type header is
lower case (`content-type`). Even though the value is
`application/json`.

It happens because we are looking only for `Content-Type` header
ignoring headers that are lower case.

<img width="674" alt="363197933-5178ec23-b9cf-46b5-8284-e8d4d730b036"
src="https://github.com/user-attachments/assets/0ef01b52-7dd8-4f33-b836-9adb86f94cc9">
2024-08-30 16:21:51 +02:00
Simon Knott ed5c21b827
fix(ui): respect --output param (#32351)
Closes https://github.com/microsoft/playwright/issues/32331

We're already passing the `outputDir` param to the UI, but the UI isn't
passing it back to the TestServer. This PR fixes that. I've added it to
`listTests`, which is requires to that
`TestServerDispatcher#_ignoredProjectOutputs` is populated with the
correct output dir. And i've added it to `runGlobalSetup`, which is what
the bug report was about.
2024-08-30 08:29:49 +02:00
Yury Semikhatsky 90e7b9ebac
chore: enforce tags format via typescript types (#32384)
Leverage [template literal
types](https://www.typescriptlang.org/docs/handbook/2/template-literal-types.html).

Fixes https://github.com/microsoft/playwright/issues/32382
2024-08-29 14:16:49 -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
Playwright Service d61b207ce3
feat(webkit): roll to r2066 (#32343)
Fixes https://github.com/microsoft/playwright/issues/30305

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Yury Semikhatsky <yurys@chromium.org>
2024-08-28 08:23:39 -07:00
Yury Semikhatsky 0fd97cb9ed
tests: delete flaky COOP test (#32346)
The scenario that the test covers is inherently racy and has been flaky
in all browsers.

Fixes https://github.com/microsoft/playwright/issues/32107
2024-08-27 14:53:27 -07:00
Pavel Feldman bc87467b25
chore: generate simple dom descriptions in codegen (#32333) 2024-08-27 11:52:14 -07:00
Yury Semikhatsky 3f085d5689
chore: remove same-site expectations for old browsers (#32334) 2024-08-26 18:41:58 -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 54709880c2
test: update Modernizir expectations (#32308)
Looks like `hiddenscroll` was different when an external monitor was
connected.
2024-08-26 08:32:22 -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
Simon Knott 1511d8643e
fix(test runner): expect.poll error reporting should handle non-expect errors (#32257)
Closes https://github.com/microsoft/playwright/issues/32256

We were expecting all errors to be of type `ExpectError`, but apparently
`expect` propagates rejections in the polling functions right through.
So we also need to handle that case.

I wonder if we have more cases of this. Would it make sense to enable
`useUnknownInCatchVariables` in TypeScript?
2024-08-26 09:39:25 +02:00
Max Schmitt 54c487c939 test: unskip 'should use ipv6 proxy' for Docker 2024-08-24 11:49:18 +02:00
Pavel Feldman 9d86bc5336
fix(dupe): render dupe test error indicator (#32303)
Fixes https://github.com/microsoft/playwright/issues/32093
2024-08-23 14:33:37 -07:00
Playwright Service 8703dd4f06
feat(webkit): roll to r2063 (#32295) 2024-08-23 17:57:18 +02:00
Max Schmitt 0d4d5758c4
test: update Modernizer tests to Safari 18 (#32290)
Fixes https://github.com/microsoft/playwright/issues/32288

---------

Signed-off-by: Max Schmitt <max@schmitt.mx>
Co-authored-by: Dmitry Gozman <dgozman@gmail.com>
2024-08-23 16:59:55 +02: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
Simon Knott 3fb33e7144
chore(ui): decouple TestServerConnection from websocket transport (#32274)
Preparation for https://github.com/microsoft/playwright/issues/32076.
2024-08-23 14:58:34 +02:00
Max Schmitt 8c0e173d6c
test: rebase modernizer Linux tests (#32268) 2024-08-23 12:51:49 +02:00
Dmitry Gozman 3a75f23ea1
fix(addInitScript): require non-undefined arg to trigger commonjs module (#32282) 2024-08-23 02:48:56 -07:00
Simon Knott 0b9c036505
chore(ui): add test for font preview (#32225)
Adds a test for the font preview feature.
2024-08-22 17:56:07 +02:00
Max Schmitt 16e76cb71a
fix(client-certificates): errors during http2 TLS handshake (#32258) 2024-08-22 15:13:54 +02:00
Simon Knott 5368fd7ca7
fix(only-changed): exit successfully if there were no changes (#32197)
Closes https://github.com/microsoft/playwright/issues/32180

I was briefly wondering if we should output a log line a la "no tests
found", but my understanding is that that's the reporters job - so I
didn't change anything in that regard.
2024-08-22 14:53:00 +02:00
Dmitry Gozman 7758b330b1
fix(ui mode): make sure that reload does correctly restart the webserver (#32263)
Fixes #32103.
2024-08-22 05:48:31 -07:00
Max Schmitt e3480d1886
test: add test for TLS renegotiation and client-certificates (#32252) 2024-08-22 08:42:09 +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
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
Simon Knott b599335404
chore(ui): enable react/recommended lint rules (#32214)
Closes https://github.com/microsoft/playwright/issues/32159. I
originally set out to enable Strict Mode for our React UI, but found a
way better thing: Enabling the lint rules we had already installed!

`eslint-plugin-react` is already in of our `package.json`, and this PR
enables it and fixes some of the reported issues. Most of them are
around the `key` prop which is mostly about performance, but there's
also fixes for misspelled `data-testid` props.
2024-08-20 14:16:28 +02:00
Dmitry Gozman 5271c26af1
fix(trace viewer): do not serve resources with x-unknown content type (#32219)
`x-unknown` is used as a placeholder for "no content-type" in the har.
We should not send it to the browser, because it is meaningfully
different from not sending `Content-Type` header. For example, Chromium
refuses to interpret stylesheets served with `x-unknown` content type.

Fixes https://github.com/microsoft/playwright-java/issues/1651.
2024-08-19 10:29:51 -07:00
Playwright Service 18694f6843
feat(webkit): roll to r2062 (#32147) 2024-08-19 19:29:23 +02: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
Simon Knott 3e6bba0b79
fix(only changed): make only-changed work together with list mode (#32196)
Closes https://github.com/microsoft/playwright/issues/32161

Turns out we were wrong in
https://github.com/microsoft/playwright/pull/31727#discussion_r1685793870!

Adds support for `--only-changed` in combination with `--list` by
removing our code to prevent that.
2024-08-16 17:12:45 +02:00
Dmitry Gozman c4bb24f02f
feat(test runner): record trace after a test-scoped fixture teardown times out (#32160)
Fixes #30718, fixes #31537.
2024-08-16 08:03:02 -07:00
Dmitry Gozman e17d1c498b
fix(test runner): timeout in fixture teardown should not prevent other slots (#32157)
When two fixtures have different time slots, timeout in the first one
should not prevent the second one from tearing down.

Similarly, timeout in afterEach hook should not prevent fixture
teardowns.
2024-08-16 04:25:00 -07:00
Dmitry Gozman 1537d3c2de
chore(test runner): make 'debug' an explicit option internally (#32154)
This allows any time slot that has a legitimate timeout of zero to be
updated later on. See test for an example.

Previously, setting timeout to zero at any moment was considered a
"debug mode" and any subsequent timeouts were ignored.
2024-08-16 01:44:37 -07: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
Dmitry Gozman f8eef3897c
chore: move urlMatch to isomorphic (#32142)
To be reused in injected code.
2024-08-13 12:47:02 -07:00
Kuba Janik 0588834307
feat: allow URLSearchParams and string as params in APIRequestContext (follow-up) (#32143)
Follow-up to https://github.com/microsoft/playwright/pull/32120

I made some changes suggested by @yury-s in the previous PR that make a
lot of sense:
- added an example to the documentation
- improved tests
  - check params on the client and server end
  - reverted to non-English characters being used as params
2024-08-13 10:39:56 -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
Simon Knott edd1894ac6
fix(test runner): run project dependencies of --only-changed test files (#32094)
Closes https://github.com/microsoft/playwright/issues/32070. We were
applying `additionalFileMatcher` not just to `filteredProjectSuites`,
but also to `projectSuites`. `projectSuites` is where we take dependency
projects from, though - so `--only-changed` led to empty dependency
projects, resulting in the reported bug.

The fix is to only apply `additionalFileMatcher` on
`filteredProjectSuites`.
2024-08-12 17:26:01 +02:00
Simon Knott effb1ae234
fix(test runner): align with typescript behaviour for resolving index.js and package.json through path mapping (#32078)
Supercedes https://github.com/microsoft/playwright/pull/31915, closes
https://github.com/microsoft/playwright/issues/31811.

When TypeScript resolves a specifier via path mapping, it does not
interpret `package.json`. If path mapping resolves to a directory, it
only looks at the `index.js` file in that directory if it's in CommonJS
mode.

We need to mirror this in our `esmLoader.ts`.

---------

Co-authored-by: Dmitry Gozman <dgozman@gmail.com>
2024-08-12 15:05:19 +02:00
Simon Knott c8cc4f9c8b
chore(ui): update to react 18 (#32079)
Part of https://github.com/microsoft/playwright/issues/31863. Updates
most of our React usage to React 18. `recorder` doesn't seem to like it
yet. I suspect that some of our code isn't compatible with concurrent
mode, i've investigated that in
https://github.com/microsoft/playwright/pull/32101.

---------

Signed-off-by: Simon Knott <info@simonknott.de>
Co-authored-by: Max Schmitt <max@schmitt.mx>
2024-08-12 13:50:11 +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 e8d845be64
feat(webkit): roll to r2061 (#32109) 2024-08-10 11:44:32 +02:00
Yury Semikhatsky d73c0ba689
test: skip COOP navigation test on wk linux (#32108)
Reference: https://github.com/microsoft/playwright/issues/32107
2024-08-09 15:30:56 -07:00
Yury Semikhatsky 236a8ac2ac
test: enable header overrides on redirect in firefox (#32088)
Fixes: https://github.com/microsoft/playwright/issues/32045
2024-08-08 23:46:36 -07:00
Dmitry Gozman f24e46c367
fix(types): revert type changes made to support TS 5.5 (#32066)
Regressed in #31532. The TS5.5 changes broke chaining of `extend`s where
the first `extend` did not specify any type arguments.

Fixes #32056.
2024-08-08 05:21:48 -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
Kuba Janik 7ec3a93db3
feat(ui-mode): add filters to network tab (#31956) 2024-08-06 14:52:35 -07:00
Dmitry Gozman a54ed48b42
feat(test runner): --tsconfig cli option (#31932)
Introduce `--tsconfig` to specify a single config to be used for all
imported files, instead of looking up tsconfig for each file separately.

Fixes #12829.
2024-08-06 06:55:15 -07:00
Max Schmitt bff97b4810
test: fix failing client-certificate tests (#32021) 2024-08-06 08:46:35 +02:00
Pavel Feldman 3c87f217df
feat(events): allow waiting for removeAllListeners (#31941) 2024-08-05 21:14:35 -07:00
Yury Semikhatsky fef27395a5
chore(trace): do not nest API actions based on time (#31990)
They should be properly nested based on Node.js zones now.
2024-08-05 10:06:14 -07:00
Dmitry Gozman 5c9ce6b9d9
test: unflake various tests (#32014) 2024-08-05 08:29:13 -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 dbc4bc84d6
fix(trace-viewer): popup snapshot utf-8 support (#32006) 2024-08-05 09:11:31 +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 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
Yury Semikhatsky a828fd5d73
test: ui mode annotations (#31965) 2024-08-01 14:47:50 -07:00
Yury Semikhatsky 1074a765e4
fix(trace): do not place expect into unfinished api calls based on time (#31970)
Fixes https://github.com/microsoft/playwright/issues/31959
2024-08-01 14:14:10 -07:00
Dmitry Gozman a541751657
feat(ui mode): linkify attachment names and content (#31960)
- Pass `contentType` to the CodeMirror.
- Support `text/markdown` mode.
- Custom mode for non-supported types that linkifies urls.
2024-08-01 09:27:45 -07:00
Playwright Service c858554dca
feat(chromium-tip-of-tree): roll to r1246 (#31951) 2024-08-01 15:13:15 +02:00
Dmitry Gozman bbe252a3d7
fix(ui mode): api review feedback (#31952)
- Hide "Testing Options" as not ready.
- Update SettingsView margins.
- Include `page.route` and similar methods into "Show route actions".
2024-08-01 05:36:19 -07:00
Yury Semikhatsky 0217defab4
chore(trace-viewer): do not shrink metadata view (#31938)
Avoids the following effect:

![image](https://github.com/user-attachments/assets/694de773-acc0-4266-87f2-eab67a3c7ce2)
2024-07-31 16:37:16 -07:00
Dmitry Gozman e62a54af7a
fix(test runner): do not revert the transform (#31930)
This allows a dynamic import of a TS file to be processed by Babel.

For some reason, Playwright used to revert the CJS transforms. However,
ESM loader and transforms are always active, so CJS should be too.
2024-07-31 13:17:09 -07:00
Dmitry Gozman 7c55b94280
fix(trace): make sure the correct attachment name is used for downloads (#31928)
When two attachments have the same content sha1, we used the first one's
name for the downloaded file, no matter which one the user clicked to
download. Now we pass the name explicitly.

References #31912.
2024-07-31 06:20:36 -07:00
Max Schmitt 55187207e4
chore: various roll fixes for .NET (#31914) 2024-07-30 19:09:20 +02:00
Simon Knott 8412d973c0
fix(ui): added test in watched file should be run (#31842)
Closes https://github.com/microsoft/playwright/issues/22211

Currently, when the server notifies the UI about changed files, the UI
determines what files to re-run based on an old test list. By listing
tests before that, we make sure that the test list is up-to-date, and
that added tests are included in the next run.

I've also removed the `listChanged` event as discussed in the team sync.
The event isn't used anywhere and fires in exactly the same cases where
`testFilesChanged` fired, so i've folded them into one another. This allowed simplifying `Watcher`.
2024-07-30 14:17:41 +02:00
Pavel Feldman 58b0c76f20
chore: use soft event emitter (#31868) 2024-07-29 17:11:31 -07:00
Max Schmitt 7e7319da7d
fix(client-certificates): don't use proxy when using BrowserContext.request (#31898) 2024-07-29 16:44:53 +02:00
Dmitry Gozman f232507afa
feat(ui mode): ui updates (#31894)
- Update copy to clipboard button.
- Reveal test source in the Source tab instead of external editor.
- New button to reveal in the external editor in the Source tab.
- Move the Pick Locator button next to snapshot tabs.
2024-07-29 07:32:13 -07:00
Max Schmitt f45cf65921
chore: add maxRetries to APIRequestContext.delete (#31893) 2024-07-29 14:39:30 +02:00
Max Schmitt cc313f3290
fix(client-certificates): error response body Content-Length calculation (#31897) 2024-07-29 14:39:14 +02:00
Max Schmitt 6988194c97
test: unflake contextmenu recorder test (#31749) 2024-07-26 12:43:05 +02:00
Max Schmitt 09581b615d
fix(client-certificates): return target errors on response when using http2 (#31867) 2024-07-26 11:28:45 +02:00
Dmitry Gozman a41cebc1c9
feat(ui mode): introduce Testing Options and Settings (#31841)
Testing Options control tests, while Settings are UI mode settings.

<img width="298" alt="Screenshot 2024-07-25 at 10 54 22 AM"
src="https://github.com/user-attachments/assets/7b6f5fff-687b-48d1-80b3-d1e6f2a257e8">


These sections are separately expandable, collapsed by default.

<img width="294" alt="Screenshot 2024-07-24 at 2 06 25 PM"
src="https://github.com/user-attachments/assets/5d35ac8c-9289-46ca-aaa2-ebc5419fa0c4">

References #31520.

---------

Signed-off-by: Simon Knott <info@simonknott.de>
Co-authored-by: Simon Knott <info@simonknott.de>
2024-07-25 11:23:43 -07:00
Max Schmitt a966abfd31
test: unflake happy-eyeballs tests (#31861) 2024-07-25 20:22:51 +02:00
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 90af289ba2
test: use managed http2 server for client-certificates (#31844) 2024-07-25 18:53:38 +02:00
Simon Knott b06a95dd75
feat(trace viewer): show baseURL in Metadata pane (#31852)
Resolves https://github.com/microsoft/playwright/issues/31847 by adding
playwright config's `baseURL` value to the `context-options` trace
event, and showing that in the Trace Viewer.

Because the added property is optional, I didn't increment the trace
format version.

I've also considered pulling the `baseURL` from the existing
`browser.newContext` step to get around modifying the trace format, but
that felt pretty hacky.


https://github.com/user-attachments/assets/ecaef747-727d-4937-9ca3-1605ca9907b9

---------

Signed-off-by: Simon Knott <info@simonknott.de>
Co-authored-by: Dmitry Gozman <dgozman@gmail.com>
2024-07-25 17:14:46 +02:00
Simon Knott a1a4216b88
chore(ui): add test expectation that doesn't immediately pass on blank tree (#31850)
Followup to #31815
2024-07-25 12:21:24 +02:00
Max Schmitt 7570c25b3d
chore: remove glob from client-certificate matching (#31846)
Signed-off-by: Max Schmitt <max@schmitt.mx>
Co-authored-by: Dmitry Gozman <dgozman@gmail.com>
2024-07-24 19:13:03 +02:00
Max Schmitt ca149be154
test: skip SharedArrayBuffer on macOS 12 (#31845) 2024-07-24 18:45:03 +02:00
Max Schmitt c5b7ce86dc
feat(client-certificates): add http2 support (#31786) 2024-07-24 11:39:39 +02:00
Pavel Feldman c74843a914
chore(fetch): pass flush and finishFlush options to brotli (#31833)
Fixes https://github.com/microsoft/playwright/issues/31814
2024-07-23 18:28:34 -07:00
Pavel Feldman 7735affef4
fix(ui): print the web server output in the ui mode (#31824)
Fixes https://github.com/microsoft/playwright/issues/31300
2024-07-23 16:52:32 -07:00
Yury Semikhatsky 1918ae5c4a
fix(webkit): reenable CrossOriginOpenerPolicy (#31765)
Depends on https://github.com/microsoft/playwright-browsers/pull/1160
Fixes: https://github.com/microsoft/playwright/issues/14043
2024-07-23 15:02:47 -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 a3e31fd2c4.
2024-07-23 10:29:37 -07:00
Max Schmitt b9c4b6bff0
chore: client certificates refactorings (#31822) 2024-07-23 19:18:31 +02:00
Simon Knott f23d02a211
feat(test runner): --only-changed option (#31727)
Introduces an `--only-changed [base ref]` option.

`playwright test --only-changed` filters the test run to only run test
suites that have uncommitted changes.
`playwright test --only-changed=foo` runs only tests that were changed
since commit `foo`.

In pull request CI, this can be used to run changed tests first and fail
fast: `--only-changed=$GITHUB_BASE_REF`.
During local development, it can be used to quickly filter down to the
touched set of tests suites.
In some rare usecases, this can also help to cut down on CI usage for
pull requests. Tread with caution though.

File dependencies are taken into account to ensure that if you touched a
utility file, all relevant tests are still executed.

Closes https://github.com/microsoft/playwright/issues/15075
2024-07-23 18:04:17 +02:00
Dmitry Gozman e86c8af599
chore: rename route fixture in ct (#31817)
Addresses review feedback.
2024-07-23 07:43:28 -07:00
Simon Knott bbe5df3f5f
fix(ui): when --grep is used, UI should only show selected tests (#31815)
Closes https://github.com/microsoft/playwright/issues/31617.
2024-07-23 15:29:08 +02:00
Andrey Lushnikov d23ea26947
feat(firefox): roll Firefox & Firefox-Beta to 1458 (#31807)
Fixes https://github.com/microsoft/playwright/issues/31525
Closes https://github.com/microsoft/playwright/pull/31806
Closes https://github.com/microsoft/playwright/pull/31805
2024-07-23 10:37:00 +02:00
Simon Knott 1408a45595
chore(ct): remove suite dependency by connecting dependency graphs at read time, not write time (#31794)
Broken out of https://github.com/microsoft/playwright/pull/31727 as per
@dgozman's
[request](https://github.com/microsoft/playwright/pull/31727#discussion_r1685793229).

The PR goal is to remove the `suite` argument from the Component
testing's Vite Plugin. `suite` is used to enrich Vite's dependency graph
with information about dependencies between test suites and helper
files. It essentially merges the Vite graph with the
`compilationCache.ts > fileDependencies` graph, and then writes the
result back into `compilationCache.ts > externalDependencies`.

By refactoring this to make the connection on the reading end in
`collectAffectedTestFiles`, we can drop the `suite` parameter.

We didn't yet have a test that depended on the dependency graph being
connected correctly between `fileDependencies` and
`externalDepedencies`, so I've [extended an existing
test](53a539938b)
to capture that.
2024-07-23 10:19:58 +02:00
Dmitry Gozman d87cb7a303
feat(trace viewer): allow hiding route actions (#31726)
Adds a new settings tab above the actions list.

<img width="307" alt="settings tab"
src="https://github.com/user-attachments/assets/792212b7-e2fd-4a5c-8878-654e2e060505">

Toggling the "Show route actions" checkbox hides all route calls:
`continue`, `fulfill`, `fallback`, `abort` and `fetch`.

References #30970.
2024-07-22 11:34:34 -07:00
Yury Semikhatsky e269092ef9
Revert "fix: add 'window-management' to chromium browser (#31687)" (#31801)
This reverts commit 0aa2f06f68.

Discussed the new permission in the API review and decided not to
proceed with the feature as we are not ready to commit to supporting it
yet:
* the API is Chromium specific
* the API is still experimental
* there is no clarity to what extend the screen manipulation APIs will
work in old headless which is our main test environment

We'll keep an eye on the demand for the feature and may get back to
implementing it in the future.

Reference: https://github.com/microsoft/playwright/issues/27198
2024-07-22 11:27:12 -07:00
Yury Semikhatsky bef87849e3
chore: show error when opening newer trace with old viewer (#31781)
Reference: https://github.com/microsoft/playwright-java/issues/1617
2024-07-22 08:16:25 -07:00
Dmitry Gozman b535139b32
fix(trace viewer): library-only trace should not merge actions (#31768)
Without `wallTime`, actions are matched by `actionName:undefined` and
all actions with the same are merged.

Fixes #31764.
2024-07-19 11:18:22 -07:00
Max Schmitt b8546eb35e
test: unflake client-certificate WebKit tests (#31776) 2024-07-19 15:08:04 +02:00
Max Schmitt f570c747d5
test: unskip har http2 test on WebKit Windows (#31774) 2024-07-19 13:44:56 +02:00
Max Schmitt f104e920e0
fix(client-certificates): pass TLS servername for SNI (#31761) 2024-07-19 12:55:20 +02:00
Max Schmitt 0ecae56750
test: unflake 'should have ignoreHTTPSErrors=false by default' (#31771) 2024-07-19 12:04:12 +02:00
Max Schmitt 708def8804
fix(client-certificates): keep ignoreHTTPSErrors false by default (#31760) 2024-07-18 22:37:11 +02:00
Max Schmitt 297b1a8afe
test: move page-clock tests into library/ tests folder (#31752) 2024-07-18 14:45:45 +02:00
Max Schmitt 453e3bdf9d
test: fix client-certificates tests on Windows (#31750) 2024-07-18 13:43:56 +02:00
Dmitry Gozman 056997c41f
fix(toHaveScreenshot): attach "expected" when writing a missing expectation (#31745)
Previously, only the "actual" attachment was created, pointing to the
file in `test-results`. Now, the "expected" attachment pointing to the
file in `__screenshots__` is also created. This will help any reporters
that would like to know the "expected" path, for example to do a manual
accept/decline of the baseline.

Fixes #30693.
2024-07-18 02:42:44 -07:00
Dmitry Gozman 6491e5b415
chore: deprecate/remove noWaitAfter from some actions (#31739)
The following actions keep `noWaitAfter` option: `click`, `selectOption`
and `press`.

All other actions that used to have `noWaitAfter` now behave like it was
set to true, not waiting for follow-up navigations. In the docs, this
option is marked as completely ignored.

A small logic change was made to compensate for this behavior: when
waiting for the `hitTargetInterceptor`, we now race it against
navigations to avoid stalling when navigation stalls. Previously,
waiting for the interceptor was disabled when `noWaitAfter` was passed,
and since it's impossible to pass this option now, we mitigate by never
stalling instead.

Fixes #31469.
2024-07-18 00:19:08 -07:00
Matt Kleinsmith e06481a332
fix(recorder): address custom context menus (#31634) 2024-07-17 11:45:48 -07:00
Yury Semikhatsky 3f15fe8518
feat(reporter): links in attachment names, attachments name only (#31714)
* Allow calling `test.info().attach('My text');` without options (no
path nor body).
* Highlight links in attachment names:

<img width="992" alt="image"
src="https://github.com/user-attachments/assets/770e7876-3e43-4434-8cf1-194ad6ae5819">

Fixes https://github.com/microsoft/playwright/issues/31284
2024-07-17 09:30:49 -07:00
Dmitry Gozman f4399f7f06
fix(toHaveScreenshot): sanitize attachment names and paths (#31712)
... unless an array of file-system-friendly parts is provided.

Motivation: attachment name is used as a file system path when
downloading attachments, so we keep them fs-friendly.

References #30693.
2024-07-17 07:08:43 -07:00
Simon Knott 8eab28d858
fix(list reporter): print step ends in non-TTY mode (#31703)
When used in a terminal, the `list` reporter prints out information
about test steps to help debugging. In non-TTY environments like GitHub
Actions, currently it doesn't.

This PR changes that, so that in non-TTY environments you'll see the
"step end" messages appearing, but not the "step begin" messages. This
is a good middleground, because it helps the user understand test
progress, without being too verbose.

Closes https://github.com/microsoft/playwright/issues/31674
2024-07-17 13:36:37 +02:00
Max Schmitt ed6abf86c7
fix(expect): throw unsupported error when using this.equals() in expect (#31723) 2024-07-17 13:22:00 +02:00
Max Schmitt e11c0c0cbb
fix(connect): annotate internal api calls correctly (#31715) 2024-07-17 09:00:47 +02:00
Max Schmitt 3694c1422d
Revert "test: rebase golden snapshots on Chromium macOS arm64 (#31344)" (#31711)
This reverts commit 02416877da.

Since we landed
3127571b24
- we should revert this one as well.
2024-07-16 21:16:55 +02:00
Yury Semikhatsky 8021312c99
chore: enable notification permission tests in WebKit (#31699)
The Notifications API has been supported in WebKit since 2022, enable
related permission and tests.
2024-07-16 09:44:38 -07:00
Max Schmitt 7ce9b7e56b
fix(setInputFiles): throw when uploading file in directory upload (#31706) 2024-07-16 15:55:35 +02:00
Ismael Onilearan 0aa2f06f68
fix: add 'window-management' to chromium browser (#31687) 2024-07-15 14:34:57 -07:00
Max Schmitt d463d1f285
fix(snapshotter): allow rendering of & in STYLE tags (#31627)
Fixes https://github.com/microsoft/playwright/issues/31607
2024-07-15 17:33:22 +02:00
Dmitry Gozman 6ee8f1de2d
Revert "chore: move artifacts recording to TestLifecycleInstrumentation (#30935)" (#31686)
This reverts commit ba5b460444.
2024-07-15 07:01:51 -07:00
Dmitry Gozman 1686e5174d
chore: allow evaluating Error objects (#31691)
Previously, Error objects were replaced with strings.
Now, Error objects are reconstructed back from the serialized value.
2024-07-15 05:47:40 -07:00
Dmitry Gozman 074cc7d467
Revert "feat(trace): record trace upon browser closure (#31563)" (#31677)
This reverts commit bc27ca225e. Considered
too risky.
2024-07-15 01:08:51 -07:00
Yury Semikhatsky 1b4d9003c6
fix(har): ignore boundary when matching multipart/form-data body (#31672)
Fixes https://github.com/microsoft/playwright/issues/31495
2024-07-12 16:59:48 -07:00
Pavel Feldman 297143885a
fix(clock): ensure Date.now() is an integer (#31648)
Fixes https://github.com/microsoft/playwright/issues/31644
2024-07-12 11:44:25 -07:00
Max Schmitt 3127571b24
Revert "fix(chromium): pass --enable-gpu when running headless (#30937)"
This reverts commit d0b052e1e0.
2024-07-12 20:12:56 +02:00
Max Schmitt 71a668eb86
test: skip windows/CR client-certificates proxy tests (#31662) 2024-07-12 14:34:32 +02: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
Max Schmitt 97e2aa07a5
test: fix Windows Socks tests (#31654) 2024-07-11 23:16:24 +02:00
Max Schmitt 89eef55dc7
chore: use own socks5 server for tests (#31639) 2024-07-11 14:12:48 +02:00
Dmitry Gozman a1f82b0bb6
fix(trace): do not corrupt test runner actions when no library trace is present (#31564)
Recent logic that matches either by `stepId` or by `apiName`+`wallTime`
did not account for "no library trace" scenario.
2024-07-10 09:12:06 -07:00
Pavel Feldman f374f8db38
chore: follow up to the attachments preview change (#31598) 2024-07-09 09:58:59 -07:00
Álvaro Martínez 00131c1e3f
feat(trace-viewer): display text attachments in ui mode (#31215) 2024-07-08 11:16:14 -07:00
Dmitry Gozman 21c4531618
fix(selector generator): do not reparent to invisible ancestor (#31590)
Fixes #31335.
2024-07-08 09:07:25 -07: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
Dmitry Gozman 369a1eca48
feat(ct): experimental route fixture (#31554)
This fixture accepts the same arguments as `context.route()`, but also
supports request handlers compatible with msw syntax.
2024-07-06 09:35:20 -07:00
Max Schmitt 1132667ffe
chore: bump TypeScript to v5.5 (#31532) 2024-07-05 16:31:08 +02:00
Max Schmitt 2b94fa2e30 test: fix ESLint (remove unused imports) 2024-07-05 13:44:23 +02:00
Max Schmitt f56978edb2
test: isolate proxy creds between contexts (#31565) 2024-07-05 13:24:06 +02:00
ryanrosello-og e36ebb6ede
feat(trace-viewer) add request urls for actions initiated via APIRequestContext (#31534) 2024-07-04 11:59:56 +02:00
Dmitry Gozman 1c69d3e175
chore: update flakiness metadata for better ui presentation (#31528) 2024-07-03 08:39:53 -07:00
Max Schmitt bfbd5f6f2f
test: snapshot with all: unset in StyleSheet (#31514) 2024-07-03 09:40:50 +02:00
Max Schmitt 9a3e0967e6
fix(electron): tracing with @playwright/test (#31437) 2024-07-01 19:19:38 +02:00
Max Schmitt 7040340d61
test: adjust upload folder expectation for msedge (#31454) 2024-07-01 12:19:04 +02:00
4ydx 4089f4593b
fix(codgen): assertValue works with disabled select (#31315) 2024-06-28 13:04:59 -07: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
Pavel Feldman c9e673c6dc
fix(utility): create utility world when web security is disabled (#31458)
Reverts previous attempt at #31096

Fixes: https://github.com/microsoft/playwright/issues/31431
Fixes: https://github.com/microsoft/playwright/issues/31442
2024-06-27 09:29:20 -07:00
Playwright Service 976373ed2c
feat(chromium-tip-of-tree): roll to r1234 (#31418) 2024-06-26 16:51:57 +02:00
Pavel Feldman da441347e2
fix(runner): do not run beforeEach hooks upon skip modifier (#31426)
Fixes https://github.com/microsoft/playwright/issues/31425
2024-06-25 10:47:37 -07:00
Max Schmitt f11ab2f145
chore: enable keepAlive in happy eyeballs http.Agent (#31434) 2024-06-25 19:05:32 +02:00
Pavel Feldman 122818c62c
feat: allow boxing and titling fixtures, simulate context fixture deps (#31423)
Fixes https://github.com/microsoft/playwright/issues/31411
2024-06-24 21:43:43 -07:00
Max Schmitt 47fb9a080d
fix(test-runner): don't add slow annotation twice (#31414) 2024-06-24 23:34:17 +02:00
Yury Semikhatsky d74ddaebe7
fix: correctly report overridden headers on redirected requests (#31409)
Fixes https://github.com/microsoft/playwright/issues/31351
2024-06-21 17:44:58 -07:00
Max Schmitt 2285bcd55d
test: fix ct-vue-vite tests (#31406) 2024-06-22 00:50:10 +02:00
Max Schmitt 7e1b69cf33
test: update Electron to v30 (#30334) 2024-06-21 00:43:26 +02:00
Max Schmitt 6ed3b374a8
fix(electron): allow downloads (#31390) 2024-06-21 00:35:14 +02:00
Max Schmitt 1ebd20a47b
chore: .NET generator fixes (#31401) 2024-06-20 23:33:46 +02: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
Yury Semikhatsky a2b116aa39
fix(trace): ensure har entry _monotonicTime is always start time (#31385)
* Revert harTracer change from
aeba083da0
to make sure that har.Entry._monotonicTime always represents request
start time. The issue from the corresponding report was due to HEAD and
GET request sent for the same URL, that use case is still addressed as
we match by url + method
* Adjust resources monotonic time as well when several contexts are
shown in the trace viewer.

Fixes https://github.com/microsoft/playwright/issues/31133
2024-06-19 15:06:20 -07:00
Playwright Service 45ee318673
feat(firefox): roll to r1456 (#31375)
Fixes https://github.com/microsoft/playwright/issues/31328
Fixes https://github.com/microsoft/playwright/issues/30837

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Max Schmitt <max@schmitt.mx>
2024-06-19 19:03:58 +02:00
Max Schmitt 8ba4cff10f
devops: add headless new to flakiness dashboard (#31381) 2024-06-19 18:08:22 +02:00
Dmitry Gozman 6ae9adfa4f
test: add "clock" to the metadata for dashboard traceability (#31370) 2024-06-18 14:56:08 -07:00
Dmitry Gozman ac90a47b73
fix(click): do not retarget <a> to the parent <label> (#31368)
Fixes #31359.
2024-06-18 12:12:19 -07:00
Andrey Lushnikov ee7b5e6315
test: make sure main page recording continues after popup closes (#31365)
References https://github.com/microsoft/playwright/issues/30837
2024-06-18 10:29:41 -07:00
Max Schmitt 02416877da
test: rebase golden snapshots on Chromium macOS arm64 (#31344) 2024-06-18 19:09:24 +02:00
Yury Semikhatsky dbc54c763d
test: delete tests for non-existing fastForwardTo (#31366)
The tests repeat `it.describe('fastForward'` above them.
2024-06-18 09:34:32 -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
Max Schmitt f05b4daa2f
fix(clock): under reused context (#31357)
We uninstall all the setInitScript but forgot to mark `installed` as
`false`.

Fixes https://github.com/microsoft/playwright/issues/31353
2024-06-18 18:21:33 +02:00
Andrey Lushnikov acf1b1f88c
test: add test reduced motion reset (#31364)
References https://github.com/microsoft/playwright/issues/31328
2024-06-18 09:01:35 -07:00
Dmitry Gozman a002572dd2
test: update some test conditions (#31336) 2024-06-17 10:20:57 -07:00
Pavel Feldman 2a7f17d820
chore: fix simulated clock bots (#31301) 2024-06-17 09:17:38 -07:00
Fumiaki MATSUSHIMA 838c572209
fix: select issue in Windows with Edge (#31270) 2024-06-17 10:28:07 +02:00
Dmitry Gozman 2ae2fb421c
chore: roll stable test runner to 1.45.0-beta-1718411373000 (#31326) 2024-06-14 19:43:35 -07:00
Yury Semikhatsky 76ba94bce6
test: postBody for intercepted fetch FormData with Blob (#31321)
Fixes https://github.com/microsoft/playwright/issues/24077
2024-06-14 13:30:22 -07:00
Playwright Service cf85905f44
feat(webkit): roll to r2035 (#31308) 2024-06-14 10:49:50 +02:00
Dmitry Gozman d0b052e1e0
fix(chromium): pass --enable-gpu when running headless (#30937)
Fixes #30585.
2024-06-13 11:27:17 -07:00
Pavel Feldman 897f7449ef
fix(clock): fix pauseAt to arrive at wall time (#31297) 2024-06-13 10:21:00 -07:00
Dmitry Gozman b9106a4c42
fix(test runner): do not use @babel/plugin-transform-dynamic-import (#31285)
Historically, this plugin was important to translate dynamic imports
into require calls so that we can intercept them and transpile.

This is not needed anymore with ESM loader enabled by default, so we can
avoid this transformation and support dynamic imports of ESM-only
packages/files.

Fixes #17075, fixes #23255, fixes #31140, references #23662.
2024-06-13 06:18:44 -07:00
Yury Semikhatsky 9a31821411
test: disable page-drag tests in headed linux (#31280)
The tests have been flaking across browsers apparently due to stray
mouse event sent by the OS.

See
https://devops.playwright.dev/flakiness.html#filter_spec=page%2Fpage-drag.spec.ts&show_flaky=true&timestamp=1718225128508
2024-06-12 15:09:56 -07:00
Max Schmitt fbb44b043b
test: skip folder upload tests on macOS-12 and Android (#31281) 2024-06-12 23:58:36 +02:00
Max Schmitt dcf4e4e054
feat: allow folder uploads (#31165) 2024-06-12 22:20:18 +02:00
Yury Semikhatsky f1475fa644
chore: trim multiline step titles to first line (#31269)
Fixes https://github.com/microsoft/playwright/issues/31266
2024-06-12 08:24:12 -07:00
Dmitry Gozman f115ba85d9
test: add more edge-case tests for clock (#31256) 2024-06-11 16:43:44 -07:00
Playwright Service e07b46883d
feat(webkit): roll to r2029 (#31257) 2024-06-11 22:14:30 +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
Yury Semikhatsky c08000b967
feat(chromium): storage-access permission (#31239)
Fixes https://github.com/microsoft/playwright/issues/31227
2024-06-11 09:18:45 -07:00
Max Schmitt 185cc43dbf
devops: fix merge reports on PRs (#31232) 2024-06-10 19:21:02 +02:00
Carter Sande 701a405bdf
fix(trace-viewer): Rewrite file URIs in snapshots, like blob URIs. (#31113)
This allows snapshots of file:/// pages with external stylesheets,
images, etc to be rendered correctly in the trace viewer. (Otherwise, it
tries to request the file:/// URIs directly and the requests get blocked
by the browser.)

Fixes #31112.
2024-06-10 11:44:52 +02:00
Pavel Feldman e280d0bd35
chore(clock): split wall and monotonic time (#31198) 2024-06-09 14:50:50 -07:00
Pavel Feldman dd3a41287e
chore: simplify doTick (#31196) 2024-06-06 19:26:30 -07:00
Pavel Feldman 826343b8a0
chore: rename fakeTimers to clock (#31193) 2024-06-06 15:56:13 -07:00
Pavel Feldman 384eed65ea
chore: organize fake timers (#31156) 2024-06-05 09:25:12 -07:00
Max Schmitt 2d7bbe4d73
test: unflake should pass "key" attribute from JSX in variable (#31141) 2024-06-04 17:57:57 +02:00
Pavel Feldman c516ba0ec8
api(clock): rework api based on the review (#31137) 2024-06-04 06:51:35 -07:00
Max Schmitt 9e6f051488
devops: merge other workflows (#31121) 2024-06-04 08:59:50 +02:00
Max Schmitt d50a2bb0c6
test: fix service tests (#31130) 2024-06-03 16:28:07 +02:00
Pavel Feldman 54e7e254cd
chore: fix driver modes to test with under_test set (#31117) 2024-06-01 08:33:46 -07:00
Pavel Feldman 8bfd0eb6e4
chore: introduce clock test mode (#31110) 2024-05-31 14:44:26 -07:00
Joe-Hendley afa0bf2247
feat: increase length of printed html tags (#31105)
resolves https://github.com/microsoft/playwright/issues/30977 by
increasing the printed length of HTML tags from 50 -> 500 as suggested
by @dgozman
2024-05-31 10:45:56 -07:00
Pavel Feldman 76e977a934
chore: add clock.next() (#31097) 2024-05-31 08:09:24 -07:00
Pavel Feldman f17d0440a7
chore: attempt at fixing double init scripts (#31096) 2024-05-30 15:38:10 -07:00
Mathias Leppich 5708148496
fix(merge-reports): only change test ids when needed (#31061)
When merging blob reports test ids are patched to make sure there is no
collision when merging reports that might have overlapping test ids.
However, even if you were merging reports that had no overlapping ids,
all test ids will be modified, which is an undesirable side effect.

This PR only modify test ids when the same test id has already been used
in a previous blob report.

----

This change is also part of
https://github.com/microsoft/playwright/pull/30962
2024-05-30 11:29:20 -07:00
Yury Semikhatsky 6067b78f88
chore: http credentials send immeidately/unauthorized enum (#31076)
Reference https://github.com/microsoft/playwright-internal/issues/205
Reference https://github.com/microsoft/playwright/issues/30534
2024-05-30 10:19:56 -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
Yury Semikhatsky f93da40925
feat(webkit): roll to r2014 (#31074)
Closes https://github.com/microsoft/playwright/pull/31059
Closes https://github.com/microsoft/playwright/pull/31012

Reference https://github.com/microsoft/playwright-browsers/issues/795
2024-05-29 17:20:38 -07:00
Playwright Service 97a82e6b77
feat(firefox): roll to r1452 (#31068)
Fixes https://github.com/microsoft/playwright/issues/31039
Closes https://github.com/microsoft/playwright/pull/31069
2024-05-29 08:28:26 -07:00
Yury Semikhatsky a11a6d9874
fix(blob): make sure tele reporters do not override ids (#31056)
Fixes https://github.com/microsoft/playwright/issues/31023
2024-05-28 16:37:11 -07:00
Pavel Feldman 6675652269
chore: split client-side instrumentation into sync and async (#31054) 2024-05-28 14:29:57 -07:00
Rui Figueira f254290ab4
fix(trace-viewer): fix snapshot.html (#31033)
Actual path to get trace contexts is /contexts, not /context
2024-05-28 13:14:22 -07:00
Sander e047c478a4
feat(ct): resolve hooksConfig import refs (#31024)
closes https://github.com/microsoft/playwright/issues/30453
2024-05-28 12:29:52 -07:00
cavivie a7599ad509
feat(api): add host option in launchServer options (#30999) 2024-05-27 11:24:23 +02:00
amankagithub 0e0b426e47
feat(html): filter test cases by annotation text in HTML report (#30751) 2024-05-24 13:12:16 -07:00
Yury Semikhatsky 9884c851ff
feat(expect): expose expect timeout (#30969)
Fixes https://github.com/microsoft/playwright/issues/30583
2024-05-24 08:56:43 -07:00
Dmitry Gozman ae1e07de10
test: skip/improve some tests that are flaky (#30993) 2024-05-23 17:40:27 -07:00
Yury Semikhatsky a106428114
feat(config): respectGitIgnore option (#30972)
Fixes https://github.com/microsoft/playwright/issues/30553
2024-05-23 12:05:02 -07:00
Playwright Service 14d98aaaf7
feat(firefox): roll to r1451 (#30950) 2024-05-23 10:30:06 +02:00
Dmitry Gozman eed6a10f3f
fix(tracing): speed up trace recording (#30946)
This includes two major changes:
- reuse `SerializedFS` for live test runner tracing;
- merge scheduled `appendFile` operations into a single `fs` call.

In some cases, this improves performance of UI mode by 61% and
performance of `trace: on` mode by 38%. Note that performance
improvement on the average test will not be as noticeable.

References #30875, #30635.
2024-05-22 15:19:32 -07: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 148d759a4c
fix(chromium): do not fetch intercepted request body from network (#30938)
Fixes https://github.com/microsoft/playwright/issues/30760
2024-05-21 12:49:47 -07:00
Dmitry Gozman 6290af3a08
feat(reporters): align and document environment variables (#30912)
- Documents `PLAYWRIGHT_FORCE_TTY` and `FORCE_COLOR` across terminal
reporters.
- New `PLAYWRIGHT_LIST_PRINT_STEPS`. Removes undocumented test-only
`PW_TEST_DEBUG_REPORTERS_PRINT_STEPS`.
- Replaces `PLAYWRIGHT_HTML_REPORT` with `PLAYWRIGHT_HTML_OUTPUT_DIR`
and `PW_TEST_HTML_REPORT_OPEN` with `PLAYWRIGHT_HTML_OPEN` for
consistency, supports older versions for backwards compatibility.
- New `PLAYWRIGHT_HTML_HOST`, `PLAYWRIGHT_HTML_PORT` and
`PLAYWRIGHT_HTML_ATTACHMENTS_BASE_URL`.
- New `PLAYWRIGHT_JUNIT_STRIP_ANSI` and
`PLAYWRIGHT_JUNIT_INCLUDE_PROJECT_IN_TEST_NAME`.
- Removes `PW_HTML_REPORT` that was set for unknown reason.
2024-05-21 10:46:52 -07:00
Max Schmitt a93ad3dade
fix(fetch): allow UTF-8 in Location header (#30904) 2024-05-21 09:15:33 +02: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
Max Schmitt 162c18f586
feat(roll): roll Firefox to r1450 (#30865)
Fixes
https://github.com/microsoft/playwright/actions/runs/9120975643/job/25079367394
2024-05-19 16:28:32 +02:00
Yury Semikhatsky b375f10778
fix: fulfill with unassigned status codes (#30856)
Fixes https://github.com/microsoft/playwright/issues/30773
2024-05-17 09:32:40 -07:00
Dmitry Gozman 4ad94c1a8c
chore: print friendly localhost address from http server (#30853) 2024-05-17 08:55:12 -07:00
Yury Semikhatsky 2734a05342
feat(trace-viewer): show nework request source id (#30810)
<img width="1392" alt="image"
src="https://github.com/microsoft/playwright/assets/9798949/dcfd4d71-4a41-48ac-9f24-2996200f966a">

Fixes https://github.com/microsoft/playwright/issues/28903
2024-05-15 16:29:26 -07:00
Dmitry Gozman 89cdf3d56e
feat: env.PLAYWRIGHT_FORCE_TTY to control reporters' tty (#30834)
Previously, terminal reporters consulted `process.stdout.isTTY`. Now it
is possible to control the tty behavior:
- `PLAYWRIGHT_FORCE_TTY=0` or `PLAYWRIGHT_FORCE_TTY=false` to disable
TTY;
- `PLAYWRIGHT_FORCE_TTY=1` or `PLAYWRIGHT_FORCE_TTY=true` to enable TTY,
defaults to 100 columns when real columns are unavailable;
- `PLAYWRIGHT_FORCE_TTY=<number>` to force enable TTY and set the
columns.

Fixes #29422.
2024-05-15 15:01:52 -07:00
Dmitry Gozman 5fa0583dcb
fix(test runner): regular worker termination finishes long fixtures (#30769)
Previously, terminating worker always had a 30 seconds force exit.

Now, regular worker termination assumes that process will eventually
finish tearing down all the fixtures and exits. However, the
self-destruction routine keeps the 30 seconds timeout to avoid zombies.

Fixes #30504.
2024-05-15 10:37:36 -07:00
Max Schmitt 90765a226f
fix(electron): allow launching with spaces in path (#30820)
Fixes https://github.com/microsoft/playwright/issues/30755
2024-05-15 18:20:00 +02:00
Joe-Hendley 6ae5cd3824
feat: implement flag to fail flaky tests (#30618)
Implements feature requested in
https://github.com/microsoft/playwright/issues/30457

The test runner treats flaky tests as failures when the flag is enabled,
but still reports flaky tests as flaky in the reporting interface. It
feels like something worth discussing as this behaviour makes sense to
me, but looked a bit odd to @BJSS-russell-pollock when I ran this past
him.

Closes #30457.
2024-05-15 09:10:10 -07:00
Pavel Feldman 7a588e6c72
chore: do not close the reused context when video is on (#30807)
Fixes https://github.com/microsoft/playwright/issues/30779
2024-05-15 09:05:06 -07:00
Playwright Service fda9051c75
feat(webkit): roll to r2008 (#30818)
Signed-off-by: Max Schmitt <max@schmitt.mx>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Max Schmitt <max@schmitt.mx>
2024-05-15 11:34:39 +02: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
Sander 9ce41fa1b0
fix(ct): mount then unmount then mount (#30657)
closes https://github.com/microsoft/playwright/issues/30628
2024-05-14 11:03:46 -07:00
Max Schmitt 27ce5c0226
test: should take fullPage screenshots and mask elements outside of it (#30802)
Regression test for #30770.
2024-05-14 18:09:18 +01:00
Max Schmitt c8c37009c3
test(esm): fix import attribute tests (#30798)
Pre Node.js `18.20.0`:

- `assert` is supported

Post Node.js `18.20.0`

- `assert` and `with` is supported.

Before https://github.com/microsoft/playwright/pull/30482 we kept
`asserts` in the JS code, Node.js was interpreting them. The `with`
keyword was not supported, this was what the PR was fixing.

After https://github.com/microsoft/playwright/pull/30482 Babel is
converting `assert` (deprecated) into `with` (successor) since we use
the `deprecatedAssertSyntax` option.

This means, that the minimum Node.js version we support in order to use
import attributes is now `18.20.0` where they added the `with` support.
This follows our principle of supporting only the latest minor release
for Node.js versions.

See here for the 18.20 changelog:

> #### Added support for import attributes
>
> Support has been added for import attributes, to replace the old
import
> assertions syntax. This will aid migration by making the new syntax
available
> across all currently supported Node.js release lines.
>
> This adds the `with` keyword which should be used in place of the
previous
> `assert` keyword, which will be removed in a future semver-major
Node.js
> release.
>
> For example,
>
> ```console
> import "foo" assert { ... }
> ```
>
> should be replaced with
>
> ```console
> import "foo" with { ... }
> ```

Fixes https://github.com/microsoft/playwright/pull/30482 - the tests
were a noop before, since they were tree-shaked by Babel.
2024-05-14 17:59:41 +01:00
Max Schmitt b06c1dfff1
Revert "fix(highlight): highlight Top Layer elements (#30001)" (#30800)
This reverts commit a932222662.

Closes https://github.com/microsoft/playwright/pull/30797 - maybe there
is a better way to get the page height?
`document.documentElement.scrollHeight` seems to not work on Firefox.
Relates https://github.com/microsoft/playwright/issues/30770
2024-05-14 17:23:52 +01: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
Dmitry Gozman 8334191b94
fix(selector generator): properly escape re used in has-text (#30767)
Fixes #30499.
2024-05-13 12:40:46 -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 a50cd30519
chore: use monotonic time for sorting (#30735)
* Use only monotonicTime for sorting, do not use wallTime for that
* Since test runner and the library can be running on different
machines, those machines may have clocks which are not synchronized. To
avoid problems in such cases we compute delta between test runner and
and library contexts based on a start time of action that exists in both
contexts.
2024-05-09 15:31:23 -07:00
Dmitry Gozman 0d004c9f3c
fix(chromium): concat all post data entries for request.postData() (#30734)
This already works in Firefox, but does not work in WebKit.
2024-05-09 14:08:38 -07:00
Yury Semikhatsky 7a0c7730e7
fix(trace-viewer): make call ids unique across trace files (#30720) 2024-05-08 17:33:31 -07:00
Viktor Szépe 150cbcbdf3
chore: fix typos (#30645) 2024-05-08 19:40:03 +01:00
Yury Semikhatsky cadfd9c88e
test: unflake "should report browser close signal 2" (#30681) 2024-05-06 15:39:31 -07:00
Max Schmitt c7e7a7ef56
devops: add Node.js 22 bots (#30644) 2024-05-06 19:58:44 +00:00
Yury Semikhatsky d5b387159a
feat(fetch): sendImmediately (#30627)
Fixes https://github.com/microsoft/playwright/issues/30534
2024-05-02 16:30:12 -07:00
jonghoonpark a6488c4a28
fix(html-reporter): add filter for anonymous describe (#30621)
related issue: https://github.com/microsoft/playwright/issues/30475

## Motivation:
On https://github.com/microsoft/playwright/issues/30475, we found that
anonymous describe is rendered in html report

## Modification:
Make filter for anonymous describe

## Result:
anonymous describe will be filtered out.
Not render empty describe
Close https://github.com/microsoft/playwright/issues/30475 issue
2024-05-02 09:54:44 -07:00
Dmitry Gozman fd92509dda
fix(role): extract tagName safely (#30636)
Fixes #30616.
2024-05-02 09:42:19 -07:00
georg.dev 8173cdc485
fix(reporters): improve detection of output folder clashes (#30607)
When comparing `outputDir` and html-reporter `outputFolder`, we now make
sure that both paths end with a forward-slash.

Fixes #28677

---------

Co-authored-by: Georg Unterholzner <georg.unterholzner@dynatrace.com>
2024-05-02 08:32:57 -07:00
Max Schmitt 980f9c6ad4
chore: drop firefox-asan (#30626) 2024-05-01 22:13:00 +00:00
Yury Semikhatsky 3b7c4fac22
chore: add common env vars for junit and json reporters (#30611) 2024-05-01 10:16:49 -07:00
Yury Semikhatsky 6c827121bf
chore: roll stable test runner to 1.44 beta (#30600) 2024-04-29 18:35:21 -07:00
Pavel Feldman fb90797d73
fix(last-run): remove globalOutputDir (#30571) 2024-04-29 09:02:54 -07:00
Pavel Feldman 96f3d19819
feat(ctrl_or_meta): add a universal ctrl-meta modifier (#30572)
Fixes https://github.com/microsoft/playwright/issues/12168
2024-04-29 08:15:12 -07:00
Pavel Feldman b5dee9ecb7
feat(html): allow ctrl+clicking status (#30556) 2024-04-26 10:50:20 -07:00
Tan Li Hau 194479d90e
fix: pass key attribute from jsx to component test (#30426)
When using the `key` attribute in jsx inside the test modules, it is not
serialised and passed to the browser in component test
2024-04-26 09:49:44 -07:00
Yury Semikhatsky 3643fd456b
feat: outputFile option and PLAYWRIGHT_BLOB_OUTPUT_FILE env for blob (#30559)
Reference https://github.com/microsoft/playwright/issues/30091
2024-04-26 09:33:53 -07:00
Yury Semikhatsky b5aca9fca8
test: relax "should print if globalTimeout is reached" expectation (#30558) 2024-04-25 18:40:58 -07:00
Dmitry Gozman 6d20da568e
feat: expect(locator).toHaveRole(role) (#30555)
References #13517. Fixes #18332.
2024-04-25 15:26:10 -07:00
Yury Semikhatsky 9a1b34a4b0
Revert "fix: shut down workers before reporter.onEnd (#30329)" (#30551)
This reverts commit 3cea17abb6.

Reference https://github.com/microsoft/playwright/issues/30550

The test is preserved but marked as fixme.
2024-04-25 14:21:54 -07:00
Dmitry Gozman 086ea79c25
chore: remove checkCoverage script (#30552)
We do not benefit from it for many years already.
2024-04-25 14:00:14 -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 dc0665210f
fix(reporters): properly determine flaky status for serial mode (#30529)
There are plenty of edge cases in this area:
- interrupted test run;
- did not run because of serial mode failure;
- failed before `test.skip()` call (e.g. in `beforeEach`) in one of the
retries;
- and more...

Related issues: #28322, #28321, #27455, #17652.
Prior changes: #27762, #26385, #28360, probably more.

There is still some duplication between `outcome()` and similar logic in
`base.ts`, which might be deduped in a follow-up.

Fixes #28322.
2024-04-25 13:39:14 -07:00
Yury Semikhatsky 5502a16e1d
fix(junit): merged report should preserve total duration (#30525)
Fixes https://github.com/microsoft/playwright/issues/30518
2024-04-25 13:34:17 -07:00
Yury Semikhatsky 714235d6c8
fix(merge): include command hash into the report name (#30528)
Reference https://github.com/microsoft/playwright/issues/30091
2024-04-25 13:34:00 -07:00
Pavel Feldman 4fa1030af6
chore: hide skipped tests by default (#30546)
Fixes https://github.com/microsoft/playwright/issues/30540
2024-04-25 12:48:41 -07:00
Yury Semikhatsky d5bcc41f79
test: run File dependent test only on Node 20+ (#30549) 2024-04-25 11:53:27 -07:00
Yury Semikhatsky b074932a44
feat(blob): PLAYWRIGHT_BLOB_FILE_NAME env variable (#30530)
Reference https://github.com/microsoft/playwright/issues/30091
2024-04-25 09:45:38 -07:00
Pavel Feldman a2eb43b335
feat(runner): allow running last failed tests (#30533)
Fixes: https://github.com/microsoft/playwright/issues/30506
2024-04-25 08:15:27 -07:00
Dmitry Gozman a6f0a89169
test: unflake "should work with custom reporter" (#30526) 2024-04-24 20:03:39 -07:00
Pavel Feldman ff3d3ae8f2
fix(ui): print config and global setup errors (#30531)
Fixes: https://github.com/microsoft/playwright/issues/30513
2024-04-24 18:54:48 -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 f1f3929a67
chore: get rid of ConfigInWorker, use FullConfig instead (#30517)
Addressing API review feedback.
2024-04-24 14:14:05 -07:00
Dmitry Gozman 6fecf52016
test: adjust headers expectations for firefox-beta (#30520)
There is a new experimental feature enabled in firefox-beta that sends a
"Priority" header.
2024-04-24 14:05:39 -07:00
Pavel Feldman e91d372544
fix(ct): allow importing components from node_modules (#30493)
Fixes https://github.com/microsoft/playwright/issues/29854
2024-04-24 12:32:28 -07:00
Dmitry Gozman 8fc7723f22
fix(types): allow any return type from event handlers (#30492)
Closes #29353.
2024-04-24 09:25:43 -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 73c12f1f77
fix: increase global timeout for a test (#30491)
1s is not enought on CI to start running the tests sometimes.
2024-04-23 16:10:30 -07:00
Pavel Feldman 4514b7e3ed
chore: use original test ids in html report (#30486)
Fixes https://github.com/microsoft/playwright/issues/30430
2024-04-23 14:28:27 -07:00
Dmitry Gozman b52cd7e4dc
test: make sure skipped tests in serial mode are reported (#30484)
This is a regression test for #28321, in preparation for changing some
skipped/flaky test status logic.
2024-04-23 10:51:27 -07:00
Pavel Feldman f5ca5241f3
feat(esm): support import attributes (#30482)
Fixes https://github.com/microsoft/playwright/issues/30473
2024-04-23 10:13:01 -07:00
Rui Figueira c80b851422
fix(codegen): prevent csp directive violations (#30366) 2024-04-23 07:33:12 -07:00
Dmitry Gozman 18dcd6adff
test: make expectations for some reporter tests readable (#30470) 2024-04-22 18:29:26 -07:00