Commit graph

801 commits

Author SHA1 Message Date
Pavel Feldman 5990eb6074
chore: use vite plugin for registry (#13658) 2022-04-21 17:30:17 -07:00
Pavel Feldman 89b8fdd4e5
fix(tracing): do not reset frame counter on every chunk (#13689) 2022-04-21 15:40:30 -07:00
github-actions[bot] 5753f7a7fa
feat(chromium): roll to r1003 (#13680)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-04-21 22:22:15 +02:00
Max Schmitt 4a3180aca9
chore: make Android host option configurable (#13685) 2022-04-21 22:16:42 +02:00
github-actions[bot] c551284498
feat(webkit): roll to r1632 (#13670) 2022-04-21 09:47:22 -07:00
Max Schmitt c397daeb07
chore: language agnostic browsers missing error message (#13650) 2022-04-20 12:02:28 -07:00
Pavel Feldman 06645b0a1f
chore: fix the android ws sender/receiver (#13641) 2022-04-19 13:28:05 -07:00
Yury Semikhatsky 0a401b2d86
docs: clarify semantics of redirected response (#13636) 2022-04-19 09:36:38 -07:00
Andrey Lushnikov a617604962
test: make sure toHaveScreenshot doesn't tolerate bad option values (#13627)
Fixes #13495
2022-04-19 07:43:18 -07:00
Andrey Lushnikov 80bc532874
fix: support undo/redo editing commands (#13606)
Fixes #13601
2022-04-18 22:22:52 -07:00
Pavel Feldman 3c896f6bc5
fix(tests): installation tests (#13623) 2022-04-18 22:17:56 -07:00
Pavel Feldman 007e908cd9
chore: bundle pwt deps (#13622) 2022-04-18 21:47:18 -07:00
Pavel Feldman 7989427ea6
chore: bundle core deps (#13621) 2022-04-18 20:20:49 -07:00
github-actions[bot] 41db08eca5
feat(webkit): roll to r1631 (#13612) 2022-04-18 18:48:43 -07:00
Pavel Feldman 63ea81ec54
chore: make bundles typed (#13620) 2022-04-18 17:50:25 -07:00
Pavel Feldman 58d79e5e4d
chore: add core utils bundle (#13615) 2022-04-18 13:47:23 -07:00
Pavel Feldman 4f0103fef0
chore: babel, expect, zip bundles (#13588) 2022-04-18 11:31:58 -07:00
Pavel Feldman 5f843c347d
chore: bundle pixelmatch, it has not changed for 2 years (#13585) 2022-04-15 16:58:31 -07:00
Yury Semikhatsky 7ffce1da53
chore: remove PlaywrightClient and Docker factory (#13571) 2022-04-15 12:11:38 -07:00
Yury Semikhatsky aee6ba299a
chore: remove GridClient, run only page tests in service mode (#13566) 2022-04-14 15:30:04 -07:00
Ross Wollman 11179982fc
chore: force localPaths to be resolved (#13544) 2022-04-14 11:19:36 -07:00
github-actions[bot] a29a986d67
feat(chromium): roll to r1002 (#13554)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-04-14 14:51:03 +02:00
Max Schmitt 584140f97a
fix: make fetch api work with connectOverCDP (#13521) 2022-04-14 12:53:49 +02: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
Yury Semikhatsky e2fff31848
chore: send run_id from agent to server (#13542) 2022-04-13 12:13:35 -07:00
Yury Semikhatsky 00199b5617
chore: add link to workflow (#13541) 2022-04-13 11:56:00 -07:00
Andrey Lushnikov 269716d7d7
revert(#12877): chore: print error if install-deps is used != ubuntu (#13536)
Reason: turns out Debian Buster requires just one source list to
install `ttf-ubuntu-font-family` font.

All other dependencies are satisfied.

Fixes #13530
2022-04-13 11:03:28 -07:00
Yury Semikhatsky 9b8aceaa61
feat: support os parameter (#13511) 2022-04-12 22:20:48 -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
Yury Semikhatsky ae4d2e75aa
chore: adjust gha agent params (#13509) 2022-04-12 13:39:08 -07:00
Max Schmitt 95d4041b8b
chore: fix mark-docker-image CLI command (#13499) 2022-04-12 10:10:34 -07:00
Andrey Lushnikov 0f6638190e
fix: do not require --force flag when installing channel on CI (#13487) 2022-04-11 13:42:21 -07:00
github-actions[bot] d90d2a6c0e
feat(webkit): roll to r1630 (#13443) 2022-04-11 08:54:30 -07:00
Yury Semikhatsky 9712b9ee08
fix: match against secure path (#13442) 2022-04-08 14:57:43 -07:00
Yury Semikhatsky 212c665152
fix: pass full grid url to agent (#13438) 2022-04-08 14:15:38 -07:00
Pavel Feldman f0156d057e
chore: flatten supplements (#13437) 2022-04-08 12:52:40 -07:00
kaivean d65263f151
feat(android): allow getting webviews by socket name (#13248) 2022-04-08 20:52:16 +02:00
github-actions[bot] d91349f22a
feat(webkit): roll to r1629 (#13407) 2022-04-08 11:50:53 -07:00
Ross Wollman db7bd8ebd2
chore: don't auto-install browsers if global install (#13299) 2022-04-08 10:46:24 -07:00
github-actions[bot] e72975d9c6
feat(chromium): roll to r1001 (#13424)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-04-08 18:39:42 +02:00
Dmitry Gozman dfb1584703
chore: remove MEMUSAGE workaround on Windows (#13408)
This was introduced in #7500 to fight `ERROR: The process "4436" not found.`
messages when killing a process that did already exit.

Since then, we no longer inherit stdout/stderr, so the error message
should not appear anymore.
2022-04-08 09:37:51 -07:00
Pavel Feldman 845e32cbb8
chore: use utils via index export (6) (#13417) 2022-04-07 21:48:41 -07:00
Pavel Feldman e79b90f454
chore: use utils via index export (5) (#13413) 2022-04-07 20:18:22 -07:00
Dmitry Gozman 155bb7fcae
fix: wait for cleanup on double SIGINT (#13411)
This is a speculative fix to leftover tmp directories.
When users issues SIGINT twice, we enter `gracefullyClose()`
twice, and shortcut the second time. It turns out, we do
not wait for directories removal.

Note: it is unknown how often we reach this codepath in practice.
2022-04-07 19:20:54 -07:00
Andrey Lushnikov 91333daf09
chore: cut v1.21.0 (#13405) 2022-04-07 18:16:22 -07:00
Yury Semikhatsky f803a929e4
feat: pass server address as argument (#13412) 2022-04-07 17:22:52 -07:00
Pavel Feldman a3c02222bf
chore: use utils via index export (4) (#13404) 2022-04-07 14:36:13 -07:00
Pavel Feldman 40d5e3a3c9
chore: use utils via index export (3) (#13403) 2022-04-07 13:55:44 -07:00
Pavel Feldman 6c1fa62000
chore: use utils via index export (2) (#13399) 2022-04-07 13:28:30 -07:00
Pavel Feldman dbafe3bb4e
chore: use utils via index export (1) (#13398) 2022-04-07 13:26:50 -07:00
Dmitry Gozman b7116906fc
feat(remote): support headless/x-playwright-headless (#13391)
This only applies when remote launches the browser.
2022-04-07 10:19:56 -07:00
Steve Zhang de518338ce
docs: fix class-coverage snippet for v8toIstanbul (#13371)
Co-authored-by: Max Schmitt <max@schmitt.mx>
2022-04-07 18:34:45 +02:00
Pavel Feldman 90d5990e75
chore: fix installation scripts (#13376) 2022-04-06 23:09:10 -07:00
Pavel Feldman bde7bf4ea9
chore: move registry & dispatchers to under server (#13370) 2022-04-06 22:21:27 -07:00
Yury Semikhatsky 32d30ae71d
chore: fix assert imports (#13359) 2022-04-06 21:30:48 -07:00
Dmitry Gozman c68f57d2d0
docs: mark optional properties/arguments explicitly with "?" (#13369)
Previously, we were guessing whether something is optional from the
comment (looking for stuff like "defaults to" or "optional").

To remove this error-prone technique, every optional property or
argument (but not option) is explicitly marked with "?".
2022-04-06 19:02:10 -07:00
Yury Semikhatsky fccc14cdfa
feat: github agent, browser worker (#13336) 2022-04-06 18:03:27 -07:00
Pavel Feldman c80365dd43
chore: distill deps after import types update (#13367) 2022-04-06 15:41:08 -07:00
Pavel Feldman 5ae2017a5b
chore: always import type (#13365) 2022-04-06 14:57:14 -07:00
Pavel Feldman 1c3db811f5
chore: move to folder-based deps lists (#13361) 2022-04-06 14:40:19 -07:00
Akul Srivastava d9d826b7f6
docs: fixes typo (#13094)
Co-authored-by: Max Schmitt <max@schmitt.mx>
2022-04-06 12:00:51 +02:00
Dmitry Gozman faaac318f4
chore: remove elementsFromPoint workaround (#13184)
The issue was fixed upstream in r982637.
2022-04-05 19:37:07 -07:00
Pavel Feldman 6ca58e18cb
fix(electron): better support for custom schemas (#13329) 2022-04-05 16:10:12 -07:00
github-actions[bot] 67989e01d1
feat(webkit): roll to r1625 (#13333) 2022-04-05 15:34:59 -07:00
Yury Semikhatsky cdef8171c1
chore: extract remote connection to a separate file (#13331) 2022-04-05 14:47:11 -07:00
github-actions[bot] 67c251f483
feat(chromium): roll to r1000 (#13327)
References #13198

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-04-05 11:05:01 -07:00
Max Schmitt 844ecbe2eb
chore: better Electron error message when no executable path is given (#13318) 2022-04-05 18:45:21 +02:00
Pavel Feldman 23d9dbc011
chore: rewrite non-web protocol for Electron tracing (#13305) 2022-04-04 20:56:04 -07:00
Dmitry Gozman a09b8dfa36
chore: unrelease 'fonts' screenshot option (#13300) 2022-04-04 14:51:11 -07:00
Dmitry Gozman 4e1fb1728f
docs: small clarifications to hasText and has-text (#13298) 2022-04-04 13:18:03 -07:00
Pavel Feldman 1bebc28aed
chore: reset page/context for reuse in component tests (#13264) 2022-04-04 12:39:43 -07:00
Pavel Feldman 8232497c88
feat(electron): expose app process(), detach on exit (#13280) 2022-04-04 11:50:46 -07:00
Ross Wollman 42798b5857
chore: warn against using globally scoped install (#13196) 2022-04-03 20:26:23 -07:00
Pavel Feldman b0103566c9
fix(addInitScript): tolerate trailing comments (#13275) 2022-04-03 18:47:12 -07:00
Pavel Feldman bcb12fcf7f
chore: mark public methods on server as such (#13271) 2022-04-02 19:02:27 -07:00
kaivean 5d2e8918d8
feat(android): add androidDevice.options.omitDriverInstall (#13249) 2022-04-02 16:00:38 -07:00
Dmitry Gozman a200fe3528
feat(screenshot): rename "size" option to "scale" (#13254)
Drive-by: fix `caret` handling in `toHaveScreenshot`.
2022-04-01 12:28:40 -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
Andrey Lushnikov a87794dae6
fix: demand --force to re-install stable browser channels (#13200)
This patch will check if browser channel is already installed.
If it is, it'll abort installation with the following error:

```
aslushnikov:~/prog/playwright$ npx playwright install msedge
Failed to install browsers
Error:
╔═════════════════════════════════════════════════════════════════╗
║ ATTENTION: "msedge" is already installed on the system!         ║
║                                                                 ║
║ "msedge" installation is not hermetic; installing newer version ║
║ requires *removal* of a current installation first.             ║
║                                                                 ║
║ To *uninstall* current version and re-install latest "msedge":  ║
║                                                                 ║
║ - Close all running instances of "msedge", if any               ║
║ - Use "--force" to install browser:                             ║
║                                                                 ║
║     npx playwright install --force msedge                       ║
║                                                                 ║
║ <3 Playwright Team                                              ║
╚═════════════════════════════════════════════════════════════════╝
```

To re-install browser channel, use `--force`.

Fixes https://github.com/microsoft/playwright/issues/13061
2022-04-01 10:05:53 -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
github-actions[bot] 28234b6540
feat(webkit): roll to r1623 (#13195) 2022-03-31 07:40:08 -07:00
github-actions[bot] 6157c3e743
feat(webkit): roll to r1622 (#13187) 2022-03-30 15:39:14 -07:00
Yury Semikhatsky c200321402
fix: export request from index.jsm (#13158) 2022-03-30 09:35:47 -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
Dmitry Gozman eb09306db2
feat(connect): add connectOptions.timeout (#13163) 2022-03-29 15:03:43 -07:00
Dmitry Gozman 6b48631eed
feat(role): add more tests for accessible name (#13154) 2022-03-29 11:59:44 -07:00
github-actions[bot] 54f6e5db19
feat(firefox): roll to r1322 (#13150)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-03-29 11:28:20 -07:00
github-actions[bot] 29e0525926
feat(firefox-beta): roll to r1321 (#13142)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-03-29 01:16:25 -07:00
Pavel Feldman 1961959dcb
chore: migrate injected scripts to esbuild (#13143) 2022-03-28 23:10:17 -07:00
Pavel Feldman 8758cf8cbf
chore: migrate html reporter to vite (#13116) 2022-03-28 18:21:19 -07:00
Dmitry Gozman 01a39e5b4c
test(role): add tests for implicit role calculation (#13132) 2022-03-28 15:22:50 -07:00
Philip Sanetra be41c4a35d
fix(registry): Fix support for generic-linux (#13129)
Fixes https://github.com/microsoft/playwright/issues/13128
2022-03-28 14:50:56 -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
Andrey Lushnikov 4ab4c0bda1
feat: detect docker version and Playwright version mismatch (#12806)
This patch prints a friendly instructions in case Docker image version
mismatches Playwright version and there are missing browser
dependencies.

With this patch, Playwright will yield the following error:

```
root@f0774d2b2097:~# node a.mjs
node:internal/process/promises:279
            triggerUncaughtException(err, true /* fromPromise */);
            ^

browserType.launch:
╔════════════════════════════════════════════════════════════════════════════════════════════╗
║ Host system is missing dependencies to run browsers.                                       ║
║ This is most likely due to docker image version not matching Playwright version:           ║
║ - Playwright: 1.22.0                                                                       ║
║ -     Docker: 1.21.0                                                                       ║
║                                                                                            ║
║ Either:                                                                                    ║
║ - (recommended) use docker image "mcr.microsoft.com/playwright:v1.22.0-focal"              ║
║ - (alternative 1) run the following command inside docker to install missing dependencies: ║
║                                                                                            ║
║     npx playwright install-deps                                                            ║
║                                                                                            ║
║ - (alternative 2) use Aptitude inside docker:                                              ║
║                                                                                            ║
║     apt-get install libgbm1                                                                ║
║                                                                                            ║
║ <3 Playwright Team                                                                         ║
╚════════════════════════════════════════════════════════════════════════════════════════════╝
    at file:///root/a.mjs:3:10 {
  name: 'Error'
}```

Fixes #12796

Co-authored-by: Dmitry Gozman <dgozman@gmail.com>
2022-03-25 14:45:53 -07:00
Pavel Feldman 6b81e76c2b
chore: migrate trace-viewer and recorder to vite (#13076) 2022-03-25 14:12:00 -07:00
Yury Semikhatsky 97e8ead57c
feat: large files upload in ff and wk (#12937) 2022-03-25 13:26:12 -07:00
Max Schmitt c8cc62a2e6
chore: add link validation for docs (#13047) 2022-03-25 19:30:45 +01:00
Pavel Feldman 07c1a27732
chore(deps): prepare deps for monorepo (#13057) 2022-03-25 08:43:29 -07:00
github-actions[bot] 7a67c6d264
feat(webkit): roll to r1621 (#13056) 2022-03-25 08:40:19 -07:00
github-actions[bot] 8f6df440d5
feat(firefox-beta): roll to r1320 (#13010) 2022-03-24 07:49:50 -07:00
github-actions[bot] 920df240d1
feat(firefox): roll to r1321 (#13017) 2022-03-24 07:49:27 -07:00
Yury Semikhatsky 136c4e10e6
Revert "chore: align setInputFiles in webkit with other browsers (#13011)" (#13021)
This reverts commit 7fe763c1fc.
2022-03-24 07:46:37 -07:00
Dmitry Gozman 91408f2c5e
fix(storageState): provide nice error message for storage state issues (#13019) 2022-03-24 07:33:51 -07:00
Yury Semikhatsky 7fe763c1fc
chore: align setInputFiles in webkit with other browsers (#13011) 2022-03-23 16:07:47 -07:00
Ross Wollman 39376cccd8
fix: allow unnamed cookies (#12991)
Fixes #12808.
2022-03-23 15:50:43 -07:00
Andrey Lushnikov bbc1a4fea0
fix: print all missing libraries when used on unsupported linux distro (#12966)
This patch:
- Adds 3 new host platform types:
  * `generic-linux` and `generic-linux-arm64` for the unsupported
    linux distributions
  * `<unknown>` for non-supported OS versions
- Prints a warning when downloading Ubuntu browser builds on
  unsupported Linux distribution
- Makes sure launch doctor prints all missing shared libraries
  on unknown Linux distributions
- Also prints an `apt` command as an alternative to Playwright CLI
  dependency installation.
2022-03-23 14:06:14 -07:00
github-actions[bot] 53b84541ab
feat(chromium): roll to r983172 (#12995)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-03-23 20:34:23 +01:00
github-actions[bot] 2d5762c842
feat(webkit): roll to r1620 (#12971) 2022-03-23 11:30:42 -07:00
Max Schmitt b69d0566bb
chore: disable Chromium CertificateTransparencyComponentUpdater feature (#12992) 2022-03-23 19:14:22 +01:00
Andrew Hayward ab39cfcb18
docs: fixing example code in accessibility API docs (#12664)
Co-authored-by: Andrey Lushnikov <aslushnikov@gmail.com>
2022-03-23 11:50:35 +01: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
Brian Rhoten fb83d4b42c
fix(codegen): do not consider empty attributes for selector generation (#12880)
Co-authored-by: Brian Rhoten <brhoten@appriss.com>
2022-03-22 13:56:33 -07:00
Brandon Walderman 7db40071a8
fix(selenium): Use ms:edgeOptions with Edge. (#12933) 2022-03-22 12:46:00 -07:00
Dmitry Gozman 4b877213a1
fix(tracing): preserve control values without modifying DOM (#12939)
Previously, we preserved input/textarea values by providing
`value` attribute or text child. This produces DOM that does not
actually match the original page.

This change starts using special attributes to modify values
directly when rendering.

Same treatment is also applied to options in `select` and
`checked` property of checkboxes and radio buttons.
2022-03-21 18:51:48 -07:00
Dmitry Gozman dea6528c0c
feat(aria): introduce role utils (#12916)
This includes aria role and accessible name computation.
Accessible name is covered by wpt tests.
2022-03-21 17:26:45 -07:00
Andrey Lushnikov 7f51336068
fix: allow toMatchSnapshot to use text comparator for text data (#12934)
This was regressed awhile ago.

In v1.17 we shipped the following code: 30e15ad36f/packages/playwright-test/src/matchers/golden.ts (L122-L131)

`toMatchSnapshot` should fallback to text comparator in case of
unknown extension and string data.

Fixes #12862
2022-03-21 16:42:21 -07:00
github-actions[bot] 478a75401a
feat(webkit): roll to r1619 (#12905) 2022-03-21 15:15:56 -07:00
Andrey Lushnikov c18077c0de
feat(toHaveScreenshot): align screenshot generation & comparison (#12812)
This patch aligns the strategies that are used to generate new
screnshot expectations and to compare screenshot expectations against
baseline.

With this patch, `toHaveScreenshot` will:
- when generating a new expectation: will wait for 2 consecutive
  screenshots to match and accept the last one as expectation.
- when given an expectation:
  * will compare first screenshot against expectation. If matches,
    resolve successfully
  * if first screenshot doesn't match, then wait for 2 consecutive
    screenshots to match and then compare last screenshot with the
    expectation.

An example of a new detailed call log:

```
  1) a.spec.ts:3:1 › should work ===================================================================

    Error: Screenshot comparison failed:

      20000 pixels (ratio 0.03 of all image pixels) are different

    Call log:
      - expect.toHaveScreenshot with timeout 5000ms
      -   verifying given screenshot expectation
      - fast-path: checking first screenshot to match expectation
      - taking page screenshot
      -   disabled all CSS animations
      -   waiting for fonts to load...
      -   fonts in all frames are loaded
      - fast-path failed: first screenshot did not match expectation - 20000 pixels (ratio 0.03 of all image pixels) are different
      - waiting for 2 consecutive screenshots to match
      - waiting 100ms before taking screenshot
      - taking page screenshot
      -   disabled all CSS animations
      -   waiting for fonts to load...
      -   fonts in all frames are loaded
      - 2 consecutive screenshots matched
      - final screenshot did not match expectation - 20000 pixels (ratio 0.03 of all image pixels) are different
      - 20000 pixels (ratio 0.03 of all image pixels) are different

    Expected: /Users/andreylushnikov/tmp/test-results/a-should-work/should-work-1-expected.png
    Received: /Users/andreylushnikov/tmp/test-results/a-should-work/should-work-1-actual.png
        Diff: /Users/andreylushnikov/tmp/test-results/a-should-work/should-work-1-diff.png

      3 | test('should work', async ({ page }) => {
      4 |   await page.goto('file:///Users/andreylushnikov/prog/playwright/tests/assets/rotate-z.html');
    > 5 |   await expect(page).toHaveScreenshot();
        |                      ^
      6 | });
      7 |
```
2022-03-21 15:10:33 -07:00
github-actions[bot] 67e754f6b5
feat(firefox): roll to r1320 (#12928) 2022-03-21 13:40:41 -07:00
Yury Semikhatsky 0adf5536af
docs(fetch): clarify cookie handling (#12892) 2022-03-21 13:20:17 -07:00
github-actions[bot] 9a60067fc2
feat(chromium): roll to r982481 (#12903)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-03-19 13:06:55 +01:00
Pavel Feldman e044bae888
chore: make count() work with _vue selectors (#12899) 2022-03-18 21:22:33 -07:00
Dmitry Gozman 85b01056b6
fix(click): workaround elementsFromPoint issue in Chromium (#12888)
Block elements inside elements are not returned correctly
from `document.elementsFromPoint(x, y)` in some cases.
See https://bugs.chromium.org/p/chromium/issues/detail?id=1307458 for details.
2022-03-18 18:20:48 -07:00
Pavel Feldman 98ed81dc00
chore: do not initialize full sessions for pages used in session restore (#12886) 2022-03-18 18:17:37 -07:00
Max Schmitt dd32956ccc
chore: improve handling with missing xserver (#12724) 2022-03-18 22:39:11 +01:00
Max Schmitt d795f5dd64
chore: print error if install-deps is used != ubuntu (#12877) 2022-03-18 19:13:11 +01:00
Yury Semikhatsky a8d80621b2
feat(chromium): large file uploads (#12860) 2022-03-18 09:00:52 -07:00
Pavel Feldman c7d6f96328
chore: disambiguate internal flags (#12866) 2022-03-17 18:27:33 -07:00
Yury Semikhatsky 1284ab8101
feat(webkit): bump to 1617, freeze macOS 10.15 (#12790) 2022-03-15 16:09:56 -07:00
Dmitry Gozman f8c4cb3d24
fix(screenshot): do not stall on hideHighlight (#12764) 2022-03-15 14:13:45 -07:00
github-actions[bot] 08c29b305b
feat(chromium): roll to r980398 (#12757)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-03-14 18:51:46 -07:00
Andrey Lushnikov 88610c8b4c
fix: properly define apiName for web-first assertions (#12706)
Turns out relying on PWTRAP in stack is not reliable: depending on the
call structure, the stack might be cut unpredictably by Node.js.

This patch removes PWTRAP and instead plumbs explicit stack and
pre-set `apiName` all the way down to `wrapApiCall`.
2022-03-14 18:01:13 -07:00
Yury Semikhatsky 990224bde4
Revert "feat(webkit): bump to 1617 (#12738)" (#12760)
This reverts commit 77824ee19e.
2022-03-14 17:08:32 -07:00
Yury Semikhatsky 77824ee19e
feat(webkit): bump to 1617 (#12738) 2022-03-14 15:11:21 -07:00
Max Schmitt 01beb6310a
docs: mention locator.nth is zero based (#12750)
Co-authored-by: Pavel Feldman <pavel.feldman@gmail.com>
2022-03-14 21:06:44 +01:00
Yury Semikhatsky 19de9cacc3
docs: delete verification guide (#12698) 2022-03-12 09:32:54 -08:00
Max Schmitt adcd32fc6e
fix(expect): toHaveCSS with custom CSS properties (#12709) 2022-03-12 09:32:40 -08:00
github-actions[bot] ffc8031bad
feat(chromium): roll to r980066 (#12705)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-03-12 09:07:57 +01: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 e83549e8a0
fix: support all commong screenshot options in toHaveScreenshot (#12670)
This patch adds support for all common options in
`expect.toHaveScreenshot`.
2022-03-10 18:36:20 -08:00
Andrey Lushnikov 65b9cba143
chore: follow-up to animations default option (#12669)
This is a follow-up to 42765804bc
that was landed without bots.

I ran the bots manually on Linux & Mac.
2022-03-10 17:26:50 -08:00
Andrey Lushnikov 689d8196e0
chore: follow-up to fix docs (#12668)
This is a follow-up to 49e66c7f08 that was landed without bots.

I ran bots manually on Mac & Linux.
2022-03-10 17:19:44 -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
Yury Semikhatsky cf643ff04c
docs: remove unsupported permission "push" from docs (#12654) 2022-03-10 14:00:25 -08:00
Dmitry Gozman a388bb2302
feat(screenshot): size:'css'|'device' option (#12634)
With this experimental option, screenshot dimensions are in CSS pixels,
not physical device pixels, effectively ignoring the device scale factor.
2022-03-10 13:07:10 -08:00
Yury Semikhatsky d49843edaa
fix(firefox): add missing dependency on Ubuntu 18.04 (#12625) 2022-03-09 11:21:15 -08:00
Dmitry Gozman 682eeb4ae0
reland(hooks): separate test timeout from beforeAll/afterAll timeouts (#12609)
This makes it possible to have longer `beforeAll`/`afterAll` and not
affect first/last test timeout.
2022-03-08 19:05:23 -08:00
Dmitry Gozman 62a032baa0
chore: remove env.PLAYWRIGHT_NO_LAYOUT_SHIFT_CHECK (#12605) 2022-03-08 16:42:39 -08:00
Andrey Lushnikov 4bccf2f6aa
chore: cut v1.20 branch (#12593) 2022-03-08 14:01:20 -08:00
github-actions[bot] 04e03728b8
feat(chromium): roll to r978106 (#12585)
Co-authored-by: Max Schmitt <max@schmitt.mx>
2022-03-08 21:05:56 +01:00
Andrey Lushnikov 497b51ad8c
fix(toHaveScreenshot): fix initial screenshot time (#12576)
Instead of being taken immediately, first screenshot was actually
taken after 1 second.
2022-03-08 09:30:14 -08:00
github-actions[bot] 18e6aa3f15
feat(firefox): roll to r1319 (#12587)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-03-08 09:19:00 -08:00
Dmitry Gozman d836ed41d3
feat(remote): send 'x-playwright-browser' header (#12556) 2022-03-07 10:30:53 -08:00
Siddharth Singha Roy a2b3d4f570
feat(cli) : allow passing PlaywrightServer.startDefault parameters via cli (#12530) 2022-03-07 09:15:46 -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 d7648d390c
fix(toHaveScreenshot): round ratio up (#12540)
This way the ratio value could be used right away in configuation.
2022-03-04 18:55:48 -08:00
Andrey Lushnikov 6dac01aec7
fix: implement log scale back-off for screenshots (#12504)
References https://github.com/microsoft/playwright/issues/12441
2022-03-04 18:17:57 -08:00
github-actions[bot] adb2847d84
feat(firefox): roll to r1318 (#12537)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-03-04 17:29:35 -08:00
Max Schmitt 5fd43edcbb
chore: fix android tests after #12220 (#12535) 2022-03-05 00:18:03 +01:00
Karan Shah fd1a1a2b1c
feat(android): Adding custom port parameter to connect to different adb server port (#12220) 2022-03-04 20:27:25 +01:00
Yury Semikhatsky 50cc1641d1
fix(webkit): add libopengl0 to the native deps (#12526) 2022-03-04 11:13:34 -08: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
Andrey Lushnikov 1f5cfcaeec
fix(to-have-screenshot): show number of bad pixels in mismatched error (#12502)
Drive-by: do not show empty call log.

References #12441
2022-03-04 11:01:05 -08:00
github-actions[bot] ab40d934ad
feat(chromium): roll to r976882 (#12516)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-03-04 14:48:25 +01:00
Andrey Lushnikov 279e579097
chore: address pixelCount and pixelRatio review comments (#12501)
- documentation fixes
- rename pixelCount to maxDiffPixels
- rename pixelRatio to maxDiffPixelRatio
2022-03-03 23:17:31 -08:00
github-actions[bot] 856ff5c685
feat(firefox-beta): roll to r1318 (#12478)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-03-03 08:41:23 -08:00
Max Schmitt 3db4b48bd3
fix(cli): fix wrong property for passing browser name (#12489) 2022-03-03 17:17:23 +01:00
Max Schmitt b2e3357613
chore: throw error if setCookies expires value is not valid (#12470) 2022-03-02 23:10:40 +01:00
Yury Semikhatsky 2d7ec26dc2
fix(fetch): send secure cookies for http://localhost requests (#12450) 2022-03-02 09:33:30 -08:00
Pavel Feldman 61a6cdde70
feat(api): expose locator.highlight (#12420) 2022-03-01 13:56:21 -08:00
Pavel Feldman b79bb32c82
chore: do not stall on actions when test timeout is 0 (#12418) 2022-03-01 13:43:38 -08:00
Pavel Feldman a612a3526a
chore: auto-detect ts esm mode (#12292) 2022-03-01 12:56:26 -08:00
Max Schmitt e0e6b66cbe
chore(android): align android context options with mixin (#12401) 2022-03-01 18:11:38 +01:00
Pavel Feldman 6a663ef54f
chore(test-runner): revert recent changes to fix tests (#12439)
* Revert "fix(hooks): separate test timeout from beforeAll/afterAll timeouts (#12413)"

This reverts commit 73dee69558.

* Revert "fix(test-runner): rely on test title paths instead of ordinal (#12414)"

This reverts commit d744a87aee.

* Revert "chore(test runner): run hooks/modifiers as a part of the test  (#12329)"

This reverts commit 47045ba48d.
2022-03-01 09:11:17 -08:00
Max Schmitt d2ae6a9db2
fix: isDisabled check with option/optgroup (#12437) 2022-03-01 18:10:16 +01:00
github-actions[bot] 5efd7fb356
feat(chromium): roll to r975608 (#12425)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-03-01 09:22:47 +01:00
Andrey Lushnikov a0cf33bbb0
fix: beautiful toHaveScreenshot in tracing (#12422) 2022-02-28 23:30:00 -08:00
Dmitry Gozman 73dee69558
fix(hooks): separate test timeout from beforeAll/afterAll timeouts (#12413)
This makes it possible to have longer `beforeAll`/`afterAll` and not
affect first/last test timeout.
2022-02-28 15:09:04 -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
Andrey Lushnikov 396d920145
feat(test-runner): implement expect(pageOrLocator).toHaveScreenshot (#12242)
Fixes #9938
2022-02-28 12:25:59 -08:00
Andrey Lushnikov 8d94ed134c
fix: add snapshots for page and elementHandle screenshots (#12411)
Fixes #12280
2022-02-28 11:52:54 -08:00
github-actions[bot] 80a38a39c2
feat(chromium): roll to r974924 (#12377)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-02-26 07:52:27 +01:00
Max Schmitt 41e9b36f63
fix: install-deps did not throw on non 0 exit code (#12375) 2022-02-26 00:45:27 +01:00
Dmitry Gozman 3c2bca2768
fix(test loader): implement tsconfig paths through resolveFilename (#12357)
This uses `Module._resolveFilename` to intercept module resolution and
check `tsconfig.paths` similarly to pirates usage ot `Module._compile`.

Previously, we resolved during compilation that required reproducible
resolution due to caching. Now we can resolve as we go and support
all `tsconfig.paths`.
2022-02-25 15:43:58 -08:00
nswbmw b47c95c20c
feat: add iPhone 12 Mini (#11429)
Co-authored-by: Max Schmitt <max@schmitt.mx>
2022-02-25 12:15:58 +01:00
Max Schmitt 821a8e93c7
chore: do not double trim in trace viewer (#12338) 2022-02-24 21:55:50 +01:00
Max Schmitt 0b55950d6a
chore: fix Android tests (#12325) 2022-02-24 06:57:32 +01:00
Andrey Lushnikov df7fbe7857
Revert "chore: best-effort cleanup for output folders that are mounted (#12300)" (#12321)
This reverts commit e5c9d1e39f.

Reason for revert: turns out this fix results in a 5-second delay
when starting tests in docker, with `test-results` folder being
a non-removable mount.

The reason for the delay is the `maxBusyTries` option that we
supply by default to rimraf when trying to remove the folder.

While this option might come handy when removing temporary
browser profile folder, it doesn't serve us well in this particular
usecase.

References #12106
2022-02-23 14:10:11 -08:00
Andrey Lushnikov e5c9d1e39f
chore: best-effort cleanup for output folders that are mounted (#12300)
Fixes #12106
2022-02-23 12:55:41 -08:00
Max Schmitt 52932172e7
docs(python): fix set_viewport_size in emulation.md (#12271) 2022-02-22 20:15:46 +01:00
github-actions[bot] cbe075135c
feat(chromium): roll to r973391 (#12279)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-02-22 11:33:25 +01:00
github-actions[bot] 222033d6b2
feat(chromium): roll to r972766 (#12248)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-02-21 11:30:30 +01:00
Pavel Feldman b8cf5ac661
fix(electron): do not attach external debugger when running Electron tests (#12250) 2022-02-19 17:46:26 -08:00
Andrey Lushnikov 18fdf927b7
chore: simplify screenshot option handling (#12245)
#9938
2022-02-18 21:34:56 -08:00
Dmitry Gozman a7ef1da5e9
fix(selenium): support MicrosoftEdge (#12235) 2022-02-18 14:44:15 -08:00