Commit graph

400 commits

Author SHA1 Message Date
Yury Semikhatsky 3bdbe4284e
fix(steps): make expect.toPass and expect.poll step containers (#30389)
Fixes https://github.com/microsoft/playwright/issues/30322
2024-04-16 16:18:37 -07:00
Yury Semikhatsky 73fce8fb98
chore: replace Zones with AsyncLocalStorage (#30381)
Reference https://github.com/microsoft/playwright/issues/30322
2024-04-16 12:51:20 -07:00
Yury Semikhatsky 3cea17abb6
fix: shut down workers before reporter.onEnd (#30329) 2024-04-16 09:49:11 -07:00
Yury Semikhatsky 1ef85015f3
fix(merge): preserve static annotations on the tests that did not run (#30348)
Fixes https://github.com/microsoft/playwright/issues/30260
2024-04-11 16:17:57 -07:00
Max Schmitt 15b423106f
fix(ui-mode): do not loose run information after writing into testDir (#30312)
Partially reverts https://github.com/microsoft/playwright/pull/30008
that started to reset all test results upon listing tests, including the
test that did just run and triggered re-listing.

https://github.com/microsoft/playwright/issues/30300.
2024-04-10 19:01:51 +02:00
Max Schmitt b2ded9fed1
fix(expect): throw better received error when no element was found (#29890)
Fixes https://github.com/microsoft/playwright/issues/29873
2024-04-10 10:01:19 +02:00
Dmitry Gozman a6827772a5
fix(esmLoader): unref MessagePort in the main thread (#30271)
This prevents the process from not exiting forever due to an open port.
2024-04-06 14:25:57 -07:00
Yury Semikhatsky 3e03c800df
chore: resolve config location earlier (#30275)
Reference https://github.com/microsoft/playwright/issues/29768
2024-04-05 19:32:56 -07:00
Yury Semikhatsky 9e89f292bf
chore: remove usage of configFile from junit reporter (#30273)
Reference https://github.com/microsoft/playwright/issues/29768
2024-04-05 15:44:00 -07:00
Pavel Feldman 3cea258a9c
chore: expose clear cache to test server (#30268) 2024-04-05 09:31:34 -07:00
Pavel Feldman 5043bd55dc
chore: move dev server to config-based framework extensibility (#30234) 2024-04-05 08:39:51 -07:00
Dmitry Gozman d5907f4b13
feat(junit): includeProjectInTestName option (#30233)
Fixes #30246.
2024-04-04 11:04:51 -07:00
Pavel Feldman 8ee286b366
chore: migrate to the testserver.initialize (#30226) 2024-04-03 12:50:56 -07:00
Yury Semikhatsky 5c5f0d77e4
chore: move implementation of Config and Project to TestConfig and TestProject (#30212)
Reference https://github.com/microsoft/playwright/issues/29768
2024-04-03 10:47:32 -07:00
Max Schmitt 010bc29a3c
chore: harden markdown link validation (#30221) 2024-04-03 17:51:32 +02:00
Yury Semikhatsky 63f876a335
chore: remove overrides for type and status (#30211)
Reference https://github.com/microsoft/playwright/issues/29768
2024-04-02 17:42:13 -07:00
Козынченко Вячеслав e58a33a0ae
feat(expect) - add ignoreCase option for toHaveURL (#30192)
feat(expect): add ignoreCase option for toHaveURL

Fixes #30057
2024-04-02 16:20:46 -07:00
Yury Semikhatsky 81bcf2a53b
docs: document FullReporter API (#30186)
* FullConfig split into FullConfig and ConfigInWorker
* FullProject split into FullProject and ProjectInWorker
* Tests can only access {Config, Project}InWorker, while reporters can
only access Full{Config,Project}. This will allow in the future to
change the reporter API independently from the tests.
* Added documentation for the 4 classes.
2024-04-02 16:15:02 -07:00
Yury Semikhatsky 39b3c93b85
docs: note about sharded projects in the merged config (#30184)
Fixes https://github.com/microsoft/playwright/issues/29841
2024-04-02 14:41:23 -07:00
Pavel Feldman 6e799fdfa8
chore: do not run setup tasks on test run via server (#30202) 2024-04-01 15:31:09 -07:00
Pavel Feldman 7afd4170ea
chore: opt into stdio forwarding (#30185) 2024-03-30 18:45:10 -07:00
Hansanto a950a7b86b
feat: Support intervals arg for toPass (#30037)
Fixes #30040

# Context

In the `playwright.config` file, we can custom the default `timeout`
property for `expect.toPass` by the property:

```ts title='playwright.config.ts'
export default defineConfig({
  // ...
  expect: {
    toPass: {
      timeout: 60_000,
    },
  },
});
```

However, we can't customize the `intervals` option. So the default value
is always `[100, 250, 500, 1000]`.

# Goal

Add the possibility to customize the intervals option from the
`playwright.config` file.

```ts title='playwright.config.ts'
export default defineConfig({
  // ...
  expect: {
    toPass: {
      timeout: 60_000,
      intervals: [1000, 2000, 3000]
    },
  },
});
```
2024-03-29 10:17:29 -07:00
Yury Semikhatsky 3001c9ac73
fix: preserve test declaration order in html and merged report (#30159)
* Add `Suite.entries` that returns tests and suites in their declaration
order
* Exposed `Suite.type` and `TestCase.type` for discriminating between
different entry types.
* Blob report format is updated to store entries instead of separate
lists for suites and tests.
* Bumped blob format version to 2, added modernizer.

Fixes https://github.com/microsoft/playwright/issues/29984
2024-03-29 10:12:33 -07:00
Yury Semikhatsky 16318ea715
chore: remove unused botName from types (#30172) 2024-03-28 16:16:15 -07:00
Pavel Feldman 5912362089
chore: export MatcherReturnType type (#30139)
Fixes https://github.com/microsoft/playwright/issues/30131
2024-03-27 08:33:00 -07:00
Pavel Feldman d7710f0c3e
chore: do not exit UI mode upon page reload (#30135) 2024-03-26 15:49:44 -07:00
Dmitry Gozman b9b06cb010
chore: mark version 1.44.0-next (#30129) 2024-03-26 13:44:10 -07:00
Pavel Feldman 0bf635ecce
chore: ensure max failures exit yields erroneous status code (#30120)
Fixes https://github.com/microsoft/playwright/issues/30118
2024-03-26 09:20:13 -07:00
Dmitry Gozman 051afb9ce0
fix(test runner): update fixture teardown error message (#30109)
With the recent change that gave after hooks a separate timeout, fixture
teardown does not imply that "test finished successfully, but fixture
teardown was slow".
2024-03-25 17:04:03 -07:00
Pavel Feldman 7039ad0d11
chore: follow up to the api review for test server (#30097) 2024-03-25 15:42:58 -07:00
Dmitry Gozman 911d8effb9
feat(test runner): do not mock tty in the worker process (#30107)
This was historically done to make `console.log()` have colors. However,
this makes any other code that checks `process.stdout.isTTY` incorrectly
assume real TTY support.

Node18 and Node20 now respect `FORCE_COLOR=1` in console, so our default
behavior of forcing colors in the worker process just works out of the
box. See https://github.com/nodejs/node/pull/48034.
2024-03-25 15:31:58 -07:00
Dmitry Gozman 95d649b406
feat: address api review feedback for 1.43 (#30066)
- Update docs for `trace: retain-on-first-failure`.
- Update docs for `devtools` option.
- Rename `Locator.enterFrame()` to `Locator.contentFrame()`.
- Rename `FrameLocator.exitFrame()` to `FrameLocator.owner()`.
2024-03-25 07:42:13 -07:00
Pavel Feldman 1539cde034
chore: allow passing path to config to the test server (#30068) 2024-03-22 16:04:59 -07:00
Pavel Feldman ee9432b9da
chore: send test params over the wire in ui mode (#30046) 2024-03-22 13:49:28 -07:00
Yury Semikhatsky a511731f55
fix(html): keep projects from different bots separate (#30051) 2024-03-22 10:02:00 -07:00
Pavel Feldman a9fc4de37e
chore: queue run and list commands from ui (#30033) 2024-03-21 14:28:07 -07:00
Dmitry Gozman 3e73a6ce69
feat(test runner): show multiple errors, at most one per stage (#30024)
Previously, there was at most one "hard error", as opposite to multiple
"soft errors". This was done to preserve the historic behavior at the
time of introducing multiple `TestInfo.errors`.

With this change, every user callback that is executed `withRunnable()`
can throw an error and/or timeout, and both of these will end up in
`TestInfo.errors`.

Additionally, there is at most one "unhandled exception" error, to avoid
flooding the report with mass failures.

Drive-by: remove boolean arguments from `_failWithError()`.

Fixes #29876.
2024-03-20 21:01:30 -07:00
Pavel Feldman 8a1ff34578
chore: split ui mode view into files (#30029) 2024-03-20 16:00:35 -07:00
Pavel Feldman 48ccc9cbcd
chore: prepare to reuse test server from ui mode (6) (#30008) 2024-03-20 13:43:26 -07:00
Pavel Feldman 0a22a86e2e
chore: prepare to reuse test server from ui mode (5) (#30005) 2024-03-19 14:08:21 -07:00
Pavel Feldman 54aca430b0
chore: prepare to reuse test server from ui mode (4) (#29995) 2024-03-19 13:00:49 -07:00
Dmitry Gozman be1af15d57
feat: always enable ESM loader with the new API (#29991)
It does not require a process restart anymore, so safe to enable.

Fixes #29747.
2024-03-18 21:54:25 -07:00
Dmitry Gozman b41b802662
fix(test runner): avoid dependency tracking colliding between esm and cjs (#29994)
When collecting dependencies both from CJS loader and from ESM loader,
the latter would overwrite the dependencies set instead of appending.

Also make sure cts/cjs/mts/mjs are all supported equally.

References #29747.
2024-03-18 17:17:58 -07:00
Pavel Feldman c7b074d39e
chore: prepare to reuse test server from ui mode (3) (#29989) 2024-03-18 17:14:21 -07:00
Yury Semikhatsky 35db70ea1d
chore: trim file names longer than 60 chars (was 100) (#29725)
Test-specific output dir and snapshot names are trimmed to 60 chars
instead of just 100. The snapshot names are still trimmed at 100 chars
for backwards compatibility.


Reference https://github.com/microsoft/playwright/issues/29719
2024-03-18 12:53:15 -07:00
Pavel Feldman ef4438ee99
chore: prepare to reuse test server from ui mode (2) (#29966) 2024-03-18 09:59:02 -07:00
Pavel Feldman 6faadf5160
chore: prepare to reuse test server from ui mode (#29965) 2024-03-18 09:50:11 -07:00
Pavel Feldman 94348bb3c5
chore: align test tree with vscode (#29864) 2024-03-14 15:44:35 -07:00
Yury Semikhatsky 166d2d4fde
chore: separate results for repeated snapshot names (#29880)
Reference #29719
2024-03-12 16:10:43 -07:00
Dmitry Gozman 88e80cf948
chore(test runner): simplify TimeoutManager and TimeoutRunner (#29863) 2024-03-11 15:43:50 -07:00
Yury Semikhatsky 59228f19ce
fix: tty.WriteStream method stubs for process.stdout/stderr (#29865)
Fixes #29839
2024-03-11 10:11:16 -07:00
Yury Semikhatsky 7f6f17d1c3
chore: simplify toMatchSnapshot names calculation (#29862)
Reference https://github.com/microsoft/playwright/issues/29719
2024-03-10 11:11:35 -07:00
Dmitry Gozman d214778548
chore(test runner): move timeout handling to the top, stop inheriting runnable (#29857) 2024-03-08 15:19:36 -08:00
Dmitry Gozman 006ee7f3b0
feat: separate timeout for after hooks (#29828)
Instead of sharing the timeout with the test, and then extending it when
test times out, we give after hooks a separate timeout.
2024-03-06 12:31:54 -08:00
Lukas Bockstaller 425f737eb6
feat: exposes tags in testInfo (#29794)
Fixes #29793.

---------

Signed-off-by: Lukas Bockstaller <lukas.bockstaller@everest-erp.com>
Co-authored-by: Dmitry Gozman <dgozman@gmail.com>
2024-03-06 08:33:06 -08:00
Dmitry Gozman 1d4bdc6898
chore(test runner): make runAsStage throw and catch errors explicitly (#29814) 2024-03-05 16:35:11 -08:00
Dmitry Gozman a3ed799cd5
fix(tsconfig): when extending, retain pathsBasePath from the original config (#29822)
This fixes a case where we incorrectly used the final config's base path
when resolving relative path mappings in the absence of the baseUrl.

Fixes #29816.
2024-03-05 16:34:39 -08:00
Pavel Feldman 8bf8091cb1
chore: extract the tele test tree (#29824) 2024-03-05 15:11:56 -08:00
Pavel Feldman e314b83e56
chore: iterate towards tele reporter reuse in vscode (2) (#29812) 2024-03-04 19:52:20 -08:00
Dmitry Gozman 5eb8fea616
chore: rewrite worker main through TestInfoImpl._runAsStage (#29644) 2024-03-04 19:36:58 -08:00
Pavel Feldman 743a6ffe1d
chore: iterate towards tele reporter reuse in vscode (#29803) 2024-03-04 11:08:40 -08:00
Pavel Feldman 68284b0505
chore: inject string pool into the tele receiver (#29781) 2024-03-04 08:46:32 -08:00
Pavel Feldman ef924c14e7
chore: do not use project id in telereporter (#29776) 2024-03-01 21:44:08 -08:00
Pavel Feldman bbcc3c1238
chore: remove private config usage from telereporter (#29771) 2024-03-01 13:14:12 -08:00
Pavel Feldman d0cc5871d8
chore: remove private suite from tele reporter (#29752) 2024-03-01 11:30:28 -08:00
Renan Greca 4e0bd6286e
docs: Improved JSDoc for expect.toPass (#29722) 2024-03-01 10:51:23 -08:00
Pavel Feldman ff16d7960c
fix(tsload): fix tsconfig inheritance resolution (#29766)
Fixes https://github.com/microsoft/playwright/issues/29731
2024-03-01 09:36:04 -08:00
Yury Semikhatsky c08a4e72d1
chore: call testInfo.snapshotPath directly (#29755)
Reference https://github.com/microsoft/playwright/issues/29719
2024-02-29 16:59:39 -08:00
Pavel Feldman 99744d0683
chore: normalize telereceiver type imports (#29745) 2024-02-29 12:31:07 -08:00
Stevan Freeborn 52b803ecf5
feat(trace mode): add on-first-failure mode for traces (#29647)
Implements the changes suggested in #29531
2024-02-28 14:39:18 -08:00
Pavel Feldman 9d0430fa26
chore: strengthen linting (#29669) 2024-02-26 16:52:28 -08:00
Yury Semikhatsky 01846b954d
chore: mark 1.43.0-next (#29670) 2024-02-26 16:45:25 -08:00
Pavel Feldman 7eb910a652
chore: enable eslint for js (#29639) 2024-02-26 09:39:21 -08:00
Pavel Feldman 6b5e273b6d
chore: reuse test server wire for reporter events (#29640) 2024-02-23 15:51:20 -08:00
Dmitry Gozman 8d9c67ac5d
chore(test runner): do not nest fixture setups inside each other, similar to teardown (#29619) 2024-02-23 14:47:13 -08:00
Pavel Feldman a3aea813bc
chore: implement server-based list files (#29633) 2024-02-23 08:29:44 -08:00
Pavel Feldman 2ca45ff948
chore: use test server as a singleton (#29630) 2024-02-22 15:56:38 -08:00
Pavel Feldman ee93136132
chore: streamline config loader (#29627) 2024-02-22 15:14:13 -08:00
Pavel Feldman ac0787d0c8
chore: expose find related files over test server (#29604) 2024-02-22 13:37:24 -08:00
Pavel Feldman 82b17bdda1
chore: mark server-related fixture options as such (#29602) 2024-02-21 17:04:36 -08:00
Pavel Feldman ba72f7e429
chore: an iteration on test server (#29589) 2024-02-21 09:27:48 -08:00
Pavel Feldman a023cd1f57
fix(output): clear output before global setup (#29584) 2024-02-20 14:24:59 -08:00
Dmitry Gozman f9aebda5db
fix(fixtures): attribute teardown step to the right TestInfo instance (#29523) 2024-02-20 12:35:43 -08:00
David 593feea166
fix: use addEventListener instead of onmessage in portTransport.ts (#29581) 2024-02-20 10:04:26 -08:00
Pavel Feldman d573c515a3
chore: add test server stub (#29568) 2024-02-20 09:56:33 -08:00
Pavel Feldman a99652b0d9
chore: remove clearCompilationCache, do not push cache it into loader… (#29548) 2024-02-19 10:21:05 -08:00
Dmitry Gozman f414227ed8
chore(test runner): make FixturePool.registrations private (#29539)
This way everyone resolves through a public function instead of a map
lookup, which is sometimes wrong.
2024-02-16 20:29:33 -08:00
Yury Semikhatsky f3fde992eb
chore: remove --project-grep, add wildcard support (#29537)
Reference #15128
2024-02-16 19:18:00 -08:00
Pavel Feldman 4f1d8cdd63
chore: hide test server related cli commands (#29532) 2024-02-16 14:32:44 -08:00
Dmitry Gozman 269a293ba1
chore(test runner): allow TestInfoImpl without a TestCase (#29534)
This will be useful to run `beforeAll`/`afterAll` hooks with a separate
`TestInfo` instance, as well as run use helpers like
`_runAndFailOnError()` during scope teardown.
2024-02-16 12:43:13 -08:00
Dmitry Gozman dbf0b25146
chore(test runner): do not rely on zones for fixture steps (#29519) 2024-02-16 10:51:45 -08:00
Dmitry Gozman dc9cddde95
chore: do not rely on zones for predefined steps (#29485)
This fixes some edge cases where fixtures and steps inside them were
attached to the wrong parent (see the new test).
This will also allow to replace some `runAsStep` calls with a flat list
of tasks to do that do not rely on lexical scope.
2024-02-15 12:49:08 -08:00
Dmitry Gozman 08afb34c14
chore(test runner): make timeout error an Error (#29515) 2024-02-15 11:38:13 -08:00
Dmitry Gozman bd5403dcad
chore: remove --tag and tagFilter (#29468)
This makes new tags filtered by the `grep`. New `TestCase.tags` API now
includes both old and new tags.
2024-02-15 11:37:16 -08:00
Pavel Feldman 217c0618df
chore: rename find-related-tests to find-related-test-files (#29483) 2024-02-13 15:40:49 -08:00
Pavel Feldman 7aef5249d8
chore: pass the private data to the runner via config (#29467) 2024-02-13 09:34:03 -08:00
Dmitry Gozman f605a5009b
fix(esmLoader): do not serialize the whole compilation cache after each import (#29464)
Instead, send the newly created cache entry only.

References #29418.
2024-02-12 16:39:53 -08:00
Yury Semikhatsky 7834beb932
chore: extract --project-grep option for matching with regex (#29445)
Reference https://github.com/microsoft/playwright/issues/15128
2024-02-10 11:19:00 -08:00
Pavel Feldman 586d14f02c
chore: add find-related-tests command (#29439) 2024-02-09 19:02:42 -08:00
Max Schmitt 61b88a851d
fix(merge): blobs before tags API (#29438)
Fixes https://github.com/microsoft/playwright/issues/29434
2024-02-09 20:47:38 +01:00