Commit Graph

699 Commits

Author SHA1 Message Date
Andrey Lushnikov
c63348bd03
feat(webkit): roll WebKit to 1550 (#9239) 2021-09-30 10:41:09 -07:00
Pavel Feldman
2b055b3092
feat(api): introduce locator.waitFor (#9200) 2021-09-28 13:57:11 -07:00
Yury Semikhatsky
ebe4e41606
test: add tests for Cross-Origin-Opener-Policy navigation (#9184) 2021-09-28 09:56:07 -07:00
Yury Semikhatsky
962547e716
test: get response body for COOP responses (#9196) 2021-09-28 09:54:05 -07:00
Yury Semikhatsky
6be908d959
test: canvas updates are reflected on screenshots (#9180) 2021-09-27 13:45:03 -07:00
Max Schmitt
cd22072685
chore: enable object-curly-spacing in ESLint (#9168) 2021-09-27 18:58:08 +02:00
Dmitry Gozman
ee25fefb62
chore: remove FatalDOMError (#9119)
We can now throw stackless errors instead.
Also fixed stackless errors on Firefox.
2021-09-24 20:51:09 -07:00
Dmitry Gozman
f4aaebfba0
fix(expect): produce "waiting for selector" log, corner cases (#9140) 2021-09-24 18:55:45 -07:00
Dmitry Gozman
418ce9c17e
test: unflake a few tests (#9142) 2021-09-24 15:05:20 -07:00
Yury Semikhatsky
26bca47a47
test: add failing WebKit navigation test (#9097) 2021-09-23 08:45:40 -07:00
Dmitry Gozman
b978ce33cb
test: unflake "should fail when frame detaches" (#9095) 2021-09-22 17:09:02 -07:00
Dmitry Gozman
f0d23b5d4d
fix(css selector): absolutize relative CSS selectors (#9088)
Selectors like `> div` are replaced by `:scope > div`,
which is useful for combining them with parent selectors.
This is a part of CSS Level 4 spec.
2021-09-22 14:13:00 -07:00
Dmitry Gozman
e85a3a5a41
fix(page.content): throw a nice error when navigation intervenes (#9080) 2021-09-22 10:40:15 -07:00
Dmitry Gozman
b575c0e2e6
fix(actions): do not throw evaluate protocol errors from actions (#8997)
When using `evaluate` or `evaluateHandle` internally during actions
like `click`, we can sometimes get protocol errors if page
navigates. In this case, we throw the protocol error right away.

Instead, we can treat such a protocol error similar to "detached"
error and retry in the new execution context.
2021-09-17 22:18:00 -07:00
Yury Semikhatsky
cc15227327
fix: do not dedup header values (#8998) 2021-09-17 17:19:13 -07:00
Yury Semikhatsky
2380b07f30
feat(fetch): introduce FetchRequest.dispose, fulfill with global fetch (#8945) 2021-09-15 14:02:55 -07:00
Yury Semikhatsky
5141407c6b
fix(fetch): prefix request with underscore (#8922) 2021-09-14 12:56:09 -07:00
Joel Einbinder
afae5bef5d
feat(mouse): page.mouse.wheel (#8690) 2021-09-14 15:22:52 -04:00
Pavel Feldman
a1adc15ea3 tests: mark win32/webkit cookie multivalue test as failing 2021-09-13 20:13:25 -07:00
Pavel Feldman
64f9c3ba1d
feat(api): move fetch api into the namespace (#8871) 2021-09-13 12:43:07 -07:00
Pavel Feldman
798d0bfa9b
chore: fix headers api again (#8854) 2021-09-11 13:27:00 -07:00
Yury Semikhatsky
b6180055df
feat(fetch): make fetch api public (#8853) 2021-09-10 18:36:55 -07:00
Yury Semikhatsky
8d6bcfb66c
test: headers return only last header value for duplicates (#8851) 2021-09-10 16:37:10 -07:00
Max Schmitt
cfe7c1a7e3
fix(sizes): responseBodySize on CR & WK macOS (#8846) 2021-09-10 23:19:34 +02:00
Max Schmitt
8a3e992031
test: add test for responseBodySize with chunked requests (#8839) 2021-09-10 20:53:08 +02:00
Yury Semikhatsky
3c5d8ff18d
test: skip failing interception tests in Electron (#8836) 2021-09-10 09:33:12 -07:00
Dmitry Gozman
e85fba1c7d
fix(check): allow checking/unchecking role=radio elements (#8821)
We already do this for `role=checkbox` but not for radio.
2021-09-09 16:01:21 -07:00
Joel Einbinder
7fe30bb182
test(goto): add failing load event test for webkit (#8809) 2021-09-09 12:42:46 -07:00
Yury Semikhatsky
1ad6c8af6f
test: response finish hangs when page closes (#8816) 2021-09-09 12:27:57 -07:00
Yury Semikhatsky
5550f58284
feat(fetch): fetch with request parameter (#8793) 2021-09-08 16:31:58 -07:00
Yury Semikhatsky
b11b274b0d
feat(fetch): fulfill without passing fetch response body client<->server (#8789) 2021-09-08 14:59:12 -07:00
Pavel Feldman
5a305a9c2e
fix(recorder): move recorder scripts into the main world (#8761) 2021-09-08 14:27:05 -07:00
Max Schmitt
25b5927a4d
docs: sizes enhancements (#8771) 2021-09-08 14:09:11 +02:00
Dmitry Gozman
b30772c67e
fix(tracing): collect apiName for mouse/keyboard/touchscreen (#8755) 2021-09-07 13:48:30 -07:00
Joel Einbinder
e914f6bbc7
feat(network): remove Headers class and add headersArray method (#8749) 2021-09-07 10:27:53 -07:00
Max Schmitt
4f4bc72828
chore: add more tests for Request.sizes() (#8686) 2021-09-07 19:19:12 +02:00
github-actions[bot]
1f43df3249
feat(firefox): roll to r1291 (#8704)
Co-authored-by: Max Schmitt <max@schmitt.mx>
2021-09-06 13:36:10 +02:00
Max Schmitt
e7d4d61442
feat: add forced-colors media query emulation (#6903) 2021-09-03 21:48:06 +02:00
Pavel Feldman
5ac11a7760
fix(headers): fix webkit win headers tests (#8675) 2021-09-02 22:05:22 -07:00
Pavel Feldman
0d5b41ce7b
feat(headers): add Headers.headers that would mimic the behavior of the deprecated getters (#8665) 2021-09-02 20:48:23 -07:00
Pavel Feldman
94170dacbd
chore: rename rawHeaders to allHeaders (#8659) 2021-09-02 11:46:52 -07:00
Pavel Feldman
54bda2c8dd
fix(size): fix some of the request.size() problems (#8645) 2021-09-02 10:39:57 -07:00
Pavel Feldman
42e44f888b
feat(rawheaders): introduce initial plumbing (#8638) 2021-09-01 18:28:20 -07:00
Pavel Feldman
ae3a4f5257
test: speculative fix for redirect event order (#8602) 2021-08-31 17:48:39 -07:00
github-actions[bot]
b6b9b4c170
feat(chromium): roll to r916288 (#8551)
Co-authored-by: Max Schmitt <max@schmitt.mx>
2021-08-30 19:51:06 +02:00
Pavel Feldman
e47bacdecb
fix(cookies): read response headers off extra info event, if any (#8526) 2021-08-30 09:58:44 -07:00
Andrey Lushnikov
cded6bc8d9
test: unskip iframe test on firefox (#8546)
Fixes #8016
2021-08-30 02:49:25 -07:00
Pavel Feldman
e574f4b7fd
feat(api): introduce setChecked convenience method (#8525) 2021-08-29 20:00:40 -07:00
Max Schmitt
3ea2f209ea
fix(har): requestFinished/page-close race (#8518) 2021-08-28 01:09:18 +02:00
Max Schmitt
f3dde0650f
feat(network): expose bodySize, transferSize, and headerSize (#8234) 2021-08-27 22:53:57 +02:00
Andrey Lushnikov
5901cb321d
browser(firefox): fix file chooser in iframes #8510 (#8510)
References #8016
2021-08-27 09:28:24 -07:00
Pavel Feldman
4ed976f2e9
chore: remove isContextDestroyedError heuristic (#8456) 2021-08-26 18:44:49 -07:00
Max Schmitt
998f2ab959
chore: hide Route.fulfill._response from API (#8483) 2021-08-27 00:44:20 +02:00
Andrey Lushnikov
2198769f6c
fix(react-vue): support nested trees (#8467)
Turns out you can mount nested trees in both React and Vue.
This patch changes root discovery to support nested trees.

Fixes #8455
2021-08-26 03:07:33 -07:00
Pavel Feldman
95be45967a
feat(strict): list ambiguous matches when throwing strict exception (#8449) 2021-08-25 14:51:03 -07:00
Yury Semikhatsky
204b6321b4
feat(webkit): bump to 1534 (#8451) 2021-08-25 14:27:49 -07:00
Max Schmitt
6c8c18dc73 test: skip 'should work with lazy loading iframes' on Android 2021-08-25 14:27:44 +02:00
Yury Semikhatsky
a6740c852a
test: webkit linux fails to load application/octet-stream resource (#8424) 2021-08-24 17:34:29 -07:00
Max Schmitt
8e20f13079
feat(routes): add support for the times option (#8399) 2021-08-24 20:45:50 +02:00
Yury Semikhatsky
59422a00f5
feat(route): rename method, add response option (#8386) 2021-08-24 11:07:54 -07:00
Andrey Lushnikov
48e94c15c1
feat: support multiple roots in React and Vue selectors (#8313)
Fixes #8230
2021-08-20 05:05:52 -07:00
Dmitry Gozman
7818f5fa0b
test: add a tracing bot that collects a trace for most contexts (#8316) 2021-08-19 19:09:19 -07:00
Yury Semikhatsky
c00db569e3
test: skip interception test in electron (#8240) 2021-08-19 16:44:13 +02:00
Yury Semikhatsky
8cc4140933
fix: throw if intercepted response fails (#8195) 2021-08-16 16:40:47 -07:00
Yury Semikhatsky
39f663834f
test: intercepted response status line (#8189) 2021-08-13 16:28:42 -07:00
Yury Semikhatsky
4705c90682
fix(firefox): fulfill response with empty body (#8166) 2021-08-12 11:00:20 -07:00
Andrey Lushnikov
04a37aea5e
test: fix electron tests (#8169) 2021-08-12 09:38:46 -07:00
Yury Semikhatsky
59df541de5
fix: fulfill intercepted response with empty body (#8151) 2021-08-11 14:47:05 -07:00
Yury Semikhatsky
1694b3e90c
feat(firefox): response interception after redirects (#8148) 2021-08-11 12:48:30 -07:00
Yury Semikhatsky
41770bf444
feat(webkit): response interception after redirects (#8017) 2021-08-11 11:14:50 -07:00
Pavel Feldman
1d4e2fe98c
feat(nth): make nth and visible selectors public (#8142) 2021-08-11 11:06:09 -07:00
Andrey Lushnikov
4975f4179e
feat: make React and Vue selectors experimental (#8106) 2021-08-10 17:21:16 -07:00
Andrey Lushnikov
792986c92d
feat: support props matching in react and vue selectors (#8104) 2021-08-10 17:10:14 -07:00
Andrey Lushnikov
f455b6edc0
feat: introduce vue selector engine (#8070)
This patch adds support for the `vue` selector engine that allows
selecting DOM elements based on the component name.

> **NOTE**: `vue` engine supports Vue2 and Vue2.

References #7189
2021-08-09 01:34:52 -07:00
Andrey Lushnikov
f3ba2b54ff
feat: introduce react selectors (#8069)
This patch adds support for the `react` selector engine that allows
selecting DOM elements based on the component name.

> **NOTE**: in case of multi-root components (React.Fragment), `react`
engine will select all root DOM elements.

> **NOTE**: `react` engine supports react v15+.

References #7189
2021-08-07 16:51:39 -07:00
Pavel Feldman
2e63c59157
feat(trace-viewer): show remote object previews in console (#8024) 2021-08-06 11:37:36 -07:00
Max Schmitt
98f9f050a1
fix(isVisible): do not throw when element is not connected (#8012) 2021-08-05 21:10:33 +02:00
Yury Semikhatsky
7454647d8e
test: fix another EOL in expectations (#8009) 2021-08-05 08:59:48 -07:00
Yury Semikhatsky
28fb3c776a
feat: response interception after redirects in chromium (#7910) 2021-08-05 08:49:02 -07:00
Max Schmitt
611a8556c8 test: fix flaky locator-convenience test 2021-08-05 11:56:34 +02:00
Max Schmitt
3e491114f2
test: fix some failing locators tests (#7989) 2021-08-04 23:36:27 +02:00
Yury Semikhatsky
8a7cfc08a6
test: use os-speific EOL sequence in test expectaions (#7988) 2021-08-04 20:54:52 +02:00
Max Schmitt
b88199d93e
test: fix locator-misc-1 tests on Android (#7985) 2021-08-04 20:11:17 +02:00
Yury Semikhatsky
c08117d384
test: fulfilled intercepted response body (#7975) 2021-08-03 15:29:51 -07:00
Max Schmitt
2236d74f3f
chore: locator code style nits (#7972) 2021-08-03 13:32:39 -07:00
Joel Einbinder
4fabe5e6e4
feat(drag): sourcePosition and targetPosition (#7803) 2021-08-03 13:12:34 -04:00
Fabian Mendez
731f9453c5
feat(inputValue): implement inputValue for select elements (#7951) 2021-08-03 08:22:40 -07:00
Pavel Feldman
2c095294c5
feat(locators): introduce allTextContents, allInnerTexts (#7920) 2021-07-29 14:09:35 -07:00
Yury Semikhatsky
722f0606c4
feat(firefox): response interception (#7510) 2021-07-29 10:12:47 -07:00
Pavel Feldman
3187ffdebf
feat(expect): add more matchers (#7891) 2021-07-28 15:44:44 -07:00
Pavel Feldman
b8dc0b9156
feat(expect): implement toMatchText (#7871) 2021-07-27 20:26:12 -07:00
Pavel Feldman
cc43f9339f
feat(locators): implement last,nth (#7870) 2021-07-27 15:58:18 -07:00
Pavel Feldman
b9aad5eb86
chore: move locators to strict selectors (#7866) 2021-07-27 15:27:36 -07:00
Pavel Feldman
982f61d575
chore: BFS nodes, simplify querying (#7861) 2021-07-27 12:53:12 -07:00
Pavel Feldman
0a6ae11da1
feat(strict): introduce strict mode (#7851) 2021-07-26 22:00:23 -07:00
Pavel Feldman
827fb80465
feat(locator): implement element locators (#7808) 2021-07-22 21:37:20 -07:00
Joel Einbinder
56ada374df
feat(dragAndDrop): page.dragAndDrop (#6910) 2021-07-19 12:42:55 -05:00
Joel Einbinder
2f07846c9a
fix(webkit): proper value for event.buttons (#7680) 2021-07-16 13:06:00 -05:00
Max Schmitt
cf0fb33540
fix: add log entry if selector resolves to multiple elements on click (#7623) 2021-07-15 22:06:08 +02:00
Joel Einbinder
5389d507e7
test(webkit): disbale page-click-scroll test for WPE (#7627) 2021-07-14 20:52:04 -07:00
Max Schmitt
767e22c6b2
fix(network): process last inserted routes first in request interception (#7585) 2021-07-13 20:22:01 +02:00
Yury Semikhatsky
ee0b16b087
test: MouseEvent.buttons for mouse move events (failing) (#7577) 2021-07-13 09:47:44 -07:00
Yury Semikhatsky
869ef072e7
test: response interception after redirects (failing) (#7534) 2021-07-12 03:07:47 -07:00
Max Schmitt
894ff15e65
Revert "chore(eval): merge internal evaluate functions (#7517)" (#7535)
This reverts commit 7a5ef0d157.
2021-07-09 16:19:42 +02:00
Joel Einbinder
7a5ef0d157
chore(eval): merge internal evaluate functions (#7517) 2021-07-08 23:55:01 -07:00
Max Schmitt
bc2f161a55
chore: roll test-runner to 1.13.0-next-1625774143000 (#7519) 2021-07-08 23:36:11 -07:00
Yury Semikhatsky
02ff213d4d
feat(webkit): intercepted response body (#7229) 2021-07-05 00:27:14 -07:00
Pavel Feldman
b9b0faf120
feat(trace-viewer): render console messages (#7418) 2021-07-01 14:31:20 -07:00
Pavel Feldman
b9d3cccac0
test(pageError): add a failing FF test for page error (#7417) 2021-07-01 13:23:23 -07:00
Max Schmitt
027fc4c0b4
chore: hide request interception for 1.13 (#7425) 2021-07-01 18:33:47 +02:00
Dmitry Gozman
530523cb67
feat(setInputFiles): support label retargeting (#7364)
This way `page.setInputFiles('label')` works, similarly to other input actions.
2021-06-28 14:18:01 -07:00
Pavel Feldman
a8d48a1a48
chore: remove hard-coded wrapApi names (#7347) 2021-06-28 13:27:38 -07:00
Pavel Feldman
5732307280
feat(inputValue): implement *.inputValue() (#7285) 2021-06-23 22:19:20 -07:00
Max Schmitt
103f8ddd06
Revert "chore: update eslint config (#6840)" partly (#7268)
This reverts commit ec7d37d92f.
2021-06-23 11:08:35 +02:00
Max Schmitt
7b6e9b9be9
test: skip some failing req interception tests for current Chrome stable (#7255)
Some tests are currently failing Chrome/Edge stable and Electron:

- page/page-request-intercept.spec.ts:60:1 › [chromium] should support fulfill after intercept
- page/page-request-intercept.spec.ts:73:1 › [chromium] should support request overrides

Was introduced in #7122. This change should give us again full green bots.
2021-06-23 01:47:28 -07:00
Yury Semikhatsky
c0cd2d4579
feat: response interception (#7122) 2021-06-18 11:04:48 -07:00
Dmitry Gozman
cc186be9a9
test: unflake two tests (#7115) 2021-06-14 16:01:18 -07:00
Andrey Lushnikov
d6831df26f
feat: roll Firefox to r1271 (#7067)
References #7015
2021-06-11 10:50:02 -07:00
Max Schmitt
5157f74bcc
test: toJSON property for Arrays after evaluation in FF (#7016) 2021-06-10 10:53:30 -07:00
Dmitry Gozman
e707207d6f
test: update evaluate-no-stall test to get a proper error (#6973)
This test is flaky, and gives us "expected true, got false".
We should see the actual error message instead.
2021-06-08 16:27:44 -07:00
Joel Einbinder
8960584b78
fix(chromium): drag and drop works in chromium (#6207)
Waiting for #6203 to percolate to the cdn. But this all works locally.

Fixes #1094
2021-06-07 10:27:34 -07:00
Dmitry Gozman
f745bf1fbc
chore: bring in folio source (#6923)
- Source now lives at `src/test`.
- Former folio tests live at `tests/playwright-test`.
- We use `src/test/internal.ts` that exposes base test without
  Playwright fixtures for most tests (to avoid modifications for now).
- Test types live in `types/testFoo.d.ts`.
- Stable test runner is installed to `tests/config/test-runner` during `npm install`.
- All deps including test-only are now listed in `package.json`.
  Non-test deps must also be listed in `build_package.js` to get included.
2021-06-06 17:09:53 -07:00
Dmitry Gozman
82041b2f74
test: roll to folio@0.4.0-alpha28 (#6918) 2021-06-04 20:54:58 -07:00
Pavel Feldman
ec2b6a7d8b
test: add a glob test (#6911) 2021-06-04 13:33:45 -07:00
Joel Einbinder
e37c078ea6
test(nonStallingRawEvaluateInExistingMainContext): fix broken test (#6908) 2021-06-04 09:33:44 -07:00
Dmitry Gozman
d4482f3ad3
chore: do not use Array.from in injected script (#6876)
This method is most often overridden by some bad polyfill that
does not work correctly and breaks `$eval` and `$$eval` methods.

As a best-effort fix, use a `[...iterable]` throughout the code.
2021-06-03 15:10:02 -07:00
Dmitry Gozman
837ee08a53
fix(waitForSelector): retry when context is gone during node adoption (#6851)
There is a small window after finishing the "rerunnable task" where
we adopt the node to the main world and navigation could destroy the context.
2021-06-02 20:17:24 -07:00
Yury Semikhatsky
2fde9bc13f
fix(webkit): use new awaitPromise parameter instead of separate command (#6852) 2021-06-02 10:04:47 -07:00
Andrey Lushnikov
251c7d8df1
test: properly disable electron test (#6839)
This test is failing since ee7e38c60d
Dashboard: https://devops.aslushnikov.com/flakiness2.html#browser=electron&platform=Ubuntu+20.04&timestamp=1622444340000

P.S. this is a follow-up to a1106e5d4e -
turns out `it.fail` is still failing in case of a timeout.
2021-06-01 23:09:07 -07:00
Andrey Lushnikov
a1106e5d4e
test: disable test that fails on Electron (#6837)
This test is failing since ee7e38c60d
Dashboard: https://devops.aslushnikov.com/flakiness2.html#browser=electron&platform=Ubuntu+20.04&timestamp=1622444340000
2021-06-01 19:04:24 -07:00
Joel Einbinder
2951f4b065
chore(evaluate): remove private _evaluateInUtility methods (#6815) 2021-06-01 08:36:16 -07:00
Dmitry Gozman
8fefac9b8c
test: roll to folio@0.4.0-alpha21 (#6789) 2021-05-28 17:03:18 -07:00
Yury Semikhatsky
d2ab1951fd
feat(firefox): bump to 1268 (#6779) 2021-05-28 09:16:42 -07:00
Yury Semikhatsky
3b220e50ee
test: add failing test for eval with overridden Array.toJSON (#6766) 2021-05-26 16:02:21 -07:00
Yury Semikhatsky
2e8d65e978
test: skip falky raw headers test in Chromium (#6721) 2021-05-24 11:03:31 -07:00
Max Schmitt
ba29e99ace
feat: added reduced motion media query emulation (#6646) 2021-05-22 01:56:09 +02:00
Dmitry Gozman
57f3a53a7e
test: roll to folio@0.4.0-alpha16 (#6656) 2021-05-20 09:51:09 -07:00
Dmitry Gozman
8cc103f43e
test: unflake sync predicate test (#6654)
Ensure that requests come in order by awaiting them.
2021-05-19 09:05:32 -07:00
Dmitry Gozman
4c3bd11820
test: roll to folio@0.4.0-alpha14 (#6602) 2021-05-16 19:58:26 -07:00
Max Schmitt
cff3bd0422
test: mark android test as failing (#6575) 2021-05-15 07:41:35 -07:00
Andrey Lushnikov
92fa7ddead
feat(firefox): roll to latest Firefoxes (#6561)
Fixes #4704
2021-05-13 13:42:25 -07:00
Dmitry Gozman
8b6b894dd8
test: prepare test to use options as passed (#6557)
This changes `headful` to `headless` to align with launch options.
Also replaces `isChromium` and friends with `browserName`.
2021-05-13 10:22:23 -07:00
Joel Einbinder
6c821a08b3
test(network): adding failing post data test for chromium and webkit (#6484) 2021-05-11 11:46:29 -07:00
Dmitry Gozman
b01ccc282f
test: roll to folio@0.4.0-alpha11 (#6496) 2021-05-11 06:40:06 -07:00
Dmitry Gozman
00ec43974d
test: fix android test failure (#6487) 2021-05-10 11:07:56 -07:00
Andrey Lushnikov
5c1ddc7f0a
fix: fix method elementHandle.frameElement() for framesets (#6468)
Playwright clicks did not work in regular frames due to a bug
in `frameElement` method.

Fixes #6453
2021-05-08 21:25:12 -07:00
Dmitry Gozman
b29b7df47e
fix(connect): handle disconnect in various situations (#6276)
There are a few ways for `connect()` to finish:
- `Browser.close()` from the client side.
- Browser on the server side did exit (e.g. crashed).
- Connection was dropped by either of the sides.

We reduce all the cases to the last one by dropping the
connection when client wants calls `Browser.close()` or
server-side browser exits.

In all these cases we should properly cleanup on the server side,
and ensure that all promises reject on the client side.
2021-05-06 09:34:06 -07:00
Dmitry Gozman
217cbe3e21
test: cleanup bad usages of pageTest (#6430) 2021-05-06 07:08:22 -07:00
Dmitry Gozman
9433cae4fe
test: move all page tests to a subdirectory (#6427) 2021-05-05 19:10:28 -07:00