Commit graph

218 commits

Author SHA1 Message Date
Andrey Lushnikov c5ce263de7
fix: make sure page.goto navigates away from pages with beforeunload (#8770)
As of today, we can't navigate away from a page with beforeunload unless
we have an explicit `beforeunload` handler.

This patch updates our dialog auto-closing logic so that it auto-accepts
all beforeunload dialogs.

Fixes #8144
2021-09-09 13:19:50 -07:00
Yury Semikhatsky 5550f58284
feat(fetch): fetch with request parameter (#8793) 2021-09-08 16:31:58 -07:00
Yury Semikhatsky b11b274b0d
feat(fetch): fulfill without passing fetch response body client<->server (#8789) 2021-09-08 14:59:12 -07:00
Yury Semikhatsky b4ca77be23
feat(fetch): get body lazily (#8784) 2021-09-08 13:40:07 -07:00
Yury Semikhatsky 77b3b0965a
feat(fetch): timeout option and default timeout (#8762) 2021-09-08 10:01:40 -07:00
Max Schmitt 25b5927a4d
docs: sizes enhancements (#8771) 2021-09-08 14:09:11 +02:00
Dmitry Gozman b30772c67e
fix(tracing): collect apiName for mouse/keyboard/touchscreen (#8755) 2021-09-07 13:48:30 -07:00
Joel Einbinder e914f6bbc7
feat(network): remove Headers class and add headersArray method (#8749) 2021-09-07 10:27:53 -07:00
Max Schmitt 4f4bc72828
chore: add more tests for Request.sizes() (#8686) 2021-09-07 19:19:12 +02:00
Kai Hao a1f26976b0
fix(locators): not waiting until handle is disposed (#8735) 2021-09-07 11:16:43 +02:00
Yury Semikhatsky e5e461c0de
fix: use logger from config if specified (#8697) 2021-09-03 14:21:25 -07:00
Dmitry Gozman e2b092c1a0
feat(html reporter): show log for pw:api and expect steps (#8692) 2021-09-03 13:08:17 -07:00
Max Schmitt e7d4d61442
feat: add forced-colors media query emulation (#6903) 2021-09-03 21:48:06 +02:00
Pavel Feldman 0d5b41ce7b
feat(headers): add Headers.headers that would mimic the behavior of the deprecated getters (#8665) 2021-09-02 20:48:23 -07:00
Pavel Feldman 94170dacbd
chore: rename rawHeaders to allHeaders (#8659) 2021-09-02 11:46:52 -07:00
Pavel Feldman 54bda2c8dd
fix(size): fix some of the request.size() problems (#8645) 2021-09-02 10:39:57 -07:00
Pavel Feldman 42e44f888b
feat(rawheaders): introduce initial plumbing (#8638) 2021-09-01 18:28:20 -07:00
Dmitry Gozman b8f8ca7493
feat(tracing): tracing.{start,stop}Chunk instead of tracing._export (#8521) 2021-08-31 17:03:31 -07:00
Dmitry Gozman bee8ed117b
feat(html reporter): preview source code, steps and step errors (#8598) 2021-08-31 16:34:52 -07:00
Pavel Feldman 0fd5078b2b
chore: simplify client-side browserType.connect routine (#8596) 2021-08-31 15:56:55 -07:00
Pavel Feldman 1c169289b2
chore: move async utils into a separate file (#8595) 2021-08-31 14:44:08 -07:00
Pavel Feldman 246ac6aea6
chore: implement browserType.connect on the driver side (#8566) 2021-08-31 12:51:13 -07:00
Pavel Feldman a205ee27cb
fix(network): extra info can arrive before will send request (#8569) 2021-08-30 20:43:40 -07:00
Pavel Feldman e47bacdecb
fix(cookies): read response headers off extra info event, if any (#8526) 2021-08-30 09:58:44 -07:00
Pavel Feldman e574f4b7fd
feat(api): introduce setChecked convenience method (#8525) 2021-08-29 20:00:40 -07:00
Max Schmitt f3dde0650f
feat(network): expose bodySize, transferSize, and headerSize (#8234) 2021-08-27 22:53:57 +02: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
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
Joel Einbinder fc991fe897
chore(typescript): turn on noImplicitOverride (#7810) 2021-08-25 10:11:18 -04: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
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
Ross Wollman 25a4c7b3df
feat(launchServer): accept wsPath option (#8353) 2021-08-22 09:04:47 -07:00
Max Schmitt c4eb2d4b1e
chore: move sdkLanguage over to the protocol init call (#8329) 2021-08-20 21:32:21 +02: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
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 ddcdb6d413
chore(protocol): do client hello instead of server hello (#8019) 2021-08-19 17:31:14 +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 59df541de5
fix: fulfill intercepted response with empty body (#8151) 2021-08-11 14:47:05 -07:00
Pavel Feldman 1d4e2fe98c
feat(nth): make nth and visible selectors public (#8142) 2021-08-11 11:06:09 -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
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 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 2236d74f3f
chore: locator code style nits (#7972) 2021-08-03 13:32:39 -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