Commit graph

2118 commits

Author SHA1 Message Date
Yury Semikhatsky 60b0f46b60
feat(fetch): support setHTTPCredentials (#8528) 2021-08-27 23:47:33 -07:00
Yury Semikhatsky 3727aa5b67
feat(fetch): send extra http headers (#8527) 2021-08-27 23:47:21 -07:00
Yury Semikhatsky 951b9ac21a
fix(fetch): handle cookies on redirects (#8519) 2021-08-27 15:28:36 -07:00
Max Schmitt f3dde0650f
feat(network): expose bodySize, transferSize, and headerSize (#8234) 2021-08-27 22:53:57 +02:00
Max Schmitt 89245de0ef
fix(har): rewrite sizes and make transferSize work in WK/Linux (#8504) 2021-08-27 20:42:45 +02:00
Yury Semikhatsky 768a97cfdc
feat(fetch): set user-agent and other default headers (#8491) 2021-08-27 08:26:19 -07:00
Michael Rienstra ed0c47a06f
fix(test-runner): minor error message typo (#8489) 2021-08-27 10:15:16 +02:00
Pavel Feldman 47ecd28a3d
fix(strict): erase injected script stack from strict error (#8493) 2021-08-26 21:21:19 -07:00
Pavel Feldman 4ed976f2e9
chore: remove isContextDestroyedError heuristic (#8456) 2021-08-26 18:44:49 -07:00
Yury Semikhatsky 210ad72228
fix: remove node-fetch dependency, use custom fetch implementation (#8486) 2021-08-26 16:18:54 -07:00
Max Schmitt 998f2ab959
chore: hide Route.fulfill._response from API (#8483) 2021-08-27 00:44:20 +02:00
Ross Wollman a1313727e8
fix(har): HAR artifacts need to be marked remote (#8462)
This is a follow-up fix to microsoft/playwright#8385.

Testing options are limited right now, but this change was confirmed
with a client running on my physical machine and a LaunchServer running
in a Docker container.

Before this change, the har.spec.ts only passed when the client and
server were on the some filesystem.

microsoft/playwright#8450 will likely give us options to test this in an
automated way in the official CI suite.
2021-08-26 11:26:08 -07:00
github-actions[bot] 183ebeaae5
feat(firefox): roll to r1288 (#8460)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2021-08-26 10:08:45 -04:00
Andrey Lushnikov 2198769f6c
fix(react-vue): support nested trees (#8467)
Turns out you can mount nested trees in both React and Vue.
This patch changes root discovery to support nested trees.

Fixes #8455
2021-08-26 03:07:33 -07:00
github-actions[bot] fe96cc274f
feat(webkit): roll to r1535 (#8457)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2021-08-26 11:47:34 +02:00
Pavel Feldman c627927bf5
fix: make preview take 3/4 of the screen (#8446) 2021-08-25 14:51:18 -07:00
Pavel Feldman 95be45967a
feat(strict): list ambiguous matches when throwing strict exception (#8449) 2021-08-25 14:51:03 -07:00
Dmitry Gozman 02bef1eded
fix(tracing): modernize old resources to new har format (#8453) 2021-08-25 14:36:52 -07:00
Ross Wollman cd110e6477
feat(har): Remotely accessible HAR file (#8385)
This change ensure's the HAR file is saved at `recordHar.path` on the
client instead of the server.

NB: The goal was to make this change transparent to the user and NOT
introduce any new APIs. Namely, I want to leave the API open for
potential `context.har.start()` and `context.har.stop()`.

This does BREAK servers that expect the HAR to be at the `recordHar.path`
on the server, but I think that's OK since there haven't been reports
of missing HAR on client making me think not many users are getting
HAR with client and server on different hosts anyways.

Closes #8355
2021-08-25 13:32:56 -07:00
Dmitry Gozman de85d8bb83
fix(test runner): do not special case test.fail (#8447)
This makes `test.fail` tests considered as passing when they actually fail:
- Stop restarting the worker.
- Retry when it passes instead of a fail.
- Behaves similar to regular tests in a `describe.serial` suite.
2021-08-25 12:19:50 -07:00
Dmitry Gozman e726c18788
chore: use 'mime' for various mimeType-extension mappings (#8426) 2021-08-25 11:18:35 -07:00
Joel Einbinder fc991fe897
chore(typescript): turn on noImplicitOverride (#7810) 2021-08-25 10:11:18 -04:00
Joel Einbinder 943c22c9c4
fix(protocol): remove unnused strict in QSA and add it to waitForSelector docs (#8140)
Strict doesn't make sense in querySelectorAll, but it was in the protocol.

And we had a strict option in ElementHandle.waitForSelector but it
was not surfaced in the docs/api.
2021-08-25 10:10:40 -04:00
Max Schmitt 8189de42cf
test: fix package installation tests (#8430) 2021-08-25 13:34:54 +02:00
Dmitry Gozman 29eb6cb777
chore: migrate tracing to har (#8417)
chore: migrate tracing to har

- `HarTracer` is used by both `HarRecorder` that implements
  `recordHar` context option, and by tracing.
- We keep the `trace.network` format for now, so it is not
  yet a valid har file, but it contains har entries.
2021-08-24 21:09:41 -07:00
Dmitry Gozman b188468fa4
fix(tracing): rewrite blob urls so that we can intercept them (#8423) 2021-08-24 17:05:26 -07:00
Max Schmitt 712a36649b
fix(test-runner): do not start web-server when tests are listed (#8414) 2021-08-24 23:39:24 +02:00
Yury Semikhatsky 7f02e9ebb1
chore: enable logical assignment babel plugin (#8416) 2021-08-24 14:29:20 -07:00
Yury Semikhatsky c0010d16c6
feat: introduce BrowserContext._fetch (#8349) 2021-08-24 14:29:04 -07:00
Joel Einbinder c9718359f1
fix(codegen): properly escape everything for windows (#8415) 2021-08-24 17:09:05 -04:00
Dmitry Gozman b0a7843247
chore: migrate tracing ResourceSnapshot to follow har entry format (#8391)
This will ease the migration of tracing to har.
2021-08-24 13:17:58 -07:00
Max Schmitt 8e20f13079
feat(routes): add support for the times option (#8399) 2021-08-24 20:45:50 +02:00
Yury Semikhatsky 59422a00f5
feat(route): rename method, add response option (#8386) 2021-08-24 11:07:54 -07:00
Joel Einbinder a8a3799e9d
fix(test-runner): use describe name in output dir (#8282) 2021-08-24 10:33:40 -04:00
Dmitry Gozman 47724fed5a
chore(tracing): rework start/export chunks (#8378)
Instead of filtering the whole trace file on export, we write
into separate trace file for each chunk. We also write a separate
trace.network file with all resources, because it is reused between
chunks.

This brings us towards `tracing.startFile()/stopFile()` api.
2021-08-23 16:08:09 -07:00
Joel Einbinder 0ed3c79d51
fix(selectors): nicer errors if the selector engine returns a bad value (#8259)
Co-authored-by: Pavel Feldman <pavel.feldman@gmail.com>
2021-08-23 22:54:02 +02:00
Dmitry Gozman 827a909d36
docs: deprecate timeout option in isVisible/isHidden methods (#8371) 2021-08-23 12:32:06 -07:00
Joel Einbinder 60829f8909
fix(codegen): escape tricky characters (#8350) 2021-08-23 12:22:19 -04:00
Dmitry Gozman f9b87268a7
fix(test runner): afterAll error should not mask beforeAll error (#8358) 2021-08-23 09:21:40 -07:00
Ross Wollman 25a4c7b3df
feat(launchServer): accept wsPath option (#8353) 2021-08-22 09:04:47 -07:00
Pavel Feldman 0997c13151
fix(test-runner): do not attach non-existent diff (#8297) 2021-08-20 13:40:27 -07:00
Max Schmitt c4eb2d4b1e
chore: move sdkLanguage over to the protocol init call (#8329) 2021-08-20 21:32:21 +02:00
Andrey Lushnikov 48e94c15c1
feat: support multiple roots in React and Vue selectors (#8313)
Fixes #8230
2021-08-20 05:05:52 -07:00
Dmitry Gozman 7818f5fa0b
test: add a tracing bot that collects a trace for most contexts (#8316) 2021-08-19 19:09:19 -07:00
Dmitry Gozman e5be2c9205
feat(test runner): show failure details for flaky test runs (#8332)
Currently, we just say "foo.spec.ts > my test" is flaky, but do not
show how exactly the failed run went.
2021-08-19 18:20:53 -07:00
Dmitry Gozman 9c96468b9e
fix(tracing): do not stall while capturing snapshot with an open dialog (#8328) 2021-08-19 18:20:15 -07:00
Pavel Feldman 80dded6ccf
feat(proxy): bind proxy to open port (#8331) 2021-08-19 18:08:55 -07:00
Dmitry Gozman 70eca0401d
fix(test runner): avoid internal error for step end without begin (#8327)
fix(test runner): avoid internal error for step end without begin

Consider the following scenario:
- Test finishes and starts tearing down fixtures.
- Fixture teardown starts a step S and then times out.
- We declare the test finished (with timeout).
- Dispatcher shuts down the worker and spins a new one for a retry.
  Additionally, it clears steps information for the test to be
  ready for the new retry. Step S information is lost.
- Meanwhile, during worker teardown, the step S does
  actually finish (usually with an error), and we send stepEnd for S.
- Dispatcher does not know what to do with step S end and
  prints an internal error.

The fix is to ignore certain messages from the shutting down worker that failed.
2021-08-19 17:04:09 -07:00
Pavel Feldman cad7fc2ef7
feat(proxy): support local.playwright for proxying (#8330) 2021-08-19 16:56:06 -07:00
Pavel Feldman 44887c237d
chore: reimplement socks to be readable (#8315) 2021-08-19 15:16:46 -07:00
Max Schmitt 96a9a26f9f
fix: strict mode on page.* methods on context level (#8324) 2021-08-19 23:08:28 +02:00
Max Schmitt ddcdb6d413
chore(protocol): do client hello instead of server hello (#8019) 2021-08-19 17:31:14 +02:00
Dmitry Gozman f06e7b91fb
fix(tracing): serialize resource writes against trace export (#8296)
Inlining TraceSnapshotter makes it easier to serialize writes and removes no-op glue.
We also stop writing the same resource twice.
2021-08-19 07:26:24 -07:00
Andrey Lushnikov d9206ebefc
chore: pretend world is win64 (#8306)
It looks like we have a very small share of users on 32-bit windows.
This is a tiny change that stops Playwright from using 32-bit windows
binaries.

References #8045
2021-08-19 06:09:04 -07:00
Dmitry Gozman ee9863387b
feat(html report): show video inline (#8293) 2021-08-18 14:30:55 -07:00
Pavel Feldman 6ef76e333e
feat(strict): add context-level selector strictness (#8290) 2021-08-18 12:51:45 -07:00
Dmitry Gozman 8d81890e47
feat(codegen): support --save-trace option (#8267) 2021-08-18 07:27:45 -07:00
Pavel Feldman 710cec80a0
feat(test-runner): render step titles (#8270) 2021-08-17 16:41:36 -07:00
Pavel Feldman 97ba4f22f3
feat(test-runner): report nested steps (#8266) 2021-08-17 13:57:26 -07:00
Joel Einbinder de4464cb9a
fix(expect): highlight diff in toHaveText (#8262) 2021-08-17 16:56:21 -04:00
Dmitry Gozman 99993e173b
fix(snapshots): account for malformed headers (#8241)
When browser receives multiple header values for the same header name,
we present them as LF-separated value. This is not considered valid in
Node, so we should split by LF when serving a snapshot.

There more invalid characters in headers, so just in case we try/catch it.
2021-08-16 17:40:46 -07:00
Dmitry Gozman 246495f705
fix(tracing): improve captureStackTrace (#8236)
- Simplify by only considering client/ vs non-client/
- Fix stack traces when calling from other playwright code, e.g. from the cli
- Account for re-entrant calls that happen when
  instrumenting context creation/desctruction
- Add tests
- Fix StackTraceView on Windows
2021-08-16 17:06:38 -07:00
Dmitry Gozman 2aff06ec73
fix(test runner): make sure tracing is not running on non-retries (#8232)
When sharing a context between tests and using `'on-first-retry'` we
could end up with tracing still running in non-retried tests. That's
extra overhead without a reason.
2021-08-16 16:46:35 -07:00
Yury Semikhatsky 8cc4140933
fix: throw if intercepted response fails (#8195) 2021-08-16 16:40:47 -07:00
Bùi Gia Thịnh 1e8e547023
fix(devices): typo in device name Desktop Edge (#8233) 2021-08-16 22:38:26 +02:00
Ross Wollman 101662765c
api(cdp): newCDPSession accepts frames, too (#8157)
Without this, Playwright's CDP feature leaves unreachable
targets (namely OOPIFs).

This change allows for more advanced experimentation in user-land
without relying on out-of-band CDP connections and clients.

Now you can, for example, call `DOM.getDocument` on the
page OR main frame, observe there is an iframe node with
no `contentDocument` (i.e. OOPIF), make note of the referenced
`frameId`, and then iterate of page.frames() calling `Target.getInfo`
on each to link the Playwright Frame with the CDP `frameId` and
then recurse.

Relates #8113
2021-08-16 12:49:10 -07:00
Yury Semikhatsky 90385a7941
browser(firefox): failure response interception (#8194) 2021-08-16 09:36:28 -07:00
Yury Semikhatsky 39f663834f
test: intercepted response status line (#8189) 2021-08-13 16:28:42 -07:00
Dmitry Gozman 5327b8ca6d
feat(firefox): bump firefox to 1283, firefox-beta to 1277 (#8184) 2021-08-13 08:29:25 -07:00
Dmitry Gozman d32d50a906 fix(test runner): make sure we always teardown all fixtures (#8158)
Even if one of the fixtures throws, we should teardown all of them
so that we can run afterAll hooks.
2021-08-12 09:08:56 -07:00
Pavel Feldman f3b35b2bbd
fix(trace-viewer): restore action error icon (#8163)
Fixes #8051
2021-08-12 08:41:34 -07:00
Andrey Lushnikov 819287cc0e
fix: do not show the "accept incoming network connections" dialog (#8162)
The dialog is provoked by a [MediaRouter chromium component](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/mac_build_instructions.md#avoiding-the-incoming-network-connections-dialog)

In general, this is a very narrow functionality that should be safe
to disable to not affect majority of users on MacOS.

Fixes #7937
2021-08-12 08:33:02 -07:00
Pavel Feldman d2d71c4cdb
fix(reporter): group fixture initialization under before hooks (#8072) 2021-08-12 07:58:00 -07:00
Dmitry Gozman 44cdda43fe
feat(test runner): show stdio for failures in terminal reporters (#8150) 2021-08-11 16:44:19 -07:00
Yury Semikhatsky 59df541de5
fix: fulfill intercepted response with empty body (#8151) 2021-08-11 14:47:05 -07:00
Yury Semikhatsky 41770bf444
feat(webkit): response interception after redirects (#8017) 2021-08-11 11:14:50 -07:00
Pavel Feldman 1d4e2fe98c
feat(nth): make nth and visible selectors public (#8142) 2021-08-11 11:06:09 -07:00
Andrey Lushnikov aaf565c9ce
chore: update webkit version to 15.0 (#8143) 2021-08-11 10:48:21 -07:00
Andrey Lushnikov 7c017a6c1f
feat(firefox): roll firefox to M91 (#8137) 2021-08-11 10:13:09 -07:00
Yury Semikhatsky 252238f25c
feat(webkit): bump to 1530 (#7991) 2021-08-11 08:56:35 -07:00
Dmitry Gozman a5e0965087
feat(test runner): implement test.describe.serial (#8132) 2021-08-10 21:26:45 -07:00
Joel Einbinder 64da74fba8
feat(test-runner): allow non-ascii characters in the output dir path (#8093) 2021-08-10 21:24:35 -07:00
Pavel Feldman 21b510c6e7
chore(tracing): remove resource id (#8131) 2021-08-10 21:23:31 -07:00
Dmitry Gozman 708fa43f03
fix(tracing): clear recording state at the end of tracing.stop (#8120)
This ensures that any tracing operations can access the recording state.
When stopping, we await for all operations to finish and then clear the state.
To avoid reentrancy, a new flag `isStopping` is introduced.
2021-08-10 17:36:06 -07:00
Andrey Lushnikov 4975f4179e
feat: make React and Vue selectors experimental (#8106) 2021-08-10 17:21:16 -07:00
Andrey Lushnikov 792986c92d
feat: support props matching in react and vue selectors (#8104) 2021-08-10 17:10:14 -07:00
Pavel Feldman b800c1d35c
feat(reporter): render attachments in html report (#8125) 2021-08-10 17:06:25 -07:00
Pavel Feldman 76150f1bcb
chore(tracing): remove proactive snapshotSizes caching (#8126) 2021-08-10 17:06:14 -07:00
Dmitry Gozman c9c1ea6546
fix(test runner): disallow use(workerFixture) in describes (#8119)
Using a worker fixture forces a new worker. This might be unexpected
when part of the test file runs in one worker, and another runs
in another worker. Top-level use of worker fixtures is still fine.
2021-08-10 16:32:32 -07:00
Pavel Feldman a9e1916672
chore(tracing): do not produce cached resources maps (#8110) 2021-08-10 12:08:19 -07:00
Dmitry Gozman 9d6c7cdf20
fix(test runner): ensure we run after hooks after failures (#8102) 2021-08-10 10:54:05 -07:00
Dmitry Gozman 2744cd6c9a
feat(test runner): remove createContext fixture (#8109)
We can now use `browser.newContext()` or `browser.newPage()` instead.
2021-08-10 09:26:36 -07:00
Dmitry Gozman 3bf3318350
fix(test runner): make sure options, trace and screenshot apply to all contexts (#8083)
- Uses some auto fixtures to set default options and instrumentation on BrowserType.
- Moves screenshot, trace and video to worker-scoped fixtures.
- Throws in page/context when used from beforeAll/afterAll.
- Plumbs around BrowserType to be accessible from Browser and BrowserContext.
2021-08-09 18:09:11 -07:00
Pavel Feldman 8eac1e96d3
chore: add extensions to the trace resources (#8105) 2021-08-09 16:36:24 -07:00
Dmitry Gozman e638c4597f
fix(test runner): do not swallow afterAll failure (#8099) 2021-08-09 14:21:53 -07:00
Andrey Lushnikov 29f7dfa3ee
feat(chromium): roll Chromium to M94 (#8047) 2021-08-09 13:57:17 -07:00
Dmitry Gozman 87548f94c1
feat(test runner): support test fixtures in beforeAll/afterAll (#8082)
Each hook gets its own test scope. This is not too useful for
object fixtures like `page` (although one can use a page in
`beforeAll` to save storage state), but much more useful for option
fixtures like `viewport`.
2021-08-09 13:26:33 -07:00
Dmitry Gozman 41949e559e
Revert "feat(test runner): file scope fixtures (#7969)" (#8081)
This reverts commit 1bbf86d060,
leaving small improvements around.
2021-08-09 12:33:16 -07:00
Andrey Lushnikov f455b6edc0
feat: introduce vue selector engine (#8070)
This patch adds support for the `vue` selector engine that allows
selecting DOM elements based on the component name.

> **NOTE**: `vue` engine supports Vue2 and Vue2.

References #7189
2021-08-09 01:34:52 -07:00
Pavel Feldman 290f601dae
feat(expect): introduce explicit default async expect timeout (#8071) 2021-08-07 22:08:56 -07:00
Andrey Lushnikov 755cf60496
feat(test): write missing snapshots to test-results (#7879)
By default, CI's are set up to upload `//test-results` folder to
artifacts storage. Storing missing snapshots in the `//test-results`
folder too will simplify collecting new baselines from the CI.
2021-08-07 16:52:11 -07:00
Andrey Lushnikov f3ba2b54ff
feat: introduce react selectors (#8069)
This patch adds support for the `react` selector engine that allows
selecting DOM elements based on the component name.

> **NOTE**: in case of multi-root components (React.Fragment), `react`
engine will select all root DOM elements.

> **NOTE**: `react` engine supports react v15+.

References #7189
2021-08-07 16:51:39 -07:00
Pavel Feldman 40fb9d85e0
feat(test-result): render image diff (#8061) 2021-08-07 15:47:03 -07:00
Andrey Lushnikov 51fb19561c
devops: support npx playwright install --with-deps command (#7194)
The common pattern today is to have two commands to configure CI:

```sh
npx playwright install-deps chromium
npx playwright install chromium
```

With this patch, this becomes:

```sh
npx playwright install --with-deps chromium
```

Note: `--with-deps` might call `sudo`.
2021-08-07 03:53:33 -07:00
Pavel Feldman b1dc84c953
chore: add debug logging to localize steps error (#8062) 2021-08-06 20:37:57 -07:00
Pavel Feldman 3424f59e67
chore(expect): polish matcher names, remote arguable ones (#8060) 2021-08-06 16:58:42 -07:00
Dmitry Gozman 5f297b6894
feat(junit reporter): add attachments to stdout (#8059)
`JUnitReporter` follows the common format for attachments in JUnit reports,
recognized by GitLab and Jenkins among others.
2021-08-06 15:47:54 -07:00
Pavel Feldman 79e8592146
docs: refresh getting started docs (#8054) 2021-08-06 14:02:41 -07:00
Pavel Feldman 2e63c59157
feat(trace-viewer): show remote object previews in console (#8024) 2021-08-06 11:37:36 -07:00
Max Schmitt 7ee92f3fc8
fix(trace-viewer): when clicking on a step no snapshot was shown (#8038) 2021-08-06 16:13:05 +02:00
Dmitry Gozman 73b7230931
fix(trace viewer): render snapshots with correct viewport size (#8020) 2021-08-05 16:04:09 -07:00
Dmitry Gozman d846c05619
fix(test runner): make obtainWorker() resolve with null when stopping (#8018)
This ensures that we properly exit from `Dispatcher.run()`, print
epilogue and set the right exit code.
2021-08-05 15:00:00 -07:00
Dmitry Gozman 7da669bcc4
fix(trace viewer): split view resizer should work (#8021) 2021-08-05 14:59:45 -07:00
Pavel Feldman a8d404cd29
feat(test-runner): basic html reporter (#7994) 2021-08-05 13:36:47 -07:00
Max Schmitt 98f9f050a1
fix(isVisible): do not throw when element is not connected (#8012) 2021-08-05 21:10:33 +02:00
Pavel Feldman 19b673e467
fix(webpack): use production mode in production builds (#8007) 2021-08-05 12:07:43 -07:00
Pavel Feldman 0a97e87817
feat(expect): log-scale expect pollers (#8010) 2021-08-05 10:55:37 -07:00
Yury Semikhatsky 28fb3c776a
feat: response interception after redirects in chromium (#7910) 2021-08-05 08:49:02 -07:00
Max Schmitt 62a4d82b7b
chore: cleanup locators implementation (#7990) 2021-08-05 17:13:46 +02:00
Dmitry Gozman 9ab60f66bf
feat(tracing): allow calling tracing.start multiple times (#7992)
Subsequent invocations reset the trace. This removes the `tracing._reset` method.

Also fixed a bug where BASE element was not reset properly.
Also fixed a bug where tracing would affect the result of protocol call
by setting `callMetadata.error` property.
2021-08-04 21:11:35 -07:00
Dmitry Gozman 1bbf86d060
feat(test runner): file scope fixtures (#7969)
These are reset after running tests from a single file.
2021-08-04 21:11:02 -07:00
Max Schmitt 3e491114f2
test: fix some failing locators tests (#7989) 2021-08-04 23:36:27 +02:00
Max Schmitt 869f8d541b
chore: PlaywrightClient/Server enhancements (#7980)
- ensure timeout results in a meaningful message
- add onDisconnect handler
2021-08-04 19:45:33 +02:00
Max Schmitt 4e8e75beb1
chore: ensure assertions result in a message (#7981) 2021-08-04 08:26:07 -07:00
Dmitry Gozman ea4f42b7ed
feat(report): add video to attachments (#7976) 2021-08-03 17:07:57 -07:00
Dmitry Gozman 3e05d8e9fa
feat(tracing): introduce _reset() and _export() (#7974)
`tracing._export({ path })` exports current tracing state into a file
and does not require tracing to be stopped.

`tracing._reset()` resets current tracing state, but keeps resources
around so they can be referenced in the future snapshots. Does not stop.

The usage pattern is:
```js
await tracing.start({ screenshots: true, snapshots: true });
// ...
await tracing._reset();
// Do stuff, it will all be in the export below.
await tracing._export({ path });
// ...
await tracing.stop();
```
2021-08-03 16:08:06 -07:00
Max Schmitt 385d489b35
feat(test-runner): re-enable web server (#7906)
Co-authored-by: Joel Einbinder <joel.einbinder@gmail.com>
2021-08-03 23:24:14 +02:00
Max Schmitt 2236d74f3f
chore: locator code style nits (#7972) 2021-08-03 13:32:39 -07:00
Dmitry Gozman c406b23387
feat(tracing): do not store scripts in trace (#7970)
We do not need them for snapshots.
2021-08-03 13:05:58 -07:00
Joel Einbinder 4fabe5e6e4
feat(drag): sourcePosition and targetPosition (#7803) 2021-08-03 13:12:34 -04:00
Joel Einbinder a2cbba9c1c
chore(typescript): update to 4.3 (#7809) 2021-08-03 12:21:07 -04:00
Fabian Mendez 731f9453c5
feat(inputValue): implement inputValue for select elements (#7951) 2021-08-03 08:22:40 -07:00
Pavel Feldman 3b34e57ee4
feat(test-runner): introduce test.step (#7956) 2021-08-02 22:11:37 -07:00
Pavel Feldman 5803035c1b
feat(test-runner): introduce steps (#7952) 2021-08-02 17:17:20 -07:00
Pavel Feldman af30d267b6
feat(test-runner): experiemental expect plumbing (#7926) 2021-07-30 16:07:02 -07:00
Dmitry Gozman 081b8683a3
feat(test runner): expect(locator) matchers to show a nice error on timeout (#7935) 2021-07-30 13:12:49 -07:00
Dmitry Gozman 5a3ebfc9f9
fix(test runner): dot reporter incorrectly splits by 80 (#7925) 2021-07-30 01:34:28 -07:00
Dmitry Gozman 2e387b3a3a
chore(test runner): reuse TestGroup instead of DispatcherEntry (#7924) 2021-07-29 21:41:06 -07:00
Pavel Feldman 4163cec93b
feat(test-runner): introduce actionTimeout and navigationTimeout (#7919) 2021-07-29 21:03:50 -07:00
Dmitry Gozman 34c0c342fa
fix(test runner): make test order stable when fixtures are changing (#7923)
We used to sort based on workerHash, and that changes depending on
the exact worker fixtures list. Now we replace workerHash with
an ordinal when constructing the TestGroup list to preserve the
natural order.
2021-07-29 18:27:47 -07:00
Dmitry Gozman a18b4fb49a
fix(test runner): workaround npm bug that sends multiple sigints (#7916)
When running through NPM, we can get multiple SIGINT signals
for a single Ctrl+C - the more npm layers you use, the more SIGINTs you get.

This is a known NPM bug present since at least NPM v6.
Workaround is to give NPM one second for the fake signals, and
only then remove out listener.
2021-07-29 16:01:22 -07:00
Dmitry Gozman 40901e8b9a
feat(test runner): test.skip(title, testFunction) syntax (#7922) 2021-07-29 14:33:37 -07:00
Pavel Feldman 2c095294c5
feat(locators): introduce allTextContents, allInnerTexts (#7920) 2021-07-29 14:09:35 -07:00
Dmitry Gozman dd0b089d13
feat(test runner): createContext fixture for multi-context scenarios (#7779) 2021-07-29 14:03:58 -07:00
Yury Semikhatsky 722f0606c4
feat(firefox): response interception (#7510) 2021-07-29 10:12:47 -07:00
Pavel Feldman 1807142eb7
feat(expect): even more matchers (#7902) 2021-07-29 07:33:19 -07:00
Jan Sepke 600d82b17c
fix(cli): fix typo in help text (#7903)
Co-authored-by: Max Schmitt <max@schmitt.mx>
2021-07-29 11:23:50 +02:00
Pavel Feldman 9e07029973
chore: relayout matchers (#7901) 2021-07-28 22:30:37 -07:00
Pavel Feldman 3187ffdebf
feat(expect): add more matchers (#7891) 2021-07-28 15:44:44 -07:00
Dmitry Gozman 3f0485486d
feat(test runner): show errors from interrupted tests when available (#7874)
This shows the exact operation that is timing out (like click) when
user hits Ctrl+C.
2021-07-28 15:43:37 -07:00