Commit graph

823 commits

Author SHA1 Message Date
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 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
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
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
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
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
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
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
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
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 76150f1bcb
chore(tracing): remove proactive snapshotSizes caching (#8126) 2021-08-10 17:06:14 -07:00
Pavel Feldman a9e1916672
chore(tracing): do not produce cached resources maps (#8110) 2021-08-10 12:08:19 -07:00
Pavel Feldman 8eac1e96d3
chore: add extensions to the trace resources (#8105) 2021-08-09 16:36:24 -07:00
Andrey Lushnikov 29f7dfa3ee
feat(chromium): roll Chromium to M94 (#8047) 2021-08-09 13:57:17 -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
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 2e63c59157
feat(trace-viewer): show remote object previews in console (#8024) 2021-08-06 11:37:36 -07:00
Dmitry Gozman 73b7230931
fix(trace viewer): render snapshots with correct viewport size (#8020) 2021-08-05 16:04:09 -07:00
Max Schmitt 98f9f050a1
fix(isVisible): do not throw when element is not connected (#8012) 2021-08-05 21:10:33 +02:00
Yury Semikhatsky 28fb3c776a
feat: response interception after redirects in chromium (#7910) 2021-08-05 08:49:02 -07: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 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
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
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 cc43f9339f
feat(locators): implement last,nth (#7870) 2021-07-27 15:58:18 -07:00
Pavel Feldman b9aad5eb86
chore: move locators to strict selectors (#7866) 2021-07-27 15:27:36 -07:00
Pavel Feldman 982f61d575
chore: BFS nodes, simplify querying (#7861) 2021-07-27 12:53:12 -07:00
Pavel Feldman 0a6ae11da1
feat(strict): introduce strict mode (#7851) 2021-07-26 22:00:23 -07:00
Pavel Feldman d370f65713
chore: rename $,$$ to readable names (#7848) 2021-07-26 15:46:51 -07:00