268 Commits

Author SHA1 Message Date
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
Max Schmitt
a0b0752662
fix: encode launch options correctly when reusing browser (#24174)
Fixes https://github.com/microsoft/playwright/issues/24157
2023-07-12 16:40:55 +02:00
Pavel Feldman
067faa50d7
chore: migrate Promise.race to scopes to prevent leaks (#24160) 2023-07-11 10:38:08 -07:00
Andrey Lushnikov
b9e68e22e0
feat: support Chromium installation on Debian 12 (#24090)
This adds Chromium support for both x86 and arm64 versions of Debian 12.

References https://github.com/microsoft/playwright/issues/24028
2023-07-06 22:41:36 -07:00
Dmitry Gozman
86c1abd934
chore: introduce ReporterV2 interface (#23983) 2023-06-30 13:36:50 -07:00
Dmitry Gozman
1d0b48f18b
fix(route): handle escapes in the glob pattern (#23932)
Fixes #23303.
2023-06-28 16:33:04 -07:00
Moritz Horstmann
bdac3e28a6
fix: best-effort support for TUXEDO OS (#23813)
TUXEDO OS is an Ubuntu based distribution built by the Linux computer
vendor TUXEDO.
2023-06-22 07:14:18 -07: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
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
Pavel Feldman
eacfff8127
chore: make trace viewer work over http (#23531) 2023-06-05 16:30:30 -07:00
Playwright Service
d95b6f40a4
feat(webkit): roll to r1860 (#23494)
Fixes https://github.com/microsoft/playwright/issues/20489
2023-06-05 09:51:39 -07:00
Dmitry Gozman
b518d1f6da
chore: update error message when using wrong cli (#23512)
Now recommends uninstalling other packages. Fixes #23314.

Example messages:

```
Please install @playwright/test package before running "npx playwright show-report"
  npm uninstall playwright playwright-firefox
  npm install -D @playwright/test
```

```
Please install @playwright/test package before running "yarn playwright show-report"
  yarn remove playwright playwright-chromium playwright-firefox playwright-webkit
  yarn add -D @playwright/test
```

```
Please install @playwright/test package before running "pnpm exec playwright show-report"
  pnpm remove playwright
  pnpm add -D @playwright/test
```
2023-06-05 09:51:08 -07:00
Dmitry Gozman
6db6498565
chore: replace sigint handler per browser with a single one (#23317)
Otherwise, multiple sigint handlers (one from each browser) would try to
`process.exit(130)` each.
2023-05-30 13:54:04 -07:00
Max Schmitt
9e75b95153
fix: display testId as regex in trace-viewer (#23361)
Fixes https://github.com/microsoft/playwright/issues/23298
2023-05-30 17:45:48 +02:00
Dmitry Gozman
fa86f2aee0
chore: createHttpServer that destroys sockets upon close (#23294)
This avoids the server hanging on close.
2023-05-26 07:03:41 -07:00
Pavel Feldman
b814e8a5f1
chore: bring back per test artifacts (#23153) 2023-05-23 09:36:35 -07:00
Pavel Feldman
631edc9744
chore(internal): generate code in jsonl (#23124) 2023-05-20 10:15:33 -07:00
Dmitry Gozman
be7984bdc9
fix(unroute): do not compare regexp instances (#23101)
References #23092.
2023-05-17 16:27:32 -07:00
Dmitry Gozman
73f9f81db4
feat(locators): allow ambiguous locators when parsing (#23034)
This supports locators like `nth(0)` and `locator('div', { hasText:
'foo' })` that are not canonical, but still work.

Fixes #22990, #22965.
2023-05-15 19:42:51 -07:00
Max Schmitt
edd003c230
chore: validate expected image buffer when comparing images (#23030)
Fixes https://github.com/microsoft/playwright/issues/23012
2023-05-15 23:32:16 +02:00
Pavel Feldman
59b9a39740
chore: add string attachments to trace (#22921) 2023-05-11 16:32:32 -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
Pavel Feldman
5e0574dc44
chore: list attachments in the trace (#22919)
Fixes https://github.com/microsoft/playwright/issues/22736
2023-05-09 17:53:01 -07:00
Pavel Feldman
efad19b332
chore: render test steps in the trace (#22837) 2023-05-05 15:12:18 -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
Pavel Feldman
b868f3a9d0
chore: extend raw stack (#22794) 2023-05-03 13:53:02 -07:00
Pavel Feldman
e9373dfb6e
chore: make client-side instrumentation non-nullable (#22694) 2023-04-28 08:57:43 -07:00
Pavel Feldman
d34c4e99f5
chore: add step attachments into the expect trace event (#22543) 2023-04-25 17:38:12 -07:00
Pavel Feldman
bbc47ba315
chore: ensure web assertions are merged in trace (#22544) 2023-04-21 10:07:23 -07:00
Dmitry Gozman
08cef43e82
feat(locator): remove locator.and and locator.not (#22223)
Not shipping for now, after API review.
2023-04-05 16:28:13 -07:00
Dmitry Gozman
35afb056ea
feat(locator): filter({ hasNotText }) (#22222)
The opposite of `filter({ hasText })`.
2023-04-05 14:13:28 -07:00
Dmitry Gozman
bc1de5f28d
feat(locator): filter({ hasNot }) (#22219)
This is the opposite of `filter({ has })`.
2023-04-05 12:45:46 -07:00
Johannes Loher
bd698efaef
fix(webServer): follow relative redirects when checking the url (#22035)
Fixes https://github.com/microsoft/playwright/issues/22144
2023-04-05 10:39:35 +02:00
Pavel Feldman
b1fdf0bcb6
chore: nest test steps based on zones (#22108)
Fixes: #21423
2023-03-30 21:05:07 -07:00
Dmitry Gozman
539d9873c2
feat: rename Locator.filter(locator) to Locator.and (#22101) 2023-03-30 14:41:30 -07:00
Dmitry Gozman
e6148bb725
feat: Locator.not(locator) (#22066) 2023-03-30 08:52:30 -07:00
Dmitry Gozman
525097d465
feat: Locator.filter(locator) (#21975)
Produces a locator that matches both locators.
Implemented through `internal:and` selector.

Fixes #19551.
2023-03-27 14:29:30 -07:00
Dmitry Gozman
d10fac4f6a
feat: Locator.or(locator) (#21884) 2023-03-22 15:28:59 -07:00
Dmitry Gozman
80a37ec171
fix(socks): use happy-eyeballs to create a connection (#21847) 2023-03-21 14:12:24 -07:00
Yury Semikhatsky
1004e762aa
chore(fetch): host does not include port (#21845) 2023-03-21 13:14:50 -07:00
Pavel Feldman
c45d8749b0
chore: split trace events into phases (#21696) 2023-03-15 22:33:40 -07:00
Dmitry Gozman
bde2e90973
fix(selector generator): do not produce has-text="foo"s (#21679)
There is no locator counterpart for it. Instead, produce a regex.

Also fix locator generator to not produce incorrect locator in this
case.

Fixes #21649.
2023-03-15 13:43:42 -07:00
Pavel Feldman
27048adebe
chore: introduce testInfo.testId (#21670) 2023-03-14 15:58:55 -07:00
Pavel Feldman
a12e909a40
chore(ui): start adding ui mode tests (#21601) 2023-03-12 15:18:47 -07:00
Dmitry Gozman
ea8aa63f1a
feat: support PWTEST_PROFILE_DIR in run-server (#21582)
This creates one profile per connection in the specified directory.
2023-03-10 19:07:40 -08:00
Pavel Feldman
cffb6ac269
chore: move sever/isomorphic to utils/ to use it in client (#21445) 2023-03-06 18:49:14 -08:00
Pavel Feldman
86ca7e3949
chore: introduce manual promise race (#21358)
Fixes https://github.com/microsoft/playwright/issues/21345
2023-03-06 08:50:03 -08:00
Yury Semikhatsky
60e5a93832
fix(store): support text and binary values (#21006) 2023-03-01 08:49:31 -08:00
Pavel Feldman
de3a5e2a91
chore(trace): include expect steps in a trace (#21199) 2023-02-28 13:26:23 -08:00