Dmitry Gozman
c4e8720eb5
feat(debug): generate preview for ElementHandle ( #2549 )
...
This is a best-effort debugging feature - we try to generate preview asynchronously,
so it might not be available immediately.
2020-06-12 11:10:18 -07:00
Pavel Feldman
894826dec0
chore: form the debug script for authoring hints / helpers ( #2551 )
2020-06-11 18:18:33 -07:00
Dmitry Gozman
c99f0d1f98
feat(debug): more logs while waiting for stable, enabled, etc. ( #2531 )
2020-06-10 18:45:18 -07:00
Dmitry Gozman
55cfff38c6
fix(waitForFunction): handle predicate that throws ( #2488 )
...
Currently, we fail when the predicate throws on the first call,
and timeout when it fails on any other call.
There are two possible ways to handle throwing predicates:
- Fail waitForFunction if predicate throws once. This is good
since it gives you the error faster.
- Tolerate predicate exceptions. This is good because you do
not have to worry about non-initialized state during load.
This change implements the former.
2020-06-08 16:29:29 -07:00
Dmitry Gozman
5c3a275270
feat(debug): improve api logs ( #2481 )
2020-06-06 20:59:06 -07:00
Dmitry Gozman
a644f0a881
feat(fill): wait for the element to be enabled/writable/visible ( #2435 )
2020-06-01 18:56:49 -07:00
Dmitry Gozman
bf67245de6
feat(debug): stream logs from waitForSelector ( #2434 )
...
- we can now stream logs from InjectedScriptProgress to Progress;
- waitForSelector task uses it to report intermediate elements.
2020-06-01 15:48:23 -07:00
Dmitry Gozman
8f350e4fe6
chore: make polling in page cancelable from node ( #2399 )
...
- unifies polling timeouts with everything else,
based on the client time instead of the server time;
- prepares polling tasks for cancellation token
behavior.
Unfortunately, RerunnableTask had to be rewritten almost
entirely.
2020-05-30 15:00:53 -07:00
Dmitry Gozman
acf059fe00
fix(click): wait for button, input and select to be enabled before clicking ( #2414 )
2020-05-30 13:29:46 -07:00
Dmitry Gozman
8e4a1e7c67
fix(text selector): do not match text inside <head> ( #2413 )
...
We already skip <script> and <style> tags because they are not
the page content. Similar reasoning applies to <head> that has
content that is never rendered on the page.
2020-05-29 15:28:27 -07:00
Dmitry Gozman
fdbd4fe197
fix(selectors): fix selector parsing for css attributes and quotes ( #2389 )
...
- css attribute selector may contain spaces;
- >> escaping inside strings was sometimes incorrect.
See added test cases for more details.
2020-05-28 14:49:39 -07:00
Pavel Feldman
6620008dcb
chore: follow up to address evaluation review comments ( #2380 )
2020-05-27 22:19:05 -07:00
Dmitry Gozman
ece4789165
feat(debug): expose playwright object in console ( #2365 )
...
- playwright.$ and playwright.$$ to query elements;
- playwright.inspect to reveal an element;
- playwright.clear to remove highlight.
2020-05-27 22:16:54 -07:00
Dmitry Gozman
4413138cc6
fix(fill): allow to clear number input ( #2376 )
2020-05-27 20:01:08 -07:00
Pavel Feldman
e168fddac8
fix(evaluate): consistently serialize json values ( #2377 )
2020-05-27 17:19:05 -07:00
Pavel Feldman
5ee6494032
feat(evaluate): return user-readable error from evaluate ( #2329 )
2020-05-21 16:00:55 -07:00
Pavel Feldman
aa0d844c76
chore: introduce utility script for evaluate helpers ( #2306 )
2020-05-20 15:55:33 -07:00
Andrey Lushnikov
545c43d28d
fix: better hittarget testing for clicking ( #2217 )
...
While checking for hittarget, we first bubble from a target element
up to find the first element without `pointer-events: none` style.
This bubbling does not make much sense: we risk desperately clicking
"body" element, when we were actually asked to click some deeply-nested
"span".
Additionally, in many cases the original intent is to click a button. In this
case, we should use the enclosing "button" as a hit target directly.
Fixes #2175
2020-05-19 16:27:56 -07:00
Pavel Feldman
99b7aaace8
chore: refactor injected script harness ( #2259 )
2020-05-15 15:21:49 -07:00
Dmitry Gozman
51fe84922c
fix(css selector): support comma-separated selector lists ( #2120 )
2020-05-07 13:36:54 -07:00
Pavel Feldman
f6210ae996
fix(webkit): click moving targets on windows ( #2101 )
2020-05-04 16:30:19 -07:00
Dmitry Gozman
953dd36d38
feat(api): remove 'mutation' polling option ( #2048 )
...
It is not compatible with shadow dom.
2020-04-29 21:34:14 -07:00
Dmitry Gozman
b11d7f15bb
feat(input): retry when hit target check fails, prepare for page pause ( #2020 )
2020-04-29 11:05:23 -07:00
Dmitry Gozman
f662686fcd
chore(css selector): temporarily remove light dom shortcut ( #2008 )
2020-04-27 20:23:31 -07:00
Dmitry Gozman
8aab725813
fix(css selector): properly parse quoted attributes when querying in shadow ( #2007 )
2020-04-27 19:50:11 -07:00
Dmitry Gozman
031587a9cf
fix(visibility): unify visibilty checks ( #1998 )
...
This applies a common definition of visibility to clicks and waitfors:
- non-empty bounding box - implies non-empty content and no display:none;
- no visibility:hidden.
2020-04-27 15:40:46 -07:00
Dmitry Gozman
f9f5fd03b0
feat(selectors): allow to capture intermediate result ( #1978 )
...
This introduces the `*name=body` syntax to capture intermediate result.
For example, `*css=section >> "Title"` will capture a section that contains "Title".
2020-04-27 10:14:09 -07:00
Dmitry Gozman
7ecf252dd6
feat(text selector): concat sibling text nodes when calculating text ( #1969 )
...
Text that is split into multiple text nodes now matches.
2020-04-24 20:49:29 -07:00
Dmitry Gozman
5ac7f0e4ec
fix(text selector): allow single quoted text ( #1952 )
2020-04-23 18:48:53 -07:00
Pavel Feldman
c1c0237d4e
api(dispatchEvent): page, frame and handle versions added ( #1932 )
2020-04-23 14:58:37 -07:00
Dmitry Gozman
793586e42c
fix(click): throw instead of timing out when the element has moved ( #1942 )
2020-04-23 14:44:06 -07:00
Dmitry Gozman
55b4bc99bd
feat(actions): requery the element when it was detached during the action ( #1853 )
2020-04-18 18:29:31 -07:00
Dmitry Gozman
af2340c35e
fix(click): explicitly fail when element detached during click ( #1835 )
...
We used to timeout instead.
2020-04-16 15:38:41 -07:00
Pavel Feldman
2280126344
api(setInputFiles): introduce page/frame helpers, document, break compat ( #1818 )
2020-04-16 10:25:28 -07:00
Dmitry Gozman
56aa4c2e71
fix(selectors): do not automatically enter shadow roots with >> ( #1812 )
...
Now that we have shadow-aware selector engines, this extra logic adds confusion
and does not help to actually query the element.
2020-04-15 16:12:45 -07:00
Dmitry Gozman
b0d79d5124
feat(shadow): make css pierce shadow by default ( #1784 )
...
We leave css:light, text:light, id:light, and similar to opt-out from the shadow dom piercing. The notable exception is xpath that is always light.
2020-04-15 10:16:29 -07:00
Pavel Feldman
da683b2752
feat(selectAll): allow selecting all in the inputs and in the plain dom ( #1783 )
2020-04-14 17:09:26 -07:00
Dmitry Gozman
9542f47511
feat(selectors): deep selector which pierces open shadow roots ( #1738 )
2020-04-13 13:04:27 -07:00
Pavel Feldman
c6f580faf8
chore: migrate from timeouts to deadlines internally ( #1695 )
2020-04-07 14:35:34 -07:00
Dmitry Gozman
e683c086de
fix(fill): make fill work with date/time inputs ( #1676 )
...
Date/time inputs are locale-specific, and also do not work with insertText. We just set the value on them and emulate input/change events. Note that some browsers do not support these input types just yet.
2020-04-07 10:07:06 -07:00
Pavel Feldman
889cf8f7b6
fix(input): climb dom for pointer-events:none targets ( #1666 )
2020-04-06 20:44:54 -07:00
Dmitry Gozman
a91304a37a
feat(selectors): attribute selectors pierce open shadow roots ( #1656 )
...
References #1375 .
2020-04-03 20:47:08 -07:00
Dmitry Gozman
270206e2b4
feat(text selector): match button input by value ( #1657 )
...
Inputs of type button and submit are rendered with their value as text,
so we match them by text.
Fixes #1427 .
2020-04-03 14:18:08 -07:00
Dmitry Gozman
a9be3c5191
feat(text selector): pierce shadow roots ( #1619 )
2020-04-02 18:03:30 -07:00
Dmitry Gozman
a7b61a09be
fix(text selector): by default, do a substring match ( #1618 )
2020-03-31 23:04:04 -07:00
Dmitry Gozman
c01ad84bd4
fix(fill): use isVisible to be consistent with waitForSelector ( #1539 )
...
Fixes #1442 .
2020-03-25 14:40:42 -07:00
Dmitry Gozman
60942d0af5
chore(selectors): move selectors logic to selectors.ts ( #1536 )
...
This encapsulates selectors logic in one place, in a preparation for more complex scenarios like main-world selectors or piercing frames.
Note: we had `Page.fill should wait for visible visibilty` test, but we do not actually wait for visible in page.fill(). It happened to pass due to lucky evaluation order.
References #1316 .
2020-03-25 14:08:46 -07:00
Dmitry Gozman
15c70c9d61
fix(click): timing out in page while waiting for interactable should have proper error ( #1199 )
...
This fixes flaky 'Page.click should timeout waiting for visible' test.
2020-03-03 17:14:00 -08:00
Dmitry Gozman
342a2cf5cc
fix(selectors): continue matching after first fail for combined selectors ( #1185 )
2020-03-02 15:47:50 -08:00
Dmitry Gozman
1186998bd8
fix(click): wait for element to be displayed before scrolling into view ( #1182 )
...
Otherwise, we may get an error during scrollIntoViewIfNeeded protocol call.
2020-03-02 14:26:38 -08:00