Commit Graph

516 Commits

Author SHA1 Message Date
Yury Semikhatsky
aab1a746d3
fix: join individual css selectors by > in cssFallback (#13712) 2022-04-25 11:11:24 -07:00
Dmitry Gozman
01a8977b4d
feat: make scrollIntoView work with zero-sized elements (#13702)
We skip waiting for "visible" state that enforces non-zero size.
Other invisible conditions like "display:none" fail during the
actual "scrolling" step and will retry.
2022-04-23 21:48:36 +01:00
Andrey Lushnikov
80bc532874
fix: support undo/redo editing commands (#13606)
Fixes #13601
2022-04-18 22:22:52 -07:00
Yury Semikhatsky
7ffce1da53
chore: remove PlaywrightClient and Docker factory (#13571) 2022-04-15 12:11:38 -07:00
Ross Wollman
11179982fc
chore: force localPaths to be resolved (#13544) 2022-04-14 11:19:36 -07:00
Dmitry Gozman
20dcc45afa
feat: support experimental doc entries (#13446)
feat: support experimental doc entries

- Params/options/members are marked as experimental in the docs.
- `experimental.d.ts` is generated that contains all types and
  includes experimental features.
- `experimental.d.ts` is references in our tests so that we
  can test experimental features.
- `fonts` option is restored as experimental.
2022-04-13 16:13:30 -07:00
Dmitry Gozman
7a5b070e95
fix(type): focus switch between contenteditables in shadow dom (#13510)
Firefox has a bug: calling `node.focus()` does make the node focused,
but some internal "current contenteditable node" is not changed.
Blurring the previous one and focusing the new one helps.
2022-04-12 16:44:27 -07:00
Pavel Feldman
5ae2017a5b
chore: always import type (#13365) 2022-04-06 14:57:14 -07:00
Dmitry Gozman
a09b8dfa36
chore: unrelease 'fonts' screenshot option (#13300) 2022-04-04 14:51:11 -07:00
Pavel Feldman
b0103566c9
fix(addInitScript): tolerate trailing comments (#13275) 2022-04-03 18:47:12 -07:00
Dmitry Gozman
356fc35b85
feat(role selector): allow unquoted name attribute (#13224)
- This supports `role=button[name=Hello]` similarly to CSS selectors.
- Does not change `_react` or `_vue` behavior that insist on quoting the string.
- Uses CSS notion of "identifier" characters.
2022-04-01 10:08:02 -07:00
Yury Semikhatsky
7d7fe3c618
fix(route): remove cors option, compare origin (#13231) 2022-03-31 19:21:21 -07:00
Dmitry Gozman
9fc95dda84
fix(screenshot): do not stall on hideHiglight attempt 2 (#13222)
It turns out that "non stalling evaluate" can stall in Chromium
in some weird conditions, like `document.open` after some weird
`iframe.src` value.

We now only hide highlight in those frames where we did install
highlight in the first place.
2022-03-31 15:33:29 -07:00
Dmitry Gozman
e5182259b1
feat(role selector): docs and minor fixes (#13203)
- Added docs to `selectors.md`.
- `[pressed]` and `[checked]` do not match `"mixed"` states.
- Disallow `[name]` shorthand without a value.
- Renamed `includeHidden` to `include-hidden`.
2022-03-31 13:06:39 -07:00
Dmitry Gozman
a8d4a8aa52
fix(text selector): ignore non-leading quote when parsing (#13170)
Previously, any unpaired quote in the text selector "escaped"
everything till the end of the selector string, and so any
subsequent chained selectors, including ">>" separator were ignored.

An example of misbehaving selector: `text=19" >> nth=1`.

Now, when text selector contains a non-leading quote, selector parser
does not assume it should escape ">>" separator and correctly
tokenizes all selectors from the chain.

Note that this behavior is a workaround for the fact that our
text selectors is somewhat poorly defined in this area. That said,
this workaround seems to be safe enough. It still does not work for
unpaired leading quotes like this: `text="19 >> nth=1`.
2022-03-30 09:33:32 -07:00
Andrey Lushnikov
a9989852d5
feat(vrt): new option "caret" for taking screenshots (#13164)
This has two values:
- `"hide"` to hide input caret for taking screenshot
- `"initial"` to keep caret behavior unchanged

Defaults to `"hide"`.

Fixes #12643
2022-03-29 17:48:13 -07:00
Ross Wollman
13dedd27ca
test: out-of-viewport should be considered visible (#13134)
Closes #13131.

Per the visibility spec on https://playwright.dev/docs/next/actionability#visible:

> Element is considered visible when it has non-empty bounding box and does not have visibility:hidden computed style. Note that elements of zero size or with display:none are not considered visible.

 non-empty bounding box
 does not have visibility:hidden

Given the above conditions are satisfied, the locator is considered visible.

https://github.com/microsoft/playwright/issues/8740 proposes something like `isInViewport()` that would be better suited for checking if an element is offscreen.
2022-03-28 16:10:16 -07:00
Dmitry Gozman
8c19f71c36
feat(selectors): role selector engine (#12999)
This introduces `role=button[name="Click me"][pressed]` attribute-style
role selector. It is only available under `env.PLAYWRIGHT_EXPERIMENTAL_FEATURES`.

Supported attributes:
- `role` is required, for example `role=button`;
- `name` is accessible name, supports matching operators and regular expressions:
  `role=button[name=/Click(me)?/]`;
- `checked` boolean/mixed, for example `role=checkbox[checked=false]`;
- `selected` boolean, for example `role=option[selected]`;
- `expanded` boolean, for example `role=button[expanded=true]`;
- `disabled` boolean, for example `role=button[disabled]`;
- `level` number, for example `role=heading[level=3]`;
- `pressed` boolean/mixed, for example `role=button[pressed="mixed"]`;
- `includeHidden` - by default, only non-hidden elements are considered.
   Passing `role=button[includeHidden]` matches hidden elements as well.
2022-03-28 09:24:58 -07:00
Yury Semikhatsky
5734c18ef8
feat(route): add cors header in route.fulfill (#12943) 2022-03-25 14:56:57 -07:00
Yury Semikhatsky
97e8ead57c
feat: large files upload in ff and wk (#12937) 2022-03-25 13:26:12 -07:00
Dmitry Gozman
722302799e
feat(selectors): support regular expressions in attribute selectors (#12960)
Supports inline regex in addition to string: `_react=BookItem[author = /Ann?a/i]`.
This is similar to `text=` selector, but applies to `_react` and `_vue`
selectors. In the future, will also apply to `role=` selector.
2022-03-22 17:00:56 -07:00
Pavel Feldman
e044bae888
chore: make count() work with _vue selectors (#12899) 2022-03-18 21:22:33 -07:00
Andrey Lushnikov
bb756c5b23
test: mark webkit ubuntu fonts test as fixme (#12885)
References https://github.com/microsoft/playwright/issues/12839
2022-03-18 09:35:41 -07:00
Yury Semikhatsky
a8d80621b2
feat(chromium): large file uploads (#12860) 2022-03-18 09:00:52 -07:00
Dmitry Gozman
f8c4cb3d24
fix(screenshot): do not stall on hideHighlight (#12764) 2022-03-15 14:13:45 -07:00
Andrey Lushnikov
acae63c409
test: skip fonts test on Windows (#12708)
This test requires windows-specific test expectations. We'll use
it as a playground for the rebaseline workflow.

References #12707
2022-03-12 00:14:56 -08:00
Andrey Lushnikov
ef4b34fb7a
feat(toHaveScreenshot): enhance messaging in case of failures (#12677)
This patch:
- adds call logs to track screenshot timeouts, e.g. due to
  waiting for web fonts
- makes sure all snapshot expectations have `.png` extension
- throws a polite error when given a buffer or a string instead of a
  page or a locator
- removes stray NL between error description and call log
- makes sure `apiName` is always correct (and adds a test for it)
2022-03-11 22:40:28 -08:00
Andrey Lushnikov
1dc581c1a0
test: fix test that gave 2 pixel screenshot diff on Linux (#12671) 2022-03-10 20:26:31 -08:00
Andrey Lushnikov
42765804bc
chore: add "allow" as a default value for animations. (#12663) 2022-03-10 17:15:36 -08:00
Andrey Lushnikov
49e66c7f08
feat(screenshot): introduce new "fonts" option for screenshots (#12661)
This option will wait for webfonts to load before taking screenshots.
2022-03-10 16:54:36 -08:00
Max Schmitt
90e76f9adb
test: rename #smoke to @smoke as test tags (#12652) 2022-03-10 19:42:52 +01:00
Max Schmitt
d805cd9097
chore: skip failing android tests 2 (#12647) 2022-03-10 18:46:50 +01:00
Andrey Lushnikov
e8ad7eb3f2
browser(firefox): roll Firefox to M97 (#12574)
Firefox 98 doesn't work on Ubuntu aarch64 yet.

https://github.com/microsoft/playwright/issues/12557
2022-03-07 16:16:42 -08:00
github-actions[bot]
702536d962
feat(webkit): roll to r1616 (#12541)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Yury Semikhatsky <yurys@chromium.org>
2022-03-06 12:22:47 +01:00
Andrey Lushnikov
b45c788a33
fix(disable-animations): rename boolean to enum (#12503)
Enums are more flexible in the long run since they let us easily
extend API.

References #12441
2022-03-04 11:02:59 -08:00
Max Schmitt
cb5b4cf06b
test: skip highlight tests on != default mode (#12471) 2022-03-02 23:46:33 +01:00
Yury Semikhatsky
608873e945
test: inputValue works for label selector (#12447) 2022-03-02 09:33:44 -08:00
Pavel Feldman
61a6cdde70
feat(api): expose locator.highlight (#12420) 2022-03-01 13:56:21 -08:00
Max Schmitt
d2ae6a9db2
fix: isDisabled check with option/optgroup (#12437) 2022-03-01 18:10:16 +01:00
Andrey Lushnikov
66eda836c9
browser(ff-beta): roll Firefox-Beta to 98b10 (#12421)
Firefox reverted the third-party cookies recently:
https://bugzilla.mozilla.org/show_bug.cgi?id=1751435

Thus changes in tests.

References #12225
2022-03-01 00:17:33 -08:00
Mateusz Burzyński
eaa98ce53a
feat(keyboard): support simple copy-pasting using meta+c/v (#10828)
It's a straightforward change to support new, common, keyboard commands

Note that I've tested this locally with Chrome on my Mac but it seems that CI doesn't want to pass Chrome tests - it's running on ubuntu though. Does this mean that I should introduce per-platform editing commands? At the moment there is only a single [`macEditingCommands`](0ed33522c5/packages/playwright-core/src/server/macEditingCommands.ts) file.

References https://github.com/microsoft/playwright/issues/12000

Co-authored-by: Andrey Lushnikov <aslushnikov@gmail.com>
2022-02-28 13:43:43 -08:00
Max Schmitt
6438aed36c test: skip test in electron
Follow-up for #12371
2022-02-26 00:17:37 +01:00
Max Schmitt
a95d2320ad
test: mark failing android tests as fixme / fix them (#12371) 2022-02-25 22:56:51 +01:00
Max Schmitt
be2e4866b0
test: add test for sendBeacon and asserting request body (#12274) 2022-02-22 20:15:24 +01:00
Andrey Lushnikov
c98d595bea
fix: support hiding caret in case of matching style rule (#12172) 2022-02-17 14:05:56 -08:00
Andrey Lushnikov
65697d64be
test: fail canvas test on MacOS 11 and less (#12131) 2022-02-15 14:00:26 -08:00
Andrey Lushnikov
363b8a6970
feat: support mask option in screenshot methods (#12072)
Fixes https://github.com/microsoft/playwright/issues/10162
2022-02-15 07:05:05 -08:00
Mateusz Burzyński
b0cd5b1420
feat(mouse): set .buttons correctly for basic mouse commands in Chrome (#10698)
Co-authored-by: Andrey Lushnikov <aslushnikov@gmail.com>
2022-02-09 20:48:16 -08:00
Andrey Lushnikov
6f87955243
feat: introduce disableAnimations option for screenshots (#11870)
This option stops all kinds of CSS animations while doing screenshot:
- CSS animations
- CSS transitions
- Web Animations

Animations get different treatment depending on animation duration:
- finite animations are fast-forwarded to its end, issuing the
  `transitionend` event.
- Infinite animations are resetted to its beginning, and then
  resumed after the screenshot.

References #9938, fixes #11912
2022-02-09 12:52:11 -08:00
Darío Kondratiuk
48cc41f3e7
feat: add key support on react engine (#11970)
I've got [this question](https://stackoverflow.com/questions/71050193/react-locator-example/71052432#71052432) on StackOverflow. And although, in that case, the `key` was part of the `props` attributes. That might not always be true.

I am bringing this to the tell to see what you think about this.
I'm also fixing a typo :)
2022-02-09 11:33:15 -08:00
Andrey Lushnikov
439c8e9c40
test: fix tests for chromium-based browser channels (#11974) 2022-02-09 11:29:16 -08:00
Dmitry Gozman
af4944388f
test: skip "should support has:locator" on tracing bots (#11876) 2022-02-04 15:34:33 -08:00
Dmitry Gozman
c45dacc834
feat(codegen): make selector generator strict (#11856)
This is required to migrate to locators.
2022-02-04 07:34:23 -08:00
Andrey Lushnikov
547a32885b
feat: hide blinking cursor when making screenshots (#11854)
References #9938
2022-02-03 21:44:23 -08:00
Dmitry Gozman
c9e99d5d97
test: reenable "should intercept network activity from worker 2" (#11851) 2022-02-03 17:16:40 -08:00
Dmitry Gozman
f587a43932
feat(locator): "has" option (#11411)
This introduces `locator('div', { has: locator })` syntax that matches elements containing other elements.
Can be used together with `hasText`.

Internally, has selector engine takes an inner selector escaped with double-quotes:
`div >> has="li >> span >> text=Foo" >> span`.
2022-02-02 16:55:50 -08:00
github-actions[bot]
fba523a9d0
feat(chromium): roll to r965416 (#11802)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Max Schmitt <max@schmitt.mx>
2022-02-02 11:39:10 +01:00
Max Schmitt
e0c4e66272
chore: bump dev dependencies (#11779) 2022-02-01 17:12:11 +01:00
Yury Semikhatsky
84248f6e48
fix(webkit): handle will/didCheckPolicyForNavigation (#11631) 2022-01-27 14:58:43 -08:00
Yury Semikhatsky
d305a2ab3f
fix: throw in route.continue if it is called twice (#11701) 2022-01-27 14:58:02 -08:00
Yury Semikhatsky
ba86dab83a
test: enable filechooser test in chromium (#11653) 2022-01-26 12:39:59 -08:00
Dmitry Gozman
687a16b848
feat(locator): introduce locator.page() getter (#11630) 2022-01-26 07:58:58 -08:00
github-actions[bot]
5382a794fe
feat(chromium): roll to r960211 (#11487)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Andrey Lushnikov <aslushnikov@gmail.com>
2022-01-24 08:40:45 -08:00
Yury Semikhatsky
8a7e4f9814
test: update wk win expectations for "should report raw headers" (#11558) 2022-01-21 21:49:28 -08:00
Max Schmitt
5876799228
test: response event for cached img elements (#11506) 2022-01-20 14:38:19 +01:00
campersau
4a9fc4d30b
test: fix visibility spelling in test (#11476) 2022-01-19 14:46:27 +01:00
Yury Semikhatsky
cfb86a74fa
fix(webkit): filechooer interception after process swap (#11415) 2022-01-14 17:33:07 -08:00
Dmitry Gozman
93a20ee419
test: add a failing test for filechooser after navigation (#11381) 2022-01-13 11:24:21 -08:00
Andrey Lushnikov
bd837b5863
test: enable autowaiting test on webkit (#11343)
Fixes #11219
2022-01-12 01:52:58 -08:00
Dmitry Gozman
359d523ec3
fix(selectors): allow :scope with additional css (#11338) 2022-01-11 18:40:29 -08:00
github-actions[bot]
d31f13468a
feat(webkit): roll to r1592 (#11261)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Andrey Lushnikov <aslushnikov@gmail.com>
2022-01-10 05:02:07 -08:00
Pavel Feldman
dc07fa6da6
fix(locator.count): do not touch main workd when computing count (#11256) 2022-01-07 15:52:14 -08:00
Pavel Feldman
ee0ea82d46
test: improve click-during-navigation (#11252) 2022-01-07 12:12:24 -08:00
Pavel Feldman
f0269e7144
test: gardening (#11235) 2022-01-07 09:11:54 -08:00
Pavel Feldman
eaf2507ec1
test(webkit): add a failing test for #11219 (#11233) 2022-01-06 17:13:55 -08:00
Pavel Feldman
e1772f15b5
fix(click): don't fail on stale context while clicking (#11228) 2022-01-06 15:15:11 -08:00
Dmitry Gozman
8e75dbffaa
fix(errors): waitForEvent/Request/Response should point to the api call (#11229) 2022-01-06 14:47:52 -08:00
Yury Semikhatsky
2cc4dfc96f
test: set-cookie response header after route.fulfill (#11044) 2022-01-05 17:35:26 -08:00
Yury Semikhatsky
a96cb5aff5
test: mark test as failing until next wk roll (#11215) 2022-01-05 17:06:31 -08:00
Dmitry Gozman
be896848bb
fix(selectors): properly determine visibility of display:contents (#11212) 2022-01-05 16:54:15 -08:00
Diego Pino
1857a16381
browser(webkit): roll to 23/12/21 (#11105) 2022-01-05 15:56:22 -08:00
Pavel Feldman
913c9ab59f
test: add a failing test for #11202 (#11206) 2022-01-05 15:53:53 -08:00
Pavel Feldman
328f3e265e
test: add a failing canvas screenshot test (#11180) 2022-01-04 17:41:04 -08:00
Andrey Lushnikov
e8263b8f48
test: skip fill tests for android (#11155)
This will drastically speedup our Android bots and free compute faster.
2022-01-03 15:02:31 -08:00
Pavel Feldman
38801a3b85
test: add a test for leading and trailing spaces (#11156) 2022-01-03 12:51:58 -08:00
Andrey Lushnikov
b6c2b32b53
test: introduce #smoke tests (#11135)
This patch introduces 109 "#smoke" tests - a subset of tests that makes
sure that basic Playwright functionality works. This set is loosely
defined; feel free to add/remove tests to the set. The only goal is to
keep this set minimal & fast to run.

I tried to pick tests so that various parts of Playwright functionality
are exercised.
2021-12-29 18:51:28 -08:00
Andrey Lushnikov
1ee2d01f1c
test: unflake page-click.spec.ts test (#11050) 2021-12-21 17:31:13 -08:00
Yury Semikhatsky
921aa02ce4
feat(webkit): roll to r1588 (#10976) 2021-12-16 12:43:57 -08:00
Andrey Lushnikov
2957b7b013
feat(firefox-beta): roll to r1310 (#10954) 2021-12-15 17:33:09 -08:00
Yury Semikhatsky
230e0b7049
fix(wheel): throw on wheel access in mobile WebKit (#10946) 2021-12-15 11:57:28 -08:00
Pavel Feldman
04e82ce71c
feat(api): make withText an option (#10922) 2021-12-14 15:37:31 -08:00
Mateusz Burzyński
8b5e146b90
test(mouse): add a test for pointerdown event with custom button (#10697) 2021-12-12 10:01:45 -08:00
Max Schmitt
aca350d17c
test: fix failing accessibility tests in msedge-dev (#10806) 2021-12-08 15:21:09 -08:00
Yury Semikhatsky
3272af9f96
test: mark "fill color input" test as dailing on wk windows (#10792) 2021-12-08 09:39:14 -08:00
Max Schmitt
fdb633dc8b
fix: support regexp flags with locator.withText() (#10779) 2021-12-07 19:33:04 -08:00
Mateusz Burzyński
55fb53ef82
test(keyboard): add tests for click events being dispatched when Space/Enter gets pressed while focus is on a button (#10748) 2021-12-07 14:48:27 -08:00
Andrey Lushnikov
a89fe3ec5c
fix: support shadow DOM with Vue and React selectors (#10742)
There were two issues:
- we did not find VDom roots inside shadow DOM
- we incorrectly relied on DOM's `contain` method to determine if
  VDom's rendered node belongs to requested scope.

Fixes #10123
2021-12-07 11:23:37 -08:00
Dmitry Gozman
ec74fa6a76
feat(fill): support color and range input types (#10736) 2021-12-06 15:43:10 -08:00
Dmitry Gozman
516360be5f
fix(waitForEvent): include timeout value in the timeout message (#10738) 2021-12-06 15:42:57 -08:00
Pavel Feldman
aef0444ff5
fix(focus): make sure strictness is respected (#10685) 2021-12-03 10:22:50 -08:00
Pavel Feldman
f583f1604c
feat(locator.withText): allow narrowing locators to those with text (#10688) 2021-12-03 09:27:06 -08:00
Pavel Feldman
5bde171657
fix(chromium): disable AutoExpandDetailsElement as it breaks the web (#10679) 2021-12-02 13:04:15 -08:00
Pavel Feldman
2ac9c08d0c
feat(inputValue): allow on labels, retarget (#10666) 2021-12-02 10:31:06 -08:00
Dmitry Gozman
15b92e3f62
test: disable flaky test on wk/ff (#10662)
This is a Chromium-specific test, skip it on wk/ff.
2021-12-02 07:44:13 -08:00
github-actions[bot]
c9881a28f1
feat(firefox): roll to r1307 (#10605)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Max Schmitt <max@schmitt.mx>
2021-11-30 14:26:26 +01:00
Max Schmitt
90e7a45211
test: add test for time/timeLog/timeEnd formatting (#10586) 2021-11-29 17:18:20 -08:00
Max Schmitt
e6ef3e3680
test: add console.info/debug tests (#10577) 2021-11-29 22:20:46 +01:00
Joel Einbinder
0878548238
test(wheel): add test for scrolling while emulating mobile (#10224) 2021-11-23 02:59:32 -05:00
Joel Einbinder
6d3bb458f9
fix(firefox): round down mouse coordinates (#10483) 2021-11-23 02:55:32 -05:00
Joel Einbinder
d70e37de80
feat: locator.dragTo (#10287) 2021-11-22 20:27:26 +01:00
Joel Einbinder
06ab3c0fda
feat: consider fieldset and aria-disabled when checking if an element is enabled (#9927)
Co-authored-by: Max Schmitt <max@schmitt.mx>
2021-11-22 20:25:06 +01:00
github-actions[bot]
e76edef3e2
feat(webkit): roll to r1579 (#10409)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Max Schmitt <max@schmitt.mx>
2021-11-19 11:11:27 +01:00
Dmitry Gozman
d9f849fb14
feat(test runner): replace declare/define with "options" (#10293)
1. Fixtures defined in test.extend() can now have `{ option: true }` configuration that makes them overridable in the config. Options support all other properties of fixtures - value/function, scope, auto.
```
const test = base.extend<MyOptions>({
  foo: ['default', { option: true }],
});
```

2. test.declare() and project.define are removed.

3. project.use applies overrides to default option values and nothing else. Any test.extend() and test.use() calls take priority over config options.

Required user changes: if someone used to define fixture options with test.extend(), overriding them in config will stop working. The solution is to add `{ option: true }`.

```
// Old code
export const test = base.extend<{ myOption: number, myFixture: number }>({
  myOption: 123,
  myFixture: ({ myOption }, use) => use(2 * myOption),
});

// New code
export const test = base.extend<{ myOption: number, myFixture: number }>({
  myOption: [123, { option: true }],
  myFixture: ({ myOption }, use) => use(2 * myOption),
});
```
2021-11-18 15:45:52 -08:00
github-actions[bot]
24cc266de0
feat(chromium): roll to r941965 (#10372)
Co-authored-by: Max Schmitt <max@schmitt.mx>
2021-11-18 18:46:44 +01:00
Yury Semikhatsky
c5cb73003f
docs: OR for css and xpath selectors (#10285) 2021-11-15 13:54:12 -08:00
Andrey Lushnikov
faf9d901c1
chore: fix test to work on Windows with auto.crlf = false (#10296) 2021-11-13 00:29:51 -08:00
Dmitry Gozman
6a46711347
fix(chromium): race between loadingFailed and requestPaused (#10289) 2021-11-12 19:06:53 -08:00
Andrey Lushnikov
80da0f7b69
test: test gardening (#10258) 2021-11-12 00:00:13 -08:00
Max Schmitt
ac629afd46
chore: fix API name capitalisation with APIRequestContext (#10240) 2021-11-11 08:46:17 -08:00
Pavel Feldman
4e90eb9406
api(frame-locator): allow nth, first, last (#10195) 2021-11-09 14:14:20 -08:00
Max Schmitt
d25b0f70bc
chore: api testing test nits (#10180) 2021-11-09 14:11:42 -08:00
github-actions[bot]
5b604acedb
feat(chromium): roll to r939194 (#10165)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Andrey Lushnikov <aslushnikov@gmail.com>
2021-11-08 20:05:39 -08:00
Dmitry Gozman
3cc839e013
fix(route): catch all Route methods when page closes (#10140)
This fixes a common scenario where you setup a route,
and the page closes (e.g. test ends) while we are aborting/continuing
some requests that are not instrumental to the test itself.
2021-11-08 15:13:15 -08:00
Pavel Feldman
4553d76fce
api(frame-locator): introduce frame locators (#10102) 2021-11-08 09:58:24 -08:00
Dmitry Gozman
61ff52704c
feat(input): perform hit target check during input (#9546)
This replaces previous `checkHitTarget` heuristic that took place before the action
with a new `setupHitTargetInterceptor` that works during the action:
- Before the action we set up capturing listeners on the window.
- During the action we ensure that event target is the element we expect to interact with.
- After the action we clear the listeners.

This should catch the "layout shift" issues where things move
between action point calculation and the actual action.

Possible issues:
- **Risk:** `{ trial: true }` might dispatch move events like `mousemove` or `pointerout`,
because we do actually move the mouse but prevent all other events.
- **Timing**: The timing of "hit target check" has moved, so this may affect different web pages
in different ways, for example expose more races. In this case, we should retry the click as before.
- **No risk**: There is still a possibility of mis-targeting with iframes shifting around,
because we only intercept in the target frame. This behavior does not change.

There is an opt-out environment variable PLAYWRIGHT_NO_LAYOUT_SHIFT_CHECK that reverts to previous behavior.
2021-11-05 17:31:28 -07:00
Yury Semikhatsky
15a8b29961
test: goto finishes on window.stop() (#10070) 2021-11-05 16:51:22 -07:00
Pavel Feldman
f3fd3ebc37
chore(frame-selector): add more tests, use frame logic in element handle (#10097) 2021-11-05 16:36:01 -07:00
Pavel Feldman
f19864890f
feat(iframe): make iframe selectors work w/ element handles (#10063) 2021-11-05 11:06:04 -07:00
Yury Semikhatsky
83657a1df4
test: skip interception tests in electron (#10056) 2021-11-04 13:36:04 -07:00
Pavel Feldman
78e99249a3
feat(frame-selector): intial implementation (#10018) 2021-11-04 13:28:35 -07:00
github-actions[bot]
9b4d9460eb
feat(chromium): roll to r936784 (#9986) 2021-11-04 12:35:31 -07:00
Dmitry Gozman
2cfc997614
test: detach frame while clicking race (#10029) 2021-11-03 19:41:31 -07:00
Dmitry Gozman
c373986ca0
fix(evaluate): reject all context operations when frame detaches (#9987) 2021-11-03 10:44:50 -07:00
Yury Semikhatsky
5abb5d74ea
chore: delete legacy response interception code (#9995) 2021-11-02 17:48:38 -07:00
Yury Semikhatsky
06cf7132be
test: unflake wheel test in ff (#9989) 2021-11-02 13:56:12 -07:00
Yury Semikhatsky
13cc266b37
feat: add "commit" to possible waitUntil options (#9892) 2021-11-01 17:12:19 -07:00
Pavel Feldman
d79aae633c
feat(html): render the suite name before test title (#9909) 2021-11-01 10:53:42 -07:00
Dmitry Gozman
227e3da62f
fix(test runner): do not reuse worker that did not teardown scopes (#9872)
Two bug fixes:
- Do not use the worker that is being shutdown for a new job.
- Report unhandled errors during "expected to fail" tests as
  fatal errors.
2021-10-29 13:36:12 -07:00
Pavel Feldman
2e4722d460
test: migrate to upstream fixtures (#9835) 2021-10-28 08:31:30 -07:00
github-actions[bot]
9af5aaabbb
feat(firefox): roll to r1298 (#9848) 2021-10-28 07:41:58 -07:00
Pavel Feldman
31faa7d9a7
chore: sort out base fixtures (#9809) 2021-10-27 08:28:53 -07:00
Pavel Feldman
273122b761
chore: align internal test harness w/ @playwright/test (#9796) 2021-10-26 13:45:53 -07:00
Joel Einbinder
deec8fd6c2
test(chromium): failing test for resolving responses after a navigation (#9651) 2021-10-21 08:29:04 -07:00
Max Schmitt
ba2576c5b9
test: page.content() hangs when there is no iframe src (#9674) 2021-10-21 16:59:33 +02:00
Pavel Feldman
225145fc3e
fix(expect): do not fail on navigated frames while polling (#9659) 2021-10-20 13:01:05 -07:00
Andrey Lushnikov
dddf70cead
tests: fix variety of tests (#9630) 2021-10-19 17:03:15 -07:00
Joel Einbinder
53c866c0f2
fix(monorepo): explicitly list package.json exports instead of using glob patterns (#9584) 2021-10-19 12:28:02 -04:00
Yury Semikhatsky
22fe1662c0
test: remove stray logging (#9589) 2021-10-18 11:13:18 -07:00
Yury Semikhatsky
fd81982c33
fix(selectors): combine visible with other selectors (#9585) 2021-10-18 10:47:37 -07:00
Yury Semikhatsky
a186278f2e
fix(selectors): empty text matcher (#9548) 2021-10-15 17:00:45 -07:00
Andrey Lushnikov
01c702adbb
chore: move "service" mode tests to experimental grid (#9531)
This patch moves service tests to use experimental grid.
Test changes:
- `proxy.spec.ts` - proxy setup is not supported at all in service mode.
  This is because we already use proxy for browsers to properly resolve
  localhost.
- `har.spec.ts` - tests disabled since connection port is different.
2021-10-15 16:11:53 -07:00
Yury Semikhatsky
25a8023720
test: popup event for pages opened from iframe (#9484) 2021-10-14 12:22:05 +02:00
github-actions[bot]
c054d19a5d
feat(webkit): roll to r1562 (#9476)
Co-authored-by: Max Schmitt <max@schmitt.mx>
2021-10-14 02:00:25 +02:00
Max Schmitt
94680a702d test: mark 'should fulfill with multiple set-cookie' as fixme on Electron 2021-10-12 10:59:39 +02:00
Joel Einbinder
c89d5a50dd
chore: migrate to monorepo (#9421) 2021-10-11 16:52:17 +02:00
Ross Wollman
a892fe6db0
test: request.sizes() sometimes hangs in CR (#9349) 2021-10-07 14:26:54 -07:00
Pavel Feldman
9b7e02b88b
test: add a couple more route+headers tests (#9322) 2021-10-06 09:35:54 -07:00
Pavel Feldman
e8fdbbfa03
api: alias Fetch as ApiRequest (#9330) 2021-10-05 18:53:19 -07:00
Yury Semikhatsky
0a7b54abc3
test: set content-type to make test pass (#9331) 2021-10-05 18:30:07 -07:00
Ross Wollman
dbc3c11b8e
test: responseSize incorrect for 404 with content (#9328) 2021-10-05 17:40:08 -07:00
Yury Semikhatsky
0469a7552b
fix(fetch): do not allow to call get/post with request (#9326) 2021-10-05 16:36:15 -07:00
Yury Semikhatsky
701a97beca
chore(fetch): unprefix _request and _newRequest (#9325) 2021-10-05 13:56:34 -07:00
Pavel Feldman
6e803f7186
fix(route): allow allHeaders call within route (#9300) 2021-10-04 16:10:16 -07:00
Yury Semikhatsky
c516729544
fix(interception): make set-cookie work in chromium (#9299) 2021-10-04 13:19:05 -07:00
Pavel Feldman
913821f675
chore: roll Electron to 12.2.1 (#9271) 2021-10-01 19:40:47 -07:00
Yury Semikhatsky
1b4adfb916
fix(webkit): deduce response mime type from content-type (#9264) 2021-10-01 13:04:03 -07:00
Max Schmitt
1302e10637
test: fix 'should fulfill with fetch result and overrides' test (#9252) 2021-10-01 09:47:04 +02:00
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