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
Pavel Feldman
6e6e36b565
chore: move progress log into the metadata ( #5411 )
2021-02-10 21:50:29 -08:00
Pavel Feldman
a164f2a810
chore: make instrumentation multiplexing proxy-based ( #5410 )
2021-02-10 21:44:22 -08:00
Pavel Feldman
a06cf70d28
chore: pass parsed stack in metainfo ( #5407 )
2021-02-10 18:52:28 -08:00
Joel Einbinder
dca70abbd3
feat(chromium): connect to a browser over cdp ( #5207 )
2021-02-10 14:00:02 -08:00
Yury Semikhatsky
a8ebe4d888
fix(screencast): support viewport with odd dimensions ( #5399 )
2021-02-10 13:37:27 -08:00
Dmitry Gozman
b4b14eab69
chore: refactor actionability checks ( #5368 )
2021-02-10 12:36:26 -08:00
Dmitry Gozman
38209c675c
fix(selector generator): correct nth-match, remove label treatment, performance ( #5388 )
...
- Remove label retargeting, as it does not play nicely with recorder.
- nth-match() is now correctly chained.
- Performance improvements around parent selectors and regex text matches.
2021-02-10 12:31:50 -08:00
Dmitry Gozman
78ab2955f3
fix(isVisible): do not wait for the selector to be resolved ( #5393 )
2021-02-10 07:12:43 -08:00
Dmitry Gozman
6a98241ac5
feat(selectors): speed up text selector ( #5387 )
...
- Do not check children when parent does not contain the text we look for.
- Minor caching improvements in evaluator.
This gives up to 5X performance boost on text-heavy pages.
2021-02-09 21:31:46 -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
Dmitry Gozman
0871a9cfd9
feat(codegen): improve selector generation ( #5364 )
...
- Snap to buttons, inputs, selects, etc.
- Try `<label>` selector in addition to the element.
- Use parent selectors when needed.
- Remove xpath fallback as it should be covered with css.
2021-02-08 21:53:17 -08:00
Dmitry Gozman
002d8ef5a7
chore: remove Progress.aborted ( #5363 )
...
Most places use Progress.cleanupWhenAborted instead.
2021-02-08 17:33:01 -08:00
Pavel Feldman
d49a1d8174
chore: kill electron process on ctrl+c ( #5366 )
2021-02-08 16:04:15 -08:00
Andrey Lushnikov
d499cf08d1
refactor: remove browserPaths in favor of Registry class ( #5318 )
...
This patch introduces a new Registry class that incapsulates
all logic regarding browsers and their paths.
Fixes #5278
2021-02-08 16:02:49 -08:00
Pavel Feldman
6680713e84
chore: don't reuse recorder app profile ( #5365 )
2021-02-08 16:02:23 -08:00
Dmitry Gozman
6d56a110ca
feat(proxy): throw when socks proxy is used with auth ( #5358 )
2021-02-08 12:07:45 -08:00
Yury Semikhatsky
bb0af314ba
fix(video): set default size to fit into 800x800 ( #5333 )
2021-02-08 10:59:48 -08:00
Max Schmitt
da4304a05c
chore: run recorder app in no sandbox ( #5345 )
2021-02-08 07:38:24 -08:00
Dmitry Gozman
983e04374a
chore: fix build/packaging for recorder and traceviewer ( #5338 )
2021-02-05 16:19:09 -08:00
Pavel Feldman
c0610ccef4
feat(recorder): remove recorder overlay toolbar ( #5334 )
2021-02-05 14:24:27 -08:00
Dmitry Gozman
de30ee0aa8
fix(oopifs): account for various races between processes ( #5320 )
...
Consider the following situation (one among many possible).
- FrameA has an oopif child FrameB;
- FrameA navigates to same-process origin (e.g. about:blank);
- at the same time, FrameC is attached to the FrameB in the
FrameB's process.
In this case, we get `frameNavigated` event for FrameA, immediately
followed by `frameAttached` event for FrameC. Since we detach all
FrameA's child frames on navigation, including the oopif FrameB,
there is no parent frame for FrameC to attach to.
In general, multiple processes coming from oopif may send their
events in wildly different order, and their view about the frame
tree may not always correspond to the "up to date" frame tree as
seen from the main frame's process. We try to keep our frame tree
aligned with what main process thinks, and ignore events that
reference frames absent in this tree.
Drive-by: handle filechooser exceptions because of async processing.
2021-02-05 11:30:44 -08:00
Dmitry Gozman
0cbb2c14e6
feat(text selector): match text in child nodes ( #5293 )
...
This changes `text=` and `:text()` selectors to match the element when:
- it's combined text content matches the text;
- combined text content of any immediate child does not match the text.
This allows the following markup to match "Some bold and italics text":
`<div>Some <b>bold</b> and <i>italics</i> text</div>`.
For the reference, "combined text content" is almost equal to `element.textContent`,
but with some changes like using value of `<input type=button>` or ignoring `<head>`.
This also includes some caching optimizations, meaningful in complex matches
that involve multiple calls to the text engine.
Performance changes (measured on large page with ~25000 elements):
- `:has-text()` - 14% faster.
- `text=` - 50% faster.
- `:text()` - 0-35% slower.
- `:text-matches()` - 28% slower.
2021-02-04 17:44:55 -08:00
Pavel Feldman
c1b08f1a8c
feat(recorder): allow dragging toolbar ( #5316 )
2021-02-04 14:41:53 -08:00
Yury Semikhatsky
997bd0827c
feat(webkit): bump to 1432 ( #5300 )
2021-02-04 08:53:00 -08:00
Pavel Feldman
c2b8718bae
fix(waitForFunction): process isFunction auto-detection ( #5312 )
2021-02-04 08:45:59 -08:00
Yury Semikhatsky
6ae2e576d8
fix: properly detect function literals ( #5296 )
2021-02-03 16:56:36 -08:00
Pavel Feldman
34adc28ed3
feat(pause): make page.pause public ( #5288 )
2021-02-03 16:01:51 -08:00
Dmitry Gozman
d8e0834562
fix(server): use setMaxListeners(0) on all internal event emitters ( #5283 )
2021-02-03 13:53:09 -08:00
Pavel Feldman
3d253c4e5c
feat: auto-detect expression/function in js server ( #5284 )
2021-02-03 13:49:25 -08:00
Dmitry Gozman
fa1cf4108b
fix(codegen): do not show recorder controls in iframes ( #5282 )
2021-02-03 13:42:29 -08:00
Andrey Lushnikov
cb1b64289c
devops: downloading ffmpeg during install step ( #5249 )
...
This patch starts downloading FFMPEG like we download our browsers
instead of bundling it in the NPM package.
With this patch, NPM size is reduced from 8.8MB to 1.7MB.
Consequences:
- `npx playwright` is drastically faster now
- playwright driver for language bindings is way smaller
- projects that bundle Playwright can pass Apple Notorization
Fixes #5193
2021-02-03 09:19:11 -08:00
Dmitry Gozman
4cad34509f
fix(oopifs): do not emulate focus in oopifs ( #5270 )
...
- We don't need this, since it should propagate from the main frame.
- Forcing focus in oopif immediately focuses it and blurs currently
focused frame. This leads to undesired side effects, e.g. selects
being closed.
2021-02-03 08:47:52 -08:00
Dmitry Gozman
1a464c732c
feat(video): switch vp8 in ffmpeg to realtime ( #5260 )
...
This switches vp8 to "realtime" mode that works fast, adapting to
the speed of incoming frames, and produces the best quality in can
given realtime constraints.
In practice, this gives 2x larger video files but no noticible quality
difference. It also eliminates huge delays for encoding the video.
Drive-by: document our ffmpeg option choices and add some links
to documentation for future use.
2021-02-02 17:14:39 -08:00
Pavel Feldman
8a8d8ea370
fix: update terminal size dynamically ( #5250 )
2021-02-02 14:25:51 -08:00
Dmitry Gozman
6c12f58058
feat(selectors): always make xpath relative ( #5252 )
...
This makes `/foo` and `//foo` match starting with the scope,
not the document, by turning them into `./foo` and `.//foo`.
2021-02-02 13:27:16 -08:00
Dmitry Gozman
9e09bd369d
fix(oopifs): ignore target closure when broadcasting across oopifs ( #5246 )
2021-02-02 10:21:42 -08:00
Andrey Lushnikov
276bbca3d1
fix: retry browser launch if it failed due to glibc error ( #5247 )
...
Fixes #5214
2021-02-01 15:23:57 -08:00
Pavel Feldman
1db5ef24a8
docs: document electron api ( #5229 )
2021-02-01 11:43:26 -08:00
Pavel Feldman
bf8c30a88b
feat(ui): extract recorder sidebar into a window ( #5223 )
2021-01-31 16:37:13 -08:00
Pavel Feldman
975519150e
chore: centralize playwright creation, bind context listeners to instance ( #5217 )
2021-01-29 16:00:56 -08:00
Dominik Deren
f8fbfe28fa
feat(trace viewer): Adds _debugName BrowserContextOption to let users define a name for their contexts ( #5205 )
...
This change is adding a new property on the BrowserContextOptions class called `_debugName`. This property allows defining a user-friendly name for the browser context, and currently it is being used in one place, the Trace Viewer. When user provides the new value in the following way:
```typescript
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const context = await browser.newContext({ _traceDir: __dirname, _debugName: 'My custom testcase name' });
await context.close();
await browser.close();
})();
```
The `_debugName` will be saved in the `*.trace` file for this browser context, on the `context-created` event, under the key `debugName`.
Later, when such a trace is displayed using Trace Viewer, the `debugName` will be displayed in the dropdown in the top right part of the app instead of the actual trace filename.
Fixes #5157 .
2021-01-28 10:50:57 -08:00
Dmitry Gozman
e915e51ea9
chore: fix bad merge in codeGenerator.ts ( #5196 )
2021-01-27 17:45:27 -08:00
Dmitry Gozman
2793d14409
fix(codegen): do not forget to reset currentAction in didPerformAction ( #5194 )
2021-01-27 17:05:56 -08:00
Pavel Feldman
e50f11c5b1
feat(ui): more recorder uis ( #5187 )
2021-01-27 17:02:09 -08:00
Dmitry Gozman
321a873d8a
fix(codegen): add timeout to our actions, catch errors ( #5188 )
2021-01-27 15:57:28 -08:00
Dmitry Gozman
527286683f
feat(codegen): prefer frame name over url when unique ( #5175 )
2021-01-27 13:19:36 -08:00
Yury Semikhatsky
f3cc4dfe6d
feat(webkit): bump to 1428 ( #5140 )
2021-01-26 09:42:06 -08:00
Pavel Feldman
45f7d73470
chore: plumb terminal size and port language ( #5149 )
2021-01-25 19:01:04 -08:00
Dmitry Gozman
5033261d27
feat(trace): streaming snapshots ( #5133 )
...
- Instead of capturing snapshots on demand, we now stream them
from each frame every 100ms.
- Certain actions can also force snapshots at particular moment using
"checkpoints".
- Trace viewer is able to show the page snapshot at a particular
timestamp, or using a "checkpoint" snapshot.
- Small optimization to not process stylesheets if CSSOM was not used.
There still is a lot of room for improvement.
2021-01-25 18:44:46 -08:00
Pavel Feldman
87a3ccc49e
fix: do not return cookies with empty values ( #5147 )
2021-01-25 16:37:33 -08:00
Pavel Feldman
2e290be40b
chore: remove source maps in pwdebug mode ( #5148 )
2021-01-25 16:36:57 -08:00
Pavel Feldman
fdde9493ea
fix: don't parse potentially invalid urls in event handlers ( #5090 )
2021-01-25 14:49:51 -08:00
Pavel Feldman
01d6f83597
chore: introduce debug toolbar ( #5145 )
2021-01-25 14:49:26 -08:00
Dmitry Gozman
894abbfe28
feat(selectors): has-text pseudo-class ( #5120 )
...
This pseudo-class matches approximately when
`element.textContent.includes(textToSearchFor)`.
2021-01-25 14:19:07 -08:00
Dmitry Gozman
d78d337e29
feat(fill): make fill work when targeting elements inside the label ( #5143 )
2021-01-25 13:40:19 -08:00
Dmitry Gozman
beed9a79a3
feat(chromium): bump to 845618 ( #5138 )
2021-01-25 07:45:21 -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
3e1c72ac5f
fix(reload): do not throw when reload is racing with navigation ( #5113 )
...
When `page.reload()` is racing against the renderer-initiated
navigation, we might end up with `waitForNavigation()` being rejected
before the reload implementation is able to catch it.
To avoid that, carefully use Promise.all and await `waitForNavigation`
from the get go.
Same happens to `page.goForward()` and `page.goBack()`.
2021-01-22 15:58:53 -08:00
Dmitry Gozman
7a4b94e66c
feat(selectors): nth-match selector ( #5081 )
...
Introduces :nth-match(ul > li, 3) css extension, with one-based index.
2021-01-21 16:39:49 -08:00
Pavel Feldman
4b5c876bbf
chore: allow opening empty trace viewer ( #5080 )
2021-01-20 19:16:23 -08:00
Yury Semikhatsky
d00c5cfd64
feat(webkit): bump to 1423 ( #5057 )
2021-01-19 14:02:41 -08:00
Yury Semikhatsky
615954b285
fix(dom): make selectOption wait for options ( #5036 )
2021-01-19 11:27:05 -08:00
Dmitry Gozman
0586c2554f
feat(text selector): normalize whitespace for quoted match ( #5049 )
...
This changes quoted text selector like `text="Foo Bar"` to perform
normalized whitespace match.
Most of the time users want to match some string visible on the page,
and that always means normalized whitespace.
We keep the case sensitivity and full-string vs substring difference
between quoted and unquoted matches.
2021-01-19 09:30:34 -08:00
Dmitry Gozman
0a7b917ee3
feat(chromium): bump to 844399 ( #5044 )
2021-01-17 17:28:06 -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
afaec552dd
feat(trace): show dialogs, navigations and misc events ( #5025 )
2021-01-15 18:30:55 -08:00
Dmitry Gozman
5c3f483659
fix(cli): do not extend injected script on same-document navigations ( #5002 )
...
Otherwise, the injected script has to be ready for reentrancy.
2021-01-13 14:25:42 -08:00
Joel Einbinder
decf373c81
fix(electron): return a ChromiumBrowserContext for electron ( #4913 )
2021-01-13 12:08:14 -08:00
Yury Semikhatsky
29c34325c9
fix(cookies): make filtering by url work with subdomains ( #4989 )
2021-01-12 15:56:29 -08:00
Dmitry Gozman
d62b661cfa
docs: rename proximity selectors to position selectors ( #4975 )
2021-01-11 18:25:41 -08:00
Yury Semikhatsky
728846b377
fix(launcher): add vcruntime140_1.dll to the list of known deps ( #4973 )
2021-01-11 15:01:29 -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
Joel Einbinder
31d980fc92
chore(webpack): minify injected sources ( #4946 )
2021-01-08 16:15:05 -08:00
Dmitry Gozman
f0a8729137
chore: remove unused selector engines ( #4950 )
...
css and id are superseeded by the new css engine.
2021-01-08 14:51:43 -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
d08cbc33a7
docs: brush up selector docs ( #4939 )
...
docs: brush up selector docs
- Remove duplication
- Move extensions block to ChromiumBrowser
- Remove accidental ":xpath" extension from css selectors
- Document :has and :is extensions
2021-01-08 10:59:24 -08:00
Dmitry Gozman
2e05feac25
feat(cli): bring in trace viewer ( #4920 )
2021-01-07 16:15:34 -08:00
Dmitry Gozman
eb9ea20511
feat(selectors): proximity selectors ( #4923 )
2021-01-07 14:12:59 -08:00
Yury Semikhatsky
0a2fe62cb7
fix(extensions): do not enable screencast for background pages ( #4919 )
2021-01-06 15:08:28 -08:00
Dmitry Gozman
5215add60d
chore: remove selectorsV2Enabled switch ( #4880 )
...
Selectors V2 seem to stick.
2021-01-04 15:32:31 -08:00
Joel Einbinder
6697dadca2
chore(eslint): add rule no-unused-expressions ( #4848 )
2020-12-29 09:59:35 -08:00
Tom Jenkinson
d08f8487c4
chore: remove useless statement that was a typo ( #4846 )
2020-12-29 08:58:09 -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
f709e2300c
feat(cli): bring selector generator into playwright ( #4795 )
...
Also remove unused `SelectorEngine.create` function and add tests.
2020-12-23 12:44:47 -08:00
Yury Semikhatsky
8d4c46ac19
fix: throw if quality=0 is passed for png screenshot ( #4812 )
2020-12-23 09:53:14 -08:00
Yury Semikhatsky
94ee48f8ce
fix: allow proxy credentials with empty password ( #4779 )
2020-12-21 11:47:13 -08:00
Pavel Feldman
774eb53980
fix(adb): force page scale factor update on connection ( #4755 )
2020-12-17 18:28:49 -08:00
Yury Semikhatsky
3219057ab0
fix(webkit): support utf-8 characters in postData, bump to 1407 ( #4744 )
2020-12-17 18:09:06 -08:00
Dmitry Gozman
5a1c9f1fe1
fix(selector): bring back v1 query logic ( #4754 )
...
It turned out that v1 query logic is not shimmable by v2 logic.
This change brings back v1 query logic for `>>` combinator.
2020-12-17 17:01:46 -08:00
Dmitry Gozman
9a0023cc03
fix(selectors): text engine after capture matches scope ( #4749 )
2020-12-17 06:19:43 -08:00
Dmitry Gozman
35533b15c1
fix(scroll): scroll from under the sticky header ( #4641 )
...
When element with position:sticky covers some part of
the scroll container, we could fail to scroll from under it
to perform an action. To fight this, we can try different
scroll alignments and scroll to the top/bottom/center
in the attempt to scroll away from sticky header/footer/sidebar.
2020-12-16 15:29:42 -08:00
Max Schmitt
2c409b040e
fix(android): leaking adb socket connections ( #4730 )
2020-12-15 20:15:25 -08:00
Pavel Feldman
97be66b15c
fix(adb): enable newPage in mobile browser ( #4728 )
2020-12-15 15:14:16 -08:00
Pavel Feldman
e02c54485c
chore(adb): make driver smaller ( #4713 )
2020-12-14 18:39:14 -08:00
Andrey Lushnikov
b09e0d01bd
fix(launchdoctor): make launch doctor to warn on Win7 ( #4718 )
...
Windows 7 was end-of-lifed on January 14, 2020. We don't support this
system, but we'd like to have a best-effort to work there.
It does look like Chromium is missing some libraries on Win 7, however
it still manages to work there. To support this usecase, this patch
starts printing console warning about missing libraries on Win 7 only
instead of refusing to launch.
Fixes #3496
2020-12-14 16:40:51 -08:00
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
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
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
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
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
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
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
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
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
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
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
0b8c33ee75
fix(ECONRESET): fix it once and for all ( #4258 )
2020-10-27 11:09:41 -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
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
Joel Einbinder
86ef956b4b
feat(webkit): bump to 1357 ( #4154 )
2020-10-19 03:03:50 -07:00