1514 Commits

Author SHA1 Message Date
Dmitry Gozman
a479cb6f52
fix(test runner): add an overload for test.skip(title, fn) (#8454)
We shipped this feature, but forgot to add the right overload to d.ts.
2021-08-25 14:36:36 -07:00
Yury Semikhatsky
204b6321b4
feat(webkit): bump to 1534 (#8451) 2021-08-25 14:27:49 -07:00
Ross Wollman
cd110e6477
feat(har): Remotely accessible HAR file (#8385)
This change ensure's the HAR file is saved at `recordHar.path` on the
client instead of the server.

NB: The goal was to make this change transparent to the user and NOT
introduce any new APIs. Namely, I want to leave the API open for
potential `context.har.start()` and `context.har.stop()`.

This does BREAK servers that expect the HAR to be at the `recordHar.path`
on the server, but I think that's OK since there haven't been reports
of missing HAR on client making me think not many users are getting
HAR with client and server on different hosts anyways.

Closes #8355
2021-08-25 13:32:56 -07:00
Dmitry Gozman
de85d8bb83
fix(test runner): do not special case test.fail (#8447)
This makes `test.fail` tests considered as passing when they actually fail:
- Stop restarting the worker.
- Retry when it passes instead of a fail.
- Behaves similar to regular tests in a `describe.serial` suite.
2021-08-25 12:19:50 -07:00
Max Schmitt
6c8c18dc73 test: skip 'should work with lazy loading iframes' on Android 2021-08-25 14:27:44 +02:00
Max Schmitt
8189de42cf
test: fix package installation tests (#8430) 2021-08-25 13:34:54 +02:00
Dmitry Gozman
29eb6cb777
chore: migrate tracing to har (#8417)
chore: migrate tracing to har

- `HarTracer` is used by both `HarRecorder` that implements
  `recordHar` context option, and by tracing.
- We keep the `trace.network` format for now, so it is not
  yet a valid har file, but it contains har entries.
2021-08-24 21:09:41 -07:00
Dmitry Gozman
33852635b7
fix(fetch): skip tests on non-default modes, add node-fetch to deps list (#8425) 2021-08-24 19:41:29 -07:00
Yury Semikhatsky
a6740c852a
test: webkit linux fails to load application/octet-stream resource (#8424) 2021-08-24 17:34:29 -07:00
Dmitry Gozman
b188468fa4
fix(tracing): rewrite blob urls so that we can intercept them (#8423) 2021-08-24 17:05:26 -07:00
Yury Semikhatsky
338d3c8fd4
test: override dns lookup to support subdomains (#8419) 2021-08-24 16:55:10 -07:00
Yury Semikhatsky
c0010d16c6
feat: introduce BrowserContext._fetch (#8349) 2021-08-24 14:29:04 -07:00
Dmitry Gozman
b0a7843247
chore: migrate tracing ResourceSnapshot to follow har entry format (#8391)
This will ease the migration of tracing to har.
2021-08-24 13:17:58 -07:00
Dmitry Gozman
75fb77355a
test(test runner): check retries with beforeAll failure and multiple tests (#8413) 2021-08-24 12:22:16 -07:00
Max Schmitt
8e20f13079
feat(routes): add support for the times option (#8399) 2021-08-24 20:45:50 +02:00
Yury Semikhatsky
59422a00f5
feat(route): rename method, add response option (#8386) 2021-08-24 11:07:54 -07:00
Joel Einbinder
a8a3799e9d
fix(test-runner): use describe name in output dir (#8282) 2021-08-24 10:33:40 -04:00
Joel Einbinder
ce2aa1782b
fix(test): fix broken codegen test (#8383) 2021-08-23 22:38:50 -04:00
Dmitry Gozman
47724fed5a
chore(tracing): rework start/export chunks (#8378)
Instead of filtering the whole trace file on export, we write
into separate trace file for each chunk. We also write a separate
trace.network file with all resources, because it is reused between
chunks.

This brings us towards `tracing.startFile()/stopFile()` api.
2021-08-23 16:08:09 -07:00
Joel Einbinder
0ed3c79d51
fix(selectors): nicer errors if the selector engine returns a bad value (#8259)
Co-authored-by: Pavel Feldman <pavel.feldman@gmail.com>
2021-08-23 22:54:02 +02:00
Joel Einbinder
60829f8909
fix(codegen): escape tricky characters (#8350) 2021-08-23 12:22:19 -04:00
Dmitry Gozman
f9b87268a7
fix(test runner): afterAll error should not mask beforeAll error (#8358) 2021-08-23 09:21:40 -07:00
Ross Wollman
25a4c7b3df
feat(launchServer): accept wsPath option (#8353) 2021-08-22 09:04:47 -07:00
Pavel Feldman
0997c13151
fix(test-runner): do not attach non-existent diff (#8297) 2021-08-20 13:40:27 -07:00
Andrey Lushnikov
48e94c15c1
feat: support multiple roots in React and Vue selectors (#8313)
Fixes #8230
2021-08-20 05:05:52 -07:00
Dmitry Gozman
7818f5fa0b
test: add a tracing bot that collects a trace for most contexts (#8316) 2021-08-19 19:09:19 -07:00
Dmitry Gozman
e5be2c9205
feat(test runner): show failure details for flaky test runs (#8332)
Currently, we just say "foo.spec.ts > my test" is flaky, but do not
show how exactly the failed run went.
2021-08-19 18:20:53 -07:00
Dmitry Gozman
9c96468b9e
fix(tracing): do not stall while capturing snapshot with an open dialog (#8328) 2021-08-19 18:20:15 -07:00
Pavel Feldman
80dded6ccf
feat(proxy): bind proxy to open port (#8331) 2021-08-19 18:08:55 -07:00
Dmitry Gozman
70eca0401d
fix(test runner): avoid internal error for step end without begin (#8327)
fix(test runner): avoid internal error for step end without begin

Consider the following scenario:
- Test finishes and starts tearing down fixtures.
- Fixture teardown starts a step S and then times out.
- We declare the test finished (with timeout).
- Dispatcher shuts down the worker and spins a new one for a retry.
  Additionally, it clears steps information for the test to be
  ready for the new retry. Step S information is lost.
- Meanwhile, during worker teardown, the step S does
  actually finish (usually with an error), and we send stepEnd for S.
- Dispatcher does not know what to do with step S end and
  prints an internal error.

The fix is to ignore certain messages from the shutting down worker that failed.
2021-08-19 17:04:09 -07:00
Pavel Feldman
cad7fc2ef7
feat(proxy): support local.playwright for proxying (#8330) 2021-08-19 16:56:06 -07:00
Pavel Feldman
44887c237d
chore: reimplement socks to be readable (#8315) 2021-08-19 15:16:46 -07:00
Max Schmitt
96a9a26f9f
fix: strict mode on page.* methods on context level (#8324) 2021-08-19 23:08:28 +02:00
Yury Semikhatsky
356d69ae3f
test: make borwsercontext-proxy tests use test proxy server (#8318) 2021-08-19 13:34:32 -07:00
Max Schmitt
ddcdb6d413
chore(protocol): do client hello instead of server hello (#8019) 2021-08-19 17:31:14 +02:00
Yury Semikhatsky
c00db569e3
test: skip interception test in electron (#8240) 2021-08-19 16:44:13 +02:00
Yury Semikhatsky
d42169aba1
test: proxy server fixture, new test for https via http proxy (#8299) 2021-08-19 07:36:03 -07:00
Dmitry Gozman
f06e7b91fb
fix(tracing): serialize resource writes against trace export (#8296)
Inlining TraceSnapshotter makes it easier to serialize writes and removes no-op glue.
We also stop writing the same resource twice.
2021-08-19 07:26:24 -07:00
Pavel Feldman
4d7956c70b
chore: roll test runner to ToT (#8291) 2021-08-18 14:32:36 -07:00
Pavel Feldman
6ef76e333e
feat(strict): add context-level selector strictness (#8290) 2021-08-18 12:51:45 -07:00
Dmitry Gozman
8d81890e47
feat(codegen): support --save-trace option (#8267) 2021-08-18 07:27:45 -07:00
Pavel Feldman
710cec80a0
feat(test-runner): render step titles (#8270) 2021-08-17 16:41:36 -07:00
Pavel Feldman
97ba4f22f3
feat(test-runner): report nested steps (#8266) 2021-08-17 13:57:26 -07:00
Dmitry Gozman
99993e173b
fix(snapshots): account for malformed headers (#8241)
When browser receives multiple header values for the same header name,
we present them as LF-separated value. This is not considered valid in
Node, so we should split by LF when serving a snapshot.

There more invalid characters in headers, so just in case we try/catch it.
2021-08-16 17:40:46 -07:00
Dmitry Gozman
246495f705
fix(tracing): improve captureStackTrace (#8236)
- Simplify by only considering client/ vs non-client/
- Fix stack traces when calling from other playwright code, e.g. from the cli
- Account for re-entrant calls that happen when
  instrumenting context creation/desctruction
- Add tests
- Fix StackTraceView on Windows
2021-08-16 17:06:38 -07:00
Dmitry Gozman
2aff06ec73
fix(test runner): make sure tracing is not running on non-retries (#8232)
When sharing a context between tests and using `'on-first-retry'` we
could end up with tracing still running in non-retried tests. That's
extra overhead without a reason.
2021-08-16 16:46:35 -07:00
Yury Semikhatsky
8cc4140933
fix: throw if intercepted response fails (#8195) 2021-08-16 16:40:47 -07:00
Ross Wollman
101662765c
api(cdp): newCDPSession accepts frames, too (#8157)
Without this, Playwright's CDP feature leaves unreachable
targets (namely OOPIFs).

This change allows for more advanced experimentation in user-land
without relying on out-of-band CDP connections and clients.

Now you can, for example, call `DOM.getDocument` on the
page OR main frame, observe there is an iframe node with
no `contentDocument` (i.e. OOPIF), make note of the referenced
`frameId`, and then iterate of page.frames() calling `Target.getInfo`
on each to link the Playwright Frame with the CDP `frameId` and
then recurse.

Relates #8113
2021-08-16 12:49:10 -07:00
Pavel Feldman
bdb772d710
fix(android): fix android tests (#8209) 2021-08-15 22:54:30 -07:00
Yury Semikhatsky
39f663834f
test: intercepted response status line (#8189) 2021-08-13 16:28:42 -07:00