Pavel Feldman
a8d48a1a48
chore: remove hard-coded wrapApi names ( #7347 )
2021-06-28 13:27:38 -07:00
Pavel Feldman
5732307280
feat(inputValue): implement *.inputValue() ( #7285 )
2021-06-23 22:19:20 -07:00
Max Schmitt
103f8ddd06
Revert "chore: update eslint config ( #6840 )" partly ( #7268 )
...
This reverts commit ec7d37d92f .
2021-06-23 11:08:35 +02:00
Yury Semikhatsky
c0cd2d4579
feat: response interception ( #7122 )
2021-06-18 11:04:48 -07:00
Ross Wollman
219e5138be
feat(response): expose connection details in API ( #7150 )
2021-06-17 13:04:55 -07:00
Yury Semikhatsky
e5d0a535a8
fix: return valid browser from context.browser() when connect over CDP ( #7155 )
2021-06-15 16:06:38 -07:00
Peng-Yu Chen
5f6d4a7b73
feat(download): adding a new Download._cancel method ( #6236 )
2021-06-12 22:23:22 +02:00
Max Schmitt
064150f8dd
chore: use fs.promises API instead of promisify ( #6871 )
2021-06-03 18:55:33 +02:00
Max Schmitt
e91e49e533
feat(port-forwarding): add playwrightclient support ( #6786 )
2021-06-02 23:35:17 +02:00
Joel Einbinder
2951f4b065
chore(evaluate): remove private _evaluateInUtility methods ( #6815 )
2021-06-01 08:36:16 -07:00
Max Schmitt
3f43db5cc4
feat(browserServer): forward local ports ( #6375 )
2021-05-25 17:11:32 +02:00
Max Schmitt
ba29e99ace
feat: added reduced motion media query emulation ( #6646 )
2021-05-22 01:56:09 +02:00
Yury Semikhatsky
345f7da573
fix(codegen): move injected recorder scripts to utility world ( #6187 )
2021-05-18 09:40:24 -07:00
Vignesh Shanmugam
4b3e5e5c17
feat(network): expose network events via browser context ( #6370 )
...
- fix #6340
- Exposes all the network related events (request, response, requestfailed, requestfinished) through the browser context to allow for managing network activity even if the is any navigations through popups or to new tabs which could result in creation of multiple page objects.
2021-05-13 10:29:14 -07:00
Dmitry Gozman
b29b7df47e
fix(connect): handle disconnect in various situations ( #6276 )
...
There are a few ways for `connect()` to finish:
- `Browser.close()` from the client side.
- Browser on the server side did exit (e.g. crashed).
- Connection was dropped by either of the sides.
We reduce all the cases to the last one by dropping the
connection when client wants calls `Browser.close()` or
server-side browser exits.
In all these cases we should properly cleanup on the server side,
and ensure that all promises reject on the client side.
2021-05-06 09:34:06 -07:00
Pavel Feldman
1a859ebe68
chore(electron): fix node/browser race conditions, expose browser window asynchronously ( #6381 )
2021-05-02 22:45:06 -07:00
Gnome Bard
018f3146a8
fix(electron): deliver promised _nodeElectronHandle ( #6348 )
2021-04-30 18:46:27 -07:00
Pavel Feldman
434f474ce8
chore(evaluate): implement non-stalling evaluate ( #6354 )
2021-04-29 09:28:19 -07:00
Yury Semikhatsky
560bea5f8d
fix: do not close stream until all bytes have been read ( #6351 )
2021-04-28 14:54:51 -07:00
Pavel Feldman
be27f47309
feat(tracing): introduce context.tracing, allow exporting trace ( #6313 )
2021-04-24 20:39:48 -07:00
Pavel Feldman
a9219aa8b6
chore: start / stop context tracing ( #6309 )
2021-04-23 20:39:09 -07:00
Pavel Feldman
0ed328f6de
chore(tracing): include events in the trace ( #6285 )
2021-04-23 09:28:18 -07:00
Yury Semikhatsky
3a93c419f8
chore: remove stack from WaitForEventInfo ( #6259 )
2021-04-22 10:05:37 -07:00
Pavel Feldman
fe4fba4a16
chore: extract debugger model from inspector ( #6261 )
2021-04-21 20:46:45 -07:00
Pavel Feldman
85e2db2416
chore: push dispatcher guid into object, reuse it in trace ( #6250 )
2021-04-20 23:03:56 -07:00
Pavel Feldman
90913160c4
chore: render wait for on trace timeline ( #6222 )
2021-04-18 20:02:34 -07:00
Dmitry Gozman
fff1f3d45c
chore: simplify remote connection protocol ( #6164 )
...
This changes the root object from RemoteBrowser to Playwright,
similar to local driver connection. This way, any remote connection
gets a Playwright object.
This also starts reusing PlaywrightServer class, and introduces
`cli run-server` hidden command that runs ws server on the
specified port.
Previous structure:
```
RemoteBrowser
- browser (using ConnectedBrowser for remote-specific behavior)
- selectors (special instance for this remote connection)
```
New structure:
```
Playwright
- ...
- selectors (special instance for this remote connection)
- preLaunchedBrowser (using ConnectedBrowser for remote-specific behavior)
```
2021-04-12 11:14:54 -07:00
Yury Semikhatsky
f6606d505b
fix: finish all artifacts when browser exits ( #6151 )
2021-04-08 18:56:09 -07:00
Joel Einbinder
63d0d466e3
feat(cdp): replace wsEndpoint with protocol neutral endpointURL ( #6141 )
2021-04-08 14:55:28 -07:00
Pavel Feldman
d9546fd098
chore: read all traces from the folder ( #6134 )
2021-04-08 07:59:05 -07:00
Yury Semikhatsky
e9f0f6c894
fix: mark disposed dispatchers as such ( #6051 )
2021-04-05 11:50:28 -07:00
Yury Semikhatsky
561cb23e8d
fix: dispatch popup event on the client end ( #6044 )
2021-04-02 11:15:07 -07:00
Pavel Feldman
a7630c91d5
api: remove Chromium* classes ( #6040 )
2021-04-01 18:47:14 -07:00
Dmitry Gozman
9d9599c6a6
api(video): implement video.saveAs and video.delete ( #6005 )
...
These methods are safe to call while the page is still open, or when it is
already closed. Works in remotely connected browser as well.
Also makes video.path() to throw for remotely connected browser.
Under the hood migrated Download and Video to use the common Artifact object.
2021-03-31 10:38:05 -07:00
Yury Semikhatsky
67c29e8155
chore: add missing await to floating promises ( #5813 )
2021-03-22 09:59:39 -07:00
Pavel Feldman
5ae731a3fb
chore(evaluate): respect signals when evaluating on handle ( #5847 )
2021-03-17 12:03:21 -07:00
Pavel Feldman
7011e5737a
chore(evaluate): explicitly annotate methods that wait for signals ( #5859 )
2021-03-17 10:47:07 -07:00
Joel Einbinder
defd1a33be
fix(chromium): fix crash if connecting to a browser with a serviceworker ( #5803 )
2021-03-15 09:50:17 -07:00
Gilberto Saraiva
7fcb89269e
fix(firefox): ensure a exception catch when async send call to a dead object; ( #5805 )
2021-03-11 16:04:08 -08:00
Pavel Feldman
b253ee80c0
chore(snapshot): brush up, start adding tests ( #5646 )
2021-03-01 12:20:04 -08:00
Pavel Feldman
bb2b29631a
feat(inspector): pause on page/context close ( #5319 )
2021-02-19 09:33:24 -08:00
Pavel Feldman
15833ee039
feat(inspector): render params and durations in log ( #5489 )
2021-02-17 22:10:13 -08:00
Naresh
cc749fe679
fix(android): added recent apps button ( #5331 )
2021-02-16 19:37:46 -08:00
Dmitry Gozman
1f3449c7da
fix(download): do not stall BrowserContext.close waiting for downloads ( #5424 )
...
We might not ever get the "download finished" event when closing the context:
- in Chromium, for any ongoing download;
- in all browsers, for failed downloads.
This should not prevent closing the context. Instead of waiting for the
download and then deleting it, we force delete it immediately and reject
any promises waiting for the download completion.
2021-02-14 16:46:26 -08:00
Pavel Feldman
8b9a2afd3d
feat(inspector): render errors ( #5459 )
2021-02-13 22:13:51 -08:00
Pavel Feldman
ae2ffb3fb9
feat(inspector): instrument wait for event ( #5457 )
2021-02-13 20:31:06 -08:00
Pavel Feldman
aef052aecc
chore: pause on input in pwdebug mode ( #5427 )
2021-02-12 10:11:30 -08:00
Pavel Feldman
449adfd3ae
chore(recorder): move recording output into the gui app ( #5425 )
2021-02-11 17:46:54 -08:00
Dmitry Gozman
99f8e1cf63
docs: document Android and friends ( #5415 )
...
These are experimental, currently available through `_android`.
2021-02-11 10:31:57 -08:00
Joel Einbinder
d8f637c239
chore(typescript): enable esModuleInterop ( #5409 )
2021-02-11 06:36:15 -08:00
Pavel Feldman
6576bd8b31
chore: move before/after action instrumentation into dispatcher ( #5416 )
2021-02-10 21:55:46 -08:00
Pavel Feldman
6e6e36b565
chore: move progress log into the metadata ( #5411 )
2021-02-10 21:50:29 -08:00
Joel Einbinder
dca70abbd3
feat(chromium): connect to a browser over cdp ( #5207 )
2021-02-10 14:00:02 -08:00
Pavel Feldman
2e01fbdbec
chore: introduce instrumentation api ( #5385 )
2021-02-09 14:44:48 -08:00
Pavel Feldman
0652f3251f
chore: introduce sdk object base class ( #5370 )
2021-02-09 09:00:00 -08:00
Pavel Feldman
34adc28ed3
feat(pause): make page.pause public ( #5288 )
2021-02-03 16:01:51 -08:00
Pavel Feldman
8a8d8ea370
fix: update terminal size dynamically ( #5250 )
2021-02-02 14:25:51 -08:00
Pavel Feldman
1db5ef24a8
docs: document electron api ( #5229 )
2021-02-01 11:43:26 -08:00
Pavel Feldman
975519150e
chore: centralize playwright creation, bind context listeners to instance ( #5217 )
2021-01-29 16:00:56 -08:00
Pavel Feldman
01d6f83597
chore: introduce debug toolbar ( #5145 )
2021-01-25 14:49:26 -08:00
Pavel Feldman
464fdc1800
chore: make recorder a supplement ( #5131 )
2021-01-24 19:21:19 -08:00
Pavel Feldman
be9bef513e
chore: move recorder to server side ( #5128 )
2021-01-24 08:44:11 -08:00
Joel Einbinder
3e4e511d84
feat(pause): page._pause to wait for user to click resume ( #5050 )
2021-01-22 18:47:02 -08:00
Dmitry Gozman
17e953c2d8
chore: make generate_types not depend on the source ( #5040 )
...
The only dependency is a list of devices that we
can turn into a js file.
2021-01-17 12:09:20 -08:00
Dmitry Gozman
e3ebba5573
chore: cleanup code that is not used by cli anymore ( #5005 )
2021-01-13 17:02:53 -08:00
Joel Einbinder
decf373c81
fix(electron): return a ChromiumBrowserContext for electron ( #4913 )
2021-01-13 12:08:14 -08:00
Dmitry Gozman
5a2cfdbd47
api: add isChecked method ( #4953 )
...
This adds `{Page,Frame}.isChecked(selector)` and `ElementHandle.isChecked()` methods.
Useful to do assertions in tests:
```js
await page.click('text="Add TODO"');
expect(await page.isChecked('.item-done')).toBe(false);
```
2021-01-08 17:36:17 -08:00
Dmitry Gozman
3f904056ee
api: add isVisible, isHidden, isEnabled, isDisabled and isEditable ( #4915 )
...
These methods are useful for verification in tests, e.g.
```js
expect(await page.isEnabled(':text("Remove All")')).toBe(false);
await page.click(':text("Add Item")');
expect(await page.isVisible('.item:text("new item")')).toBe(true);
expect(await page.isEnabled(':text("Remove All")')).toBe(true);
```
2021-01-08 12:27:54 -08:00
Dmitry Gozman
c4df522555
fix(handles): always create proper handle type ( #4879 )
2021-01-04 13:54:55 -08:00
Dmitry Gozman
225e65e076
feat(cli): share console api between cli and debug mode ( #4807 )
2020-12-23 14:15:16 -08:00
Dmitry Gozman
cc32217e84
chore: fix check-deps ( #4801 )
2020-12-22 11:01:25 -08:00
Pavel Feldman
774eb53980
fix(adb): force page scale factor update on connection ( #4755 )
2020-12-17 18:28:49 -08:00
Max Schmitt
2c409b040e
fix(android): leaking adb socket connections ( #4730 )
2020-12-15 20:15:25 -08:00
Pavel Feldman
e02c54485c
chore(adb): make driver smaller ( #4713 )
2020-12-14 18:39:14 -08:00
Pavel Feldman
4799e8f20b
feat(adb): add screenshot ( #4701 )
2020-12-13 23:20:13 -08:00
Pavel Feldman
f89dcc7ba7
feat(adb): implement push ( #4697 )
2020-12-13 22:00:37 -08:00
Pavel Feldman
ad5309ca6b
feat(adb): make shell return binary ( #4695 )
2020-12-13 08:33:35 -08:00
Pavel Feldman
7c89ec051a
feat(adb): expose a11y tree ( #4694 )
2020-12-13 08:14:32 -08:00
Max Schmitt
1b7fb7d56a
feat(android): expose installAPK(path) and ADB socket ( #4689 )
2020-12-12 09:36:38 -08:00
Pavel Feldman
6cc695d92a
test(adb): fix the adb tests ( #4691 )
2020-12-12 01:18:32 -08:00
Pavel Feldman
8fc49c98fa
feat(adb): support webviews ( #4657 )
2020-12-09 17:15:24 -08:00
Pavel Feldman
aacd8e633c
chore: expose adb devices and actions ( #4647 )
2020-12-09 15:06:57 -08:00
Dmitry Gozman
3121de403b
test: remove tests for SelectorEngine.create ( #4580 )
...
We are not going to keep this functionality on arbitrary engines.
2020-12-03 14:10:26 -08:00
Dmitry Gozman
09f9a35198
fix(protocol): rename websocket error event to socketerror ( #4495 )
...
This is to avoid special handling of error events in node.
2020-11-19 12:09:42 -08:00
Yury Semikhatsky
dfe3552b59
feat(route): support URL overrides in continue ( #4438 )
2020-11-16 09:59:00 -08:00
Pavel Feldman
d20e56e197
feat(state): allow getting / setting context state ( #4412 )
2020-11-13 14:24:53 -08:00
Dmitry Gozman
e69315f711
fix(websocket): remove "skip frames" logic ( #4435 )
...
This optimization turned out to be racy, so better remove it for now.
2020-11-13 14:03:21 -08:00
Pavel Feldman
28f6547d67
chore: add adb-based connectivity ( #4375 )
2020-11-06 16:31:11 -08:00
Dmitry Gozman
c83ac444b4
api(websocket): do not send websocket frames without a listener ( #4361 )
...
Once user adds 'websocket' listener, we start sending the frames
for all websockets on the page.
2020-11-06 12:30:16 -08:00
Pavel Feldman
d117d0bb93
feat(scopes): make page a scope ( #4300 )
2020-11-02 13:06:54 -08:00
Pavel Feldman
be8428475d
feat(websocket): implement Web Sockets for Chromium & WebKit ( #4234 )
2020-10-26 22:20:43 -07:00
Pavel Feldman
72320275ab
fix(headers): report raw request headers on Chromium ( #4207 )
2020-10-22 08:49:16 -07:00
Pavel Feldman
8a42cdad30
feat(timing): introduce resource timing ( #4204 )
2020-10-21 23:25:57 -07:00
Pavel Feldman
5d997ed28b
fix(video): make video path available in persistent profiles ( #4182 )
2020-10-19 14:35:18 -07:00
Joel Einbinder
92dda698f8
feat: tap ( #4097 )
2020-10-19 10:07:33 -07:00
Pavel Feldman
5a7685665a
api(video): restore the missing video path accessor ( #4132 )
2020-10-13 22:15:51 -07:00
Dmitry Gozman
5e42029fce
api: allow exposeBinding to pass handles ( #4030 )
...
This adds an option `{ handle: true }` to pass a single handle instead of arbitrary json values.
2020-10-01 22:47:31 -07:00
Dmitry Gozman
f885d07cb9
fix(close): fix a race during context.close and page.close ( #4018 )
...
There is a race between "close" event coming from the server and
"close" command issued from the client.
This is similar to calling close after disconnect, so added tests.
2020-09-30 21:17:30 -07:00
Dmitry Gozman
df777344a3
api(video): simplify video api ( #3924 )
...
- This leaves just `recordVideos` and `videoSize` options on the context.
- Videos are saved to `artifactsPath`. We also save their ids to trace.
- `context.close()` waits for the processed videos.
2020-09-18 17:36:43 -07:00
Dmitry Gozman
01a4060665
chore: move action instrumentation per-context ( #3908 )
...
This allows tracing to expose plugin-like api.
This also remove Progress -> ActionMetadata dependency, leaving
Progress a low-level utility.
2020-09-17 09:32:54 -07:00