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