Commit graph

803 commits

Author SHA1 Message Date
Playwright Service e740522069
feat(webkit): roll to r1761 (#20207)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2023-01-19 11:22:00 +01:00
Playwright Service 6d63773965
feat(webkit): roll to r1760 (#20197) 2023-01-18 12:24:12 -08:00
Playwright Service b740aa04e7
feat(chromium): roll to r1044 (#20137)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2023-01-16 13:44:28 +01:00
Playwright Service 8671bfc53f
feat(firefox): roll to r1371 (#20115)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2023-01-13 22:37:26 -08:00
Pavel Feldman d1c161ce99
chore: merge the util exports (#20110) 2023-01-13 13:50:38 -08:00
Alex b984bb9ad6
fix: serviceWorker.register function (#20072) 2023-01-12 10:47:45 -08:00
Max Schmitt 1c1955a6e7
fix: do not write to stdout on cssTokenizer parse error (#20012)
Fixes https://github.com/microsoft/playwright/issues/20074
2023-01-12 19:10:01 +01:00
Max Schmitt a7495c3326
fix: use no internal selectors for frame locators (#19964)
Fixes https://github.com/microsoft/playwright/issues/19406
2023-01-11 21:53:19 +01:00
Dmitry Gozman 4f837690e2
fix(connect): do not log ws query params (#20047) 2023-01-11 12:27:27 -08:00
Playwright Service db5087e951
feat(chromium): roll to r1043 (#19991)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2023-01-10 14:55:27 +01:00
Dmitry Gozman 830c3c9f0f
fix(reuse): workaround long sw unregister (#19930)
Bogus `importScripts()` sometimes makes `unregister()` hang for long
time. We detect this case and not await it.

Fixes #19789.
2023-01-06 17:02:40 -08:00
Andrey Lushnikov 2a49c5e498
feat(expect): introduce expect(locator).toIntersectViewport() (#19901)
This is a new web-first assertion that should be used like this:

```ts
test('should work', async ({ page }) => {
  const locator = page.locator('body');
  // New web-first assertion.
  await expect(locator).toIntersectViewport();
  // The same functionality.
  await expect.poll(() => locator.viewportRatio()).toBeGreaterThan(0);
});
```

Fixes #8740
2023-01-06 16:56:24 -08:00
Max Schmitt 7bbaf2af21
fix(docker): take language binding version in consideration (#19924) 2023-01-06 19:47:37 +01:00
Max Schmitt c339e1615b
fix(fetch): handle invalid redirect URL (#19890)
Fixes https://github.com/microsoft/playwright/issues/19879.

This part is then similar to how node-fetch is doing it:
55a4870ae5/src/index.js?q=location#L152-L159

node-fetch also throws as of today with this URL. Before in Python it
was stalling, because the error was written to stdout and on Windows the
stdout wasn't working. On Node.js it ended up in an unhandled exception.
2023-01-06 10:22:17 -08:00
Yury Semikhatsky 10ccfa9517
feat(fetch): happy eyeballs (#19902)
Fixes #18790
2023-01-05 14:39:49 -08:00
Max Schmitt ddccb59093
chore: fix Java CLI invocation on Windows (#19895)
For reference: https://stackoverflow.com/a/64300409
2023-01-05 10:55:07 -08:00
Andrey Lushnikov 3883799d68
feat: introduce locator.viewportRatio (#19761)
References #8740
2023-01-05 10:49:32 -08:00
Oren 59e1437d7f
fix(serviceworker): network inspection works without options.serviceWorkers set (#19870) 2023-01-04 13:20:47 -08:00
Dmitry Gozman 6193e6d8ea
fix(reuse): reset tracing (#19876)
References #19059.
2023-01-04 13:19:05 -08:00
Playwright Service 2714e728d0
feat(chromium): roll to r1042 (#19799)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2023-01-02 14:11:44 +01:00
Ross Wollman 359d176ff6
fix(driver): avoid polluting stdout (#19759)
Relates microsoft/playwright-python#1699.
2022-12-28 17:09:11 -08:00
Yury Semikhatsky b8f96a9411
fix(generator): FilterOptions in java (#19741)
Fixes #19448
2022-12-28 09:13:06 -08:00
Dmitry Gozman 0fba4d5611
chore: migrate waitForFunction to not use rerunnable task (#19730) 2022-12-27 17:22:44 -08:00
Dmitry Gozman 0b223b9036
fix(hit target): account for iframes with padding (#19732)
Padding on iframes moves the `documentElement` inside the iframe, so we
should account for it when converting coordinates between frames.

Fixes #19613.
2022-12-27 16:59:34 -08:00
Dmitry Gozman c1b9a56079
chore: migrate waitForSelector to not use rerunnable task (#19715) 2022-12-27 13:39:35 -08:00
Dmitry Gozman 24f2ccb4ca
feat(getByLabel): support aria-label (#19726)
References #19284.
2022-12-27 12:43:55 -08:00
Dmitry Gozman 1bb019ac81
chore: migrate most of rerunnable tasks to element callback (#19713) 2022-12-27 09:22:22 -08:00
Dmitry Gozman 0087bfac23
fix(role): update allowsNameFromContent to closer align with blink/gecko (#19692) 2022-12-27 09:06:46 -08:00
Dmitry Gozman cce29215f9
chore: make input actions not use rerunnable task (#19638) 2022-12-24 10:40:36 -08:00
Pavel Feldman e61a8c6592
fix(generator): penalize for the selector length (#19672) 2022-12-22 20:54:04 -08:00
Pavel Feldman 8b80e22a03
fix(har): recalculate receive time after response ended (#19646)
Fixes https://github.com/microsoft/playwright/issues/19327
2022-12-22 17:30:32 -08:00
Pavel Feldman fe989d95eb
chore(electron): move loader to be preload (#19650)
Fixes https://github.com/microsoft/playwright/issues/19648
2022-12-22 17:28:08 -08:00
Dmitry Gozman 83418aa8ab
fix(socks): cleanup event listeners upon disconnect (#19671)
References #19661.
2022-12-22 17:15:51 -08:00
Dmitry Gozman e12cf19012
chore: refactor frame.expect to not use rerunnable task (#19626) 2022-12-21 15:31:08 -08:00
Dmitry Gozman eaae8ebbf3
chore: throw InvalidSelectorError from selector parser, add some tests (#19636) 2022-12-21 14:27:35 -08:00
Max Schmitt 7508c574e1
chore: bring ubuntu bionic back (#19625) 2022-12-21 18:37:42 +01:00
Dmitry Gozman ae2b1ac5e8
chore: move some injected code to InjectedScript (#19609) 2022-12-20 17:26:54 -08:00
Pavel Feldman 95cc5c2a2e
fix(electron): fix the directory app path (#19601) 2022-12-20 12:50:53 -08:00
Pavel Feldman 971e30482a
fix(electron): allow using pre-ready apis (#19599) 2022-12-20 10:40:48 -08:00
Dmitry Gozman 412c11db20
fix(reuse): make sure all dispose and close sequences are executed (#19572)
- When disposing recursively, only the root dispatcher received
`_dispose()` call, while some dispatchers need `_onDispose()` to clean
things up.
- When reusing the context, pages should be notified with `_onClose()`
so that all client-side waiting promises could reject.

Fixes #19216.
2022-12-19 15:54:53 -08:00
Dmitry Gozman 1263bc3edd
feat(console api): first/last/nth (#19485) 2022-12-15 11:17:59 -08:00
Playwright Service ed196ae9a2
feat(chromium): roll to r1040 (#19477)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-12-15 15:53:47 +01:00
Max Schmitt 1dcb8f643d
chore: fix Android tests (#19426) 2022-12-15 07:56:57 +01:00
Dmitry Gozman a27f1f744f
feat(getByLabel): support aria-labelledby (#19456)
Testing library also treats them equally.

Fixes #19284.
2022-12-14 13:51:05 -08:00
Andrey Lushnikov 8167f8bf54
chore: hide "comparator" option from documentation and types (#19441) 2022-12-14 09:58:19 -08:00
Pranav Jain 59118b83f9
feat(android): add support for passing CR args & proxy when launching browser (#19212)
Fixes https://github.com/microsoft/playwright/issues/19211
2022-12-12 16:15:19 +01:00
Dmitry Gozman 3c17a2603a
feat(console api): support locator.filter (#19389) 2022-12-09 15:25:12 -08:00
Dmitry Gozman 256e9fd443
feat(connect): allow exposing local network to the remote browser (experimental) (#19372)
`connectOptions: { _exposeNetwork: '*' | 'localhost' }`

References #19287.
2022-12-09 11:16:29 -08:00
Playwright Service 8ea48752db
feat(chromium): roll to r1039 (#19382)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-12-09 13:23:38 +01:00
Max Schmitt 92b3995101
chore(recorder): align toolbar buttons correctly (#19357) 2022-12-08 17:33:18 +01:00
Dmitry Gozman bdaf11a568
chore: refactor roleEngine to allow alternative representation (#19344) 2022-12-07 16:49:20 -08:00
Pavel Feldman 7aa3935dcc
chore: match selected options by both value and label (#19316) 2022-12-07 09:04:32 -08:00
Dmitry Gozman d294c5da33
chore: roll stable-test-runner to 1.28.1 (#19310)
This required `allowJs: false` in our `tsconfig.json` due to the
following error:

```

Error: Cannot find module './utilsBundleImpl'
Require stack:
- <playwright>/packages/playwright-core/src/utilsBundle.ts
- <playwright>/packages/playwright-test/lib/reporters/html.js
- <playwright>/tests/playwright-test/reporter-html.spec.ts
- <playwright>/tests/playwright-test/stable-test-runner/node_modules/@playwright/test/lib/loader.js
- <playwright>/tests/playwright-test/stable-test-runner/node_modules/@playwright/test/lib/runner.js
- <playwright>/tests/playwright-test/stable-test-runner/node_modules/@playwright/test/lib/cli.js
- <playwright>/tests/playwright-test/stable-test-runner/node_modules/playwright-core/lib/cli/cli.js
- <playwright>/tests/playwright-test/stable-test-runner/node_modules/playwright-core/cli.js
- <playwright>/tests/playwright-test/stable-test-runner/node_modules/@playwright/test/cli.js

   at ../../packages/playwright-core/src/utilsBundle.ts:20

  18 | import path from 'path';
  19 |
> 20 | export const colors: typeof import('../bundles/utils/node_modules/colors/safe') = require('./utilsBundleImpl').colors;
     |                                                                                   ^
  21 | export const debug: typeof import('../bundles/utils/node_modules/@types/debug') = require('./utilsBundleImpl').debug;
  22 | export const getProxyForUrl: typeof import('../bundles/utils/node_modules/@types/proxy-from-env').getProxyForUrl = require('./utilsBundleImpl').getProxyForUrl;
  23 | export const HttpsProxyAgent: typeof import('../bundles/utils/node_modules/https-proxy-agent').HttpsProxyAgent = require('./utilsBundleImpl').HttpsProxyAgent;

    at Object.<anonymous> (<playwright>/packages/playwright-core/src/utilsBundle.ts:20:83)
    at Object.<anonymous> (<playwright>/packages/playwright-test/src/reporters/html.ts:17:1)

```
2022-12-06 15:46:19 -08:00
Dmitry Gozman 4784dae10f
fix(role): accessibleName computation should walk the flat dom tree (#19301)
- When visiting `<slot>` element, descend into assigned nodes.
- When node has `assignedSlot`, skip it during regular traversal.

Fixes #18989.
2022-12-06 09:31:26 -08:00
Dmitry Gozman 81c8620bfe
chore: upgrade internal types to support TypeScript 4.9.3 (#19280)
Fixes https://github.com/microsoft/TypeScript/issues/51619

Co-authored-by: Max Schmitt <max@schmitt.mx>
2022-12-05 17:22:25 -08:00
Dmitry Gozman 48182a4eb2
chore: refactor code around text selectors (#19278) 2022-12-05 14:08:54 -08:00
Playwright Service e576bd17df
feat(chromium): roll to r1038 (#19237)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-12-03 13:03:43 -08:00
Dmitry Gozman 0be4fa768a
fix(codegen): do not generate Promise.all (#19182)
Drive-by: fix `download`, `dialog` and `popup` signals to use different
variable names in all languages.
2022-12-02 17:33:01 -08:00
Andrey Lushnikov 4cb49cb162
fix: remove firefox bandaid preferences (#19217)
These preferences were migrated to those we ship with builds.

Fixes #17442
2022-12-01 12:45:50 -08:00
Max Schmitt 3565d97a36
feat(recorder): make it work with [contenteditable] (#19066)
https://github.com/microsoft/playwright/issues/19029
2022-12-01 12:41:03 -08:00
Max Schmitt 1d3feba578
chore: do not set bypassCSP when inspector is used (#19190)
Fixes https://github.com/microsoft/playwright/issues/19186
2022-12-01 12:39:40 -08:00
Playwright Service dbe4362b9c
feat(firefox): roll to r1366 (#19185)
Fixes https://github.com/microsoft/playwright/issues/18307.

Signed-off-by: Max Schmitt <max@schmitt.mx>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Max Schmitt <max@schmitt.mx>
2022-11-30 19:13:11 -08:00
Dmitry Gozman 307a0b6ea7
fix(dotnet): codegen/docs use Name instead of NameString (#19156) 2022-11-29 20:56:18 -08:00
Pavel Feldman 5ac426b3d5
chore: expose utility script to inner evaluates (#19147) 2022-11-29 16:57:11 -08:00
Zihua Li 0c6a0f40c6
feat(keyboard): support simple cut-pasting using meta+x/v (#18756) 2022-11-29 12:58:14 -08:00
Dmitry Gozman 43a6bf4d45
fix(inspector): support custom test id attribute (#18996)
Fixes #18959.
2022-11-29 11:43:47 -08:00
Pavel Feldman 85467d1b7d
chore: generate get by title (#19119) 2022-11-28 19:55:34 -08:00
Playwright Service 0c8d2cf4e0
feat(webkit): roll to r1744 (#19006) 2022-11-23 09:54:47 -08:00
Yury Semikhatsky d3f41eaa47
fix(fetch): cookie with domain=localhost (#18998)
Fixes https://github.com/microsoft/playwright/issues/18362
2022-11-23 09:22:49 -08:00
Dmitry Gozman 503f8f51dc
fix(reuse): stop pending operations upon reuse/disconnect (#18997) 2022-11-22 15:21:20 -08:00
Dmitry Gozman 190ed9465f
fix(chromium): detach from shared workers (#18976)
This prevents shared workers from stalling upon restart.

We receive `Inspector.targetCrashed` and
`Inspector.targetReloadedAfterCrash` events that assume
`Runtime.runIfWaitingForDebugger` from any attached client. It is easier
and more stable to just detach from shared workers, because we do not
inspect them.

For service workers, we should actually issue
`Runtime.runIfWaitingForDebugger` in such cases, because we attach to
them.

Fixes #18932.
2022-11-22 15:20:42 -08:00
Pavel Feldman 73e7c0ed3d
fix(electron): tolerate connection closed during quit (#18993) 2022-11-22 11:50:35 -08:00
Pavel Feldman a0ea9b5fba
chore: simplify slowmo implementation (#18990) 2022-11-22 11:06:45 -08:00
Playwright Service a51c48fcb1
feat(chromium): roll to r1035 (#18984)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-11-22 07:48:46 -10:00
Pavel Feldman b5d756686d
fix(electron): consistently emit ready event after app is loaded (#18972)
Fixes: https://github.com/microsoft/playwright/issues/18928
2022-11-21 15:13:53 -08:00
Dmitry Gozman 8ad3bc7ff3
fix(role selector): expanded=false does not match elements without aria-expanded (#18929)
Fixes #18920.
2022-11-21 14:13:51 -08:00
Max Schmitt 6a5552ba24
chore: drop Ubuntu 18.04 support (#18924) 2022-11-21 11:23:45 -10:00
Dmitry Gozman 941090f0c4
fix(click): account for transformed iframes (#18926)
- Properly convert coordinates for iframes with non-zero borders.
- IFrames that have `transform` anywhere in the ancestors skip
`hitPoint`-based check because we cannot reliably translate the viewport
point into frame document's coordinates.

Fixes #18245.
2022-11-18 16:51:39 -08:00
Dmitry Gozman 1ec0bb277d
feat(expect): ensure at least one expectation check, no matter the timeout (#18895)
References #18859.
2022-11-17 19:43:10 -08:00
Pavel Feldman b1acc0d0ea
chore: render user-friendly intermediate match values (#18867) 2022-11-16 18:05:36 -08:00
Pavel Feldman 4e58b0c2ea
chore: render timed out error message when expect timeouts (#18863)
Fixes https://github.com/microsoft/playwright/issues/18859
2022-11-16 17:00:42 -08:00
Andrey Lushnikov c47c90cc25
chore: update WebKit browser version to 16.4 (#18830) 2022-11-15 12:46:15 -08:00
Dmitry Gozman f5b4e499fb
fix(locators): frameLocator().nth serialized correctly (#18819)
Fixes #18798.
2022-11-15 10:50:46 -08:00
Pavel Feldman 5c530154f9
chore(electron): filter test args out (#18822) 2022-11-15 10:48:24 -08:00
Pavel Feldman dbf3fc5089
fix(electron): stall node while browser is starting (#18804)
Fixes https://github.com/microsoft/playwright/issues/17765
2022-11-14 22:01:54 -08:00
Pavel Feldman 6258ed53f0
fix: recorder dark theme and strict explore locator parser (#18801) 2022-11-14 16:49:15 -08:00
Pavel Feldman 59418aa6f3
chore: ignore untrusted clicks when recording (#18796)
Fixes https://github.com/microsoft/playwright/issues/18776
2022-11-14 15:16:25 -08:00
Playwright Service 1b13519984
feat(chromium): roll to r1034 (#18736) 2022-11-11 17:11:58 -08:00
Dmitry Gozman a7b2b04588
fix(getByRole): name and exact (#18719)
Following the `getByText()` and other methods:

- By default, matching is substring and case-insensitive. Before, it was
only case-insensitive, but not substring.
- With new option `exact: true`, matching is full string and
case-sensitive.
- Matching always normalizes whitespace.
- Codegen generates `exact: false` by default.
- `internal:role` treats `[name="foo"i]` as non-exact match.

Various fixes:
- Updated `getByRole` docs to match the reality.
- Locator generator edge cases.
2022-11-11 15:58:36 -08:00
Andrey Lushnikov 7685c929bf
chore: use '--disable-component-update' flag to avoid component updates (#18745) 2022-11-11 13:44:09 -08:00
Pavel Feldman d5eb74fa5d
chore: allow toggling recorder/traceviewer color modes (#18718)
Fixes: https://github.com/microsoft/playwright/issues/18700
2022-11-10 17:20:09 -08:00
Max Schmitt 56d7d47d43
fix(codegen): make select work with size attribute (#18712)
Fixes https://github.com/microsoft/playwright/issues/18711
2022-11-10 15:06:53 -08:00
Pavel Feldman ac25fdd74b
chore: fix ff tests with new events mode (#18708) 2022-11-10 12:59:27 -08:00
Pavel Feldman ca2e7ef199
chore: report paused signal to the debug controller clients (#18701) 2022-11-10 12:15:29 -08:00
Pavel Feldman c25e67a0e7
chore: conditionally dispatch network events (#18687) 2022-11-09 21:10:57 -08:00
Dmitry Gozman cafa558845
fix(codegen): update priorites in selector generator (#18688)
- prefer `role=checkbox` over `input[type=checkbox]`
- prefer `#id` over `input[type=checkbox]` and `role=checkbox`
- prefer `text=foo` over `internal:has-text=foo`
- ignore `none` and `presentation` roles
- remove non-strict support
2022-11-09 17:22:13 -08:00
Dmitry Gozman a7f1c8cb65
fix(codegen): fix csharp options syntax (#18662) 2022-11-08 21:48:01 -08:00
Dmitry Gozman ef1b68a998
feat(locators): support frame locators in asLocator (#18653)
Drive-by: change `true` to `True` in python.

References #18524.
2022-11-08 17:08:08 -08:00
Pavel Feldman 0355d8618f
chore: use provided value for the generated test id (#18631) 2022-11-08 12:04:43 -08:00
Dmitry Gozman 05b623e6b0
feat(locators): asLocator supports internal:has= (#18625)
The following snippet:
```js
rowLocator
    .filter({ hasText: 'John' })
    .filter({ has: page.getByRole('button', { name: 'Say hello' }) })

```

is shown in the logs:

```log
pw:api waiting for getByRole('listitem').filter({ hasText: 'John' }).filter({ has: getByRole('button', { name: 'Say hello' }) })
```
2022-11-08 08:47:02 -08:00