One roadblock using Marionette as the backend for WebDriver automation has been its lacking execute script primitives: It has been impossible to modify the DOM as all scripts were evaluated in sandboxes.
As of last week, I finally managed
to land a patch
that makes evaluated scripts have lasting side-effects in the document.
This means that scripts such as
window.foo = 42
document.documentElement.style.background = "pink"
will take effect on the DOM.
This is a requirement for
and a major inhibitor for people trying to replace FirefoxDriver
with Marionette in their automation.
The patch also refactors the way we do script evaluation in Marionette. Six distinct and different script evaluation implementations have been merged into one, and sandbox management, which is still needed for our Gecko specific automation, is more reliable.
Triggering the lasting side-effects behaviour
happens through the absence
of a "
on the JSON object passed to the
This lets us retain backwards compatibility
for the sandboxed script behaviour
for the Mozilla-specific
Marionette Python client.
However, if you’re using
HTTP frontend for Marionette, this will trigger
the correct WebDriver compatible behaviour out of the box.