-
Epic
-
Resolution: Done
-
Major
-
None
-
webdriver
-
50
-
False
-
None
-
False
-
Testable
-
?
-
To Do
-
?
-
?
-
0% To Do, 0% In Progress, 100% Done
-
-
Firefox is dropping the Chrome Devtools Protocol in favor of webdriver Bi-Di.
Evaluate current alternatives, choose one, and port our testlib to it. Requirements:
- We can insert our VM provisioning in between tests (e.g. difficult with cypress)
- Proper frame tracking (Switching pages)
- Run against standard browser (Chromium, Firefox), preferably webkit support
- Capturing screenshot and browser logs
Also check for existing python bindings.
Avoid rewriting tests in JS at all cost, we have too much python test machinery around which is really difficult to express in JS.
Candidates:
- cypress.io - Martin tested this some years ago, and it's fantastic. But it assumes (or assumed) too much control over the browser, it was difficult and slow to inject our VM handling magic
- npm webdriver package – at first sight this is the most straightforward one for a direct port of CDP
- puppeteer - straightforward and nice API. Last time Martin checked, it insisted on using its own bundled browser. Perhaps it works with an external browser now.
- playwright popular and well supported, supports frame tracking and Python. Hard-requires bundled/forked/modified browsers, so does not test real-life browser and is a vendor-lockin, instead of supporting the BiDi standard.
- Selenium. We got rid of it years ago as it was too slow and too hard to debug.
- Directly talk to the BiDi protocol from Python
Start this with evaluating the candidates with porting the starter-kit tests. They are simple enough to not require repetitive/boring work, but complex enough to demonstrate frame tracking skills. They are not complex enough to demonstrate destructive tests/provisioning, but we can just add a simple demo destructive test.