Commit graph

1664 commits

Author SHA1 Message Date
Yury Semikhatsky e00a26a11d
feat(route): fulfill with HARResponse (#14865) 2022-06-14 15:07:22 -07:00
Dmitry Gozman e640f553b5
fix(connectOverCDP): make sure downloads work in default context (#14864) 2022-06-14 12:36:35 -07:00
Pavel Feldman 9cf068ad06
feat(fallback): allow falling back w/ overrides (#14849) 2022-06-13 17:56:16 -07:00
Ross Wollman 3974d1b359
revert(#14797): fix(test runner): collect artifacts when calling browser.close() (#14846)
Revert "fix(test runner): collect artifacts when calling `browser.close()` (#14797)"

This reverts commit c7a28ac7e9.

Looks like it broke a bunch of tracing tests:

* Good: https://github.com/microsoft/playwright/runs/6838098316?check_suite_focus=true
* First Bad: https://github.com/microsoft/playwright/runs/6838104691?check_suite_focus=true
* Still bad on HEAD (88664c39c9): https://github.com/microsoft/playwright/runs/6868333846?check_suite_focus=true
2022-06-13 17:20:59 -07:00
Pavel Feldman 88664c39c9
chore: remove esm error interception, it only confuses users (#14829) 2022-06-13 12:32:42 -07:00
Pavel Feldman dcdd3c3cdb
feat(route): explicitly fall back to the next handler (#14834) 2022-06-13 12:30:51 -07:00
Dmitry Gozman 05c56f5942
test: fix video tests on headed mac (#14841) 2022-06-13 11:53:31 -07:00
Max Schmitt e23960e8b2 test: make Electron bots green 2022-06-13 12:20:57 +02:00
Pavel Feldman 41529bb1a5
chore: respect sigint in global setup (#14805) 2022-06-12 13:06:00 -07:00
Pavel Feldman c7b3f4646f
fix(strict): escape css class names when generating selectors (#14810) 2022-06-12 09:39:30 -07:00
Pavel Feldman 380e787065
fix(ct): respect boolean shorthands (#14798) 2022-06-10 17:34:21 -07:00
Pavel Feldman 30f3d526eb
feat(server): consider 3XX, 400-403 responses as started server 2022-06-10 14:47:29 -07:00
Dmitry Gozman 7c0bff15ca
feat(fulfill): improve fulfilling from har (#14789)
- `har` option is now an object `{ path, fallback }`.
- Allows falling back to `abort()`, `continue()` or throwing.
- Matches based on url + method.
- Follows redirects in the HAR file.
- Nice error/stack when throwing.
- Tests.
2022-06-10 14:26:45 -07:00
Dmitry Gozman c7a28ac7e9
fix(test runner): collect artifacts when calling browser.close() (#14797)
Previously, we only collected artifacts on context closure.
However, in serial mode it is possible to close the browser instead.
2022-06-10 14:11:34 -07:00
Dmitry Gozman 868e00253f
feat(har): store textual content without base64 encoding (#14772) 2022-06-10 14:10:52 -07:00
Pavel Feldman 7a568a2952
feat(route): chain routes (#14771) 2022-06-10 09:06:39 -07:00
Playwright Service a98394033c
feat(chromium-tip-of-tree): roll to r1014 (#14742)
Co-authored-by: Max Schmitt <max@schmitt.mx>
2022-06-10 15:59:49 +02:00
Sergio Freire 060cd9d97c
feat(junit reporter): link testcases to Xray test issues and provide additional metadata for Xray Test Management (#11374)
Co-authored-by: Sergio Freire <sergio.freire@xpand-it.com>
2022-06-10 10:31:48 +02:00
Sergio Freire d193bd64c4
feat(junit reporter): add option to force usage of CDATA sections for content in XML elements (#12744)
Co-authored-by: Sergio Freire <sergio.freire@xpand-it.com>
2022-06-10 10:25:52 +02:00
Yury Semikhatsky 873307a39d
test(firefox): skip more video tests when tracing is on (#14768) 2022-06-09 14:21:21 -07:00
Dmitry Gozman 652ec2f1fa test: split accname, fix select preventing context closure 2022-06-09 13:58:22 -07:00
Yury Semikhatsky 7ce17a97b1
test: capture canvas changes test passes after last roll (#14760) 2022-06-09 13:55:46 -07:00
Max Schmitt 98c34ac270 test: make Android green 2022-06-09 22:53:37 +02:00
Pavel Feldman 0711a8b169 test(ff): narrow down bounding box skips 2022-06-09 13:47:58 -07:00
Pavel Feldman 211fae295f test(electron): skip fromServiceWorker 2022-06-09 13:40:42 -07:00
Dmitry Gozman e4c60d47b1
test: fix pause.spec on tracing bots (#14766) 2022-06-09 13:34:01 -07:00
Pavel Feldman 833d332fa3
test(ff): fix headed tests (#14764) 2022-06-09 12:56:07 -07:00
Max Schmitt b4c8db68d2
test: fix electron tests (#14744) 2022-06-09 14:54:51 +02:00
Max Schmitt 3853014fa7
chore: add ubuntu 22 support (#14588) 2022-06-09 13:20:18 +02:00
Dmitry Gozman e975aef961
feat(route): fulfill from har (#14720)
feat(route): fulfill from har

This allows to use pre-recorded HAR file to fulfill routes.
2022-06-08 20:29:03 -07:00
Pavel Feldman 067d5ac81a test(electron): revert bogus fix 2022-06-09 01:33:11 -08:00
Pavel Feldman 13762c82f9
tests: nuke the failing/flaky test (#14724) 2022-06-08 17:21:19 -08:00
Pavel Feldman ac9e71b9e6
tests(video): fix firefox video tests (#14723) 2022-06-08 16:55:30 -08:00
Max Schmitt de22c9341e
test: skip test on electron to make it green (#14722) 2022-06-09 00:48:54 +02:00
Ross Wollman 85d03714d9
feat: add allow/block serviceWorkers option (#14714)
Adds cross-browser support for easily allowing/blocking Service Workers via a Context option.

Includes plumbing for Playwright Test's `use`.

Resolves #14522.

Relates #1090.
Supercedes #14321.
2022-06-08 18:27:51 -04:00
Pavel Feldman 48ab172bda
tests(fixit): garden win/webkit/input tests (#14721)
Bumping images to 300+ to work around the non-sensible minimal size.
2022-06-08 14:13:39 -08:00
Ross Wollman fccee89b41
feat: add Response.fromServiceWorker flag (#14715)
Resolves #14666.

Relates #1090.
Supercedes #14321.
2022-06-08 17:34:19 -04:00
Yury Semikhatsky beb276a2be
test: close context created in the test (#14719) 2022-06-08 14:16:09 -07:00
Yury Semikhatsky 21d570f62e
test: update expectation after webkit roll (#14718) 2022-06-08 12:46:39 -07:00
Dmitry Gozman 6c739eb345
feat(cli): option to record har (#14696)
`npx playwright open --save-har=file.har` produces a HAR file that
can be later inspected or used for mocks.
`--save-har-glob="**/*.{png,woff2}"` option can be used to
produce a smaller har that only contains entries matching the glob.
2022-06-08 10:59:50 -07:00
Yury Semikhatsky 7f026dd64c
feat(webkit): roll to r1658 (#14709)
Language override behavior changed upstream in WebKit/WebKit@039ebd9
New logic is closer to the actual behavior of WebKit on macOS, meaning that when the user changes system language the actual locale changes according to some weird OS rules:
ru-RU => navigator.language === 'ru'
fr-CH => navigator.language === 'fr-FR'
es-MX => navigator.language === 'es-MX'
Our locale emulation is aligned with that, so setting locale to fr-CH will result in fr-FR etc.
2022-06-08 10:16:49 -07:00
Dmitry Gozman a5506a80ee
test: normalize node versions for installation tests (#14610)
We should cover node 14 on all platforms (similarly to
other types of tests), and node 16/18 on linux.
2022-06-07 18:11:58 -07:00
Dmitry Gozman fdcdd58d7f
feat(har): introduce urlFilter (#14693)
This is a glob or regex pattern that filters entries recorder in the HAR.
2022-06-07 18:09:47 -07:00
Yury Semikhatsky 7596379e63
test: intercept multipart request body (#14630) 2022-06-07 09:00:51 -07:00
Pavel Feldman e3a590ed80
chore: update to react18, but use react17 mode (#14645) 2022-06-06 17:14:01 -07:00
Sébastien Règne 4c2fc6b6eb
feat(browser): add Browser.BrowserType() method (#14468) 2022-06-06 09:46:08 -07:00
Yury Semikhatsky 7e130d0c3b
test: firefox does not throttle rAF in the opener anymore (#14635) 2022-06-06 09:18:30 -07:00
Pavel Feldman 2d5572abd8
fix(ct): return locator to root for fragments (#14639)
fix(fragments): return locator to root for fragments
2022-06-04 14:07:06 -07:00
Pavel Feldman c4b003a29a
chore: don't mask ESM error (#14628) 2022-06-03 15:28:53 -07:00
Dmitry Gozman 40bfdb0f4e
fix(codegen): use name attribute for frame elements (#14609) 2022-06-02 21:14:01 -07:00
Dmitry Gozman 79d356f0cc
fix(test runner): when worker exits unexpectedly, fail a single test (#14608)
All remaining tests will continue in a new worker.
2022-06-02 21:13:47 -07:00
Pavel Feldman 74b846270b
feat(ct): support Vue2 (#14600) 2022-06-02 17:37:43 -07:00
Dmitry Gozman 94a0d669b6
browser(firefox): expose Response.fromServiceWorker (#14606)
This property is "true" when network response was fulfilled
by the service worker.
2022-06-02 17:16:19 -07:00
Ross Wollman 978854b859
chore: move multi-select assertion to toHaveValues (#14595)
Follow-up to e0a87e52d7
2022-06-02 16:01:34 -04:00
Dmitry Gozman 3a3aa023ad
chore: simplify context/page reuse in ct (#14565) 2022-06-02 12:16:07 -07:00
Andrey Lushnikov 8801f79742
Revert "fix(playwright-test): prohibit async functions passed to describe (#14538)" (#14591)
This reverts commit bd0fe50a0e.
2022-06-02 10:31:10 -07:00
Andrey Lushnikov bd0fe50a0e
fix(playwright-test): prohibit async functions passed to describe (#14538)
References #14533
2022-06-02 09:44:47 -07:00
Ross Wollman e0a87e52d7
feat: support multi-select/combo box with toHaveValue (#14555) 2022-06-02 12:10:28 -04:00
Dmitry Gozman d00efa0dfe
feat(expect): add ignoreCase option to toHaveText and toContainText (#14534) 2022-06-02 05:52:53 -07:00
Andrey Lushnikov e185082a47
tests: mark failing android tests (#14542) 2022-06-02 04:34:05 -07:00
Yury Semikhatsky 00b8d9f3db
test: opener tab does not throttle rAF (#14564) 2022-06-01 20:24:25 -07:00
Pavel Feldman e912b6897d
fix(esm): respect source maps in esm-transpiled code (#14561) 2022-06-01 16:50:23 -07:00
Dmitry Gozman c4581e54c0
fix(click): detect iframe overlays that cover target element (#13876)
This restores the old hit target check, in addition to the new
hit target interceptor.

This way, we got some coverage for iframes and other quirky cases,
but keep the bullet-proof hit target check in place.
2022-06-01 15:23:41 -07:00
Dmitry Gozman dbcf039717
chore: remove experimental types (#14560) 2022-06-01 15:22:43 -07:00
Yury Semikhatsky d1a3f3306c
fix: respect min allowed firefox width in video tests (#14558)
In firefox browser window min width is 450, setting viewport to smaller value in the tests led to unexpected image in the video.

References #14405
2022-06-01 14:21:00 -07:00
Pavel Feldman 95672765bc
fix(ct): isolate component tests when recording video / trace (#14531) 2022-05-31 15:59:36 -07:00
Dmitry Gozman a7500c18d6
feat(test runner): allow serial suites inside parallel (#14530)
Also works for `fullyParallel` mode.
2022-05-31 15:24:20 -07:00
Yury Semikhatsky 2bcdf68ef5
fix(runner): do not override trace files in afterAll (#14529) 2022-05-31 15:21:51 -07:00
Playwright Service f087e39c01
feat(chromium): roll to r1008 (#14448)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Max Schmitt <max@schmitt.mx>
2022-05-30 15:04:05 +02:00
Yury Semikhatsky c1aecc7d50
docs: maxDiffPixels description typo (#14456) 2022-05-29 09:46:06 -07:00
Yury Semikhatsky abced7223c
fix: filechooser interception in OOPIFs (#14432) 2022-05-27 13:04:58 -07:00
Pavel Feldman f724fa570f
docs: make ts snippets esm-friendly (#14451) 2022-05-27 12:36:59 -07:00
Yury Semikhatsky b164d82ba3
fix(runner): ignore .gitignore if testDir is explicitly configured (#14430)
If the tests are in an explicitly configured testDir (either at the global config level or per project) .gitignore filters are not applied.

Fixes #14381
2022-05-26 14:39:51 -07:00
Pavel Feldman ea07ff3ae9
fix(jsx): allow passing variables into mount (#14412) 2022-05-25 13:59:45 -07:00
Pavel Feldman 919d3eaf42 test(permissions): split expectations between tot and beta 2022-05-25 08:58:15 -07:00
Pavel Feldman 29f880153e
test: mark ff video tests as failing (#14406) 2022-05-25 08:55:03 -07:00
Pavel Feldman bfab9222a6
test(video): add video scale test (#14395) 2022-05-25 08:45:22 -07:00
Pavel Feldman 9440f52b88
feat(ct): support cra w/ .js (#14326) 2022-05-24 19:43:28 -07:00
Pavel Feldman d97c9bd5b6
test(ct): start covering components with tests (#14369) 2022-05-24 13:54:12 -07:00
Pavel Feldman 8c17704244 fix(edge): improve the anchor test 2022-05-24 11:39:37 -07:00
Ross Wollman 9b225f2ad4
fix: expect.toHaveScreenshot.animations types (#14387)
This makes the docs/types match the code which has already been
released.

Relevant code to traverse up from:
- 3e084829c0/packages/playwright-core/src/server/screenshotter.ts (L89)
- 3e084829c0/packages/playwright-core/src/server/screenshotter.ts (L118)

Fixes #14385
2022-05-24 11:34:29 -07:00
Pavel Feldman 19237c9490 chore: partially revert #14225 2022-05-24 10:57:38 -07:00
Andrey Lushnikov 3fd435d1d3
docs: fix docs for toHaveScreenshot (#14280) 2022-05-24 10:54:32 -07:00
Pavel Feldman 71a55c74da
fix(leak): do not retain test fixtures in worker fixtures (#14363) 2022-05-23 16:54:56 -07:00
Pavel Feldman a1324bd935
fix(route): support route w/ async handler & times (#14317) 2022-05-21 21:55:46 -07:00
Ross Wollman fbb364c1cd
fix: page.locator.focus() and page.locator(…).type(…) (#14267)
Fixes focus and blur management when `page.locator(…).focus()`  and  `page.locator(…).type(…)` are used which was regressed by 7a5b070 (#13510).

#13510 relied on an implicit assumption that this (conditional) [`blur`](7a5b070e95/packages/playwright-core/src/server/injected/injectedScript.ts (L672)) call would always be followed by a call that resulted in a newly focused element via this [`focus`](7a5b070e95/packages/playwright-core/src/server/injected/injectedScript.ts (L674)) call.

However, some elements are [not focusable](https://html.spec.whatwg.org/multipage/interaction.html#focusable-area), so we were blurring incorrectly, and losing focus that we should have maintained.

Two regression tests were added that pass on the commit prior to 7a5b070e95 (and match manual testing/expectations):

* `page.locator(…).focus()`: _keeps focus on element when attempting to focus a non-focusable element_
* `page.locator(…).type(…)`: _should type repeatedly in input in shadow dom_

Additionally, a third test (_should type repeatedly in input in shadow dom_) was added to check the invariant from #13510 that states:

> This affects [contenteditable] elements, but not input elements.

and allows us to introduce the targeted fix (contenteditble check before blur) without breaking FF again.

And _should type repeatedly in contenteditable in shadow dom with nested elements_ was added to ensure the above fix works with nest contenteditble detection.

Fixes #14254.
2022-05-19 14:31:56 -07:00
Andrey Lushnikov 9a73dfe773
feat(chromium-tip-of-tree): roll Chromium TOT to 1008 (#14279) 2022-05-19 09:29:44 -07:00
Andrey Lushnikov fd452058bb
test: try to unflake video spec (#14288) 2022-05-19 09:22:18 -07:00
Andrey Lushnikov 34429a222e
tests: mark certain tests as failing on Firefox Headed (#14286)
References #14285
2022-05-19 09:06:31 -07:00
Max Schmitt 57966333b5
test: skip large file upload tests on Android (#14283) 2022-05-19 18:24:20 +03:00
github-actions[bot] d6780c5b29
feat(chromium-tip-of-tree): roll to r1007 (#14225)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Andrey Lushnikov <aslushnikov@gmail.com>
2022-05-19 07:10:18 -07:00
Max Schmitt 4af778fa46
test: fix 'should climb up to a anchor' test in Firefox (#14275) 2022-05-19 16:23:31 +03:00
Pavel Feldman 738d5e5b3e
chore: pass fixture defaults different from falsy (#14237) 2022-05-18 12:03:47 -07:00
Pavel Feldman 50b2d4aabe
chore: ease the stress tests (#14260) 2022-05-18 12:01:18 -07:00
Pavel Feldman d5ea1b38f0
fix(recorder): remove waitForNavigation from codegen (#14166) 2022-05-18 10:02:09 -07:00
Pavel Feldman b5beeab98b
fix(click): climb the hit target hierarchy to anchor (#14235)
fix(click): climb the hit target hierarcchy to anchor
2022-05-18 10:01:34 -07:00
Pavel Feldman f0b077ea82
test(stress): add stress tests (#14240) 2022-05-18 09:50:58 -07:00
Pavel Feldman fe0afd6b5c
fix(toHaveProperty): serialize falsy arguments as well (#14232) 2022-05-17 14:44:12 -07:00
Max Schmitt 9256de5f48
chore: fix wrong toHaveScreenshot defaults in docs (#14200) 2022-05-16 22:26:23 +03:00
Pavel Feldman 56a5f2c506
fix(types): fix the toHaveScreenshot types (#14174)
Co-authored-by: Andrey Lushnikov <aslushnikov@gmail.com>
2022-05-16 07:53:46 -07:00
Dmitry Gozman c3beb71b07
fix(test runner): do not run automatic fixtures for beforeAll hooks (#14104)
There are a few issues this covers:
- Some fixtures like `page` and `context` are not allowed in `beforeAll`
  hooks, so using them in automatic fixture makes it throw.
- Running automatic fixture solely for `afterAll` is unexpected.
  This currently happens when `afterAll` is run for cleanup after
  fixture timeout/throw.

For built-in playwright fixture, we keep `'all-hooks-included'` auto mode.

Added a doc explaining the execution order.
2022-05-13 11:17:20 +01:00
Dmitry Gozman 0e2855348c
feat(locators): remove layout locators (#14129) 2022-05-12 18:50:19 +01:00
Dmitry Gozman 83d82fa466
test: make "outerWidth and outerHeight" test work on small screens (#14124) 2022-05-12 18:46:03 +01:00
Dmitry Gozman f562058805
test: make wheel event work on different host dsf (#14123)
Turns out, different mac bots have different device scale factor.
2022-05-12 17:29:03 +01:00
Dmitry Gozman 28cd3a1c5e
test: rebaseline wheel tests according to new chromium (#14110) 2022-05-12 10:05:44 +01:00
Max Schmitt 2844623109
docs: add route class -> networking guide reference (#14092) 2022-05-11 16:07:00 +01:00
Max Schmitt cdd589da91
chore: roll stable test-runner to 1.22.0-alpha-may-11-2022 (#14102) 2022-05-11 16:06:52 +01:00
Andrey Lushnikov 1afd559330
test: disable fission-related failure for firefox (#14097) 2022-05-11 07:06:52 -07:00
Dmitry Gozman b753ff8686
chore: split injected utils into proper files (#14093) 2022-05-11 13:49:12 +01:00
Dmitry Gozman 305afcdacf
fix(test runner): fix duplicate titles error when multiple issues are present (#14090) 2022-05-11 11:53:16 +01:00
Pavel Feldman a62034a6d6
test(ct): test react native events (#14079) 2022-05-10 14:01:06 -07:00
Pavel Feldman 39489931d1
chore: add more ct options to allow redirecting templates/cache (#14077) 2022-05-10 12:21:29 -07:00
Ross Wollman 0c9e0d22df
fix(ct): preserve context changes (#13986)
1. add test (and fix) using context fixture with mount
2. add test for innerText that was failing prior to https://github.com/microsoft/playwright/pull/14008
2022-05-10 11:45:47 -07:00
Andrey Lushnikov ddcce7a63a
devops: fix headlessness reporting to flakiness dashboard (#14069) 2022-05-10 09:03:47 -07:00
Pavel Feldman cf89a36181
chore: serialize circular objects (#14045) 2022-05-09 18:51:53 -07:00
Pavel Feldman e55f7bd896
feat(bindings): best-effort serialize circular structures (#14008) 2022-05-09 15:07:04 -07:00
Pavel Feldman 1658172b2c
chore: run headed on all OSs (#14042) 2022-05-09 12:55:59 -07:00
Pavel Feldman d83de4f567 chore: remove stale plugins test 2022-05-09 12:54:06 -07:00
Dmitry Gozman e8fb5a6337
fix(test runner): ensure that hooks run before fixtures teardown after timeout (#14035)
We had common cleanup exiting early after timeout, because we did not
reset the time slot.
2022-05-09 20:38:20 +01:00
Pavel Feldman e9378ba5fc
chore: hide plugins again (#14038) 2022-05-09 10:06:13 -07:00
Max Schmitt 04fafcabd8
fix: leaking server side objects (#13991) 2022-05-09 17:34:00 +01:00
Andrey Lushnikov 5aa82dc5e4
chore: un-experiment expect(pageOrLocator).toHaveScreenshot() (#14033)
This patch un-experiments `expect(pageOrLocator).toHaveScreenshot()`
method.

Fixes #13526
2022-05-09 08:34:03 -07:00
Pavel Feldman a052211dbf
chore: do not reset internal bindings for reuse (#14019) 2022-05-09 07:44:20 -07:00
Andrey Lushnikov 98945a81a8
feat: move toHaveScreenshot to use old snapshot paths by default (#14006)
Note: all toHaveScreenshot tests still use `__screenshots__` directory
for their expectations. One more test was added to make sure that
by default, `toHaveScreenshot` uses old snapshots.
2022-05-09 07:34:53 -07:00
Dmitry Gozman 6931d89eaf
feat(locators): rename locator.that to locator.filter (#14025) 2022-05-08 21:59:40 +01:00
Dmitry Gozman 64cd55089a
chore: role selectors non-experimental (#14021) 2022-05-08 11:07:01 +01:00
Dmitry Gozman c3cf7ee4a7
feat(layout locators): remove maxDistance option (#14013) 2022-05-08 07:18:16 +01:00
Pavel Feldman 5c9e7f48e0
fix(debug): do not pause on internal calls, update ct docs (#14018) 2022-05-07 19:56:25 -07:00
Andrey Lushnikov bc9ef1c76e
devops: follow-up with installation tests on flakienss dashbaord (#14015)
- upload more installation tests to the dashboard
- use json reporter on CI
2022-05-07 09:17:07 -07:00
Andrey Lushnikov cde34841a0
devops: upload installation tests to flakienss dashboard (#14007) 2022-05-06 19:04:34 -07:00
Andrey Lushnikov 5a5bb36d28
chore: nuke "fonts" screenshot option (#14004)
It was never released since it wasn't working as expected on WebKit WPE.

Fixes #12839
2022-05-06 17:54:17 -07:00
Pavel Feldman 1bbefce9af
Revert "chore: use plugins for component testing again (#13977)" (#13998)
This reverts commit a2f9f15e3e.
2022-05-06 12:02:07 -07:00
Yury Semikhatsky f171247f64
test: skip "should scroll zero-sized element" on mac 10.15 (#13972) 2022-05-05 16:56:25 -07:00
Pavel Feldman a2f9f15e3e
chore: use plugins for component testing again (#13977) 2022-05-05 14:26:56 -07:00
Pavel Feldman 058f32caff
chore: fixtures-via-plugin implementation (#13950) 2022-05-05 10:14:00 -07:00
Yury Semikhatsky 7e6439d19c
test: enable smooth scroll click after webkit roll (#13948) 2022-05-05 09:49:38 -07:00
Andrey Lushnikov bfafb2680d
fix: put browserVersion in the browsers.json (#13946)
This patch:
- adds `browserVersion` field to the `browsers.json`. This is
  updated every time we roll browser.
- starts using `browserVersion` to display browser version that's
  been downloaded.

The downloading output now looks like this:

```bash
Downloading Chromium 101.0.4951.41 (playwright build v1003) - 118.9 Mb [====================] 100% 0.0s
Chromium 101.0.4951.41 (playwright build v1003) downloaded to /Users/andreylushnikov/Library/Caches/ms-playwright/chromium-1003
Downloading FFMPEG playwright build v1007 - 1 Mb [====================] 100% 0.0s
FFMPEG playwright build v1007 downloaded to /Users/andreylushnikov/Library/Caches/ms-playwright/ffmpeg-1007
Downloading Firefox 99.0.1 (playwright build v1323) - 67.5 Mb [====================] 100% 0.0s
Firefox 99.0.1 (playwright build v1323) downloaded to /Users/andreylushnikov/Library/Caches/ms-playwright/firefox-1323
Downloading Webkit 15.4 (playwright build v1632) - 52.7 Mb [====================] 100% 0.0s
Webkit 15.4 (playwright build v1632) downloaded to /Users/andreylushnikov/Library/Caches/ms-playwright/webkit-1632
```

Fixes #13198
2022-05-05 04:17:13 -07:00
github-actions[bot] 969e6f2ada
feat(webkit): roll to r1637 (#13916) 2022-05-04 16:38:25 -07:00
Ronie Martinez c9429283d7
chore(codegen): rename script.js to example.py for Python tests (#13945) 2022-05-04 16:15:09 -07:00
Ross Wollman 95f7acf1e4
chore: widen Metadata type (#13942) 2022-05-04 13:16:11 -07:00
Pavel Feldman f4933e6d8b
chore(electron): add Win+Mac bots (#13943) 2022-05-04 12:29:22 -07:00
Andrey Lushnikov 1521afbb5f
test: attempt to unflake webkit test (#13935) 2022-05-04 11:46:26 -07:00
Yury Semikhatsky 4db5677e11
test: scroll and click with smooth scroll behavior (#13884) 2022-05-04 10:11:02 -07:00
Max Schmitt 0c2371cba9
tests: typo in tests and redundant tc (#13931) 2022-05-04 17:44:50 +01:00
Dmitry Gozman 9e0aa67d28
feat(codegen): brush up context options in pytest codegen (#13924) 2022-05-04 11:14:53 +01:00
Ronie Martinez 2c597f06bd
feat(codegen): pytest support in codegen (#13746)
feat(codegen): pytest support in codegen
2022-05-04 09:41:20 +01:00
Ross Wollman fee35346f7
chore: increase timeout for component tests (#13913) 2022-05-03 22:04:43 -07:00
Pavel Feldman 214117c9c5
clean: speed up ct (#13915) 2022-05-03 21:25:50 -07:00
Pavel Feldman 13224d1c9f
chore: restore component testing options (#13910) 2022-05-03 15:48:46 -07:00
Pavel Feldman 29fd1d86df
chore: hide plugins for now (#13908) 2022-05-03 14:25:56 -07:00
Dmitry Gozman 85b86e19b8
feat(expect): ensure it works in global setup (#13896) 2022-05-03 21:53:15 +01:00
Max Schmitt b5183b4cf9
chore: make React selectors work on React 18 (#13864)
Fixes #13845
2022-05-03 13:46:52 -07:00
Ross Wollman c4af7f2fc8
fix: unbreak installation tests, include in primary CI runs (#13903) 2022-05-03 12:48:35 -07:00
Pavel Feldman 19ce4e3514
chore: refactor web server plugin to extract legacy (#13904) 2022-05-03 11:47:37 -07:00
Dmitry Gozman ef32069299
chore: small test runner changes in preparation of global fixtures (#13899)
The main change is splitting up options from the config from other
fixtures to ensure unique location for them.
2022-05-03 15:19:27 +01:00
Ross Wollman c15462d44c
chore: remove defunct GlobalInfo.attach test (#13895) 2022-05-03 14:18:16 +01:00
Dmitry Gozman 54dd6d01e5
feat(locator): layout options (leftOf, rightOf, above, below, near) (#13821)
This also includes corresponding selector engines `left-of` and others,
modeled after existing `has` selector engine.
2022-05-03 10:33:33 +01:00
Ross Wollman 3b3cad7d69
feat: rewrite gitCommitInfo plugin, drop GlobalInfo & attachments (#13837) 2022-05-02 16:28:14 -07:00
Yury Semikhatsky ed344a882b
fix: delete headers with undefined value (#13880) 2022-05-02 12:38:57 -07:00
Yury Semikhatsky 539546ab74
test: can delete origin header in route.continue (#13879) 2022-05-02 12:38:33 -07:00
Dmitry Gozman d87de8c52c
fix(test runner): restore --headed flag (#13872) 2022-05-02 16:55:14 +01:00
Pavel Feldman 1ffd18f131
fix(test): fix plugins test on win (#13860) 2022-04-30 22:30:06 -07:00
Pavel Feldman a1b10c3856
chore: try serializing the config instead of requiring it in the worker (#13839) 2022-04-29 16:05:08 -07:00
Dmitry Gozman dc3f2d26c4
docs: add details to the element screenshot methods (#13847) 2022-04-29 17:36:09 +01:00
Ross Wollman 4984878411
fix: await plugin.configure (#13834) 2022-04-28 16:22:20 -07:00
Ross Wollman f486ce8c06
feat(plugins): add webServer implementation (#13779) 2022-04-28 15:08:10 -07:00
Ross Wollman 45972a0b6a
feat: add name for plugins (#13826)
Useful for debugging and eventually for reporters to give status updates on which phase of which plugin they are currently running.
2022-04-28 11:43:39 -07:00
Ross Wollman e124d926ee
test: log more phases of plugins (#13825) 2022-04-28 11:22:09 -07:00
Pavel Feldman e756528ad2
feat(plugins): expose suite to plugin setup (#13807) 2022-04-28 08:16:17 -07:00
Ross Wollman 22bc16ce7d
test: add plugin event order spec (#13802) 2022-04-27 18:34:18 -07:00
Pavel Feldman a01b65bedd
chore: drop the legacy global setup mode (#13803) 2022-04-27 18:01:37 -07:00
Yury Semikhatsky 5588defa22
test: content that does not work without useInnerText (#13781) 2022-04-27 15:48:38 -07:00
Dmitry Gozman 38fdc5fe24
fix(selectors): refactor chaining logic (#13764)
This fixes a few issues:
- strict mode was producing false negatives if multiple query paths
  lead to the same element being picked;
- in some cases the number of intermediate items in the list was
  exponential and crashed quickly.

What changed:
- `visible` engine is a real engine now;
- `capture` selectors are transformed to `has=` selectors for
  easier implementation;
- chained querying switched from a list to a set to avoid
  exponential size.
2022-04-27 20:51:57 +01:00
Dmitry Gozman 3aba94dbef
chore: remove unnecessary types from overrides-test (#13794) 2022-04-27 16:14:37 +01:00
Max Schmitt a0c24c01c8
chore: fix docs links for .NET roll (#13787) 2022-04-27 16:06:30 +02:00
Pavel Feldman bc6f8e1f20
feat(poll): expose custom poll interval (#13776) 2022-04-26 21:32:38 -07:00
Pavel Feldman 2bc36794d1
chore: vite all frameworks (#13780) 2022-04-26 16:15:08 -07:00
Ross Wollman 3e84ab4701
test: run installation tests on all major platforms (#13742) 2022-04-26 11:09:49 -07:00
Dmitry Gozman c0f0979055
fix(frames): networkidle for iframes with quirky urls (#13767) 2022-04-26 17:13:45 +01:00
Dmitry Gozman 1b159273ea
test: fix "should scroll zero-sized element into view" on headed (#13766)
Need to force-hide scrollbars.
2022-04-26 16:26:53 +01:00
Dmitry Gozman 39cfa2b6e3
test: switch temp dir tests to use userDataDir (#13745) 2022-04-26 09:32:58 +01:00
Ross Wollman 3ccac5b84d
fix: installation tests on Node.js 18 (#13744) 2022-04-25 13:24:11 -07:00
Dmitry Gozman 97750ccf9a
feat: locator.that (#13731)
Filters existing locator by options, currently `has` and `hasText`.
2022-04-25 20:06:18 +01:00
Yury Semikhatsky aab1a746d3
fix: join individual css selectors by > in cssFallback (#13712) 2022-04-25 11:11:24 -07:00
Pavel Feldman 5e51c17d41
chore: use plugin story for components (#13717) 2022-04-25 10:40:58 -07:00
Ross Wollman e69e836c40
chore: port installation tests to @playwright/test (#13644) 2022-04-25 09:30:14 -07:00
Yury Semikhatsky 2e6ef8f622
fix(runner): fail if worker cannot find some of the tests (#13666) 2022-04-25 09:05:40 -07:00
Dmitry Gozman 8e5854033a
fix: types generation for attach and GlobalInfo (#13727) 2022-04-25 13:56:37 +01:00
Dmitry Gozman d2bdb1d7cf
docs: explain label retargeting in selectors doc and some input actions (#13725) 2022-04-25 13:55:41 +01:00
Dmitry Gozman 01a8977b4d
feat: make scrollIntoView work with zero-sized elements (#13702)
We skip waiting for "visible" state that enforces non-zero size.
Other invisible conditions like "display:none" fail during the
actual "scrolling" step and will retry.
2022-04-23 21:48:36 +01:00
Yury Semikhatsky 0839817ff2
test: delete should not hang in exposeBinding test (#13705) 2022-04-22 12:16:12 -07:00
Ross Wollman 3eac9c694c
fix(test-runner): mark attach as async (#13687)
Also brings back generation of experimental types as part of lint.
2022-04-22 09:27:02 -07:00
Max Schmitt ca4cfca8ad
chore: make tests pass on Node.js 17+ (#13678) 2022-04-22 13:42:52 +02:00
Pavel Feldman 3d4caab153
chore: move playwright gallery into a subfolder (#13695) 2022-04-21 21:07:43 -07:00
Yury Semikhatsky 801dbe0699
fix(oopif): dispose child sessions when frame session is disposed (#13693) 2022-04-21 18:32:56 -07:00
Pavel Feldman 5990eb6074
chore: use vite plugin for registry (#13658) 2022-04-21 17:30:17 -07:00
Pavel Feldman f3ba9f30fc chore: follow up to #13626, fix compilation 2022-04-19 13:33:05 -07:00
Yury Semikhatsky 0a401b2d86
docs: clarify semantics of redirected response (#13636) 2022-04-19 09:36:38 -07:00
Andrey Lushnikov 88a9262dbb
fix: resolve WebServer cwd dir wrt configDir (#13626)
Drive-by: speed-up webserver tests by not waiting 750ms to start it.

Fixes #13115
2022-04-19 07:45:36 -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 7989427ea6
chore: bundle core deps (#13621) 2022-04-18 20:20:49 -07:00
Pavel Feldman 63ea81ec54
chore: make bundles typed (#13620) 2022-04-18 17:50:25 -07:00
Yury Semikhatsky ed0dcdabc9
docs: clarify toBeDisabled behavior (#13616) 2022-04-18 17:06:01 -07:00
Pavel Feldman 58d79e5e4d
chore: add core utils bundle (#13615) 2022-04-18 13:47:23 -07:00
Pavel Feldman eafb92f6a3
chore: embed expect types (#13609) 2022-04-18 10:54:40 -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
Dmitry Gozman 02aa4fe617
chore: generate types for TestProject/TestConfig (#13574) 2022-04-15 10:27:38 -07:00
Dmitry Gozman 2f570fa586
test: remove stray logging (#13572) 2022-04-14 16:58:09 -07:00
Dmitry Gozman 189a5fa0f8
chore: freez FullProject public type (#13570)
This is similar to FullConfig.
Properties `expect` and `fullyParallel` are not exposed.
2022-04-14 16:58:01 -07:00
Dmitry Gozman 022f83d3b4
test: run "should remove temp dir on process.exit" on windows (#13568) 2022-04-14 16:07:03 -07:00
Yury Semikhatsky aee6ba299a
chore: remove GridClient, run only page tests in service mode (#13566) 2022-04-14 15:30:04 -07:00
Wojciech Jureczka 7ba527c65f
chore: expose JSON Reporter types (#13241)
Resolves #13208
2022-04-14 13:55:29 -07:00
Dmitry Gozman c86c2e8762
feat: restore toHaveScreenshot as experimental feature (#13549)
- Restore docs.
- Make `TestConfig.expect` generated.
- Allow experimental properties with "e" marker: `- foo e<float>`.
2022-04-14 13:22:42 -07:00
Ross Wollman 11179982fc
chore: force localPaths to be resolved (#13544) 2022-04-14 11:19:36 -07: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
Dmitry Gozman 166675b9c1
feat(test): more information about timing out fixtures (#13546)
- Always show a fixture that was running during timeout.
- Give custom titles to built-in fixtures.
- Specify setup/teardown fixture phase in the message.
- Split connect vs launch browser fixtures for better naming.

Example timeout message:

```log
Timeout of 2000ms exceeded while running fixture "built-in playwright configuration" teardown.
```
2022-04-13 15:13:31 -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
Dmitry Gozman 2a97ad2487
test: check that we remove temp directories on process exit (#13494) 2022-04-12 12:28:33 -07:00
Dmitry Gozman 1e1df6395f
chore: generate expect types (#13439) 2022-04-11 10:42:19 -07:00
Yury Semikhatsky 9b07ca5050
test: reenable "should restore state from userDataDir" (#13475) 2022-04-11 09:08:40 -07:00
Ross Wollman cdb68448e1
test: fix broken GlobalInfo.attach Windows test (#13441) 2022-04-08 17:48:01 -07:00
Dmitry Gozman f6ccd4847e
fix(test runner): default workerIndex to -1 (#13440) 2022-04-08 15:23:23 -07:00
Ross Wollman 1af32e400f
feat(test-runner): introduce GlobalInfo (#13083) 2022-04-08 13:22:14 -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
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
Max Schmitt eaab6406cd
chore: skip android driver omitDriverInstall test (#13410) 2022-04-08 02:14:34 +02: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
Max Schmitt 5536e64538
feat(test-runner): support filtering by columns (#13401) 2022-04-07 22:45:45 +02:00
Dmitry Gozman 1dc2d02d35
chore: roll stable-test-runnner to apr-07 (#13374) 2022-04-07 14:58:04 +02:00
Pavel Feldman bde7bf4ea9
chore: move registry & dispatchers to under server (#13370) 2022-04-06 22:21:27 -07:00
Pavel Feldman 5ae2017a5b
chore: always import type (#13365) 2022-04-06 14:57:14 -07:00
Ivan Kaliada 424de6c38f
fix: resolve ts compilerOptions.paths with prefixes and suffixes (#13105) 2022-04-06 14:14:03 -07:00
Pavel Feldman f3bd910820
chore(test-runner): rewrite poll, soft, wrap (#13335) 2022-04-05 17:47:35 -07:00
Dmitry Gozman 4bb563b015
fix(expect): proper return types (#13334)
A few changes:
- `Matchers<R, T>` now carries both return and argument type.
- Based on the argument type, we apply playwright-specific Page/Locator matchers.
- Return type is usually void, unless wrapped with `expect.resolves`,
  `expect.rejects` or `expect.poll()`.
- To preserve compatibility with any extended types in the wild,
  argument type is optional.
2022-04-05 16:11:11 -07:00
Pavel Feldman 6ca58e18cb
fix(electron): better support for custom schemas (#13329) 2022-04-05 16:10:12 -07:00
Dmitry Gozman e31a5b690a
chore: unrelease toHaveScreenshot and screenshotsDir (#13304) 2022-04-05 08:34:51 -07:00
Pavel Feldman 5c282e50a9
fix(svelte-ct): remove layout reset example (#13306) 2022-04-04 17:49:40 -07:00
Dmitry Gozman a09b8dfa36
chore: unrelease 'fonts' screenshot option (#13300) 2022-04-04 14:51:11 -07:00
Ross Wollman 8a6b640fca
test: mark enum babel test as failing (#13282) 2022-04-04 12:49:39 -07:00
Pavel Feldman 8232497c88
feat(electron): expose app process(), detach on exit (#13280) 2022-04-04 11:50:46 -07:00
Ross Wollman 3636d8548f
chore: fix lint (#13279) 2022-04-03 21:22:47 -07:00
Ross Wollman 014deed913
test: repro enums in tsx undefined (#13272)
The enums imported from the .tsx file are ending up as "undefined";
from the .ts file they are defined.

Repro for #13265.
2022-04-03 21:12:00 -07:00
Pavel Feldman b0103566c9
fix(addInitScript): tolerate trailing comments (#13275) 2022-04-03 18:47:12 -07:00
kaivean 5d2e8918d8
feat(android): add androidDevice.options.omitDriverInstall (#13249) 2022-04-02 16:00:38 -07:00
Pavel Feldman 66cf82766e
test(html-reporter): add image diff tests (#13262) 2022-04-01 18:11:15 -07:00
Pavel Feldman 55ee41c848
feat(html): render image diff slider (#13257) 2022-04-01 15:27:51 -07:00
Ross Wollman 12abae7f31
feat(test-runner): friendly expect errors for typos (#13229)
If you typo'd an `expect` property, you got a cryptic error message:

```
Uncaught TypeError: Cannot create proxy with a non-object as target or handler
```

Now we get this nice friendly message:

```
  1) a.spec.ts:6:9 › explodes ======================================================================

    Error: expect: Property 'toBeLessThen' not found.

    Did you mean 'toBeLessThan'?

    See https://playwright.dev/docs/test-assertions for available options and documentation.

      5 |         const { test } = pwt;
      6 |         test('explodes', () => {
    > 7 |           expect.soft(1).toBeLessThen();
        |           ^
      8 |         });
      9 |

```

Fixes #13218
2022-04-01 13:38:22 -07:00
Dmitry Gozman fee9b6007f
test: fix windows paths in golden.spec (#13258) 2022-04-01 13:12:29 -07:00
Ross Wollman 16efbdef98
chore: remove/rename FullConfig._attachments (#13233)
This was originally introduced in #12734.

It will be replaced with GlobalInfo (#13083), but not before the 1.21
release.
2022-04-01 12:36:05 -07:00
Ross Wollman e5ba0d6846
test: ensure tests do not run after globalSetup fail (#13255)
Resolves #13244
2022-04-01 12:35:25 -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
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
Pavel Feldman 6a463195c4
chore: allow multiple image diffs (#13202) 2022-03-31 14:11:34 -07:00
Pavel Feldman 0346b5204b
chore: roll test runner to next (#13220) 2022-03-31 14:11:11 -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
Pavel Feldman 923f74c5a6
chore: allow matchers decorate step title (#13199) 2022-03-30 21:52:00 -07:00
Pavel Feldman 42f260c688
chore: prepare image diff for refactornig (#13197) 2022-03-30 17:42:08 -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
Pavel Feldman 81e7c0a77c
chore(html-report): render metainfo as a chip (#13166) 2022-03-29 18:13:08 -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
Pavel Feldman 5e17ed137b
fix(html-report): only invoke git once (#13165) 2022-03-29 15:49:58 -07:00
Dmitry Gozman eb09306db2
feat(connect): add connectOptions.timeout (#13163) 2022-03-29 15:03:43 -07:00
Andrey Lushnikov aa1daeba85
fix(html): put HTML report next to package.json by default (#13141)
Fixes #12970
2022-03-29 14:19:31 -07:00
Dmitry Gozman 6b48631eed
feat(role): add more tests for accessible name (#13154) 2022-03-29 11:59:44 -07:00
Pavel Feldman 1961959dcb
chore: migrate injected scripts to esbuild (#13143) 2022-03-28 23:10:17 -07:00
Dmitry Gozman de0af27837
feat(test runner): show last tests in the worker on teardown error (#13139) 2022-03-28 19:58:24 -07:00
Dmitry Gozman d59c2b996f
fix(parallel): minimize the number of beforeAll/afterAll hooks in parallel mode (#13138)
Previously, we always formed groups consisting of a single test.
Now, we group tests that share `beforeAll`/`afterAll` hooks into
`config.workers` equally-sized groups.
2022-03-28 16:10:32 -07:00
Ross Wollman 13dedd27ca
test: out-of-viewport should be considered visible (#13134)
Closes #13131.

Per the visibility spec on https://playwright.dev/docs/next/actionability#visible:

> Element is considered visible when it has non-empty bounding box and does not have visibility:hidden computed style. Note that elements of zero size or with display:none are not considered visible.

 non-empty bounding box
 does not have visibility:hidden

Given the above conditions are satisfied, the locator is considered visible.

https://github.com/microsoft/playwright/issues/8740 proposes something like `isInViewport()` that would be better suited for checking if an element is offscreen.
2022-03-28 16:10:16 -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 9420a53939
fix(esm): make sure import from './foo.js' is supported (#13137)
Drive-by: migrate all @esm tests to esm.spec.ts.
2022-03-28 14:37:46 -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
Pavel Feldman 1471bb7177
fix(tests): remove lock from component tests, test real experience (#13095) 2022-03-26 13:54:33 -07:00
Pavel Feldman a4a2d41705 fix(tests): fix selenium installation tests 2022-03-26 08:36:25 -07:00
Pavel Feldman a58707b8a6
chore: group tests under tests/ (2) (#13082) 2022-03-25 23:09:02 -07:00
Pavel Feldman a454328c25
fix(test): follow up to tests refactoring (#13085) 2022-03-25 22:11:29 -07:00
Pavel Feldman 02cac8a066
chore: group tests under tests/ (1) (#13081) 2022-03-25 16:05:50 -07:00
Yury Semikhatsky 5734c18ef8
feat(route): add cors header in route.fulfill (#12943) 2022-03-25 14:56:57 -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
Ross Wollman ddc2cd4a3e
test: mark flaky proxy tests (#13050) 2022-03-24 14:50:59 -07:00
Max Schmitt 1797c5c249
chore(test-runner): support self signed certificate in webServer (#13032) 2022-03-24 17:30:52 +01:00
Dmitry Gozman 91408f2c5e
fix(storageState): provide nice error message for storage state issues (#13019) 2022-03-24 07:33:51 -07:00
Dmitry Gozman 3688e74e3e
fix(list mode): print errors to stderr (#13016)
`--list` mode now prints any errors encountered during test collection,
for example syntax errors, to `stderr`.
2022-03-24 07:33:33 -07:00
Andrey Lushnikov e1700bd167
feat: use package.json directory as a default for outputDir (#12942)
This patch:
- starts using directory of `package.json` to resolve default
  output directory path
- starts using either `package.json` directory or configuration
  directory to resolve all relative paths

References #12970
2022-03-23 16:05:49 -07:00
Ross Wollman 39376cccd8
fix: allow unnamed cookies (#12991)
Fixes #12808.
2022-03-23 15:50:43 -07:00
Xiaoxing Ye 04e9d2ec08
test(test-runner): fix reporter-list test cannot be run on win32 vscode (#12951) 2022-03-23 11:48:05 +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
Ross Wollman 541fb39a51
feat(html-reporter): add report context header (#12734)
Resolves #11318.

* Adds `TestConfig.attachments` public API. (We opted to not implement an analog to the async `TestInfo.attach(…)` API.)
* Adds `TestConfig.attachments` to common reporters.
* Dogfoods some git and CI-info inference to generate useful atttachments
* Updates HTML Reporter to include a side bar to present a pre-defined set of attachments (a.k.a git/commit context sidebar)

Here's what it looks like:

<img width="1738" alt="Screen Shot 2022-03-21 at 3 23 28 PM" src="https://user-images.githubusercontent.com/11915034/159373291-8b937d30-fba3-472a-853a-766018f6b3e2.png">

See `tests/playwright-test/reporter-html.spec.ts` for an example of usage (for dogfood-ing only). In the future, if this becomes user-facing, there the Global Setup bit would likely become unnecessary (as would interaction with attachments array); there would likely just be a nice top-level config and/or CLI flag to enable collecting of info.
2022-03-22 16:28:04 -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