29 Commits

Author SHA1 Message Date
Pavel Feldman
fdde9493ea
fix: don't parse potentially invalid urls in event handlers (#5090) 2021-01-25 14:49:51 -08:00
Pavel Feldman
01d6f83597
chore: introduce debug toolbar (#5145) 2021-01-25 14:49:26 -08:00
Joel Einbinder
3e4e511d84
feat(pause): page._pause to wait for user to click resume (#5050) 2021-01-22 18:47:02 -08:00
Dmitry Gozman
3e1c72ac5f
fix(reload): do not throw when reload is racing with navigation (#5113)
When `page.reload()` is racing against the renderer-initiated
navigation, we might end up with `waitForNavigation()` being rejected
before the reload implementation is able to catch it.

To avoid that, carefully use Promise.all and await `waitForNavigation`
from the get go.

Same happens to `page.goForward()` and `page.goBack()`.
2021-01-22 15:58:53 -08:00
Dmitry Gozman
afaec552dd
feat(trace): show dialogs, navigations and misc events (#5025) 2021-01-15 18:30:55 -08:00
Dmitry Gozman
5c3f483659
fix(cli): do not extend injected script on same-document navigations (#5002)
Otherwise, the injected script has to be ready for reentrancy.
2021-01-13 14:25:42 -08:00
Pavel Feldman
f20518f252
fix(har): do not complain about a lot of listeners (#4675) 2020-12-11 23:15:36 -08:00
Joel Einbinder
ea833daa89
chore: fix internal binding (#4598) 2020-12-08 08:38:29 -08:00
Joel Einbinder
3624e3e315
chore: add internal method for utility context bindings (#4566)
* internal binding extracted from dnd patch

* refactor it into the page

* dgozman comments 1
2020-12-02 13:43:16 -08:00
Dmitry Gozman
aea106b28e
chore: simplify server screencast code (#4501)
Currently, we always throw from FrameSession._stopScreencast
when not running with video, and immediately catch it in
CRPage.didClose (thanks to debugger to point that).

Overall, we have code prepared for start/stop API, which
we never did, so it makes sense to simplify code a bit,
and throw if something goes wrong.
2020-11-19 19:26:53 -08:00
Joel Einbinder
31bebc7ea0
fix(close): allow errors when closing all pages of a context (#4324) 2020-11-16 10:26:34 -08:00
Pavel Feldman
d20e56e197
feat(state): allow getting / setting context state (#4412) 2020-11-13 14:24:53 -08:00
Dmitry Gozman
e69315f711
fix(websocket): remove "skip frames" logic (#4435)
This optimization turned out to be racy, so better remove it for now.
2020-11-13 14:03:21 -08:00
Pavel Feldman
bd7507e133
chore: unify new page handling across vendors (#4411) 2020-11-12 12:41:23 -08:00
Dmitry Gozman
c83ac444b4
api(websocket): do not send websocket frames without a listener (#4361)
Once user adds 'websocket' listener, we start sending the frames
for all websockets on the page.
2020-11-06 12:30:16 -08:00
Pavel Feldman
be8428475d
feat(websocket): implement Web Sockets for Chromium & WebKit (#4234) 2020-10-26 22:20:43 -07:00
Pavel Feldman
5d997ed28b
fix(video): make video path available in persistent profiles (#4182) 2020-10-19 14:35:18 -07:00
Joel Einbinder
92dda698f8
feat: tap (#4097) 2020-10-19 10:07:33 -07:00
Dmitry Gozman
5e42029fce
api: allow exposeBinding to pass handles (#4030)
This adds an option `{ handle: true }` to pass a single handle instead of arbitrary json values.
2020-10-01 22:47:31 -07:00
Dmitry Gozman
01a4060665
chore: move action instrumentation per-context (#3908)
This allows tracing to expose plugin-like api.

This also remove Progress -> ActionMetadata dependency, leaving
Progress a low-level utility.
2020-09-17 09:32:54 -07:00
Dmitry Gozman
592bae1cea
feat(trace): record goto, setContent, goBack, goForward and reload (#3883) 2020-09-15 09:46:36 -07:00
Dmitry Gozman
2f0d2029ca
chore: refactor goBack/goForward/reload (#3859)
These methods are the only users of waitForNavigation and
waitForLoadState on the server side. This refactor lifts the
Progress wrapper to the top-most goBack/goForward/reload call
and leaves waitForNavigation/waitForLoadState as internal helpers.
This way we get a single Progress for the actual api call.
2020-09-14 16:43:17 -07:00
Dmitry Gozman
5314512cbc
chore: inline page._runAbortableTask (#3861)
It does not do anything nowadays.
2020-09-11 23:33:38 -07:00
Dmitry Gozman
38ed8de23d
feat(tracing): trace actions (#3825)
- Fill and click actions pass metadata to Progress.
- Progress reports success/failure through instrumentation.
- Tracer consumes ActionResult and ActionMetadata and records them.

Currently, only click and fill actions pass metadata to
contain the size of the change. Everything else should follow.
2020-09-10 21:42:09 -07:00
Yury Semikhatsky
66985fc5f6
feat(screencast): add expreimental public API on context (#3766) 2020-09-04 22:37:38 -07:00
Dmitry Gozman
675ce00432
chore: introduce "instrumentation" that is used for debug and trace (#3775) 2020-09-04 16:31:52 -07:00
Dmitry Gozman
de547d7d65
fix(connect): make selectors.register work in connected browser (#3664)
This is a large rework of selectors:
- Each BrowserContext now has a separate Selectors instance that has its own registrations.
  Most of them share a single sharedSelectors instance, but contexts created for a connected
  browser have their own instance.
- Connected browser now gets a RemoteBrowser object that encapsulates Selectors and Browser.
  This Selectors object is registered with the api selectors.
- Public selectors.register api iterates over all registered Selectors channels
  and registers in each of them.
- createSelector testing method migrated to ElementHandle._createSelectorForTest.
2020-09-02 16:15:43 -07:00
Dmitry Gozman
b34d9aba25
feat(trace): experimental traces for our tests (#3567)
This introduces basic tracing enabled in our tests.

What is captured:
- network resources;
- snapshots at the start of most actions;
- snapshot after the test failure.

How this integrates with test runner:
- context fixture calls private method context._initSnapshotter() and uses Tracer to trace all events;
- all tests share a single test-results/trace-storage directory to store blobs;
- each test has its own trace file.
- npm run show-trace opens a bare-minimum trace viewer that renders snapshots.
2020-08-28 10:51:55 -07:00
Dmitry Gozman
cd220daa83
chore: move src files to server (#3593) 2020-08-24 06:51:51 -07:00