Closed Bug 1518468 (marionette-fission) Opened 3 years ago Closed 11 months ago

[meta] Make Marionette Fission compatible

Categories

(Testing :: Marionette, task)

Version 3
task
Not set
normal

Tracking

(Fission Milestone:M7)

RESOLVED FIXED
Fission Milestone M7

People

(Reporter: automatedtester, Unassigned)

References

(Depends on 3 open bugs, Blocks 1 open bug, )

Details

(Keywords: meta, Whiteboard: fission-tests)

This bug will track the work that needs to be done to make Marionette Fission compatible.

Mike or Felipe, are there some guidelines out there already which explain what to look out for to get fission compatible code landed, and which no-goes to avoid? For new code in Marionette which gets currently landed we would like to try to be compatible even we don't have fission support added. It should prevent us from having not to refactor lots of code later again. Thanks.

Flags: needinfo?(mconley)
Flags: needinfo?(felipc)

I'm working on documentation about it right now.. It'll be done in about a day or two and I'll let you know where it ends up (probably in the wiki)

Flags: needinfo?(mconley)
Flags: needinfo?(felipc)

As we are adding a new, third, CDP-based remote protocol to Gecko
we need a plan what to do with Marionette. Do we think it is still
reasonable to maintain two, largely competing, remote protocols?

The reason I ask this is that it’s abundantly clear we have a lot
of work to on Marionette to get it into a Fission-compatible state.
We also need to do that work on new code that we write for the new
remote agent. I believe there’s an overlap between the things
Marionette needs for Fission compatibility and the things we need
to write in order to support CDP.

My preferred short-term plan would be to port the WebDriver service
in Marionette to the new remote agent as a separate domain, and
have it internally rely on the same primitives as the other CDP
domains (Page, Runtime, et al.). This would encourage code reuse
and would avoid potential duplication of work on getting Marionette
in its current state Fission-ready. A longer term plan might be
for geckodriver to implement WebDriver on top of CDP (like chromedriver
does), but that seems more unrealistic given our current restrictions
as much more code would need to be written from scratch in Rust.

There are some unresolved questions about this plan related to
introducing a blocking API (WebDriver) on top of an essentially
non-blocking API such as CDP. It’s also a concern that if we
introduce a blocking WebDriver service, what would this mean if
WebDriver wanted to upgrade to CDP?

At the moment we should keep the CDP stuff and the fission work for Marionette separate and if there are opportunities to combine then do it. The problem with moving over to a new transport layer is the backwards compatibility we would need to maintain. We can discuss this further in the WebDriver meeting on Monday

Type: enhancement → task
Summary: [Meta] Make Marionette fission compatible → [meta] Make Marionette fission compatible
Depends on: 1499845
Depends on: 1555701
Depends on: 1555704
Depends on: 1559592
Depends on: 1519335

Documentation is now available: https://firefox-source-docs.mozilla.org/dom/dom/Fission.html#js-window-actor
Feedback is welcome if there is anything missing.

No longer depends on: 1499845
Depends on: 1572086
Depends on: 1572093
Depends on: 1574508
Depends on: 1592631
Depends on: 1596770

Tracking for Fission milestone M6 because we want to be able to run Marionette tests with Fission before enabling in Nightly.

Fission Milestone: --- → M6
Summary: [meta] Make Marionette fission compatible → [meta] Make Marionette Fission compatible
Depends on: 1635904
Whiteboard: fission-tests

Tracking for Fission Nightly M6b because WPT depends on Marionette.

We'll eventually need to make WebDriver Fission-compatible to support third-party testing.

Fission Milestone: M6 → M6b

Please note that Maja and myself will start on Fission specific work for Marionette by early June.

Regarding test coverage, there is a handful wdspec tests that are affected by Fission. As noted in the switchToFrame bug, it's the only command with dedicated cross-origin tests.

As we make more commands Fission-compatible, we should extend/add corresponding wdspec tests over Marionette tests, when possible.

Yes, see also bug 1560181 that is about moving all content scope tests from Marionette unit tests to wdspec.

Fission Milestone: M6b → M6c

Meta bug for all Marionette-Fission should be beta blocking for Fission.

Fission Milestone: M6c → M7

For the transition of all the WebDriver specific commands I created a spreadsheet for tracking, also we haven't filed all the bugs yet:
https://docs.google.com/spreadsheets/d/1jkTZavbUhuqhqUQX1XHYsr5yteNUGLa8avzF_GueB28/edit#gid=0

No longer depends on: 1665297
Depends on: 1676283
Regressions: 1676283
No longer regressions: 1676283
No longer depends on: 1664165
No longer depends on: 1669787
No longer depends on: 1612538
No longer depends on: 1683755

The work here is basically done. The necessary code removal for non-fission code (bug 1669172) doesn't impact any Fission compatibility.

Status: NEW → RESOLVED
Closed: 11 months ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.