Commit graph

628 commits

Author SHA1 Message Date
Yury Semikhatsky 09c175914e
feat(webkit): bump to 1460 (#6124) 2021-04-07 08:55:16 -07:00
Pavel Feldman 0dfde2e975
fix(screenshot): never throw page is navigating (#6103) 2021-04-06 16:01:38 -07:00
Andrey Lushnikov 112ac2f98c
feat(chromium): roll Chromium to r867878 (#6065)
This roll required us pass a new flag - `--allow-pre-commit-input`. Otherwise, keyboard tests won't pass.

Co-authored-by: Joel Einbinder <joel.einbinder@gmail.com>
2021-04-06 15:56:41 -07:00
Dmitry Gozman 4f7e7450e2
test: migrate last tests to new folio (#6071) 2021-04-05 09:18:56 -07:00
Andrey Lushnikov 4da2d6e104
feat(firefox): roll Firefox to r1244 (#6052)
Fixes #5929
Fixes #6001
2021-04-02 15:41:54 -07:00
Yury Semikhatsky 561cb23e8d
fix: dispatch popup event on the client end (#6044) 2021-04-02 11:15:07 -07:00
Yury Semikhatsky 4f2827f302
fix(dom): click on links inside shadow dom (#5850) 2021-04-02 10:36:24 -07:00
Dmitry Gozman 8f71f5971b
fix(input): do not retarget from input/textarea/select to an ancestor button (#6036)
Although such markup is not expected, it happens in the wild. Retargeting
in this case in unexpected, so we check/click/etc the control itself.
2021-04-01 12:30:05 -07:00
Yury Semikhatsky 16d98cb48a
chore(launcher): add more logging to processKill (#6025) 2021-03-31 12:17:16 -07:00
Andrey Lushnikov f472c96129
feat: support webkit technology preview (#5885)
This patch adds support for `technology preview` webkit channel, which
we will keep close to the actual Safari Technology Preview releases.

This channel does not install by default. It is supposed to be installed
with the following CLI command:

```sh
$ npx playwright install webkit-technology-preview
```

Once the channel is installed, it can be used the following way:

```js
const browser = await playwright.webkit.launch({
  channel: 'technology-preview',
});
```

**NOTE:** if clients attempt using the channel without installing it,
it'll throw an error with a copyable instructions to install via CLI.

References #5884
2021-03-31 11:32:10 -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 9532d0bde0
feat(webkit): bump to 1457 (#6021) 2021-03-31 10:29:43 -07:00
Yury Semikhatsky 587682e024
feat(chromium): bump to r865012 (#5963)
References #5858

Co-authored-by: Andrey Lushnikov <lushnikov@chromium.org>
2021-03-31 09:51:18 -07:00
Dmitry Gozman 98f1f715c5
chore: ensure we emit Page event before resoliving pageOrError (#6012)
Internal callers of pageOrError should be able to rely on the
Page being already reported.
2021-03-30 17:35:42 -07:00
Pavel Feldman f1c0d09765
feat(size): emulate window.screen size (#5967) 2021-03-29 14:10:58 -07:00
Yury Semikhatsky 0943af2806
fix: kill browser if process doesnt exit for 30s after close (#5968) 2021-03-27 09:59:04 -07:00
Joel Einbinder 3ce02a95c8
fix(selectors): properly generate selectors for tricky ids (#5940) 2021-03-25 18:43:33 -07:00
Dmitry Gozman 6b3f4cd12b
chore: calculate video size in a single place (#5942) 2021-03-24 10:56:20 -07:00
Dmitry Gozman 8e97607389
fix(viedo): do not stall video in popups (#5941)
There are two problems, exposed by existing tests:

- We do not send Page.startScreeencast before Runtime.runIfWaitingForDebugger
  because we launch video recorder in between. This stalls when the page is busy
  immediately after resuming, e.g. with alert().
  Fixed by starting video recorder in advance.

- We wait for the first frame that may not come - for example, context-wide interception
  is blocking essential resource and first frame.
  Fixed by only waiting for the first frame before reporting the video, not the page.
2021-03-24 09:36:46 -07:00
Pavel Feldman 543582b4ca
chore: expose channel name literals for types (#5922) 2021-03-23 13:21:03 -07:00
Yury Semikhatsky 67c29e8155
chore: add missing await to floating promises (#5813) 2021-03-22 09:59:39 -07:00
Pavel Feldman d53cea7029
fix(pageOrError): throw in launchPersistentContext if context page has errors (#5868) 2021-03-18 08:14:57 -07:00
Andrey Lushnikov bb21faf450
fix: disable firefox's webrender on Darwin (#5870)
References #5721
2021-03-18 00:23:23 -07:00
Pavel Feldman 2367039a2c
chore(stable): throw user-friendly message when ffmpeg is missing (#5865) 2021-03-17 19:19:44 -07:00
Pavel Feldman 84efdfcbc9
chore(autowait): auto-wait for top level navigations only (#5861) 2021-03-17 14:47:51 -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
Andrey Lushnikov e8a33c4039
feat(firefox): roll Firefox to r1237 (#5849)
This patch rolls Firefox to r1237. Upstream firefox still struggles
with crashes with certain videos: https://bugzilla.mozilla.org/show_bug.cgi?id=1697004

This PR also workarounds this crash by disabling webrender.

References #5721
2021-03-16 23:27:39 -07:00
Pavel Feldman bf36b487fc
fix(rimraf): allow 10 retires when removing the profile folder (#5826) 2021-03-16 19:31:35 -07:00
Yury Semikhatsky 8df4dcb0de
feat(webkit): bump to 1446 (#5844) 2021-03-16 17:23:42 -07:00
Pavel Feldman d81ebff414
fix(inspector): do not collect action signals while on pause (#5843) 2021-03-16 12:06:12 -07:00
Pavel Feldman 5cf13612cf
chore: pretty print storage state (#5830) 2021-03-15 19:03:09 -07:00
Pavel Feldman c2db8da4df
fix(inspector): await inspector init to avoid races (#5829) 2021-03-15 19:02:38 -07:00
E 095ad6339c
chore: update error message when using userDataDir arg (#5814) 2021-03-15 16:58:46 -07:00
Pavel Feldman ea32ad2b09
infra(channel): add edge stable bot (#5825) 2021-03-15 16:00:52 -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
Pavel Feldman 1dd6bd3316
infra(channel): wire release channel to all tests (#5820) 2021-03-15 08:07:57 -07:00
Pavel Feldman a96d6a7dbb
feat: allow to pick stable channel (#5817) 2021-03-13 14:02:39 -08:00
Pavel Feldman c4578f19f2
chore: organize per-browser dependencies (#5787) 2021-03-11 20:22:50 -08:00
Oleg Lebedev a185da9d14
chore: allow skipping host requirements validation (#5806) 2021-03-11 18:46:31 -08:00
Pavel Feldman ad69b2af83
chore: unify recorder & tracer uis (#5791) 2021-03-11 11:22:59 -08:00
Pavel Feldman fea6669473
feat(trace): highlight action target (#5776) 2021-03-10 11:43:26 -08:00
Pavel Feldman 1d6feb2ab8
fix(inspect): highlight on explore input change (#5726) 2021-03-09 07:44:10 -08:00
Pavel Feldman 1a94ea5f6c
chore: refactor trace viewer to reuse snapshot storage (#5756) 2021-03-08 19:49:57 -08:00
Dmitry Gozman b3561e6c41
feat(chromium): bump to 857950 (#5742) 2021-03-05 18:09:38 -08:00
Yury Semikhatsky 976f35aaf7
fix: update codegen to produce set* instead of with* (#5738) 2021-03-05 14:05:48 -08:00
Pavel Feldman 2af8b8ac74
chore: inspector snapshot nits (#5676) 2021-03-03 22:25:34 -08:00
Pavel Feldman d3eff50386
feat(java): implement codegen (#5692) 2021-03-03 14:32:09 -08:00
Dmitry Gozman d87522f2e6
fix(text selector): revert quoted match to match by text nodes only (#5690) 2021-03-03 10:51:10 -08:00
Dmitry Gozman e4d33f56f4
fix(click): do not retarget from label to control when clicking (#5683)
And in other carefully considered cases.
2021-03-02 17:29:03 -08:00
Dmitry Gozman ff243f1af5
fix(addInitScript): make it work on new pages without navigations (#5675) 2021-03-02 16:03:48 -08:00
Yury Semikhatsky 2cdb6b49cd
fix(inspector): inlcude sdkLang in the error (#5682) 2021-03-02 12:16:04 -08:00
Yury Semikhatsky 1a0ccc1383
feat(webkit): bump to 1443 (#5665) 2021-03-02 09:15:07 -08:00
Pavel Feldman b253ee80c0
chore(snapshot): brush up, start adding tests (#5646) 2021-03-01 12:20:04 -08:00
Pavel Feldman aeb2b2f605
feat(inspector): wire snapshots to inspector (#5628) 2021-02-26 14:16:32 -08:00
Andrey Lushnikov c652794b5a
chore: bump webkit version (#5637)
Aligning with the latest Safari Technology Preview.
2021-02-26 12:15:15 -08:00
Yury Semikhatsky 4b541749ac
feat(webkit): bump to 1442 (#5622) 2021-02-25 23:39:48 -08:00
Pavel Feldman 992f808210
chore(snapshot): implement in-memory snapshot (#5624) 2021-02-25 13:09:26 -08:00
Dmitry Gozman f7e5db4d6e
chore: remove ProgressController.abort (#5620)
It is used in a few places, but we can do a Promise.race.
This change will allow us to pass existing progress to
multi-step operations.
2021-02-25 10:00:54 -08:00
Pavel Feldman 2ff6d54f26
chore: extract snapshotter from trace viewer (#5618) 2021-02-25 09:33:32 -08:00
Pavel Feldman af89ab7a6f
chore: make trace server generic (#5616) 2021-02-25 08:25:52 -08:00
Pavel Feldman f72b098a04
chore: encapsulate parsed snapshot id in the trace viewer (#5607) 2021-02-24 19:29:16 -08:00
Dmitry Gozman ca8998b11e
feat(log): prepend browser pid to browser logs (#5569)
To differentiate between multiple browsers.
2021-02-24 19:21:47 -08:00
Pavel Feldman 5ae2661134
chore: simplify overrides management in trace viewer (#5606) 2021-02-24 18:38:04 -08:00
Dmitry Gozman 0102e080f6
fix(text selector): make quoted selector match by text nodes (#5603)
This change turns quoted match to be case-sensitive (as before),
but not strictly full-string for the whole element's text.

This is a fix for a case where element contains text nodes and child elements:
```html
<div>text1<span>child node</span>text2</div>
```
We now match this div by `text="text1"` and `text="text2"`.
2021-02-24 16:32:38 -08:00
Pavel Feldman 8906ba332c
chore: spell overridden (#5605) 2021-02-24 15:11:34 -08:00
Pavel Feldman 6bf3fe8432
chore: make trace model a class (#5600) 2021-02-24 14:22:34 -08:00
Pavel Feldman f71bf9a42a
chore: move trace viewer into server (#5597) 2021-02-24 13:39:51 -08:00
Pavel Feldman 5fb77935ee
chore: move logic from sw to server (#5582) 2021-02-24 11:52:59 -08:00
Pavel Feldman 48c237b3cf
chore: move trace to server (#5565) 2021-02-23 22:08:14 -08:00
Joel Einbinder 8ef6cb731e
feat(codegen): use the name attribute for more elements (#5376) 2021-02-23 16:24:45 -08:00
Dmitry Gozman b42c3690d3
fix(codegen): replace html lib with createElement (#5531)
We are not using html that much, since most of our UI moved
to the Recorder App. Getting rid of `innerHTML` assignment
fixes the TrustedTypes issue.
2021-02-22 11:38:49 -08:00
Andrey Lushnikov eb9c8ce20c
feat(chromium): roll Chromium to Dev @ Feb 19, 2021 (#5536) 2021-02-22 11:17:55 -08:00
Pavel Feldman 6ec77dca9d
fix(inspector): fix the wait for event error rendering (#5517) 2021-02-20 14:36:19 -08:00
Yury Semikhatsky 1e327d4cb2
fix(bindings): unflake TestBrowserContextExposeFunction.shouldWork in java (#5532) 2021-02-19 18:58:32 -08:00
Pavel Feldman 600f731a67
feat(inspector): render api names from metainfo (#5530) 2021-02-19 18:12:33 -08:00
Dmitry Gozman 46c8c29f7a
fix(logs): restore pw:browser logs after launch has finished (#5527) 2021-02-19 16:09:38 -08:00
Yury Semikhatsky 5f9acfaccb
feat(webkit): bump to 1436 (#5513) 2021-02-19 13:47:47 -08:00
Zev Isert cbcc609fa1
fix: return non-secure cookies with HTTPS URLs (#5507)
Cookies have a "Secure" attribute which tells the browsers
that a given cookie should only be sent via HTTPS. In it's
absense "Secure" is falsy and these cookies should be sent
with both HTTP and HTTPS requests. Playwright now returns
only the "Non-Secure" cookies for HTTP URLs, and both
"Secure" and "Non-Secure" cookies for HTTPS URLs.

Fixes #5504
2021-02-19 11:50:59 -08:00
Pavel Feldman bb2b29631a
feat(inspector): pause on page/context close (#5319) 2021-02-19 09:33:24 -08:00
Dmitry Gozman 8a9048c2b5
feat(inspector): selector input (#5502) 2021-02-19 07:25:08 -08:00
Pavel Feldman 15833ee039
feat(inspector): render params and durations in log (#5489) 2021-02-17 22:10:13 -08:00
Pavel Feldman 3248c2449c
feat(inspector): collapse completed items (#5484) 2021-02-17 17:28:02 -08:00
Pavel Feldman b2227c1bcf
feat(inspector): allow selecting file (#5483) 2021-02-17 14:05:41 -08:00
Pavel Feldman 30e68f6d1f
chore: simplify code generation (#5466) 2021-02-16 18:13:26 -08:00
Andrey Lushnikov b6bd7c0d6a
feat(chromium): roll Chromium to r851527 (#5434)
Fixes #5197
2021-02-16 14:21:47 -08:00
Andrey Lushnikov 6b40d75d03
fix: allow setting input files for detached <input> elements (#5467)
Fixes #5403
2021-02-16 10:22:46 -08:00
Pavel Feldman 0c7da44465
test(inspector): add some tests (#5461) 2021-02-15 08:32:13 -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 ecd15e6175
fix(inspector): restore point highlight (#5455) 2021-02-12 22:06:45 -08:00
Pavel Feldman 0782b25272
test: fix recorder downloads test (#5454) 2021-02-12 20:26:22 -08:00
Pavel Feldman 3c877374c7
feat: add replay log (#5452) 2021-02-12 18:53:46 -08:00
Dmitry Gozman ac1599cc2c
fix(registry): handle relative registry path (#5406)
We get relative registry path when PLAYWRIGHT_BROWSERS_PATH or HOME is relative.
In this case, it would be good to resolve to the same absolute path
during installation and execution, and we can usually do that using INIT_CWD.
2021-02-12 11:12: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
Andrey Lushnikov 6113d4d50d
feat(chromium): roll Chromium to r846621 (#5413) 2021-02-11 07:43:43 -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