Baitinq
419dea0996
WebDriver: Implement stub for .../element/{element id}/click
...
This patch adds a stub implementation for the POST
/session/{session id}/element/{element id}/click endpoint.
2022-12-25 17:24:52 +01:00
Timothy Flynn
956fa84f12
WebDriver: Specify callbacks for clients to launch browser windows
...
This moves the actual launching of browser windows to the WebDriver main
file. This will allow Ladybird to specify its own callback and re-use
Serenity's Session class.
2022-12-15 17:29:19 +00:00
Victor Song
88ecc4a1e5
WebContent+WebDriver: Implement POST /session/{id}/window
endpoint
2022-12-04 09:33:55 -05:00
Baitinq
02a2018ec4
WebDriver: Implement stub for /session/{id}/print
2022-11-27 00:37:28 +00:00
Timothy Flynn
f7bb835d09
LibWeb+LibWebView+WebContent+WebDriver: Implement Send Alert Text
2022-11-16 17:23:56 +00:00
Timothy Flynn
f9b8742fff
LibWeb+WebContent+WebDriver: Implement Get Alert Text
2022-11-16 17:23:56 +00:00
Timothy Flynn
3e7d633954
LibWeb+WebContent+WebDriver: Implement Accept Alert
2022-11-16 17:23:56 +00:00
Timothy Flynn
7cf2feb047
LibWeb+WebContent+WebDriver: Implement Dismiss Alert
2022-11-16 17:23:56 +00:00
Timothy Flynn
8e624c8f6d
LibWeb+WebContent+WebDriver: Implement Find Elements From Shadow Root
2022-11-15 11:55:36 +00:00
Timothy Flynn
6d9bd04233
LibWeb+WebContent+WebDriver: Implement Find Element From Shadow Root
2022-11-15 11:55:36 +00:00
Timothy Flynn
4d9fd5d190
LibWeb+WebContent+WebDriver: Implement Get Element Shadow Root
2022-11-15 11:55:36 +00:00
Timothy Flynn
cb91e6067c
LibWeb+WebContent+WebDriver: Implement Get Active Element
...
Unfortunately, nothing ever calls DOM::Document::set_active_element at
the moment, so this will always return ErrorCode::NoSuchElement.
2022-11-15 11:55:36 +00:00
Timothy Flynn
5385cb1287
LibWeb+WebContentr+WebDriver: Move driver response wrapping to LibWeb
...
Success responses are meant to be wrapped in a JSON object with a single
"value" key. Instead of doing this in both WebContent and WebDriver, do
it once in LibWeb.
2022-11-13 16:41:07 +00:00
Timothy Flynn
2c3ff6bb74
WebDriver: Port the WebDriver client to be a Web::WebDriver::Client
2022-11-13 16:41:07 +00:00
Timothy Flynn
47493b5734
WebDriver: Implement Close Window closer to the spec
...
We are expected to return the list of open handles after closing the
current handle. Also just return a WebDriver::Response instead of a
wrapped Error variant.
2022-11-13 16:41:07 +00:00
Tobias Christiansen
1aa16b4dd4
WebDriver: Implement POST /session/{id}/window/fullscreen
endpoint
2022-11-12 12:12:05 +00:00
Timothy Flynn
cc78a74c51
WebContent+WebDriver: Fully implement closing a session
...
There were a couple steps missing to close the remote end. Further, we
were not removing the session from the list of active sessions.
2022-11-08 19:58:34 -05:00
Timothy Flynn
8ae10ba0fd
LibWeb+WebDriver: Add an IPC-transferable Web::WebDriver::Response class
...
This is essentially an ErrorOr<JsonValue, Web::WebDriver::Error> class.
Unfortunately, that ErrorOr would not be default-constructible, which is
required for the generated IPC classes. So this is a thin wrapper around
a Variant<JsonValue, Web::WebDriver::Error> to emulate ErrorOr.
2022-11-08 19:58:34 -05:00
Timothy Flynn
0246abec80
LibWeb+WebDriver: Move WebDriverError to Web::WebDriver::Error
...
This is to prepare for WebContent becoming the WebDriver client.
2022-11-08 19:58:34 -05:00
Timothy Flynn
b0eb45f7c7
WebDriver+Browser: Implement GET /session/{id}/element/{id}/screenshot
2022-11-05 01:10:03 +00:00
Timothy Flynn
2d75229192
WebDriver+Browser: Implement GET /session/{id}/element/{id}/selected
2022-11-03 19:40:43 -04:00
Timothy Flynn
0f2b4d0aac
WebDriver+Browser: Implement GET /session/{id}/element/{id}/enabled
2022-11-03 19:15:43 +00:00
Timothy Flynn
08c687ef20
WebDriver+Browser: Implement GET /session/{id}/element/{id}/rect
2022-11-03 19:15:43 +00:00
Timothy Flynn
61d0b66bfb
WebDriver+Browser: Implement GET /session/{id}/source
2022-11-03 14:48:04 +00:00
Linus Groh
629fbc2cfc
WebDriver: Implement POST /session/{session id}/execute/async
endpoint
2022-11-02 23:46:30 +00:00
Linus Groh
f88a0c51a3
WebDriver: Implement POST /session/{session id}/execute/sync
endpoint
2022-11-02 23:46:30 +00:00
Timothy Flynn
1ffaad29e1
WebDriver+Browser: Implement GET /session/{id}/screenshot
...
This doesn't follow the spec to a tee. Our OutOfProcessWebView already
has a bitmap that can be used as the window screenshot. Therefore, we
can bypass the steps that assume we need to access the window's frame
buffer in-flight.
We also don't create an HTMLCanvasElement. We would need a Document in
the WebDriver process to do so. Instead, we can still run the encoding
steps exactly as-is using the screenshot bitmap.
2022-11-02 17:55:37 +00:00
Timothy Flynn
11d0489fa3
WebDriver+Browser: Implement POST /session/{id}/window/minimize
2022-11-02 15:41:19 +00:00
Timothy Flynn
89b2ff72f7
WebDriver+Browser: Implement POST /session/{id}/window/maximize
2022-11-02 15:41:19 +00:00
Timothy Flynn
174248678e
WebDriver+Browser: Implement POST /session/{id}/window/rect
2022-11-02 15:41:19 +00:00
Timothy Flynn
dac91c5790
WebDriver+Browser: Implement GET /session/{id}/window/rect
2022-11-02 15:41:19 +00:00
martinfalisse
76da0c6c54
WebDriver: Implement GET /session/{id}/element/{id}/text
endpoint
2022-11-01 10:55:34 +00:00
Tobias Christiansen
a534e61b44
WebDriver: Implement GET /session/{id}/element/{id}/name
endpoint
2022-10-22 13:44:49 +02:00
Sam Atkins
3232622255
WebDriver: Use WebDriverError::from_code() for all error creation
2022-10-21 19:59:03 +02:00
Sam Atkins
89c3e0b567
WebDriver: Rename HttpError -> WebDriverError
2022-10-21 19:59:03 +02:00
Tobias Christiansen
354a845d65
WebDriver: Implement GET /session/{id}/element/{id}/css/{name}
2022-10-20 21:26:10 +02:00
Tobias Christiansen
e87456e38f
WebDriver: Implement GET /session/{id}/element/{id}/property/{name}
2022-10-19 22:30:06 +02:00
Linus Groh
6641c99c80
WebDriver: Implement GET /session/{session id}/window/handles
endpoint
2022-10-19 22:23:47 +02:00
Linus Groh
0064d2e8c8
WebDriver: Implement POST /session/{session id}/timeouts
endpoint
2022-10-19 21:11:37 +02:00
Linus Groh
5c32eacac9
WebDriver: Implement GET /session/{session id}/timeouts
endpoint
2022-10-19 21:11:37 +02:00
Tobias Christiansen
249350a7a3
WebDriver: Implement GET /session/{id}/element/{id}/attribute/{name}
2022-10-19 17:30:58 +02:00
Tobias Christiansen
e1fb64abad
WebDriver: Implement POST /session/{id}/element/{id}/elements
2022-10-19 15:32:31 +02:00
Tobias Christiansen
d26bbcab42
WebDriver: Implement POST /session/{id}/element/{id}/element
2022-10-19 15:32:31 +02:00
Tobias Christiansen
063bd663a7
WebDriver: Implement POST /session/{id}/elements
endpoint
2022-10-19 15:32:31 +02:00
Linus Groh
dd4e5d5028
WebDriver: Make functions always match their spec command name
...
This is easier to grasp than sometimes naming it after the HTTP method,
and sometimes not.
2022-10-18 23:22:38 +02:00
Linus Groh
47f25d4008
WebDriver: Add GET /session/{id}/window
endpoint
2022-10-18 23:22:38 +02:00
Tobias Christiansen
5fcf00f30d
WebDriver: Add POST /session/{id}/element
endpoint
...
This allows you to query for elements in the active document!
The IDs of matching elements are returned through the WebDriver
interface, for now there's nothing to do with this information.
This introduces a `LocalElement` to the Session, which for now only
holds the ID of a real browser-side element. Once more data of elements
are available to the Session, they can be stored alongside in this
struct.
Fixme's introduced are:
- Only CSS selector location strategy is implemented for now
- `get_or_create_a_web_element_reference` returns the elements ID
instead of a UUID generated in a spec way.
2022-10-18 19:18:33 +02:00
Linus Groh
324eb98bb9
WebDriver: Pass endpoint handler function parameters by const reference
2022-10-17 18:20:05 +02:00
Linus Groh
727e982c50
WebDriver: Put endpoint functions in spec order
2022-10-17 18:20:05 +02:00
Tobias Christiansen
122e2d2076
WebDriver: Implement POST /session/{id}/cookie
endpoint
...
This allows the WebDriver to create a cookie.
We use a Web::Cookie::ParsedCookie to transport the data through IPC
to take advantage of the RFC6265 Section 5.3 implementation in the
CookieJar.
2022-10-17 15:48:22 +02:00