Commit graph

809 commits

Author SHA1 Message Date
Pavel Feldman 92a0d24069
fix: restore timeout error name (#28408)
Fixes https://github.com/microsoft/playwright/issues/28404
2023-11-29 17:28:17 -08:00
Yury Semikhatsky 15a8ba5158
fix(route): correctly remove expired handlers (#28385)
* Check if handler is still in the route list before calling it
* Check if the handler is still in the list before removing it after
`times` expiration
2023-11-28 17:52:16 -08:00
Pavel Feldman 3f55587dd8
feat(vrt): bring back wait for font loading (#28226) 2023-11-17 17:16:32 -08:00
Mattias Wallander c6d154f9c4
feat: Add support for dispatching device motion events (#28067)
References #27887.
2023-11-13 08:58:46 -08:00
Max Schmitt 1aee48f2d0
test: COEP/COOP/CORP isolated iframe should work (#28083)
https://github.com/microsoft/playwright/issues/28082
2023-11-10 16:44:02 +01:00
Max Schmitt 2954e1263e
test: skip dispatchEvent(deviceOrientation) tests on Android (#28077)
Its [only available to
SecureContexts](https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/modules/device_orientation/device_orientation_event.idl;l=34?q=device_orientation_event.idl&ss=chromium%2Fchromium%2Fsrc)
which our loopback in Android is not treated as a SecureContext.

We could either move it into the library tests, but then loose page test
coverage or just skip it. I decided for the latter.

Relates https://github.com/microsoft/playwright/pull/27960.
2023-11-10 16:28:45 +01:00
Max Schmitt 5f527fedb1
fix: JSHandle preview text for non-ascii attributes/children (#28038)
This surfaced in .NET that the string in the driver got incorrectly cut,
then transferred to .NET as an invalid UTF8 character
[`\ud835`](https://charbase.com/d835-unicode-invalid-character) which
.NET wasn't able to parse and threw an error.

Drive-by: Move similar function from
`packages/playwright-core/src/client/page.ts` into isomorphic
`stringUtils`.

https://github.com/microsoft/playwright-dotnet/issues/2748
2023-11-09 00:11:01 +01:00
Mattias Wallander 5a9fa69c6d
feat: Add support for dispatching device orientation events (#27960)
Fixes #27887
2023-11-08 09:50:25 -08:00
Max Schmitt 07d5093583
test: test gardening (#28001) 2023-11-07 08:47:15 -08:00
Pavel Feldman 817a130cdc
chore: dispose-based callback termination (#27911) 2023-11-01 16:36:39 -07:00
Max Schmitt cff9ac04e4
fix: cross-origin Page.goto referer (#27859)
Fixes https://github.com/microsoft/playwright/issues/27765
2023-10-31 11:10:15 +01:00
Dmitry Gozman 100d3b2601
fix(css parser): support nested builtin functions (#27841)
Things like `:nth-child(1 of :has(span:nth-last-child(3)))`.

Fixes #27743.
2023-10-27 13:16:12 -07:00
Yury Semikhatsky 0ade5aa9ad
fix: ignoreCase in toHaveAttribute (#27809)
Fixes #27795
2023-10-25 19:22:13 -07:00
Yury Semikhatsky 5e51a734e7
fix: interrupt request.allHeaders()/response() on page.close() (#27695)
Reference https://github.com/microsoft/playwright/issues/27227
2023-10-23 12:45:35 -07:00
Pavel Feldman 5752a28f87
chore: make tests strict (1) (#27731) 2023-10-23 09:31:30 -07:00
Max Schmitt f48861ddee
fix(inspector): highlight xpath/css locators without engine prefix (#27742)
Motivation: As of today when a user inspects a Locator which is a xpath,
it won't work if the user has not prefixed it with `xpath=` because we
internally compare the given with the generated locator.

Works: `locator('xpath=//div[contains(@class, "foo")]')`
Does not work: `locator('//div[contains(@class, "foo")]')`

Relates
https://github.com/microsoft/playwright/issues/27707#issue-1952360264
Fixes
https://github.com/microsoft/playwright-dotnet/issues/2718#issuecomment-1771073816

---------

Signed-off-by: Max Schmitt <max@schmitt.mx>
2023-10-23 18:23:28 +02:00
Max Schmitt b1325c9208
fix(keyboard): event order for Escape key (#27711)
This test was failing in Chromium before this change.

Caused by
40d5e3a3c9/packages/playwright-core/src/server/chromium/crInput.ts (L54-L55)

which messes up the order of the protocol calls.

Fixes https://github.com/microsoft/playwright/issues/27709.
2023-10-19 18:18:29 +02:00
Yury Semikhatsky bd58c0d5d2
fix: preserve lastModified timestamp in setInputFiles (#27671)
Fixes #27452
2023-10-18 14:05:09 -07:00
Pavel Feldman f212fd1a83
chore: unify target closed errors (#27540) 2023-10-12 11:05:34 -07:00
Dmitry Gozman a5be8ce86a
test: unflake some more tests (#27546) 2023-10-11 10:34:11 -07:00
Pavel Feldman b807c974c3
chore: allow passing path to property in toHaveJSProperty (#27495)
Fixes https://github.com/microsoft/playwright/issues/27487
2023-10-06 15:47:07 -07:00
Dmitry Gozman 0717b386f9
test: disable some failing tests (#27463) 2023-10-05 15:00:08 -07:00
Jim Hays dcc8dcca73
Fix various typos (Fixes #27396) (#27391)
Fixes https://github.com/microsoft/playwright/issues/27396
2023-10-04 19:56:42 -07:00
Yury Semikhatsky 0eb7a09967
test: screenshot of css box-shadow (#27438)
Reference #21620
2023-10-04 17:26:01 -07:00
Yury Semikhatsky ac48a47d33
feat: toHaveAttribute without value (#27418)
This time not doing it in other languages due to unjustified generator
complexity.

Fixes #27341
2023-10-04 09:27:28 -07:00
Pavel Feldman 47b0255b89
chore: instrument nested workers (#27400)
Ref: https://github.com/microsoft/playwright/issues/27376
2023-10-03 13:08:15 -07:00
Pavel Feldman ae08d03d75
fix(role): compute <output> accessible name from labels (#27415)
Fixes: https://github.com/microsoft/playwright/issues/27403
2023-10-03 13:01:13 -07:00
Dmitry Gozman 2aca7fdcc2
fix(chromium): scroll into view elements inside iframes before waiting (#27394)
This forces iframes to be visible, so that `rAF`s always run.

Fixes #27196.
2023-10-02 17:21:06 -07:00
Yury Semikhatsky ac9d1ec421
test: scroll into view element in cross-origin iframe outside viewport (#27369)
Reference: #27196
2023-09-29 17:23:51 -07:00
Dmitry Gozman c8143748e6
chore: remove Page._didDisconnect (#27317)
Instead of having `didClose` based on page creation/destruction and
`didDisconnect` based on session lifetime, we make session lifetime
being managed by the `CRPage`/`FFPage`/`WKPage` instead.
2023-09-27 14:09:56 -07:00
Pavel Feldman 20f20e9fba
chore: use stock image matcher in library tests (#27319) 2023-09-26 18:46:21 -07:00
Pavel Feldman d6ec1ae399
chore: document chaining expect.extend (#27262)
Fixes https://github.com/microsoft/playwright/issues/15951
2023-09-22 13:56:59 -07:00
Pavel Feldman a6a0257c88
feat(expect): allow chaining expects (#27248) 2023-09-22 12:12:17 -07:00
Pavel Feldman 51a774f8a3
chore: include log in matcherResult (#27164) 2023-09-21 16:23:46 -07:00
Dmitry Gozman 1857a3fb56
fix(evaluate): make sure to try/catch toJSON access (#27238) 2023-09-21 13:31:28 -07:00
Dmitry Gozman b9509b3ec6
Revert "feat(evaluate): serialize map and set (#26730)" (#27219)
This reverts commit ee203b782c.

References #24040.
Fixes #27181.
2023-09-20 18:31:09 -07:00
Dmitry Gozman bb4268d165
fix(locators): do not escape regular expressions with u or v flag (#27188)
Fixes #27163.
2023-09-19 13:16:50 -07:00
Playwright Service f064fb6840
feat(firefox-beta): roll to r1425 (#27128)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Andrey Lushnikov <aslushnikov@gmail.com>
2023-09-19 00:31:58 -07:00
Yury Semikhatsky 8964587d18
test: update webkit test expectations after last roll (#27155)
https://github.com/microsoft/playwright/issues/26992 was fixed by
https://github.com/microsoft/playwright-browsers/pull/635.

Reference https://github.com/microsoft/playwright-browsers/issues/637
Fixes https://github.com/microsoft/playwright/issues/26992
2023-09-18 09:57:18 -07:00
Pavel Feldman 955be6bd61
chore: populate matcherResult for toHaveScreenshot (#27136)
Ref #26929
2023-09-18 09:12:23 -07:00
Pavel Feldman 9fe037fb63
chore: populate matcherResult in web assertions (#27133)
Ref https://github.com/microsoft/playwright/issues/26929
2023-09-16 14:24:10 -07:00
Yury Semikhatsky 1424185c23
test: init script runs onces in iframes (#27057)
Failing test for #26992.
2023-09-13 09:46:59 -07:00
Dmitry Gozman d9eabda09d
fix(locators): escape quotes in regular expressions (#27002)
Fixes #26974.
2023-09-11 15:49:04 -07:00
Yury Semikhatsky f045e13e00
test: contextmenu on right click (#26885)
Reference https://github.com/microsoft/playwright/issues/26515
2023-09-05 16:12:17 -07:00
Sander ee203b782c
feat(evaluate): serialize map and set (#26730)
closes: https://github.com/microsoft/playwright/issues/24040
2023-08-28 14:32:41 -07:00
Max Schmitt 5c72cbdb23
feat(webkit): roll WebKit to r1898 (#26738) 2023-08-28 19:44:52 +02:00
Dmitry Gozman 0ecc13038f
fix(textContent): make it work for ShadowRoot (#26690)
It used to work, but regressed in v1.36.

Fixes #26636.
2023-08-24 12:59:42 -07:00
Dmitry Gozman 44d3770559
fix(selector generator): escape all tag names in css selectors (#26659)
Fixes #26657.
2023-08-23 12:32:08 -07:00
Max Schmitt 820611e3cc
test: fix electron test expectations (#26643)
This regressed in https://github.com/microsoft/playwright/pull/26423
since the certificate got changed.
2023-08-23 17:59:07 +02:00
Dmitry Gozman c4e79eb6ed
feat: replace Locator.type with Locator.pressSequentially (#26624)
Also deprecate `Locator.type`, `Frame.type`, `Page.type` and
`ElementHandle.type`, but not `Keyboard.type`.

References #24614.
2023-08-22 15:21:00 -07:00
Dmitry Gozman 5646875e5c
fix: make Request.frame throw when page is not ready yet (#26616)
Suggest to check `request.isNavigationRequest()` beforehand.

Fixes #24603.
2023-08-22 14:06:21 -07:00
Dmitry Gozman 72bdd43e69
fix(route): make sure Route.fetch works for popup main request (#26590)
References #24603.
2023-08-21 16:48:51 -07:00
Max Schmitt 2edecd4244
test: add libsoup3 related tests (#26572)
https://github.com/microsoft/playwright/issues/22569
https://github.com/microsoft/playwright/issues/23259
2023-08-21 22:12:12 +02:00
Yury Semikhatsky 14a57a788b
test: screenshot of css transformation (#26533)
Failing tests for #26447.
2023-08-18 14:30:43 -07:00
Playwright Service 04b71bf660
feat(chromium-tip-of-tree): roll to r1142 (#26441) 2023-08-12 20:00:16 +02:00
Pavel Feldman 744eb6823f
chore: fix s2 mode (#24525) 2023-07-31 11:24:04 -07:00
Dmitry Gozman c33a32dc9e
test: unflake two tests (#24416) 2023-07-26 06:50:38 -07:00
Pavel Feldman b39fd7283f
chore: skip tests that fail in cross-machine service mode (#24412) 2023-07-25 16:47:04 -07:00
Pavel Feldman 33d62d9a97
chore: do not use relative xpath when querying from document (#24405)
Fixes https://github.com/microsoft/playwright/issues/24399
2023-07-25 12:55:35 -07:00
Andrey Lushnikov fee08a6d3b
fix: properly handle character sets in globs (#24371)
https://github.com/microsoft/playwright/issues/24316
2023-07-24 09:49:05 -07:00
Dmitry Gozman 97d55e275d
fix(locator): locator(locator) method uses internal:chain instead of >> (#24235)
Usually, we can just chain two locators with `>>` to implement
`Locator.locator(locator)`. However, this does not play nicely with more
advanced inner locators like `or` and `and`:

```ts
const child = page.locator('input').or(page.locator('button'));
page.locator('parent').locator(child);
```

One would expect the above to locate "input or button" inside a
"parent". However, currently it locates "input inside a parent" or
"button", because it's translated to `parent >> input >>
internal:or="button"`.

To fix this, we have to wrap inner locator into `internal:chain` and
query it separately from the parent.

Fixes #23724.
2023-07-14 12:21:45 -07:00
Pavel Feldman 5d799606c3
chore: resolve top-level vs dependency after cli filtering (#24216) 2023-07-13 17:54:08 -07:00
Andrey Lushnikov 615f5afb2b
feat(firefox): roll Firefox to 1420 (#24205)
Fixes https://github.com/microsoft/playwright/issues/22753
2023-07-13 03:54:47 -07:00
Pavel Feldman 067faa50d7
chore: migrate Promise.race to scopes to prevent leaks (#24160) 2023-07-11 10:38:08 -07:00
Pavel Feldman 67ad2c2bf4
feat(ui): render all console / network messages in trace (#24115) 2023-07-10 12:56:56 -07:00
Andrey Lushnikov 11dce8d127
feat(firefox): roll Firefox to 1417 (#24069)
Fixes https://github.com/microsoft/playwright/issues/23280
2023-07-06 12:18:02 -07:00
Andrey Lushnikov ea3a29eacd
feat(firefox): roll Firefox to 1415 (#24046)
Fixes https://github.com/microsoft/playwright/issues/23618
2023-07-05 11:58:38 -07:00
Dmitry Gozman 92c738b14a
test: unflake some tests (#23984) 2023-06-30 13:08:18 -07:00
Dmitry Gozman 1d0b48f18b
fix(route): handle escapes in the glob pattern (#23932)
Fixes #23303.
2023-06-28 16:33:04 -07:00
Dmitry Gozman b0b429fed0
feat: support bigint in evaluates (#23930)
Fixes #22719.
2023-06-28 08:55:45 -07:00
Ben Hofferber 752176fd23
feat(goto): better navigation error message (#23609)
While this log message is only a sanity check, it is still beneficial to
have a message that can better inform what is happening when this
occurs.
2023-06-21 11:10:35 -07:00
Max Schmitt 5927b5e92b
test: unflake 'should return url with basic auth info' test (#23798)
On android there is no localhost. We should never use just localhost.
2023-06-20 11:06:30 +02:00
Dmitry Gozman fe5c9dad4d
fix(locators): allow identical frameLocators inside and/or/has (#23740)
So, the following will work:

```
page.frameLocator('iframe').locator('span').or(page.frameLoactor('iframe').locator('div'))
```

The following will not work, because frame locators are not exactly the
same:

```
page.frameLocator('#iframe1').locator('span').or(page.frameLoactor('#iframe2').locator('div'))
```

Also improve the error message to be more readable and include the
locator.

Fixes #23697.
2023-06-19 15:22:26 -07:00
Andrey Lushnikov e171194c86
feat(firefox): roll Firefox to 1414 (#23768)
- roll Firefox stable to 1414
- roll Firefox beta to 1414

Fixes #23138
2023-06-17 12:10:20 -07:00
Dmitry Gozman 09b1e3ffa9
fix(chromium): response.body() for worker requests should work (#23764)
Previously, worker requests used page's session to call
`Network.getResponseBody`.

Fixes #23750.
2023-06-16 20:44:32 -07:00
Max Schmitt 421872f130
test: rewrite 'should fulfill json' test (#23735) 2023-06-15 18:46:19 +02:00
Dmitry Gozman c80a23842b
fix(css): relative-to-scope selectors work (#23665)
Chained selectors where the second part starts with a scope did not work
before:

```ts
page.locator('div').locator(':scope + span')
page.locator('div >> +span')
```
2023-06-13 10:27:25 -07:00
Dmitry Gozman dd417d83d9
fix(locators): escape >> inside a regular expression (#23631)
To avoid selector being parsed as a chain.

Fixes #23540.
2023-06-12 10:34:37 -07:00
Dmitry Gozman 5cfd6d9fe9
fix(cr network): emit sw-handled requests when routing is enabled (#23589)
Previously, such requests were skipped because they never receive
`Fetch.requestPaused` as there was no real network.

Also cleanup some redundant tests and move them from chromium-only file.

Fixes #23424.
2023-06-08 10:33:28 -07:00
Max Schmitt 3c2a8fa306
chore: enable no-floating-promises ESLint rule for tests (#23376)
https://github.com/microsoft/playwright/issues/23339
2023-06-02 21:59:12 +02:00
Dmitry Gozman 1d5add6d99
test: fix should not fulfill with redirect status (#23459) 2023-06-01 23:11:03 -07:00
Dmitry Gozman 6bb5c0a549
fix: make evaluate not wait for scheduled navigations (#23402)
Fixes #23141.
2023-05-31 14:08:44 -07:00
Dmitry Gozman 2505d48b32
test: skip and unflake tests (#23399)
- `should respect tracesDir and name` does not work with service mode;
- `isVisible during navigation should not throw` had a short timeout.
2023-05-31 10:52:29 -07:00
João Neves 7e6e5f0706
feat: Support React forwards refs and memo (#23262)
This PR fixes the react selector behavior to support components that are
wrapped by the memo or forwardRef React builtin functions.

Previously these components couldn't be selected. This PR fixes that
behavior, enabling selecting those components.

Current behavior:
```
const Foo = memo(() => <div id="foo_component" />);
Foo.displayName = "Foo";
...
playwright.$("_react=Foo") -> undefined
```

Fixed behavior:
```
const Foo = memo(() => <div id="foo_component" />);
Foo.displayName = "Foo";
...
playwright.$("_react=Foo") -> <div id ="foo_component" />
```
2023-05-30 17:14:47 -07:00
Max Schmitt 2710fd8d6f
fix: should be able to upload multiple large files (#23360)
Fixes https://github.com/microsoft/playwright/issues/23258
2023-05-30 18:41:09 +02:00
Dmitry Gozman 00b34dddb2
chore: move TestServer under test/ (#23287) 2023-05-25 15:11:16 -07:00
Yury Semikhatsky e0600f4799
test: enable passing request type test (#23273)
Fixes #22812
2023-05-25 09:43:41 -07:00
Jasiel Guillén 700062c836
feat(screenshot): Add customizable color option for masked elements (#23185)
I added a new option to the screenshot method to customize the color of
the box when we want to mask some elements for the screenshot.

The default color is pink `#FF00FF`, but with this new option you can
specify the color you like the most, like a nice green `#00FF00`:

```js
await page.screenshot({
  mask: [page.locator('div').nth(5)],
  maskColor: "#00FF00",
})
```


![ss](https://github.com/microsoft/playwright/assets/23271049/05f754de-0ba6-47a3-ae3e-769720d3da3b)

---------

Signed-off-by: Jasiel Guillén <darkensses@gmail.com>
2023-05-22 18:44:44 -07:00
Yury Semikhatsky 33f3a6002d
test: xhr request type for main resource url (#23174) 2023-05-19 17:59:17 -07:00
Dmitry Gozman be7984bdc9
fix(unroute): do not compare regexp instances (#23101)
References #23092.
2023-05-17 16:27:32 -07:00
Playwright Service aa6eb41466
feat(webkit): roll to r1848 (#23032)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Max Schmitt <max@schmitt.mx>
2023-05-16 12:13:58 +02:00
Max Schmitt 17ab777db5
chore: set min viewport for WK on Win to 250x240 (#22969)
Follow-up for https://github.com/microsoft/playwright/pull/22956.
2023-05-14 16:59:15 +02:00
Playwright Service ba0c4951c3
feat(firefox-beta): roll to r1408 (#22978)
Fixes https://github.com/microsoft/playwright/issues/21760

---------

Signed-off-by: Andrey Lushnikov <aslushnikov@gmail.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Andrey Lushnikov <aslushnikov@gmail.com>
2023-05-12 09:27:08 -07:00
Dmitry Gozman f2ad5bbfbb
fix(isVisible): return false during navigation (#22943)
Instead of throwing "Execution context was destroyed" error.

Drive-by: improve internal error messages for `ScopedRace` errors.

Fixes #22925.
2023-05-10 16:56:59 -07:00
Dmitry Gozman 80f46892cd
fix(getByLabel): ignore empty aria-label (#22935)
Accessible name computation ignores empty aria-label, and so should
getByLabel.

Fixes #22915.
2023-05-10 10:38:46 -07:00
Alexander Sorokin cbf4f39957
fix: React selectors should work after unmount (#22750)
Fixes #22729
2023-05-10 06:18:01 -07:00
Pavel Feldman 2ead6e530f
docs: remove the networkidle mentions (#22906)
Fixes https://github.com/microsoft/playwright/issues/22897
2023-05-09 09:34:57 -07:00
Pavel Feldman 5fb426e7db
fix(webkit): do not update console counter on unhandled rejections (#22890)
Fixes https://github.com/microsoft/playwright/issues/22886
2023-05-08 18:50:40 -07:00
Dmitry Gozman 160888df99
feat(locators): reland locator.and(locator) (#22850)
Removed in #22223.
Fixes #22585.
2023-05-05 11:14:01 -07:00
Dmitry Gozman 42328478ea
feat: make console/dialog events based on subscription (#22835)
This way we do not send events from the server unless the client is
interested.

Fixes #22621.
2023-05-05 11:12:33 -07:00