WebDriver/Meetings/2019-01-14
From MozillaWiki
Contents
Agenda
- Python client deprecation
- Do we announce discontinuing marionette_driver + marionette_harness on PyPI?
- Fission
- Firefox frontend actor simulation
-
BrowsingContext
,WindowGlobalActor
- More specific feature to be discussed TBA
Minutes
Python client deprecation
- ato
- We are attempting to get rid of the Marionette Python client and the harness.
- Comments on the deprecation plan were mostly positive.
- Not much traction until we will know about a replacement.
- For obvious reasons we can’t remove the in-tree marionette_driver and marionette_harness packages.
- But should I announce that we are going to stop publishing to PyPI?
- AutomatedTester
- WebPageTest is a high profile out of tree user of Marionette.
- We should try to coordinate with them which bits and bytes are missing, if any, from other clients.
- Find out what is preventing them to move to a stock WebDriver client?
- ato
- There is no rush for us in deprecating it.
- Maybe do it within six months?
- AutomatedTester
- Maybe start with three months and if people complain we can push it out to six months?
- whimboo
- I would suggest that we wait for the next ESR release which will be 67, released 15 May.
- Then starting with 68 we wouldn’t release any new packages to PyPI.
- People could still clone central and build on their own.
- ato
- jgraham at least metioned doing that for WPT.
- I think it makes sense.
- We will also do one final release of marionette_driver and marionette_harness so that at least the most recent code is available in the last package.
ACTION: ato to annonuce that we will stop making PyPI relases of marionette_driver and marionette_harness after the Firefox 67 ESR release.
Fission
- ato
- Navigation is a good example for talking about Fission.
- There is a preference you can simulate how Fission would work in the future.
- Talked to nika, and the actor system is not finalised yet and can/will be changed.
- The code for frame script has to be written so that anything can be blown away at any time.
- With Fission, each sub-frame (or nested browsing context) might potentially live in a separate process.
- If you enable Fission simulation it is not possible to navigate the doctree and access frames.
- Marionette currently expects calls to the frame script to be blocking and synchronous.
- It uses a promise that is resolved when the frame script returns a matching message.
- We cannot make this assumption with Fission, as the content browser is more likely to undergo remoteness changes when navigating.
- whimboo
- Other commands can also suffer unexpected remoteness changes.
- I noticed this with the Find Element command recently.
- How do we handle cases where driver.js is waiting for a reply from listener.js, but the reply never comes?
- ato
- The IPC message manager does not define a request/response system.
- It’s literally just messages.
- So anything to do with waiting for, and replying to requests from chrome space, is currently encoded in Marionette, c.f. proxy.js.
- E.g. we should probably not handle the full action chain in the content process because any action could trigger a remoteness change.
- Maybe we should refactor it so that primitives get sent one by one.
- One novel aspect of the new child actor system is that DOM events, IPC message listeners, and system observers get automatically re-attached when the actor reloads.
- whimboo
- Important would be the data consistency and maybe we would have to find a way to force a remoteness change to test how it works.
- ato
- Other nice features is that Fission will let us do a better architecture with smaller commands.
- AutomatedTester
- Any idea when the documentation will be finished?
- ato
- There is already some documentation available.
- https://searchfox.org/mozilla-central/source/toolkit/modules/ActorManagerParent.jsm#7
- What seems to be missing is a high level overview.
- AutomatedTester
- DOM team asked us when we will be able to start working on Marionette, and what we would have to change.
- ato
- It's difficult to answer this high level question.
- Moving Marionette to use the actor system would be a lot of work.
- No changes seem to be necessary for test harnesses using Marionette to install extensions e.g. mochitest, reftest, wpt.
- This relates to the CDP discussion, but I don’t know if this is the right forum to discuss that.
- AutomatedTester
- But do we have any grasp of what work is involved to make Marionette Fission-compatible?
- ato
- We handle remoteness changes for document navigation fairly well.
- Better than, say, devtools.
- The one, big problematic area will be frames.
- If you want to support that you need the refactroing to the actor system otherwise we will lose support for frames.
- Right now listener.js would be loaded in each frame, but we have lots of state to set up and we don’t always set that up consistently.
- With fission the actors are registered automatically which is similar to manual way what we do in the
registerSelf()
method in listener.js. - Marionette might be at risk when it comes to full Fission support.
- Again it’s a question how CDP plays in here.
- AutomatedTester
- I would like to not duplicate work but if things have to be done let do it and explain the additional costs doing it.
- It would be good to find a balance and make people happy.
- ato
- So there’s an amount of work that needs to happen, somewhere, to make Marionette Fission compatible.
- The question is if the work on CDP will duplicate some of that work.
- We need the same sort of primitives for navigation and listening for DOM content events in CDP, as Marionette needs for doing some of the things it needs to do.
- So I think my preferred battleplan would be to build out the transport layer of the new remote agent to a sufficient level, so that we can begin porting over Marionette features to a “WebDriver domain” in that.
- Then we can flip geckodriver over to use this new domain and bring it up to parity with the existing Marionette protocol.
- Eventually when they reach parity, we switch off the Marionette protocol.
Intermittents update (whimboo)
- The support for the "New Window" in Marionette command relanded
- 5 intermittent failures have been fixed which were caused by not being able to open a new tab
- [fixed] Hang in TestNavigate.test_set_location_through_execute_script (Bug 1512336). Note that all commands beside navigation commands can hang if an unexpected remoteness change occurs (Bug 1519354)
- Regressions from window manipulation changes
- [fixed] Substantial delay when minimizing a window has been fixed (Bug 1507067)
- [needs review] "WebDriver:SetWindowRect" throws invalid TimeoutError if window is resized to a not reachable dimension (Bug 1478358)
- [investigation] "WebDriver:FullscreenWindow" throws invalid TimeoutError (Bug 1519777)
- 2 Perma Android failures caused by landing the recent RefTest change + unit tests (Bug 1519614, Bug 1519552)
- Both happen on a Tier2 platform and as such haven't been backed out
- Should we change Marionette Android tests (at least opt) to Tier1?
- Re-enabled tests
- [marionette] Re-enable test TestNavigate.test_type_to_non_remote_tab (Bug 1369923)
- [marionette] Re-enable TestNavigate.test_about_blank_for_new_docshell on Android (Bug 1334095)
- [marionette] Re-enable test TestPageLoadStrategy.test_strategy_after_remoteness_change (Bug 1422741)
Status updates
(Spoken status updates in bold.)
- whimboo
- Triage of disabled tests in the Marionette and geckodriver components
- Triage of old open issues for geckodriver on github
- [spec] Rename "Create Window" command to "New Window" (#1392)
- [spec] Fixed error types for "invalid argument" for frame id (#138, #1390)
- [wdspec] Invalid frame id doesn't cause a "no such frame" error to be raised (Bug 1517196)
- [marionette] Re-enable test TestNavigate.test_type_to_non_remote_tab (Bug 1369923)
- [marionette] Re-enable test TestPageLoadStrategy.test_strategy_after_remoteness_change (Bug 1422741)
- [marionette] Finally landed the support of the "New Window" command (Bug 1504756)
- [marionette] "WebDriver:MinimizeWindow" has a substantial delay since bug 1492499 landed (Bug 1507067)
- [marionette] "WebDriver:SetWindowRect" throws invalid TimeoutError if window is resized to a not reachable dimension (Bug 1478358)
- [marionette] Remove dependency to cssTransform.html and cssTransform2.html in test_visibility.py (Bug 1441437)
- ato
- Fixed an incorrect reference to Marionette in the geckodriver documentation (1519869)
- Drafted deprecation announcement for the Python client and harness
- Did some geckodriver triage
- Picked up the patch for fixing WebDriver:TakeScreenshot’s default dimensions (1385706)
- CDP work, unrelated to this project
PTO/travel (⛄️)
- ato away Thursday 17 January