Dmitry Gozman
5c4751d5dd
chore: generate protocol during browser roll ( #2719 )
...
We now commit protocol.ts files during the roll.
New utils/roll_browser.js helps with that.
This makes our installation very shallow:
- build installer;
- download browsers.
2020-07-01 15:22:29 -07:00
Pavel Feldman
c25fc4956d
chore(rpc): scope client-side handles ( #2796 )
2020-07-01 13:55:29 -07:00
Pavel Feldman
95538e73e7
chore(rpc): move classes around, fix tests, respect dispatcher scopes ( #2784 )
2020-06-30 22:21:17 -07:00
Pavel Feldman
87516cb3a3
chore(rpc): make dispatcher creation and lookup explicit ( #2783 )
2020-06-30 21:30:39 -07:00
Andrey Lushnikov
922cbe6718
chore: roll https-proxy-agent to v5 ( #2777 )
...
Co-authored-by: Luke Edwards <luke.edwards05@gmail.com>
2020-06-30 17:03:01 -07:00
Andrey Lushnikov
55a07dbf4d
fix: follow-up with offline comments on implementation of deprecation ( #2770 )
...
This moves all extra deprecation messages from vendor implementations
into a single vendor-neutral land.
2020-06-30 11:02:12 -07:00
Pavel Feldman
e29f7b9f58
chore(rpc): support workers, file chooser, browser server ( #2766 )
2020-06-30 10:55:11 -07:00
Pavel Feldman
5bb018e0e5
chore(rpc): attribute calles to page, ignore USES_HOOKS ( #2764 )
2020-06-29 18:58:09 -07:00
Pavel Feldman
3a7d629c61
chore(rpc): pass more network tests ( #2762 )
2020-06-29 16:37:38 -07:00
Andrey Lushnikov
0963c1979e
chore: deprecate method context.setHTTPCredentials()
( #2763 )
...
This will start emitting deprecation warning once
`context.setHTTPCredentials` is called.
2020-06-29 16:37:01 -07:00
Dmitry Gozman
38236b4f29
fix(close): ensure close() can be called twice ( #2744 )
...
... without any exceptions.
2020-06-29 16:26:32 -07:00
Dmitry Gozman
1fa9d30992
fix(evaluate): awaitPromise when Promise is overwritten ( #2759 )
...
Firefox and WebKit require native promises to provide awaitPromise
functionality. When the Promise is overwritten, all evaluations
in the main world produce wrong Promise, so we wrap with async
function to get a native promise instead.
2020-06-29 16:25:52 -07:00
Pavel Feldman
e920fde9f7
chore(rpc): bootstrap demo for rpc ( #2741 )
2020-06-27 11:32:27 -07:00
Pavel Feldman
4e94bdabfd
chore(rpc): serialize rpc into actual wire string ( #2740 )
2020-06-27 11:10:07 -07:00
Pavel Feldman
3e33523ee3
chore(rpc): clear the browsercontext test spec ( #2739 )
2020-06-26 22:38:21 -07:00
Pavel Feldman
db12ddebb3
chore(rpc): clear the page test spec ( #2736 )
2020-06-26 21:22:03 -07:00
Pavel Feldman
6393407a6a
chore(rpc): support downloads, dialogs, persistent context ( #2733 )
2020-06-26 17:24:21 -07:00
Dmitry Gozman
b54303a386
fix(textContent): make page.textContent(selector) atomic ( #2717 )
...
We now query selector and take textContent synchronously. This
avoids any issues with async processing: node being recycled,
detached, etc.
More methods will follow with the same atomic pattern.
Drive-by: fixed selector engine names being sometimes case-sensitive
and sometimes not.
2020-06-26 16:32:42 -07:00
Dmitry Gozman
43f70ab978
test: add more failing tests with react recycle ( #2731 )
2020-06-26 16:31:51 -07:00
Pavel Feldman
02f7501725
chore(rpc): strongly-type the initializer, remove __init__ phase ( #2729 )
2020-06-26 12:28:27 -07:00
Pavel Feldman
18d6140d3e
chore(rpc): support routes and bindings ( #2725 )
2020-06-26 11:51:47 -07:00
Dmitry Gozman
064a0a1154
fix(webkit): do not swallow errors when returning by value ( #2723 )
...
We currently return undefined whenever we had an error trying
return the evaluation result by error. The most common error
is "execution context destroyed".
This produces very unexpected undefined from methods that do not
ever expect undefined. Instead, we should throw because we were
not able to return the result.
2020-06-26 09:50:57 -07:00
Pavel Feldman
71618a9e2b
chore(rpc): implement input, a11y, console ( #2722 )
2020-06-25 18:01:18 -07:00
Dmitry Gozman
ab6a6c9b82
chore: run most actions through page._runAbortableTask ( #2721 )
...
This introduces a single place for future snapshots.
2020-06-25 16:57:21 -07:00
Pavel Feldman
bab6833232
chore: introduce the experimental rpc implementation ( #2720 )
2020-06-25 16:05:36 -07:00
Dmitry Gozman
5d5cf26a0e
fix(logs): streaming logs from InjectedScriptPoll without exception ( #2712 )
...
We used to get undefined messages, because we were mistakenly
fulfilling the logs multiple times.
2020-06-25 13:13:10 -07:00
Dmitry Gozman
807dc1f324
fix(crash): improve documentation for crash, reject waitForEvent ( #2694 )
2020-06-25 09:53:56 -07:00
Pavel Feldman
bc3050776e
chore: prepare library types for rpc ( #2706 )
2020-06-25 08:30:56 -07:00
Dmitry Gozman
f111974ad6
chore: prepare parsed selectors to more tasks ( #2696 )
...
We currently have dispatchEventTask and waitForSelectorTask.
However, most selector-based operations make sense as tasks, to ensure
atomic execution, e.g. textContent(selector) or focus(selector).
This will fight hydration, elements recycling and other async issues.
In preparation, decouple tasks from selectors parsing so that
we can have common infrastructure for tasks.
2020-06-24 17:03:28 -07:00
Dmitry Gozman
39ce35e154
fix(errors): strict error handling around element operations ( #2567 )
...
- Gave all possible dom errors distinct names, and throw them on the node side.
- Separated errors into FatalDOMError and RetargetableDOMError.
Fatal errors are unrecoverable. Retargetable errors
could be resolved by requerying the selector.
- This exposed a number of unhandled 'notconnected' cases.
- Added helper functions to handle errors and ensure TypeScript catches
unhandled ones.
2020-06-24 15:12:17 -07:00
Dmitry Gozman
355305d31d
feat(screenshot): accept timeout, migrate to Progress, wait for visible ( #2679 )
...
Element screenshot now waits for the element to become visible and
throws on detach.
Both screenshot methods accept a timeout and capture logs using Progress.
Also, carefully handling exceptions and restoring the viewport.
2020-06-24 10:16:54 -07:00
Pavel Feldman
fca514d74e
chore: move non-trivial types out of types.ts ( #2680 )
2020-06-23 14:51:06 -07:00
Dmitry Gozman
d0a6e1a64e
fix(dom): make selectText and scrollIntoViewIfNeeded wait for visible ( #2628 )
...
All other methods wait for the element to be visible, so we should make
them behave similarly.
2020-06-23 13:02:31 -07:00
Joel Einbinder
9000ccb3b2
fix(click): don't timeout when innerWidth is modified ( #2669 )
...
We were evaluating `innerWidth` in the main context, where it could be modified.
2020-06-22 14:03:31 -07:00
Pavel Feldman
eac7dab8b7
fix(cors): allow intercepting cors requests on chromium ( #2643 )
2020-06-19 17:14:32 -07:00
Dmitry Gozman
d0336ea5c2
fix(network): disallow intercepting redirects ( #2617 )
...
WebKit and Firefox are only able to continue redirects.
Firefox is faking it on the backend, so you can't even stall it.
Instead, we just do not fire routes for redirects on all browsers,
to avoid surprises.
2020-06-18 17:15:47 -07:00
Joel Einbinder
b88fabab13
test: add another test for browserContext.addInitScript ( #2285 )
2020-06-18 12:27:48 -07:00
Mike Tobia
63924d9a26
feat(install/download-hosts): allow multiple per browser ( #2452 )
...
In addition to `PLAYWRIGHT_DOWNLOAD_HOST` env variable, this patch adds a per-browser
configuration:
- `PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST`
- `PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST`
- `PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST`
2020-06-18 11:20:43 -07:00
Dmitry Gozman
971bd88922
fix(chromium): do not bring page to front before screenshot ( #2614 )
2020-06-18 10:52:08 -07:00
Dmitry Gozman
f581e84829
fix(css selector): handle missing spaces between [] and > ( #2612 )
2020-06-17 23:20:12 -07:00
Dmitry Gozman
f9633ea9b7
fix(scrollIntoView): ensure similar behavior across browsers, handle errors ( #2599 )
2020-06-17 10:48:07 -07:00
Pavel Feldman
277d50e39c
feat(webkit): roll WebKit to 1286 - interception ( #2601 )
2020-06-17 08:34:42 -07:00
Pavel Feldman
c220fc7f46
chore(logs): rework logs for simplicity ( #2592 )
2020-06-16 17:11:19 -07:00
Pavel Feldman
59d0f8728d
test(recorder): add recorder sanity tests ( #2582 )
2020-06-16 10:15:08 -07:00
Pavel Feldman
1c7a8952b9
chore(cli): add recording mode ( #2579 )
2020-06-15 15:27:03 -07:00
Pavel Feldman
f2c47b1d33
feat(cli): introduce basic playwright CLI tool ( #2571 )
2020-06-14 17:24:45 -07:00
Pavel Feldman
61b11252b4
chore(debug): various debug mode improvements ( #2561 )
2020-06-13 13:17:12 -07:00
Dmitry Gozman
d4c466868b
chore: explicitly plumb various errors through the retries ( #2554 )
...
We are about to have more errors, so explicit plumbing helps with visibility.
2020-06-12 14:59:26 -07:00
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
Dmitry Gozman
1bf9e65ef5
fix(log): include log name in progress recording ( #2550 )
2020-06-12 09:48:56 -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
7ddf66418a
test: add a failing test with React rerender ( #2545 )
2020-06-11 15:19:35 -07:00
Pavel Feldman
e287f19493
feat(debug): add basic recording helper infra ( #2533 )
2020-06-11 11:42:52 -07:00
Dmitry Gozman
5e97acde0c
fix(oopif): make Page.addInitScript and Page.exposeBinding work for oopifs ( #2542 )
2020-06-11 11:41:36 -07:00
Pavel Feldman
17433d1881
chore: verify launch options ( #2530 )
2020-06-10 20:48:54 -07:00
Andrey Lushnikov
89d1b52f43
chore: revert atomic install ( #2534 )
...
This reverts 2 commits:
- "fix(installer): create tmp directory inside `browserPath` (#2498 )"
commit 946b4efa3b
.
- "feat: support atomic installation of browsers (#2489 )"
commit 3de0c087bc
.
This addresses installation issues we see in some CI environments.
2020-06-10 18:49:03 -07:00
Dmitry Gozman
c99f0d1f98
feat(debug): more logs while waiting for stable, enabled, etc. ( #2531 )
2020-06-10 18:45:18 -07:00
Pavel Feldman
903de2582a
chore(websocket): extract common socket part ( #2506 )
2020-06-10 16:33:27 -07:00
Dmitry Gozman
1bb33650b0
chore: remove ExtendedEventEmitter and inline waitForEvent ( #2529 )
2020-06-10 15:12:50 -07:00
Pavel Feldman
8ee19d53e7
feature(webkit): roll WebKit to 1273 ( #2514 )
2020-06-10 13:36:45 -07:00
Darío Kondratiuk
e3f34f6ae2
fix(selectOption): allow passing null to unselect all ( #2405 )
2020-06-10 09:37:29 -07:00
Dmitry Gozman
4d069dda0f
feat: avoid side effects after progress aborts ( #2518 )
...
Actions like click, focus or polling now avoid doing any work
with side-effects after their progress has been aborted.
2020-06-09 18:57:11 -07:00
Dmitry Gozman
80705ff5e9
chore: simplify logging a bit ( #2512 )
...
This merges a few classes and stops inheriting from InnerLogger.
2020-06-09 16:11:17 -07:00
Pavel Feldman
9aa9d6bc1d
feat(downloads): accept downloads in persistent, allow specifying the downloadsPath ( #2503 )
2020-06-08 21:45:35 -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
Andrey Lushnikov
946b4efa3b
fix(installer): create tmp directory inside browserPath
( #2498 )
...
`fs.rename` doesn't work across partitions, so we have to have
tmp folder next to our final destination.
Fixes #2494
2020-06-08 12:11:16 -07:00
Dmitry Gozman
bb4e959d2d
feat(debug): add note about DEBUG=pw:api to errors ( #2496 )
2020-06-08 11:41:09 -07:00
Dmitry Gozman
5c3a275270
feat(debug): improve api logs ( #2481 )
2020-06-06 20:59:06 -07:00
Andrey Lushnikov
3de0c087bc
feat: support atomic installation of browsers ( #2489 )
...
Currently, Ctrl-C while extracting browser might yield users in
a bad place.
This patch extracts browsers in a temp directory that is later
moved to a installer registry.
2020-06-05 16:26:32 -07:00
Dmitry Gozman
3ec79e17fc
chore: simplify timeout handling in progress ( #2487 )
2020-06-05 15:53:30 -07:00
Dmitry Gozman
300099734c
chore: migrate waitForEvent to Progress ( #2483 )
...
Drive-by: remove/simplify some helper code.
2020-06-05 14:14:19 -07:00
Pavel Feldman
fb058ffe0d
feat(proxy): allow specifying proxy ( #2485 )
2020-06-05 13:50:15 -07:00
Dmitry Gozman
87e0c96ef2
chore: inverse FrameTask callbacks/promises ( #2478 )
...
Alternative way to handle this indirection.
2020-06-05 10:06:59 -07:00
Dmitry Gozman
c08da50bb3
chore: introduce session.sendMayFail to ease error logging ( #2480 )
2020-06-05 07:50:26 -07:00
Dmitry Gozman
1d37a10558
chore: migrate navigations to Progress ( #2463 )
2020-06-04 16:43:48 -07:00
Dmitry Gozman
724d73c03b
feat(debug): chromium debugging port ( #2246 )
...
This exposes Chromium remote debugging pipe under the port PLAYWRIGHT_CHROMIUM_DEBUG_PORT.
2020-06-04 16:40:07 -07:00
Dmitry Gozman
d5c992e1db
chore: unify evaluations across browsers even more ( #2459 )
...
This moves all the logic around UtilityScript to javascript.ts.
Also uncovers a bug in WebKit where we cannot returnByValue after navigation.
2020-06-03 17:50:16 -07:00
Dmitry Gozman
8e6375f532
chore: reduce the number of evaluate methods, improve types ( #2454 )
...
Types can now handle non-trivial tuples with handles inside.
2020-06-03 13:22:05 -07:00
Dmitry Gozman
1accb5141d
chore: convert more actions to Progress ( #2444 )
2020-06-03 11:23:24 -07:00
Dmitry Gozman
f188b0a174
chore: migrate most actions to Progress ( #2439 )
2020-06-03 09:14:53 -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
454411062b
fix(oopif): race between detachedFromTarget and frameAttached ( #2419 )
...
During remote -> local transition, these two events come in unpredictable order, so we try to handle both cases. Also, remote frame detach was not handled at all.
2020-06-01 13:47:02 -07:00
Dmitry Gozman
de0bbd3031
chore: remove page pause support ( #2431 )
2020-06-01 11:14:16 -07:00
Dmitry Gozman
b7df4d57a4
chore: migrate wait tasks to Progress ( #2422 )
2020-06-01 08:54:18 -07:00
Pavel Feldman
c001facffc
feat(firefox): allow passing user prefs at launch time ( #2417 )
2020-05-31 09:28:57 -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
d980ed7e7e
chore: introduce Progress concept ( #2350 )
...
A progress roughly corresponds to an api call. It is used:
- to collect logs related to the call;
- to handle timeout;
- to provide "cancellation token" behavior so that cancelable process can either
early-exit with progress.throwIfCanceled() or race against it with progress.race();
- to ensure resources are disposed in the case of a failure
with progress.cleanupWhenCanceled();
- (possibly) to log api calls if needed;
- (in the future) to augment async stacks.
2020-05-29 14:39:34 -07:00
Andrey Lushnikov
fdd48f8940
chore: remove confusing logging from registry ( #2397 )
2020-05-28 22:36:08 -07:00
Andrey Lushnikov
7a785ac268
fix: properly rewrite error message ( #2392 )
...
Error message is included in error's stack, so we should
re-write stack as well.
Fixes #2373
2020-05-28 16:33:31 -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
Andrey Lushnikov
7981e4e3da
fix: support event source type in firefox ( #2390 )
...
References #2189
2020-05-28 14:38:47 -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
Dmitry Gozman
057ae14adc
feat: make browserServer.kill() wait for the process to exit ( #2375 )
...
This ensures we cleaned everything up.
2020-05-27 19:59:03 -07:00
Max Schmitt
9dfe9348ac
feat: Request.postDataJSON ( #2368 )
2020-05-27 18:43:49 -07:00
Pavel Feldman
e168fddac8
fix(evaluate): consistently serialize json values ( #2377 )
2020-05-27 17:19:05 -07:00
Dmitry Gozman
609bc4cfb0
chore: add stack trace utilities and tests ( #2371 )
2020-05-27 14:26:44 -07:00
Dmitry Gozman
1e2b46437d
feat(debug): when debugging, use zero as default timeout ( #2362 )
...
Otherwise, operations always time out while stepping in debugger.
2020-05-27 13:25:57 -07:00
Dmitry Gozman
8f0f32b5e6
chore: move debug-related code to src/debug ( #2309 )
2020-05-26 14:08:32 -07:00
Dmitry Gozman
27d30fe162
chore: encapsulate more launching logic in BrowserType ( #2339 )
2020-05-22 16:06:00 -07:00
Dmitry Gozman
aac5bf24ec
fix(popups): do not override popup size from window features ( #2139 )
...
We usually force window size from the browser context. However,
popups that have window features insist on a specific window size,
so we respect that.
2020-05-22 15:56:37 -07:00
Dmitry Gozman
e2972ad5ba
feat(click): retry when the element it outside of the viewport ( #2330 )
...
The element might get animated into the viewport.
2020-05-22 11:15:57 -07:00
Dmitry Gozman
55d47fd48f
chore: unify launching server between browser types ( #2338 )
2020-05-22 07:03:42 -07:00
Dmitry Gozman
3aca21c13b
chore: simplify launch routine a bit more ( #2336 )
2020-05-21 19:16:13 -07:00
Pavel Feldman
5ee6494032
feat(evaluate): return user-readable error from evaluate ( #2329 )
2020-05-21 16:00:55 -07:00
Dmitry Gozman
aae3f1e75d
feat(default context): support selected options for default context ( #2177 )
2020-05-21 15:13:16 -07:00
Pavel Feldman
2ede4bce12
chore: further unify launching and connection ( #2320 )
2020-05-21 09:43:10 -07:00
Yury Semikhatsky
9154f4b6e0
feat(webktt): explicitly enable Playwright domain on start ( #2315 )
2020-05-21 08:44:57 -07:00
Pavel Feldman
f9b437a49e
chore: pull common functionality into the BrowserTypeBase ( #2312 )
2020-05-20 16:30:04 -07:00
Pavel Feldman
aa0d844c76
chore: introduce utility script for evaluate helpers ( #2306 )
2020-05-20 15:55:33 -07:00
Dmitry Gozman
48440f7ed7
test: unflake fixtures test ( #2313 )
...
Drive-by: ensure we call onkill before manually exiting the process.
2020-05-20 14:58:27 -07:00
Pavel Feldman
e558f0516b
chore: print the launch error message to console ( #2304 )
2020-05-20 00:10:10 -07:00
Andrey Lushnikov
e312845ba9
fix: less confusing error message ( #2305 )
...
Fixes #2283
2020-05-19 17:47:46 -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
Dmitry Gozman
de606b9553
fix(chromium): handle various exception values in pageerror ( #2293 )
2020-05-19 15:20:49 -07:00
Dmitry Gozman
7efc22c062
fix(chromium): websocket wrapper leaks child sessions ( #2291 )
...
When a parent session is detached, we do not always get Target.detachedFromTarget
for child sessions. This is especially true when the socket disconnects, leaving
all child sessions in the maps.
Flakily reproducible by browserType.connect multiclient tests.
2020-05-19 15:02:13 -07:00
Dmitry Gozman
481643409e
feat(debug): persist devtools preferences in Chromium ( #2266 )
...
We store devtools-preferences.json file in the downloaded browser directory.
2020-05-19 14:55:11 -07:00
Dmitry Gozman
8957c86837
feat(debug): add source maps to evaluates in debug mode ( #2267 )
...
When PLAYWRIGHT_DEBUG_UI is set, we try to find the source
of the function in the current file and source map it.
2020-05-19 08:40:45 -07:00
Dmitry Gozman
82cab094e8
feat(logging): add logging to websocket transport ( #2289 )
2020-05-18 19:00:38 -07:00
Andrey Lushnikov
f24696be62
feat: add page convenience methods for textContent and getAttribute ( #2235 )
...
This patch adds:
- `page.innerText()` / `frame.innerText()`
- `page.innerHTML()` / `frame.innerHTML()`
- `page.textContent()` / `frame.textContent()`
- `page.getAttribute()` / `frame.getAttribute()`
Fixes #2143
2020-05-18 17:58:23 -07:00
Dmitry Gozman
359cb3a740
fix(oopif): adopt main requests into oopifs ( #2284 )
...
Main request for an OOPIF starts in the parent session, and the oopif
session is create only after the response has been received. Therefore,
we should adopt the request after oopif session is created.
2020-05-18 17:13:51 -07:00
Pavel Feldman
2bd427ad1d
feat(exposeBinding): a more powerful exposeFunction with source attribution ( #2263 )
2020-05-18 14:28:06 -07:00
Dmitry Gozman
4bf5742d47
fix(chromium): abort fetch requests that lack networkId ( #2254 )
...
These requests are usually internal ones, and we can safely abort them.
An example would be DevTools loading cached resources to show the content.
There will never be a matching Network.requestWillBeSent event, so we do not
report them to the user.
2020-05-15 15:22:29 -07:00
Pavel Feldman
99b7aaace8
chore: refactor injected script harness ( #2259 )
2020-05-15 15:21:49 -07:00
Andrey Lushnikov
a38ac3fb62
fix: report hash in page.url()
( #2252 )
...
Fixes #2247
2020-05-14 17:23:19 -07:00
Andrey Lushnikov
e035bf3b33
fix: update webkit version ( #2250 )
...
Fix #2245
2020-05-14 16:47:18 -07:00
Dmitry Gozman
63cc126805
fix(webkit): do not swallow init errors ( #2242 )
...
This is a speculative fix to the following issue from the bots:
NON-TEST ERROR #0 : UNHANDLED ERROR
TypeError: Cannot read property 'url' of undefined
at WKPage._onTargetCreated (/Users/runner/runners/2.169.1/work/playwright/playwright/src/webkit/wkPage.ts:274:12)
at process._tickCallback (internal/process/next_tick.js:68:7)
I assume that _initializeSession did swallow an error, so we erroneously
consider Page to be fully initialized (and having main frame).
2020-05-14 15:43:23 -07:00
Dmitry Gozman
e8e761f77f
chore: use internal BrowserOptions to unify browsers ( #2230 )
2020-05-14 13:22:33 -07:00
Dmitry Gozman
76e106605f
fix(screenshot): use innerW/H instead of offsetW/H to determine viewport size ( #2229 )
...
When capturing a screenshot with null viewport, we determine the screenshot size
based on body.offsetHeight. This is a very large number for long pages. We should
use window.innerHeight instead.
2020-05-13 20:53:11 -07:00
Joel Einbinder
dbef7de42a
feat(electron): types ( #2231 )
2020-05-13 20:51:53 -07:00
Dmitry Gozman
650d73445c
fix(actions): do not wait for the created popups ( #2219 )
...
Since we are recommending Promise.all pattern anyway, this special
logic just adds to the possibility of timeout if something goes wrong.
For example, Firefox sometimes send Page.willOpenNewWindowAsynchronously
later than the new target arrives and input action just hangs.
2020-05-13 17:20:33 -07:00
Yury Semikhatsky
e081ba7256
chore: improve error message ( #2222 )
2020-05-13 15:57:26 -07:00
Pavel Feldman
f63ea3ffd2
feat(downloads): expose suggested filename ( #2062 )
2020-05-12 19:23:08 -07:00
Dmitry Gozman
072dcba94a
api(viewport): do not allow isMobile and deviceScaleFactor for null viewports ( #2190 )
...
Also make sure we do not alter viewport when passed null.
2020-05-12 18:31:17 -07:00
Yury Semikhatsky
f10e8c4d47
chore(chromium): nicer error when running as root without --no-sandbox ( #2214 )
2020-05-12 16:43:15 -07:00
Pavel Feldman
624ca4d85d
chore: restore copyright for SerializedAXNode type
2020-05-12 15:33:51 -07:00
Pavel Feldman
414ae0025e
fix(electron): handle in-event await errors ( #2207 )
2020-05-12 15:28:37 -07:00
Dmitry Gozman
28845e5ccc
feat(firefox): bump and use context setters ( #2194 )
2020-05-12 15:13:48 -07:00
Pavel Feldman
cb465bc698
fix(abort): abort waiting with error upon disconnect ( #2204 )
2020-05-12 13:38:24 -07:00
Pavel Feldman
3f8dfed67f
feat(electron): add app.firstWindow convenience method ( #2195 )
2020-05-12 08:43:41 -07:00
Pavel Feldman
ffe7084652
feat(electron): experimental electron support ( #2166 )
2020-05-11 18:00:33 -07:00
Dmitry Gozman
a2bee2ca73
fix(launch): handle timeout and exceptions during launch ( #2185 )
2020-05-11 15:00:13 -07:00
Pavel Feldman
9895cd0a31
chore: optionally create downloads folder ( #2188 )
2020-05-11 14:42:13 -07:00
Dmitry Gozman
8c083486a0
fix(launch): handle websocket connect exceptions ( #2184 )
2020-05-11 13:49:57 -07:00
Dmitry Gozman
ae8d97cdf9
feat(persistent context): ensure initial about:blank ( #2161 )
...
We declare only the initial about:blank to be a supported usecase, so that
we can support options for the default context in the future.
2020-05-10 15:23:53 -07:00
Pavel Feldman
8e59031078
chore: introduce debugAssert ( #2160 )
2020-05-08 10:37:54 -07:00
Pavel Feldman
7a8dd2c361
feat(console): allow page.on('console', console.log) ( #2145 )
2020-05-07 15:34:09 -07:00
Dmitry Gozman
51fe84922c
fix(css selector): support comma-separated selector lists ( #2120 )
2020-05-07 13:36:54 -07:00
Pavel Feldman
793a2bf7d4
fix(firefox): do not run firefox as a part of the installation process ( #2125 )
2020-05-06 10:42:27 -07:00
Pavel Feldman
d95891ebad
fix(install): only install browsers needed by this revision ( #2112 )
2020-05-04 22:24:40 -07:00
Dmitry Gozman
33ebe66ad4
fix(webkit): allow contenttype with charset in interception ( #2108 )
2020-05-04 21:49:54 -07:00
Pavel Feldman
1c17929bd8
chore: add input logging and timeout debugging hints ( #2109 )
2020-05-04 21:44:33 -07:00
Pavel Feldman
f6210ae996
fix(webkit): click moving targets on windows ( #2101 )
2020-05-04 16:30:19 -07:00
Pavel Feldman
710c156d48
fix(chromium): disable same site by default and improved controls ( #2097 )
2020-05-04 13:43:44 -07:00
Pavel Feldman
bcce48362a
api(waitForSelector): make "state: visible" default, includes rename to state ( #2091 )
2020-05-04 11:03:44 -07:00
Pavel Feldman
1f0217986e
feat(firefox): cache firefox pre-compiled scripts ( #2087 )
2020-05-04 09:34:59 -07:00
Yury Semikhatsky
03ca297890
fix(webkit): make click work with cross-process _blank target ( #2083 )
2020-05-02 10:57:33 -07:00
Pavel Feldman
f8bea85c88
feat(webkit): disable pause on click ( #2077 )
2020-05-01 12:59:18 -07:00
Dmitry Gozman
d7a1e013c6
fix(chromium): do not wait forever for navigations that target another tab/download ( #2068 )
2020-04-30 21:24:03 -07:00
Pavel Feldman
9c67ce5289
test: simplify pausing tests ( #2056 )
2020-04-30 14:13:47 -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
4afd39117a
fix(waitForSelector): use raf polling instead of mutation ( #2047 )
...
MutationObserver does not work with mutations in the shadow, so we cannot use it for selectors that pierce shadows.
2020-04-29 20:46:42 -07:00
Pavel Feldman
9f62f29946
feat(install): use shared installation folder by default ( #2044 )
2020-04-29 18:59:20 -07:00
Pavel Feldman
c55db6d315
browser(webkit): roll webkit to 1213 ( #2045 )
2020-04-29 18:40:18 -07:00
Yury Semikhatsky
78b44ed2a0
fix: report new window downloads ( #2019 )
2020-04-29 18:36:24 -07:00
Yury Semikhatsky
5993a6a0e0
fix: throw from eval methods if >1 argument is passed ( #2043 )
2020-04-29 18:35:04 -07:00
Pavel Feldman
0228ba4992
feat(registry): implement download registry ( #1979 )
2020-04-29 17:19:21 -07:00
Pavel
cccf3f7248
chore: bringing back paused=true
2020-04-29 17:02:24 -07:00
Pavel Feldman
c01e554edd
test: add more pausing tests ( #2040 )
2020-04-29 16:17:03 -07:00
Pavel Feldman
534857269b
fix(console): respect repeat count in webkit ( #2032 )
2020-04-29 12:13:57 -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
Pavel Feldman
6c94f604d8
feat(chromium): roll to r763809 ( #2028 )
2020-04-29 08:44:09 -07:00
Pavel Feldman
2cdf297245
chore: remove uncompiled download-browser ( #2018 )
2020-04-28 17:06:01 -07:00
Dmitry Gozman
7f5d89009c
test(click): add a test for 'Element has moved' exception ( #2017 )
2020-04-28 11:58:22 -07:00
Pavel Feldman
d52bd92983
chore: read browser revisions off browsers.json ( #2009 )
2020-04-28 10:37: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
Pavel Feldman
7f8aa703dd
api(waitFor): remove waitFor, use specialized wait functions ( #1995 )
2020-04-27 12:08:29 -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
Pavel Feldman
b60c006c63
chore: simplify and restructure downloads ( #1974 )
2020-04-24 19:14:10 -07:00
Yury Semikhatsky
7c9762fae9
fix: support blob downloads ( #1954 )
2020-04-23 20:04:19 -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
Joel Einbinder
671cfa0a54
fix(types): support objects with typed keys and values ( #1752 )
...
There are a few places in the API where we use objects as maps. This patch adds them to docs and the types.
For `env`, we accept booleans and numbers as well because they are often used for their string values.
2020-04-23 14:45:57 -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
Pavel Feldman
2fcc2b5552
chore(chromium): resize browser frame when emulating viewport ( #1924 )
2020-04-23 10:38:58 -07:00
Ross Wollman
53c78a8a29
fix(downloads): fix acceptDownloads
complaint ( #1777 ) ( #1923 )
2020-04-22 17:02:15 -07:00
Yury Semikhatsky
00e8d88777
fix: do not auto wait for downloads ( #1921 )
2020-04-22 15:08:39 -07:00
Pavel Feldman
6ecac8c164
chore: restore networkidle0 alias ( #1920 )
2020-04-22 10:52:01 -07:00
Pavel Feldman
5b085fdf03
feat(logger): introduce context-level logger ( #1896 )
2020-04-20 23:24:53 -07:00
Pavel Feldman
47c384112c
chore: bring back DEBUG= logging ( #1891 )
2020-04-20 20:00:55 -07:00
Pavel Feldman
0656771167
api(networkidle): remove networkidle2 ( #1883 )
2020-04-20 16:52:26 -07:00
Yury Semikhatsky
fb45c75b98
feat(webkit): simulate device orientation events ( #1852 )
2020-04-20 14:43:44 -07:00
Dmitry Gozman
d1a95518be
chore: remove old TODOs, add a test ( #1879 )
2020-04-20 13:01:06 -07:00