Dmitry Gozman
355a58e616
feat(storage): accept path in save/load storage apis ( #4714 )
...
Also make Firefox accept `expires: -1` cookies.
2020-12-14 16:03:52 -08:00
Yury Semikhatsky
0b8f34e726
docs: rename aggregate parameter objects to params ( #4715 )
2020-12-14 15:27:02 -08:00
Dmitry Gozman
ab63063c03
fix(tracing): store relative video path in the trace ( #4710 )
2020-12-14 13:31:55 -08:00
Pavel Feldman
4799e8f20b
feat(adb): add screenshot ( #4701 )
2020-12-13 23:20:13 -08:00
Pavel Feldman
1596b53da2
test(adb): fix browser tests ( #4700 )
2020-12-13 22:33:00 -08:00
Pavel Feldman
f89dcc7ba7
feat(adb): implement push ( #4697 )
2020-12-13 22:00:37 -08:00
Pavel Feldman
844b2c8f93
chore(adb): lint the driver ( #4696 )
2020-12-13 09:35:28 -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
aa1b546bd0
chore(android): respect timeout, add build script ( #4690 )
2020-12-11 23:35:25 -08:00
Pavel Feldman
f20518f252
fix(har): do not complain about a lot of listeners ( #4675 )
2020-12-11 23:15:36 -08:00
Andrey Lushnikov
765b07781c
feat: start downloading arm64 Chromium builds ( #4681 )
2020-12-10 21:09:03 -08:00
Pavel Feldman
616df7d2f4
fix(adb): minor fixes ( #4678 )
2020-12-10 16:37:18 -08:00
Dmitry Gozman
495085cbb2
fix(chromium): make interception work with dedicated workers ( #4658 )
2020-12-10 15:04:57 -08:00
Dmitry Gozman
b9c959768c
feat(selectors): optimize old->new conversion for css ( #4672 )
2020-12-10 15:03:02 -08:00
Dmitry Gozman
12dc04a304
feat(selectors): optimize old->new selectors conversion for text ( #4671 )
2020-12-10 13:53:19 -08:00
Dmitry Gozman
c8e9b0542b
feat(selectors): disable proximity selectors ( #4659 )
...
These are not ready for prime time yet.
2020-12-10 10:04:10 -08:00
Pavel Feldman
8fc49c98fa
feat(adb): support webviews ( #4657 )
2020-12-09 17:15:24 -08:00
Dmitry Gozman
b67e022111
feat(selectors): update new text selector ( #4654 )
...
We now default to `text` that does substring case-insensitive match
with normalized whitespace. `text-is` matches the whole string.
`matches-text` is renamed to `text-matches`.
2020-12-09 16:05:51 -08:00
Pavel Feldman
aacd8e633c
chore: expose adb devices and actions ( #4647 )
2020-12-09 15:06:57 -08:00
Dmitry Gozman
ab44d682ca
feat(selectors): remove index for now, add documentation ( #4640 )
2020-12-09 13:08:37 -08:00
Andrey Lushnikov
1d90d7a925
feat: fix browser installation on mac 11.0-arm64 ( #4652 )
2020-12-09 09:54:37 -08:00
Andrey Lushnikov
bc0af57ad3
feat: support download of native WebKit build for Apple M1 ( #4648 )
2020-12-09 09:04:32 -08:00
Dmitry Gozman
1060fce005
feat(selectors): explicit list of custom functions ( #4629 )
...
When parsing CSS, we assume everything is a valid CSS function,
unless it is in the list of custom functions. This way we'll parse
future CSS functions automatically.
2020-12-08 09:38:43 -08:00
Dmitry Gozman
be16ce4bd2
feat(errors): append recent browser logs when browser disconnects ( #4625 )
2020-12-08 09:35:28 -08:00
Joel Einbinder
ea833daa89
chore: fix internal binding ( #4598 )
2020-12-08 08:38:29 -08:00
Dmitry Gozman
1e754a4d80
feat(selectors): proximity selectors ( #4614 )
...
This includes 'left-of', 'right-of', 'above', 'below', 'near' and 'within'.
2020-12-07 16:07:47 -08:00
Dmitry Gozman
c36f5fa33a
feat(chromium): roll to 833159 ( #4626 )
2020-12-07 15:55:22 -08:00
Dmitry Gozman
18b565a969
feat(selectors): correctly work in large DOM ( #4628 )
...
This adds a test, fixes a bunch of call stack issues and
improves performance in some places.
2020-12-07 15:51:44 -08:00
Dmitry Gozman
1e0ab79f9a
feat(selectors): add visible and index engines ( #4595 )
2020-12-06 15:03:36 -08:00
Dmitry Gozman
8218a71a9b
feat(selectors): add more tests for css selectors ( #4596 )
2020-12-04 16:12:59 -08:00
Dmitry Gozman
49a3f943b6
feat(selectors): switch to the new engine ( #4589 )
...
We leave old implementation under the boolean flag,
just in case we need a quick revert.
2020-12-04 06:51:18 -08:00
Pavel Feldman
2452d07ff7
docs: generate method signatures in docs ( #4590 )
2020-12-03 22:28:11 -08:00
Dmitry Gozman
016925cd16
feat(selectors): implement builtin selectors in new evaluator ( #4579 )
2020-12-03 14:10:40 -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
Pavel Feldman
7e30669eb0
fix(binding): catch binding resolution against the closed page ( #4583 )
2020-12-03 10:51:59 -08:00
Dmitry Gozman
3d6194e8a1
feat(selectors): introduce css evaluator ( #4573 )
...
Not used for production yet.
2020-12-02 14:46:19 -08:00
Dmitry Gozman
52ae218bfc
fix(fill): allow filling more input types ( #4563 )
...
This includes invalid types that are no recognized by the browser.
2020-12-02 14:43:41 -08:00
Joel Einbinder
3624e3e315
chore: add internal method for utility context bindings ( #4566 )
...
* internal binding extracted from dnd patch
* refactor it into the page
* dgozman comments 1
2020-12-02 13:43:16 -08:00
Dmitry Gozman
a45532fd82
feat(selectors): update css parser ( #4565 )
...
This change requires string arguments to be quoted,
for example `:text("foo")` works but `:text(foo)` does not.
2020-12-02 08:16:02 -08:00
Dmitry Gozman
e98aceb981
feat(selectors): introduce css parser ( #4522 )
...
It is not used for anything just yet.
2020-11-30 16:31:40 -08:00
Dmitry Gozman
84dc441a9e
feat(trace): record traces when PW_TRACE_DIR is set ( #4545 )
...
PW_TRACE_DIR points to a directory that Playwright can
put trace files and resources into.
This does not enable video recording, although it might
in the future.
2020-11-30 15:25:07 -08:00
Dmitry Gozman
884edbb3ee
fix(channels): only send protocol methods to connection ( #4493 )
...
When using 'domain' module, it calls various EventEmitter methods
like 'listenerCount' that we do not expect. To avoid this problem
in the future, we validate the method name before sending it over
the protocol connection.
2020-11-26 07:33:09 -08:00
Andrey Lushnikov
f916c98081
chore: update WebKit version to 14.1 ( #4515 )
...
Safari Technology Preview now reports WebKit 14.1
2020-11-23 16:21:42 -08:00
Dmitry Gozman
e9060dd68a
fix(launchServer): wait for the server to start before taking its address ( #4513 )
...
This is easily triggered by launching from a cluster's worker.
2020-11-23 15:23:31 -08:00
Pavel Feldman
e72d9a4185
chore: add websocket connection mode ( #4510 )
2020-11-20 15:19:39 -08:00
Pavel Feldman
a0587949a5
feat(chromium): roll to r828656 ( #4503 )
2020-11-20 08:10:27 -08:00
Dmitry Gozman
aea106b28e
chore: simplify server screencast code ( #4501 )
...
Currently, we always throw from FrameSession._stopScreencast
when not running with video, and immediately catch it in
CRPage.didClose (thanks to debugger to point that).
Overall, we have code prepared for start/stop API, which
we never did, so it makes sense to simplify code a bit,
and throw if something goes wrong.
2020-11-19 19:26:53 -08:00
Dmitry Gozman
5e6eed0d87
fix(frames): do not start network idle timer after detach ( #4502 )
...
This fixes a common flaky error on the bots:
```
Error: Cannot find object to emit "loadstate": Frame@f5b80c8c318c5471a1e6af552866e981
```
2020-11-19 19:20:53 -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
a877c24f05
fix(route): throw on attempt to fulfill with redirect in WebKit ( #4449 )
2020-11-17 16:56:04 -08:00
Dmitry Gozman
38fadcaded
fix(chromium): use frameDetached reason ( #4468 )
...
This fixes the local -> remote frame swap when
Page.frameDetached arrives before Target.attachedToTarget.
Instead of error-prone logic we do currently, new CDP exposes
frame detach reason that we can use.
2020-11-17 10:24:13 -08:00
Dmitry Gozman
b9ac9df837
fix: prevent memory leak when collecting logs from injected script poll ( #4448 )
2020-11-16 14:11:55 -08:00
Joel Einbinder
31bebc7ea0
fix(close): allow errors when closing all pages of a context ( #4324 )
2020-11-16 10:26:34 -08:00
Yury Semikhatsky
dfe3552b59
feat(route): support URL overrides in continue ( #4438 )
2020-11-16 09:59:00 -08:00
Joel Einbinder
dd3d49339d
fix(lock): nicer lockfile error ( #4396 )
2020-11-16 06:35:30 -08:00
Yury Semikhatsky
732e83f48d
feat(webkit): bump to 1385 ( #4430 )
2020-11-13 16:29:20 -08:00
Pavel Feldman
9404d2abb6
fix(debug): do not generate source urls for anonymous scripts ( #3691 )
2020-11-13 14:47:55 -08:00
Pavel Feldman
d20e56e197
feat(state): allow getting / setting context state ( #4412 )
2020-11-13 14:24:53 -08:00
Pavel Feldman
a35d207091
test: fix resource timing for bigsur test ( #4419 )
2020-11-13 14:10:32 -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
b0d174fd9a
revert: lifecycle refactoring, it breaks setContent ( #4420 )
2020-11-12 16:13:55 -08:00
Pavel Feldman
5d47214e2c
chore: register frameless listeners separately ( #4407 )
2020-11-12 13:44:38 -08:00
Pavel Feldman
bd7507e133
chore: unify new page handling across vendors ( #4411 )
2020-11-12 12:41:23 -08:00
Yury Semikhatsky
eee82a7fca
fix(oopif): store child frame id between frameDetached and attachedToTarget ( #4410 )
2020-11-12 09:51:17 -08:00
Yury Semikhatsky
5702eca1f2
fix(selectors): make selectOptions work for labels ( #4402 )
2020-11-11 15:33:23 -08:00
Dmitry Gozman
138680f93c
fix(launchServer): stream protocol logs into options.logger ( #4403 )
...
fix(launchServer): stream protocol logs into options.logger
This has regressed in v1.4.
2020-11-11 15:12:10 -08:00
Pavel Feldman
2158d6d073
feat(scopes): make page a scope ( #4385 )
2020-11-10 14:47:26 -08:00
Andrey Lushnikov
775be21db6
fix(launchdoctor): fix launch doctor ( #4387 )
...
New webkit build, generated by 19f21b1bde , changed webkit build
layout: now there are subfolders that contain libraries and executables, and some of the dependencies are no longer bundled.
This patch:
- teaches launch doctor new directories structure: subfolders are now inspected for missing dependencies, and they are also used in the `LD_LIBRARY_PATH`.
- adds `libevent` and `libicudata` libs to the mapping for ubuntu 18.04
2020-11-09 16:47:15 -08:00
Pavel Feldman
28f6547d67
chore: add adb-based connectivity ( #4375 )
2020-11-06 16:31:11 -08:00
Dmitry Gozman
3db8b23b25
fix(chromium): lifecycle events race ( #4369 )
2020-11-06 13:37:15 -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
Dmitry Gozman
5faf6f9e69
feat(firefox): switch to use pipe instead of websocket ( #3279 )
2020-11-05 14:15:25 -08:00
Dmitry Gozman
c384313058
feat(fill): allow filling based on the label selector ( #4342 )
...
This enables filling the input based on the connected label:
```html
<label for=target>Name</label><input id=target>
```
```js
await page.fill('text=Name', 'Alice');
```
2020-11-05 05:22:49 -08:00
Dmitry Gozman
e942138913
fix: do not report errored pages after context closure ( #4346 )
...
Consider the following sequence:
- page opens a popup;
- popup target is attached, we start initializing it;
- user calls browser.close();
- browser is closed, and popup initialization fails;
- we report "errored page" on the already closed context;
- RPC client cannot make sense of this:
"Cannot find parent object BrowserContext@guid to create Frame@guid"
This issue was revealed during Firefox pipe migration.
2020-11-04 16:23:38 -08:00
Andrey Lushnikov
65009dc867
feat(chromium): roll Chromium to r823944 ( #4341 )
...
Fixes #4021
2020-11-04 11:20:02 -08:00
Dmitry Gozman
d57b43963c
fix(har): support har in persistent context ( #4322 )
2020-11-03 11:30:59 -08:00
Dmitry Gozman
924cc9894a
feat(text selector): normalize spaces in lax mode ( #4312 )
2020-11-03 04:37:06 -08:00
Dmitry Gozman
1c39689dd6
api(videos): introduce a single recordVideo option bag ( #4309 )
...
api(videos): introduce a single recordVideo option bag
Currently contains `dir` and `size`, previously known as
`videosPath` and `videoSize`.
2020-11-02 19:42:05 -08:00
Dmitry Gozman
f80f81545e
feat(chromium): bump to 823078 ( #4308 )
2020-11-02 14:34:08 -08:00
Pavel Feldman
ac8ab1e1b5
feat(websocket): add WebSocket.waitForEvent and isClosed ( #4301 )
2020-11-02 14:09:58 -08:00
Dmitry Gozman
c446bf629d
chore: cleanup some har code ( #4306 )
...
Drive-by: do not create <root>/file.png in the tests.
2020-11-02 13:38:55 -08:00
Pavel Feldman
d117d0bb93
feat(scopes): make page a scope ( #4300 )
2020-11-02 13:06:54 -08:00
Dmitry Gozman
9c80cbdf9e
fix(docs): small docs changes for new apis ( #4305 )
2020-11-02 12:48:05 -08:00
Andrey Lushnikov
7fbbd1822e
feat(firefox): support WebSockets on Firefox ( #4289 )
2020-10-30 10:34:24 -07:00
Pavel Feldman
914f6372ec
feat(proxy): enable per-context http proxy ( #4280 )
2020-10-29 16:12:30 -07:00
Pavel Feldman
f384a864a8
test(har): uncomment some raw header tests ( #4273 )
2020-10-28 15:58:45 -07:00
Pavel Feldman
7bedbb2d78
feat(browser): roll WebKit to r1370 ( #4257 )
2020-10-28 13:46:05 -07:00
Pavel Feldman
ece84eccd7
fix(protocol): annotate file buffer as binary ( #4272 )
2020-10-28 10:55:20 -07:00
Pavel Feldman
0b8c33ee75
fix(ECONRESET): fix it once and for all ( #4258 )
2020-10-27 11:09:41 -07:00
Pavel Feldman
1ef090c3ac
fix(screenshot): prioritize passed type over the extension mime ( #4251 )
2020-10-27 00:02:35 -07:00
Pavel Feldman
be8428475d
feat(websocket): implement Web Sockets for Chromium & WebKit ( #4234 )
2020-10-26 22:20:43 -07:00
Pavel Feldman
7fc4b797eb
feat(har): allow saving har for context ( #4214 )
2020-10-26 14:32:07 -07:00
Pavel Feldman
f5fbea94bb
feat(debug): allow using timeout for rafs for throttling debugging
2020-10-23 16:06:51 -07:00
Pavel Feldman
0337928aa3
fix(env): respect =true/false as env values for boolean flags ( #4228 )
2020-10-23 12:44:12 -07:00
Maja Wichrowska
ea910a4ce2
fix: update getFromEnv logic to validate that value is undefined (instead of falsey) before redefining it ( #4226 )
...
Additionally, cast the `PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD` check to a number to allow for values of 0 or 1
2020-10-23 11:52:25 -07:00
Pavel Feldman
c97af3ee91
fix(listeners): avoid "too many listeners" problem safely ( #4223 )
2020-10-23 10:38:26 -07:00
Pavel Feldman
c4fbc6436a
Revert "fix(listeners): avoid "too many listeners" problem ( #3931 )" ( #4222 )
...
This holds on to process / handlers forever.
2020-10-23 10:04:55 -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
Max Schmitt
ebf207b7a1
chore: add support for macOS Big Sur (11.0) ( #4149 )
...
macOS 11.0 Big Sur was released as a preview on GitHub Actions: https://github.com/actions/virtual-environments/issues/1781#event-3879790130
Closes #2789
Relates #2793
2020-10-19 10:02:35 -07:00
Joel Einbinder
86ef956b4b
feat(webkit): bump to 1357 ( #4154 )
2020-10-19 03:03:50 -07:00
Tom Jenkinson
7103887bb5
add type for selector engine ( #4174 )
2020-10-18 23:00:28 -07:00
Pavel Feldman
bbdba42d30
chore(screencast): respect i/o backpressure when writing into ffmpeg ( #4164 )
2020-10-16 10:04:14 -07:00
Pavel Feldman
e9f5477d52
fix(screencast): await for the first video frame on Chromium ( #4145 )
2020-10-14 15:09:36 -07:00
Pavel Feldman
46a49d0809
fix(screencast): bump chromium video quality ( #4146 )
2020-10-14 15:02:32 -07:00
Yury Semikhatsky
bb981fc0cc
fix(screencast): correctly process videos with 1 frame ( #4144 )
2020-10-14 14:10:35 -07:00
Andrey Lushnikov
c7b23599bc
feat(firefox): roll to r1190 ( #4133 )
2020-10-14 09:35:56 -07:00
Pavel Feldman
5a7685665a
api(video): restore the missing video path accessor ( #4132 )
2020-10-13 22:15:51 -07:00
Pavel Feldman
3f68713f1e
chore: locate binaries in case of cli deployment ( #4107 )
2020-10-09 15:56:03 -07:00
Joel Einbinder
9801be6401
feat(chromium): roll to 815036 ( #4099 )
2020-10-09 11:45:45 -07:00
Andrey Lushnikov
80773fa96b
fix: disable chromium sandbox by default ( #4090 )
...
Certain environments, e.g. Azure Pipelines, override default user
inside container with a custom one, whereas fail to pass proper
seccomp profile for the docker image.
As a result, chromium sandboxing fails.
To ease life of devops deploying tests in various CI's, this patch
disables Chromium sandbox by default.
References #4084
2020-10-09 11:28:22 -07:00
Pavel Feldman
ad58e49201
Revert "feat(firefox): migrate to the pipe channel ( #4068 )" ( #4073 )
...
Mac sporadically hangs on browser close.
2020-10-06 21:16:50 -07:00
Pavel Feldman
ce7aa7a608
feat(firefox): migrate to the pipe channel ( #4068 )
2020-10-06 14:40:09 -07:00
Thomas Chaplin
2df6425254
chore(typo): resolve typo in src/progress.ts ( #4041 )
2020-10-05 15:21:35 -07:00
Dmitry Gozman
d31cbc21e5
fix(video): wait for videos when closing persistent context ( #4040 )
...
To achieve this, we close all the pages one by one, then wait
for the videos to finish processing, and then close the browser.
2020-10-04 18:18:05 -07:00
Dmitry Gozman
e214f795e0
feat(video): support videos in remote browser ( #4042 )
2020-10-02 17:27:56 -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
4a77363af7
api: update videos api, hide tracing ( #4015 )
2020-10-01 11:06:19 -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
Pavel Feldman
20b83ee0b4
fix(electron): do not use --require to throttle startup ( #4006 )
2020-09-29 18:01:14 -07:00
Pavel Feldman
6dccd2735a
fix(wire): fix the wire mode ( #4008 )
2020-09-29 18:00:56 -07:00
Pavel Feldman
7ccdc5176d
chore: include api.json into the Playwright package ( #4003 )
2020-09-29 13:48:24 -07:00
Pavel Feldman
de1e63dff1
test: roll test runner 0.9.16 ( #3998 )
2020-09-29 11:51:00 -07:00
Dmitry Gozman
b3497b333e
fix(actions): wait for some time before retrying the action ( #4001 )
...
This saves some CPU cycles while waiting for the page to
change the state, e.g. for animations to complete.
Note that retrying logic is only applicable in rare
circumstances like unexpected scroll in the middle of an
action, or some overlay blocking the click. Usually,
action times out in this cases while retrying.
2020-09-29 10:28:19 -07:00
Yury Semikhatsky
989709b102
chore: delete unused screencast hacks ( #3964 )
2020-09-24 12:16:24 -07:00
Thomas Chaplin
76d08cefc2
chore(types): add return type to advancePosition ( #3961 )
2020-09-24 11:30:18 -07:00
Yury Semikhatsky
1d21c1e4bd
feat(webkit): bump to 1347 ( #3955 )
2020-09-22 16:38:05 -07:00
Dmitry Gozman
18809b3902
fix(listeners): avoid "too many listeners" problem ( #3931 )
...
We currently spawn a process per page when recording
video in Chromium. This triggers "too many listeners" on the
process object once you have enough pages open.
2020-09-22 13:45:57 -07:00
Pavel Feldman
0e76316f82
fix(close): fix the browser.close race ( #3956 )
2020-09-22 12:50:39 -07:00
Andrey Lushnikov
7925a51149
feat: support concurrent installation of browsers ( #3929 )
...
A few details on locking registry to prohibit concurrent access:
- locking is done by creating a `__dirlock` directory in the top-level
of our registry.
- since `__dirlock` directory does not match any of browser
directories, old versions of the installer will ignore it
- in case of concurrent access, installation will wait for a lock to be
released for 10 minutes, periodically trying to grab the lock. If it
fails to do so in 10 minutes, the installation will fail.
Fixes #3912
2020-09-21 16:09:11 -07:00
Pavel Feldman
f1016c1fc1
fix(executablePath): throw unexpected platform error upon call ( #3943 )
2020-09-21 15:51:27 -07:00
Pavel Feldman
cd0a123e78
feat(chromium): roll to v808777 ( #3942 )
2020-09-21 15:51:14 -07:00
Joel Einbinder
75edc61531
feat(emulation): emulate a mouse pointer in headless chrome ( #3922 )
2020-09-21 08:20:05 -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
0ade6af689
api(trace): introduce artifacts options ( #3914 )
...
api(trace): introduce artifacts options
This introduces launch({ artifactsPath }) and newContext({ relativeArtifactsPath, recordTrace }) options.
- artifactsPath option controls the directory where all artifacts go. If not passed, artifacts are not collected.
- relativeArtifactsPath can be used to put context-specific artifacts into a subfolder. If not passed, shared artifactsPath is used.
- recordTrace controls trace recording.
We also expose trace types under playwright/types/trace.d.ts.
In the follow up:
- videos will be put into artifactsPath;
- downloads will be put into artifactsPath, or keep using existing downloadsPath when artifactsPath is not specified.
2020-09-18 11:54:00 -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
Dmitry Gozman
dc06f0a75c
chore: introduce evaluateInUtility private api ( #3907 )
...
This is an experimental client-side api. We'll experiment with it in plugins like tracing.
2020-09-16 16:07:49 -07:00
Dmitry Gozman
36f2420b0f
chore(trace): remove dependency on handle._previewPromise ( #3906 )
...
We now mark the target with '__playwright_target__' attribute and
let the trace viewer do whatever it wants.
2020-09-16 15:26:59 -07:00
Yury Semikhatsky
5507553173
fix(screencast): repeat previous frame instead of current ( #3890 )
2020-09-15 15:21:50 -07:00
Dmitry Gozman
592bae1cea
feat(trace): record goto, setContent, goBack, goForward and reload ( #3883 )
2020-09-15 09:46:36 -07:00
Max Schmitt
8bc09af458
fix(firefox): imply default ports for proxy ( #3850 )
2020-09-14 21:22:07 -07:00
Andrey Lushnikov
430f2bedaa
devops: stop relying on ubuntu stock ffmpeg ( #3882 )
...
This patch bakes ffmpeg-linux r1001 into our NPM package.
This increases NPM package size from 4.2MB to 6.7MB.
Fixes #3845
2020-09-14 19:22:00 -07:00
Yury Semikhatsky
459d857bc3
feat(screencast): add saveAs and createReadableStream ( #3879 )
2020-09-14 18:40:55 -07:00
Dmitry Gozman
2f0d2029ca
chore: refactor goBack/goForward/reload ( #3859 )
...
These methods are the only users of waitForNavigation and
waitForLoadState on the server side. This refactor lifts the
Progress wrapper to the top-most goBack/goForward/reload call
and leaves waitForNavigation/waitForLoadState as internal helpers.
This way we get a single Progress for the actual api call.
2020-09-14 16:43:17 -07:00
Dmitry Gozman
0a243c6792
fix(waitTask): remove rerunnable tasks from the context data upon success/failure ( #3875 )
2020-09-14 14:55:37 -07:00
Dmitry Gozman
7ab0c10d7b
fix(launchServer): do not throw when 'port' option is present ( #3877 )
...
We now use 'launch' under the hood, which erroneously throws
when 'port' is present.
Instead, moved validation to the client side where it belongs,
added tests for validation errors.
2020-09-14 14:43:39 -07:00
Dmitry Gozman
01198f8eef
fix($$): use utility context when possible ( #3870 )
...
This avoids the typical issue of overridden bulitins,
trading it for performance of one by one node adoptions.
2020-09-14 10:38:14 -07:00
Yury Semikhatsky
e5c6b19c00
fix(launcher): check for ffmpeg only when starting screencast ( #3874 )
2020-09-14 10:26:44 -07:00
Pavel Feldman
c20cbae529
chore: remove trace viewer ( #3869 )
2020-09-14 07:56:04 -07:00
Max Schmitt
beceeaf6a1
feat(browserContext): add BrowserContext.browser() ( #3849 )
2020-09-14 07:50:47 -07:00
Dmitry Gozman
5314512cbc
chore: inline page._runAbortableTask ( #3861 )
...
It does not do anything nowadays.
2020-09-11 23:33:38 -07:00
Yury Semikhatsky
40323aa94d
fix(screencast): use viewport as default size ( #3844 )
2020-09-11 15:14:31 -07:00
Dmitry Gozman
c4adeb66ce
fix(snapshot): do not let a single frame fail the whole snapshot ( #3857 )
...
Sometimes, we are unable to take a frame snapshot. The most common
example would be "frame is stuck during the navigation in Chromium",
where we cannot evaluate until the frame is done navigating.
In this case, use all other frames and just stub the failing ones
with "Snapshot is not available". Chances are, noone will even see
this frame because it's an invisible tracking iframe.
2020-09-11 15:13:37 -07:00
Max Schmitt
c175dad290
chore: fix compatibility to the domain module ( #3851 )
2020-09-11 14:40:49 -07:00
Dmitry Gozman
263aa06fa4
feat(trace): trace more actions ( #3853 )
2020-09-11 13:28:24 -07:00
Dmitry Gozman
16be357489
feat(trace): trace page open/close events ( #3852 )
2020-09-11 11:34:53 -07:00
Dmitry Gozman
38ed8de23d
feat(tracing): trace actions ( #3825 )
...
- Fill and click actions pass metadata to Progress.
- Progress reports success/failure through instrumentation.
- Tracer consumes ActionResult and ActionMetadata and records them.
Currently, only click and fill actions pass metadata to
contain the size of the change. Everything else should follow.
2020-09-10 21:42:09 -07:00
Dmitry Gozman
9e41518c92
feat(rpc): allow sending metadata with rpc calls ( #3836 )
...
Currently, metadata does only contain the stack trace,
and we send it from the JS client.
2020-09-10 19:25:44 -07:00
Philipp Mudra
1e600cb9d8
fix(windows): show details about missing dependencies ( #3839 )
2020-09-10 16:36:08 -07:00
Dmitry Gozman
46f9151795
fix(rpc): ensure better error messages when rpc misbehaves ( #3838 )
...
- Print parentGuid when it is not available for __create__.
Some bots show generic "something is undefined" error - let's
get better information about the failure.
- Ignore events on disposed objects outside of tests.
Some bots show this happening for "previewUpdated" - let's see
whether there are more important events that misbehave.
2020-09-10 16:20:12 -07:00
Dmitry Gozman
ed3b00efdf
chore: merge BrowserType and BrowserTypeBase, remove logName ( #3837 )
...
- We do not need the public BrowserType different from BrowserTypeBase anymore.
- Removing 'logName' parameter from runAbortableTask - it will
be used for metadata instead.
2020-09-10 15:34:13 -07:00
Dmitry Gozman
bf9c4a35f6
fix(snapshot): properly save textarea content ( #3835 )
2020-09-10 15:33:39 -07:00
Andrey Lushnikov
868740067b
refactor: consolidate ffmpeg-related files in third_party/ffmpeg ( #3815 )
...
This patch:
- moves ffmpeg binaries from `//bin/` to `//third_party/ffmpeg`
- adds [COPYING.GPLv3](https://github.com/FFmpeg/FFmpeg/blob/master/COPYING.GPLv3 )
ffmpeg license
- changes npm packaging to include `//third_party/ffmpeg` only in `playwright` and `playwrihgt-chromium` a
2020-09-09 09:51:28 -07:00
Andrey Lushnikov
e8cf89572a
feat(chromium): roll Chromium to r799411 ( #3811 )
2020-09-09 00:58:25 -07:00
Joel Einbinder
1791be6d16
fix(input): send keypress event for enter key in chromium ( #3796 )
2020-09-08 20:04:14 -07:00
Pavel Feldman
b28ed214ca
chore: remove highlight from PWDEBUG in favor of devtools one ( #3800 )
2020-09-08 20:02:58 -07:00
Andrey Lushnikov
638c77c8e2
devops: stop bundling FFMPEG with Chromium ( #3806 )
...
- This stops bundling FFMPEG with Chromium
- Stop supporting build numbers as fractional parts for Chromium
revisions
2020-09-08 17:05:21 -07:00
Yury Semikhatsky
af58c8acb2
fix(screencast): ensure that _videostarted is fired after newPage ( #3807 )
2020-09-08 17:01:00 -07:00
Yury Semikhatsky
8f81868b9c
fix(screencast): tune ffmpeg params for better quality ( #3798 )
2020-09-08 15:39:18 -07:00
Andrey Lushnikov
143adc1634
refactor: bake ffmpeg into npm instead of CDN ( #3799 )
2020-09-08 15:10:36 -07:00
Pavel Feldman
74f1a64e36
fix(debug): do not generate source urls for anonymous scripts ( #3787 )
2020-09-07 15:50:25 -07:00
Pavel Feldman
c83b2da54f
chore: revert isDevMode into isUnderTest ( #3785 )
2020-09-06 21:36:22 -07:00
Pavel Feldman
fea3ceb36c
chore: expose injectedScript.extend ( #3784 )
2020-09-06 18:19:32 -07:00
Yury Semikhatsky
66985fc5f6
feat(screencast): add expreimental public API on context ( #3766 )
2020-09-04 22:37:38 -07:00
Dmitry Gozman
675ce00432
chore: introduce "instrumentation" that is used for debug and trace ( #3775 )
2020-09-04 16:31:52 -07:00
Andrey Lushnikov
bbe2233f08
feat(chromium): use bundled ffmpeg instead of npm deps ( #3771 )
...
Fixes #3680
2020-09-04 04:17:51 -07:00
Andrey Lushnikov
a755d100b3
devops: encode build number together with Chromium revision ( #3769 )
...
This is an alternative approach to #3698 that was setting up a custom
mapping between chromium revisions and our mirrored builds. For example, we were
taking chromium `792639` and re-packaging it to our CDN as Chromium 1000.
One big downside of this opaque mapping was inability to quickly
understand which Chromium is mirrored to CDN.
To solve this, this patch starts treating browser revision as a fractional number,
with and integer part being a chromium revision, and fractional
part being our build number. For example, we can generate builds `792639`, `792639.1`,
`792639.2` etc, all of which will pick Chromium `792639` and re-package it to our CDN.
In the Playwright code itself, there are a handful of places that treat
browser revision as integer, exclusively to compare revision with some particular
revision numbers. This code would still work as-is, but I changed these places
to use `parseFloat` instead of `parseInt` for correctness.
2020-09-04 03:12:30 -07:00
Max Schmitt
190d16daa3
feat: add browser type to device descriptors ( #3731 )
2020-09-03 13:12:43 -07:00
Dmitry Gozman
c190310335
fix(setInputFiles): make it work with CSP enabled ( #3756 )
...
We used to do fetch() to decode the file buffer. However, this is
blocked by strict CSP policy. Instead, we can use explicit
string -> bytes conversion, and trade performance for CSP compliance.
2020-09-03 10:09:03 -07:00
Andrey Lushnikov
7671e8e8be
devops: remove warnings when running under root without sandbox ( #3749 )
...
As discussed offline, our testing scenarios assume running trusted
web content - so this warning is just a noise for this usecases.
When it comes to dealing with untrusted web content though, automation
authors need to make sure to not launch browsers under root in the first
place.
2020-09-02 18:02:11 -07:00
Andrey Lushnikov
2d46cd8105
feat(electron): automatically disable electron sandbox when run as root ( #3747 )
2020-09-02 17:30:10 -07:00
Yury Semikhatsky
0976732ec6
fix(screencast): remove white padding in headless chromium ( #3746 )
2020-09-02 17:28:08 -07:00
Dmitry Gozman
de547d7d65
fix(connect): make selectors.register work in connected browser ( #3664 )
...
This is a large rework of selectors:
- Each BrowserContext now has a separate Selectors instance that has its own registrations.
Most of them share a single sharedSelectors instance, but contexts created for a connected
browser have their own instance.
- Connected browser now gets a RemoteBrowser object that encapsulates Selectors and Browser.
This Selectors object is registered with the api selectors.
- Public selectors.register api iterates over all registered Selectors channels
and registers in each of them.
- createSelector testing method migrated to ElementHandle._createSelectorForTest.
2020-09-02 16:15:43 -07:00
Dmitry Gozman
be5eba0cd8
fix(rpc): improve internal error for unexpected rpc message ( #3734 )
...
Sometimes I see "cannot call emit on the undefined" error on the bots.
This change adds some more logging, so we could potentially identify where
the issue comes from.
2020-09-02 12:56:50 -07:00
Yury Semikhatsky
1e64efcad1
feat(screencast): autoscale to fit requested size ( #3730 )
2020-09-02 10:40:50 -07:00
Dmitry Gozman
a4563a85ce
fix(snapshot): remove integrity checksum for css ( #3729 )
...
Otherwise we cannot override css with cssom changes.
2020-09-02 10:20:52 -07:00
Yury Semikhatsky
fc29623508
feat(screencast): use system ffmpeg on linux ( #3724 )
2020-09-02 08:47:43 -07:00
Yury Semikhatsky
f8408cb840
fix(launcher): check libs required for playing h.264 ( #3715 )
2020-09-01 16:29:38 -07:00
Yury Semikhatsky
db9b8a003f
fix(screencast): dont throw from frameAck if target is closed ( #3702 )
2020-08-31 17:43:23 -07:00
Yury Semikhatsky
a17dd98cf9
feat(screencast): auto recording for new pages in chromium ( #3701 )
2020-08-31 15:21:02 -07:00
Yury Semikhatsky
8ec55e1fb2
feat(screencast): use ffmpeg to produce webm in chromium ( #3668 )
2020-08-31 08:43:14 -07:00
Joel Einbinder
4e5007ae1a
fix(rpc): nice error stacks when running tests ( #3507 )
2020-08-28 16:47:06 -07:00
Andrey Lushnikov
45e178f8b5
fix: support IP:PORT short notation to specify proxy server ( #3568 )
...
Short notation implies `http://` scheme.
Fixes #3233
2020-08-28 14:17:16 -07:00
Dmitry Gozman
b34d9aba25
feat(trace): experimental traces for our tests ( #3567 )
...
This introduces basic tracing enabled in our tests.
What is captured:
- network resources;
- snapshots at the start of most actions;
- snapshot after the test failure.
How this integrates with test runner:
- context fixture calls private method context._initSnapshotter() and uses Tracer to trace all events;
- all tests share a single test-results/trace-storage directory to store blobs;
- each test has its own trace file.
- npm run show-trace opens a bare-minimum trace viewer that renders snapshots.
2020-08-28 10:51:55 -07:00
Dmitry Gozman
744af78dc2
feat(rpc): simplify browser name detection on the client side ( #3670 )
2020-08-28 10:23:02 -07:00
Dmitry Gozman
5c0f93301d
test: always setUnderTest in index.js, rename to setDevMode ( #3662 )
...
Root index.js is only used for local development, so
assuming dev mode there is fine. This way we do not have
to worry about calling setUnderTest early enough.
2020-08-27 21:08:33 -07:00
Pavel Feldman
2b7d79d7fa
fix(testrunner): fix windows bots ( #3660 )
2020-08-27 10:14:27 -07:00
Yury Semikhatsky
5f9407a0d1
feat(webkit): bump to 1334 ( #3643 )
2020-08-26 15:18:39 -07:00
Pavel Feldman
a20bb949ea
chore(testrunner): introduce test result, reuse it in ipc ( #3644 )
2020-08-26 14:14:23 -07:00
Dmitry Gozman
8d7ec3aca3
fix(downloads): make path/saveAs work when connected remotely ( #3634 )
...
- saveAs uses a stream internally and pipes it to the local file;
- path throws an error when called on a remote browser.
2020-08-26 12:46:30 -07:00
Yury Semikhatsky
db0fa07330
fix(screencast): replace ScreencastStopped with async path() ( #3626 )
2020-08-25 17:18:28 -07:00
Yury Semikhatsky
22b9246692
chore(context): unify browser context id handling ( #3629 )
2020-08-25 16:33:16 -07:00
Pavel Feldman
adc2a44113
infra: simplify test results collection ( #3623 )
2020-08-25 15:46:42 -07:00
Yury Semikhatsky
a38564b7ca
fix(screencast): replace ScreencastStopped event with async path() ( #3612 )
2020-08-25 13:07:32 -07:00
Dmitry Gozman
3b2f14fcee
test: fix wire tests ( #3609 )
2020-08-24 17:32:55 -07:00
Yury Semikhatsky
b9d6324d14
feat(screencast): fire start evet for popups ( #3600 )
2020-08-24 17:23:54 -07:00
Dmitry Gozman
22e2bf1227
chore: use channels as a namespace in client code ( #3608 )
...
Also, rename LoggerSink to Logger to match api docs.
2020-08-24 17:05:16 -07:00
Dmitry Gozman
bdbcae16cb
chore: remove injected -> types dependency ( #3606 )
...
This way, injected is self-contained and we can ensure it does not
depend on anything node-specific.
2020-08-24 15:30:45 -07:00
Dmitry Gozman
a099e941d6
chore: move last rpc files to their place ( #3604 )
...
Also update check-deps to be more user-friendly.
2020-08-24 14:48:03 -07:00
Dmitry Gozman
cd220daa83
chore: move src files to server ( #3593 )
2020-08-24 06:51:51 -07:00
Dmitry Gozman
73e53b21df
chore: move injected and debug to src/server ( #3591 )
2020-08-23 20:25:59 -07:00
Dmitry Gozman
847201b132
chore: move firefox to src/server/firefox ( #3590 )
2020-08-23 17:05:58 -07:00
Dmitry Gozman
6a53b205e5
chore: move webkit to src/server/webkit ( #3589 )
2020-08-23 15:39:03 -07:00
Dmitry Gozman
77f803140a
fix(electron): fix electron types, move source to src/server/electron ( #3583 )
2020-08-23 13:46:40 -07:00
Dmitry Gozman
2e1493a5fa
chore: move browserPaths to utils, enforce more deps ( #3584 )
2020-08-22 21:15:03 -07:00
Dmitry Gozman
f4e8f34c96
chore: move chromium to src/server/chromium, enfore installer deps ( #3582 )
2020-08-22 15:46:42 -07:00
Dmitry Gozman
9fca63f8ec
chore: move src/rpc/client to src/client ( #3581 )
2020-08-22 15:13:51 -07:00
Dmitry Gozman
655013d025
chore: move shared utilities to src/utils ( #3575 )
2020-08-22 07:07:13 -07:00
Dmitry Gozman
6fe1cd9812
chore: move protocol files to src/protocol ( #3571 )
2020-08-21 18:46:11 -07:00
Dmitry Gozman
57e8617474
chore: refactor impl-side events to be per-class ( #3569 )
2020-08-21 16:26:33 -07:00
Yury Semikhatsky
1f0e9db0a6
feat(firefox): support context-level screencast api ( #3555 )
2020-08-20 19:49:30 -07:00
Yury Semikhatsky
071931ebb1
feat(firefox): bump to 1166 ( #3557 )
2020-08-20 16:51:17 -07:00
Dmitry Gozman
e2bb6a07cd
fix(click): allow clicking 1x1 sized elements ( #3538 )
...
One by one seems like a resonable minimum size for clicking.
It is not surprising to see a 1x1 native accessible control
that is covered by a custom control that handles input instead.
2020-08-20 16:49:19 -07:00
Dmitry Gozman
4c5635434a
fix(permissions): browserContext.grantPermissions to respect the origin ( #3542 )
...
Due to wrong type usage, we ignored the origin while granting permissions.
Switching to generated types revealed this issue. We should follow up
with switching all dispatchers to the generated types.
2020-08-20 14:19:27 -07:00
Dmitry Gozman
eab5ff4eae
chore(rpc): use channels types in dispatchers ( #3549 )
...
This ensures we actually implement channels as intended.
For example, this change found an issue with Route.fulfill.
2020-08-20 11:25:33 -07:00
Dmitry Gozman
18292325b6
api: add waitForElementState('disabled') ( #3537 )
...
Allows waiting for the element to be disabled.
2020-08-19 17:20:10 -07:00
Dmitry Gozman
0a22e2758a
fix(chromium): disable lazy loading iframes ( #3535 )
...
These do not play nicely with our "page is loaded when all frames
are loaded" logic.
2020-08-19 15:58:13 -07:00
Dmitry Gozman
9ac1bbc2a5
chore: remove more paths and url matches from the server side ( #3528 )
2020-08-19 13:27:58 -07:00
Yury Semikhatsky
83de0071c9
feat(screencast): add start/stop events on context ( #3483 )
2020-08-19 12:45:31 -07:00
Dmitry Gozman
745dc339a6
chore: merge Browser{Context,}Base into Browser{Context,} ( #3524 )
2020-08-19 10:31:59 -07:00
Dmitry Gozman
63a2c673b5
chore: align SerializedAXNode with rpc protocol AXNode ( #3522 )
2020-08-18 20:25:03 -07:00
Joel Einbinder
97157520a6
feat(slowmo): only slowmo once per user action ( #3012 )
...
This changes the behavior of slowmo to slow down user actions instead of every protocol command. This makes slowmo a lot more predictable. Without this, there is no way to set slowmo to a good value without incurring a huge delay at the start of your test when it sets things up.
2020-08-18 19:13:40 -07:00
Dmitry Gozman
e54195ccfb
chore: align page.pdf options to the rpc protocol ( #3521 )
...
Drive-by: remove unused devices from playwright impl.
2020-08-18 18:48:44 -07:00
Dmitry Gozman
e7e8524e14
chore: remove screenshot path from the server side ( #3519 )
...
Also fixes auto-detection of mime type based on path and adds tests.
2020-08-18 18:46:56 -07:00
Dmitry Gozman
20c6b85178
chore: remove route/unroute from the server side ( #3518 )
...
We only use a global "intercept all requests" handler on
page and browser context, instead of granular ones.
2020-08-18 17:34:04 -07:00
Dmitry Gozman
3cf48f9bd4
chore: simplify conversions around setInputFiles ( #3516 )
...
We do not need api types on the server side anymore.
2020-08-18 17:32:11 -07:00
Dmitry Gozman
ecf4cd3933
chore: simplify conversions around selectOption ( #3517 )
...
We do not need to support api types on the server side.
2020-08-18 16:44:17 -07:00
Dmitry Gozman
aeadf50165
chore: use HeadersArray instead of Headers object on the server side ( #3512 )
...
This simplifies implementation and avoids multiple conversions.
Also adding some tests around lowercase and wrong types.
2020-08-18 15:38:29 -07:00
Dmitry Gozman
9790ea5b5d
chore: align more server-side options with rpc protocol ( #3506 )
...
This touches:
- noDefaultViewport;
- ignoreAllDefaultArgs;
- env;
- validateXYZ logic that was copying objects - we do not need that anymore;
- shuffles some converters closer to their usage.
2020-08-18 09:37:40 -07:00
Joel Einbinder
dfa1f103af
feat(screenshot): create directories for screenshot file
2020-08-17 16:53:19 -07:00
Dmitry Gozman
0e9793c452
api: ElementHandle.waitForElementState ( #3501 )
...
This method waits for visible, hidden, stable or enabled state,
similar to the actionability checks performed before actions.
This gives a bit more control to the user. Some examples:
- Allows to wait for something to be stable before taking a screenshot.
- Allows to wait for the element to be hidden/detached after a specific action.
2020-08-17 16:22:34 -07:00
Dmitry Gozman
58fc6b4003
chore: align some server-side methods with rpc calls ( #3504 )
...
- Never write to console on the server side - we use stdout for
communication. This includes logPolitely and deprecate.
- Pass undefined instead of null in some BrowserContext methods.
- Use explicit _setFileChooserIntercepted instead of on/off magic.
2020-08-17 16:19:21 -07:00
Dmitry Gozman
141a255a07
chore: remove unused methods from server side ( #3502 )
...
Most of these were api methods that are no longer called directly.
2020-08-17 14:36:51 -07:00
Dmitry Gozman
1e9c0eb705
chore: remove logger infrastructure from server side ( #3487 )
...
We do not implement LoggerSink on the server, so we can
use a simple debugLogger.
2020-08-17 14:12:31 -07:00
Joel Einbinder
d516f81eeb
fix(rpc): add a custom toJSON to help jest's expect library ( #3489 )
2020-08-16 14:41:33 -07:00
Dmitry Gozman
bc23324878
chore: remove apiName plumbing and some unused methods from server side ( #3481 )
...
We append apiName where needed on the client instead.
2020-08-14 18:25:32 -07:00
Dmitry Gozman
244c2f37b6
feat(rpc): make sure filechooser is only intercepted when needed ( #3482 )
...
So that user can choose a file manually in headful mode.
2020-08-14 18:24:36 -07:00
Dmitry Gozman
69e1e713ef
feat(click): provide preview of the element intercepting pointer events ( #3449 )
2020-08-14 14:48:36 -07:00
Dmitry Gozman
85c93e91a7
api: introduce ElementHandle.waitForSelector ( #3452 )
...
This is similar to Frame.waitForSelector, but relative to the handle.
2020-08-14 14:47:24 -07:00
Dmitry Gozman
ae4280a12b
chore: cleanup more non-rpc code ( #3471 )
...
- Replaces BrowserServer class with BrowserProcess struct.
- Removes src/api.ts.
- Removes helper.installApiHooks.
- Removes BrowserType.launchServer.
2020-08-14 13:19:12 -07:00
Dmitry Gozman
dec8fb7890
fix(hover): do not require the element to be enabled before hovering ( #3445 )
2020-08-14 13:18:32 -07:00
Dmitry Gozman
9b52ca8676
chore: remove unused non-rpc code, test options, infra, bots ( #3444 )
2020-08-13 16:00:23 -07:00
Dmitry Gozman
18b2cf5ec7
feat(rpc): use rpc protocol for browserType.connect ( #3380 )
2020-08-13 13:24:49 -07:00
Andrey Lushnikov
515665908e
chore: add comment to clarify /sbin
2020-08-13 11:44:21 -07:00
Joel Einbinder
23f5ed89b0
fix(launcher): default to ubuntu20.04 for newer releases ( #3400 )
2020-08-12 17:50:46 -07:00
Andrey Lushnikov
40f685226b
devops: migrate //utils/check_availability.js off browser fetcher ( #3418 )
...
The script is used to check the state of chromium CDN, whereas
our browser fetcher now defaults to Playwright CDN.
2020-08-12 15:01:07 -07:00
Dmitry Gozman
a574fa6edb
api: add Frame.page() getter ( #3392 )
2020-08-12 14:45:36 -07:00
Joel Einbinder
1ef199f512
fix(launchDoctor): add sudo to install missing packages hint ( #3402 )
2020-08-12 08:48:35 -07:00
Andrey Lushnikov
c035560389
fix: full path to ldconfig in linux ( #3401 )
2020-08-12 08:47:41 -07:00
Andrey Lushnikov
2db97e3b2d
feat(firefox): migrate to protocol-based proxy implementation ( #3362 )
...
This migrates Firefox to the protocol-based proxy implementation.
Benefits:
- supports secure web proxies (already supported by Chromium)
- unlocks support for SOCKS proxies with authentication
2020-08-11 11:36:27 -07:00
Dmitry Gozman
9697ad635f
fix(chromium): handle the case when new pending comes before old commit ( #3370 )
2020-08-11 08:59:00 -07:00
Yury Semikhatsky
d8d845afcc
feat(screencast): add private recording APIs and basic test ( #3296 )
2020-08-10 21:22:57 -07:00
Andrey Lushnikov
1b8128eb84
installer: start downloading Chromium archives from our CDN ( #3361 )
...
This starts downloading newer Chromium archives from our CDN, but
retains old endpoint for older Chromium revisions.
This backwards compatibility might help later on to implement
a browser bisecting tool.
References #3259
2020-08-10 11:40:30 -07:00
Dmitry Gozman
ef76f5b922
feat(rpc): introduce JSON type in the protocol for arbitrary blobs ( #3367 )
2020-08-10 11:20:32 -07:00
Dmitry Gozman
69c88d8063
feat(rpc): handle screenshot path on the client ( #3352 )
2020-08-07 15:41:34 -07:00
Dmitry Gozman
7e2cc77524
test: add a test for newCDPSession rejecting on non-pages ( #3353 )
2020-08-07 15:40:46 -07:00
Dmitry Gozman
83f5628549
feat(rpc): misc fixes ( #3351 )
2020-08-07 15:40:21 -07:00
Pavel Feldman
b3091deb78
fix(cors): allow routing the cors request with credentials ( #3336 )
2020-08-07 14:02:41 -07:00
Joel Einbinder
eac8aeedaf
chore(types): convert tests to typescript part 3 ( #3340 )
2020-08-07 11:19:15 -07:00
Dmitry Gozman
cdfe73fee3
api(console): make ConsoleMessageLocation properties required ( #3290 )
...
Everywhere in our api, possibly missing properties are nullable.
However, to make things easier for everyone, we just default to an
empty url instead, so that users do not have to null-check it.
2020-08-05 22:25:56 -07:00
Max Schmitt
e582cc678c
fix(launcher): make PrintDeps.exe path configurable ( #3311 )
2020-08-05 13:33:40 -07:00
Max Schmitt
4956041109
fix(validation): error typo "unknown" ( #3304 )
2020-08-05 11:44:32 -07:00
Dmitry Gozman
126b1f79d4
feat(rpc): run doclint against rpc client ( #3260 )
2020-07-31 17:00:36 -07:00
Lars den Bakker
776f0192ab
fix(chromium): remove Debugger.paused event listener on coverage stop ( #3252 )
2020-07-31 15:45:29 -07:00
Yury Semikhatsky
7e8d03b050
fix(launcher): extend list of known missing DLLs ( #3256 )
...
#2745
2020-07-31 14:11:11 -07:00
Dmitry Gozman
4e5aa3c9c3
feat(rpc): support chromiumSandbox option ( #3251 )
2020-07-31 09:31:55 -07:00
Ross Wollman
ce0ddd270b
feat(download): create directories for saveAs ( #3249 )
...
This is to match the behavior for screenshots path added in #3247 .
2020-07-30 23:21:03 -07:00
Pavel Feldman
93056ed8ef
chore(rpc): more protocol nits ( #3246 )
2020-07-30 17:51:41 -07:00
Yury Semikhatsky
cbfdca736c
feat(launcher): check dependencies before launch on Windows ( #3240 )
2020-07-30 17:15:46 -07:00
Dmitry Gozman
2f95b6e34e
feat(selectors): auto-detect xpath starting with ".." ( #3239 )
2020-07-30 16:21:48 -07:00
Dmitry Gozman
6297f86cfa
feat(rpc): run generate-channels during lint ( #3238 )
2020-07-30 15:08:21 -07:00
Pavel Feldman
1728a3df93
chore: minor protocol fixes ( #3226 )
2020-07-30 11:14:41 -07:00
Dmitry Gozman
cefb1b9727
feat(rpc): run fixtures.jest.js with channel ( #3227 )
...
Also, introduce setupInProcess wrapper to be used for in-process rpc.
2020-07-30 10:22:28 -07:00
Andrey Lushnikov
e09132527d
fix: a pretty error when browser executable is not found ( #3220 )
...
Make sure executable exists before launching it. If it doesn't and
we were launched without custom executable path, print a helpful
instruction to run `npm i playwright` and get browsers downloaded.
Note: there's already a test that makes sure bad executable paths
are treated fairly: 9132d23b2b/test/launcher.jest.js (L54-L59)
This doesn't test missing default browser installation which I think is
fine.
Fixes #3161
2020-07-29 23:16:24 -07:00
Max Schmitt
52eb6c609a
fix(rpc): protocol Route.fulfill ( #3200 )
2020-07-29 20:42:14 -07:00
Dmitry Gozman
3bd97776b8
feat(rpc): do not use server types and events in rpc/client ( #3219 )
...
This change removes almost all dependencies from rpc/client
to the rest of the project. The last ones would be utilities
like helper, converters, etc.
2020-07-29 17:26:59 -07:00
Dmitry Gozman
9132d23b2b
fix(screenshot): wait for stable position before taking element screenshot ( #3216 )
...
Same goes for scrollIntoViewIfNeeded.
2020-07-29 16:36:02 -07:00
Dmitry Gozman
84a17f27eb
fix(rpc): Frame.dblclick is missing notWaitAfter ( #3210 )
2020-07-29 11:45:19 -07:00
Andrey Lushnikov
f111ad7437
fix: add missing libgles2 package to launch doctor ( #3209 )
...
References #2745
2020-07-29 10:40:33 -07:00
Andrey Lushnikov
6bc02f8fb6
feat(launchdoctor): detect missing libraries for dlopen ( #3202 )
...
WebKit WPE assumes `libglesv2.so` is available on the host system
and uses `dlopen` to open it.
This patch starts using `ldconfig -p` to check if the library
exists on the system.
References #2745
2020-07-29 09:58:45 -07:00
Yury Semikhatsky
a700a7a9a8
feat(chromium): roll to 07/29 ( #3207 )
2020-07-29 09:57:02 -07:00
Dmitry Gozman
fab5eba64f
fix(oopifs): translate coordinates to viewport ( #3201 )
...
Renderer-based method DOM.getContentQuads and DOM.getBoxModel return
coordinates relative to the local root's viewport, but we need them relative
to the root viewport.
2020-07-28 15:52:33 -07:00
Dmitry Gozman
6cb1e03713
feat(rpc): disallow deps into rpc client from outside ( #3199 )
...
For this, common converters are extracted from rpc serializers.
2020-07-28 15:33:38 -07:00
Yury Semikhatsky
576e2c5287
fix(webkit): correctly report outerWidth/Height on Mac ( #3133 )
2020-07-27 16:06:50 -07:00
Dmitry Gozman
97c10002e7
api: introduce Browser.version() ( #3177 )
2020-07-27 13:41:35 -07:00