Skip to content

Commit 846f196

Browse files
Add roadmap document (#265)
Co-authored-by: Henrik Skupin <[email protected]>
1 parent dfd69fc commit 846f196

File tree

3 files changed

+95
-2
lines changed

3 files changed

+95
-2
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ building on and extending [WebDriver](https://w3c.github.io/webdriver/).
66
WebDriver BiDi is not ready. Here's what we have so far:
77

88
- An [explainer](./explainer.md) with more background and goals
9+
- A [roadmap](./roadmap.md) based on real-world end-to-end user scenarios
910
- Detailed [proposals](./proposals/) for the initial protocol
1011
- A [unofficial spec draft](https://w3c.github.io/webdriver-bidi/) waiting to be fleshed out
1112

explainer.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ This document presents a possible design for a bidirectional WebDriver protocol,
88

99
The protocol is designed with the following goals in mind:
1010

11-
- **Support for the top customer scenarios identified at TPAC 2019:**
11+
- **Support for top customer scenarios:**
1212
- Listen for DOM events
1313
- Log what's going on in the browser including console and JS errors
1414
- Fail fast on any JS error
@@ -31,7 +31,7 @@ The protocol is designed with the following goals in mind:
3131
- Simple for browser vendors to implement and maintain.
3232
- Possible for clients to enhance their WebDriver automation with browser-specific devtools protocol features.
3333

34-
This document doesn't attempt to dive into the any of the new feature scenarios identified above, but rather tries to provide a solid foundation and the necessary primitives to build these features on. The document does walk through an example of an existing WebDriver feature (unhandled prompts) being updated for a bidirectional world.
34+
This document doesn't attempt to dive into the any of the new feature scenarios identified above, but rather tries to provide a solid foundation and the necessary primitives to build these features on. See [the roadmap](roadmap.md) for some example real-world user scenarios we aim to enable.
3535

3636
## Proposals
3737

roadmap.md

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# WebDriver BiDi roadmap
2+
3+
## Real-world end-to-end user scenarios
4+
5+
This document presents an overview of real-world end-to-end user scenarios we aim to enable via the WebDriver BiDi protocol. Each scenario requires one or more WebDriver BiDi commands and events to be specified, tested, and implemented across browser engines.
6+
7+
The order of implementing specific features is not strictly enforced, but browser vendors are advised to align with it to offer a rich and cross-browser experience to consumers right from the beginning.
8+
9+
### Logging of console messages and JavaScript errors
10+
11+
_This is a highly requested feature and not possible with WebDriver classic._
12+
13+
This scenario loads a web page and uses BiDi event subscription to efficiently get notified about Console API entries (eg. `console.log()`) and raised JavaScript errors. In spec terms, this involves:
14+
15+
- [x] [Handling sessions](https://w3c.github.io/webdriver-bidi/#module-session)
16+
- [x] [Navigating to a URL](https://w3c.github.io/webdriver-bidi/#command-browsingContext-navigate)
17+
- [x] [Subscribing to events](https://w3c.github.io/webdriver-bidi/#command-session-subscribe)
18+
- [x] [Emitting a log event](https://w3c.github.io/webdriver-bidi/#event-log-entryAdded)
19+
- [x] [Serialization and deserialization of JavaScript values](https://w3c.github.io/webdriver-bidi/#data-types-protocolValue)
20+
- [x] [Unsubscribing from events](https://w3c.github.io/webdriver-bidi/#command-session-unsubscribe)
21+
22+
### Extracting content
23+
24+
This scenario loads a web page within a new tab, and uses script evaluation to extract content on the page (e.g. the headlines). In spec terms, this involves:
25+
26+
- [x] Some items from the previous scenario
27+
- [x] [Creating a new `browsingContext`](https://w3c.github.io/webdriver-bidi/#command-browsingContext-create)
28+
- [x] [Evaluating JavaScript in the page context](https://w3c.github.io/webdriver-bidi/#command-script-evaluate)
29+
- [x] [Closing the `browsingContext`](https://w3c.github.io/webdriver-bidi/#command-browsingContext-close)
30+
31+
### Network events for measuring page load performance
32+
33+
This scenario sets up handlers for network events and then navigates to a web page. The provided timing information from the emitted events can be used to measure the page load performance by storing the relevant data eg. in a HAR file. In spec terms, this involves:
34+
35+
- [x] Some items from the previous scenario
36+
- [ ] [Network events for the request to be sent, and response started and completed](https://github.com/w3c/webdriver-bidi/pull/204)
37+
38+
### Submitting forms
39+
40+
This scenario loads a web page, enters text into a form field via the keyboard, and submits the form via a mouse click before extracting the results from the page. In spec terms, this involves:
41+
42+
- [x] Everything from the previous scenario
43+
- [ ] [Emulating keyboard input](https://github.com/w3c/webdriver-bidi/pull/175)
44+
- [ ] [Emulating mouse input](https://github.com/w3c/webdriver-bidi/pull/175)
45+
46+
### Capturing screenshots
47+
48+
This scenario loads a web page and captures a screenshot. In spec terms, this involves:
49+
50+
- [x] Some items from the previous milestones
51+
- [x] [Capturing a screenshot as Base64-encoded string](https://w3c.github.io/webdriver-bidi/#command-browsingContext-captureScreenshot)
52+
53+
### Observing changes being made to the DOM tree
54+
55+
In this scenario a `MutationObserver` is installed by a bootstrap script as early as the document gets created. It watches for changes made to the DOM tree and sends the relevant updates to the client. In spec terms, this involves:
56+
57+
- [x] Some items from the previous scenarios
58+
- [ ] [Adding a preload script](https://w3c.github.io/webdriver-bidi/#command-script-addPreloadScript)
59+
- [ ] [Installing the preload script](https://w3c.github.io/webdriver-bidi/#preload-scripts)
60+
- [ ] [Back channel for communicating with the client](https://github.com/w3c/webdriver-bidi/pull/361)
61+
- [ ] [Removing a preload script](https://w3c.github.io/webdriver-bidi/#command-script-removePreloadScript)
62+
63+
### Replacing resources with test data
64+
65+
This scenario loads a web page and uses network request interception to replace any image in that page with a custom image. In spec terms, this involves:
66+
67+
- [x] Some items from the previous scenarios
68+
- [ ] [Intercepting network requests](https://github.com/w3c/webdriver-bidi/issues/66)
69+
70+
### HTTP authentication
71+
72+
This scenario loads a web page that is protected behind user credentials. In spec terms, this involves:
73+
74+
- [x] Some items from the previous scenarios
75+
- [ ] [The event for a HTTP auth challenge](https://github.com/w3c/webdriver-bidi/issues/66)
76+
- [ ] [The command to provide the authentication response](https://github.com/w3c/webdriver-bidi/issues/66)
77+
78+
### Handling onbeforeunload prompts
79+
80+
This scenario loads a web page with a registered `beforeunload` event handler. After updating the value of some form input elements it should be checked that navigating away opens the beforeonload prompt. In spec terms, this involves:
81+
82+
- [x] Some items from the previous scenarios
83+
- [ ] [The event when a user prompt opens](https://w3c.github.io/webdriver-bidi/#webdriver-bidi-user-prompt-opened)
84+
- [ ] [Handling the beforeunload prompt](https://w3c.github.io/webdriver-bidi/#command-browsingContext-handleUserPrompt)
85+
- [ ] [The event when a user prompt closes](https://w3c.github.io/webdriver-bidi/#webdriver-bidi-user-prompt-closed)
86+
87+
### Printing to PDF
88+
89+
This scenario loads a web page and prints it as a PDF. In spec terms, this involves:
90+
91+
- [x] Some items from the previous milestones
92+
- [ ] [Printing to PDF as Base64-encoded string](https://github.com/w3c/webdriver-bidi/issues/210)

0 commit comments

Comments
 (0)