April 2017


Reviewed bug 1332279.


Commented on issue 233 in geckodriver.

Commented on issue 285 in geckodriver.

Did my deliverables for Q1 2017.

Fixed code review issues and merged PR 85 to webdriver-rust, aligning the error types- and codes with the WebDriver standard.

Commented on issue 579 in geckodriver.

Made some fixups to bug 1350887 following some last minute code review comments from whimboo.

Filed issue 595 to geckodriver about implementing a SIGINT handler to ask Firefox to gracefully shut down itself, since it itself does not understand SIGINT.

Reviewed PR 5303 to WPT to make the create_session fixture merge capabilities dictionaries from the environment and the test.

Commented on issue 596 in geckodriver that we cannot reproduce it without a minimal HTML document.

Commented on issue 879 about the lack of top-level browsing context checks for some of the WebDriver commands. They are in fact, meant to, not have these checks.

Closed issue 597 as a duplicate of issue 211 in geckodriver.

Re-opened and commented on issue 871 on the WebDriver specification regarding the link target not being taken into account when clicking an element that navigates.

Triaged issue 515 to geckodriver about a permission denied error when trying to return true from a document using Angular. Ended up filing bug 1353074 as the investigation showed we were not making the unloadHandler callback content safe from introspection. It turns out that Angular replaces addEventListener and removeEventListener and that they do something with this object which causes any injected script to return with this error.


Provided needinfo on bug 1324059.

Reviewed bug 1345653.

Reviewed bug 1299626.

Provided feedback on PR 13 to wdclient to rip out the old capabilities handling.

Bug 1350887 got backed out again. It turns out there was a typo in package-manifest.in, which I pushed a fixup for. Before doing another push to Autoland, I will do a full try run to ensure it isn’t backed out for the third time.

Cancelled uplift of bug 1344748 to beta.

Triaged issue 594 in geckodriver about issues with the changes to SendKeysParameters and the sendKeysToElement command.

Rebased bug 1352463 to change the wdspec default timeouts.

Closed bug 1323290 as a duplicate of bug 1344748 about setting relevant automation preferences in the Marionette server.

Submitted PR 598 to geckodriver to remove the “required” prefs.

Submitted PR 599 to geckodriver to set the marionette.port preference.

Commented on issue 243 in geckodriver requesting more information from the reporter.

Closed issue 574 in geckodriver due to the lack of reproducible steps.

Commented on bug 1332122 regarding treating the file: protocol specially.

Commented on bug 1353391 about Marionette based test failing on a site with an invalid TLS certificate.

Reviewed PR 13 to wdclient.

Closed issue 600 in geckodriver as it is neither actionable nor reproducible.

Reviewed PR 5275 which adds tests for the Get Title command to WPT.

Closed PR 4969 in WPT as the wdspec tests under old-tests are not relevant anymore.

Reviewed PR 5187 to WPT one more time.


Reviewed PR 880 to the WebDriver specification.

Fixed up bug 1350887… again.

Provided needinfo on bug 1319237.

Submitted PR 882 to the WebDriver specification.

Provided needinfo on bug 1353635 regarding what to do if the message handler that listener.js is trying to send to has disappeared and an XPCOM exception is thrown. We should probably have a general error message handler in chrome space that we could use to unblock any promises whenever we run into problems.

Commented on bug 1336137, also regarding promise management. I proposed a design where promises are somehow registered centrally so that we can keep track of them.

Filed bug 1353696 as a follow-up to bug 1353074.

Addressed code review issues with bug 1353074.

Reviewed PR 200 to wpt-tools, which imports wdclient. Also reviewed PR 15 to wdclient, replacing its entire content with a README explaining where the repo went.

Submitted PR 603 to geckodriver, removing the wrapping of the capabilities layer.

Submitted PR 604 to geckodriver to also set the marionette.logging.level pref that I missed earlier when I made the change to marionette.port.

1:1 with dburns.

Marionette weekly meeting.


Commented on issue 564 in geckodriver.

Attended office meeting regarding the country ambassador programme with Rob.

Attended meeting with new Platform Integrity organisation with JP.

Closed issue 606 in geckodriver.

Commented on bug 1353635.

Commented on bug 1321516 about enabling the specification-conforming interaction algorithm for Element Click in Marionette.

Filed bug 1354201 to implement a WebDriver-conforming Is Element Enabled command in Marionette.

Filed bug 1354203 as a tracking bug for removing the Selenium atom fragments from Marionette.

Commented on bug 1203966 to provide links in testing/marionette/atom.js to the original source code in the interim whilst we work on removing our dependency on Selenium fragment atoms.

Reviewed bug 1353858, bug 1317121, and bug 1306848.

Rebased, well basically re-did, patches for bug 1321516 to remove the specificationLevel capability and make Marionette use the WebDriver-conforming element interaction algorithm.

Closed bug 936204 because we don’t want to keep testing/marionette/atom.js around.

Patched bug 1203966 to include links to the unminified JS fragment atom source code from Selenium in Marionette.

Filed issue 884 on the WebDriver specification regarding the definition of what it means for an element to be editable.

Filed issue 885 on the WebDriver specification that the definition resettable elements does not make sense to use in a WebDriver context.

Filed issue 886 on the WebDriver standard that the keyboard-interactable element definition should not specify the target of interaction.

Filed issue 887 on the WebDriver standard that the document element should also always be considered keyboard-interactable.

Filed issue 888 on the WebDriver standard that the <body> element should only be considered keyboard-interactable if it is member of an HTML- or XHTML document.

Started implementing a WebDriver-conforming Element Clear command for Marionette (bug 1354211), but quickly discovered it was a lot more work than expected. First I rewrote the tests, which were terrible, but then discovered when adding more tests that the specification was wrong. When I attempted the command implementation, the keyboard-interactable element step provided a big challenge because it meant implementing large parts of HTML.

Commented on issue 607 in geckodriver regarding a possible fallout from bug 1348782.

Filed and patched bug 1354323 to make the sendKeysToDialog command in Marionette take a text field and a string, rather than a value field and an array of strings.


Reviewed PR 890 to the WebDriver specification.

Reviewed bug 1354310.

Provided needinfo on bug 1354458.

Provided needinfo on bug 1321516.

Reviewed PR 5275 which adds Get Title tests to WPT again.

Submitted PR 612 to geckodriver which makes it send the text field as string and value as an array of strings following the breaking changes that were made to Marionette in bug 1348782.

Commented on issue 613 on geckodriver regarding the last window not being closed.

Closed issue 320 ingeckodriver as a duplicate of issue 611.

Rewrote geckodriver’s git history in preparation of importing it to mozilla-central. Updated bug 1340637 with details about the rewrite, and requested feedback from gps.

Reviewed PR 5187 which creates New Session tests for the WPT WebDriver test suite.

Commented on issue 564 in geckodriver.


Closed issue 618 in geckodriver as it will be resolved by upgrading the webdriver crate to 0.25.0.

Commented on issue 620 to geckodriver about submitting a form that raises an alert failing to return an error. Not sure what this bug is about, considering there is no WebDriver command for submitting a form, like there is in Selenium.

Closed issue 596 to geckodriver because it isn’t actionable.

Requested uplift of bug 1354323 which fixed the sendKeysToDialog command in Marionette to take a text string rather than a value array of strings. This brings parity to the Marionette API following bug 1348782.

Reviewed bug 1321179 and bug 1355060.

Submitted PR 625 to update geckodriver’s usage instructions to be more helpful.

Submitted PR 624 to remove the outdated version information from geckodriver’s README when we display the help message.

Submitted PR 623 to geckodriver which updates the changelog in preparation of the 0.16.0 release.

Submitted PR 622 to geckodriver to recommend Firefox 52.0.3 or greater.

Released webdriver-rust 0.25.0 and submitted PR 621 to geckodriver to upgrade the crate.

Reviewed PR 892 to the WebDriver specification.

Commented on issue 555 in geckodriver.

Submitted PR 626 to document flags and options accepted by geckodriver.

Commented on issue 602 in geckodriver. Not really sure what is going on there…

Closed issue 619 to geckodriver as some of the log output is outside of our control.

Commented on issue 615 in geckodriver that maybe we want to put in a check for whether the element we try to interact with is enabled or not.

Commented on issue 611 in geckodriver requesting more information from the reporter on an issue where geckodriver fails to decode the message it receives from Marionette.

Closed issue 616 to geckodriver as it appears it is the client binding that is loosing track of the session ID. Suspect this will be fixed by upgrading Selenium.

Closed issue 608 to geckodriver as I don’t understand what it is about.

Submitted PR 627 to fix issue 605 in geckodriver.

Rebased and addressed a code review issue with bug 1352463.

Submitted PR 628 to fix the i686-unknown-linux-musl build for geckodriver by forcing the gcc compiler to be used.

Closed issue 629 to geckodriver.

Closed issue 243 and issue 601 to geckodriver because of inactivity.


Reviewed PR 87 to webdriver-rust which fixes a case of a faulty match.

Reviewed bug 1355009. Not comfortable reviewing update tests, but apparently all the usual reviewers are away. From the technical side, this looks fine.

Commented on issue 555 in geckodriver that it is a duplicate of issue 529.

Closed issue 634 as I don’t understand the issue.

Reviewed PR 632 to geckodriver, which fixes the problem that we only accepted the acceptInsecureCerts capability with Firefox 53 or greater. That capability is supported with Firefox 52 and greater.

Closed issue 633 because the JSON Object passed to the Set Timeouts command contains a sessionId field, which is not allowed.

Filed and patched bug 1355471 to improve the error messages when the Set Timeouts command fails to unmarshal the JSON Object it is being passed.

Closed issue 602 to geckodriver because I’m unable to reproduce.

Closed issue 635 to geckodriver which appears to be about the marionette_driver Python package.

Fixed up code review issues to bug 1352463.

Submitted PR 2 to rust_mozprofile which provides debug traits for a few structs.

Submitted PR 3 to rust_mozprofile to silence a warning about unreachable code.

Submitted PR 6 to rust_mozrunner to silence an unused macro warning.

Submitted PR 89 to webdriver-rust to provide a few structs with the Debug trait.

Submitted PR 4 to rust_mozprofile to remove the log crate dependency.

Filed bug 1355546 after Simon’s feedback about element disabled checks when clicking an element in Marionette, to fix issue 615 in geckodriver.

Submitted PR 636 to geckodriver and PR 90 to webdriver-rust to clean up the logging output.


Filed issue 640 about the discussion I had with Jason in 2e0054b9 last night. It turns out Firefox on Windows does not accept a double-dashed GNU style --marionette flag, but instead insists on a single-dashed X11 style -marionette flag. Thankfully we found out this before releasing geckodriver 0.16.0.

Submitted PR 7 to rust_mozrunner to not imply starting the Marionette server.

For parity, I submitted PR 641 to geckodriver to append -marionette.

Closed issue 639 to geckodriver as I believe it has been resolved by PR 590.

Commented on issue 610 in geckodriver.

Requested uplift of bug 1355471.

Resolved 773301 as a duplicate of 1344748.

Attended Marionette meeting.


Reviewed bug 1356000.

Patched bug 1356229.

Reviewed bug 1356227.

Closed bug 1282970 about implementing a command to get a single, named cookie in Marionette. geckodriver already implements the Get Named Cookie command, which extract the single cookie from the full list of cookies returned by Marionette. This is in the interest of not bloating the Marionette API unnecessarily.

Patched bug 1356229 which removes the marionette.forcelocal pref from Marionette.

Patched bug 1355888 removing the marionette.enabled pref and fixing up some documentation which refers to the -marionette flag.

Reviewed bug 1335778.


Fixed test failures and responded to code review issues bug 1355890.

Provided needinfo on bug 1356154.

Provided needinfo on bug 1296628.

Cleared needinf on closed bug 1247748.

Fixed up test failures for bug 1355888.


Rebased and added some debugging code for bug 1353074.

Fixed test failures with bug 1352463.

Triaged issue 615 about Marionette incorrectly checking if the element is enabled before clicking. It turns out that this is being caused by not having switched our Element Click implementation over to the WebDriver conforming one. This is being tracked in bug 1321516. Closed bug 1355546 as a consequence of this.

Submitted PR 894 to the WebDriver specification to take into account <select multiple> elements when checking if it is being obscured. Because the individual options are painted and represented as DOM elements, the <select>’s centre point might be one of the options. I address this by simply checking if the targetted element is an inclusive descendant of the select element.

Submitted PR 896 to the WebDriver specification to run the in view checks with all pointer events enabled, otherwise document.elementsFromPoint won’t include the element.

Commented on issue 895 to the WebDriver specification regarding waiting for painting to finish before taking a screenshot.


Closed issue 652 in geckodriver.

Commented on bug 1294075 about a spike in intermittents for the TestAccessibility.test_element_is_not_enabled_to_accessbility test. I run into this occassionally working on bug 1321516 to fix test failures as a result of introducing a new ‘element click intercepted’ error.

Commented on bug 1357407 regarding logger.debug not working in listener.js. It is interesting that dump does.

Commented on issue 615 in geckodriver.

Continued work on fixing up bug 1321516 in light of recent test failures.

Fixed up a programming error in my patches for bug 1352463 to extend the wdspec default timeouts in wptrunner.

Fixups to bug 1353074.

Fixups to bug 1355888.

Fixups to bug 1356229.

Even more fixups to bug 1321516 to account for more test failures. Turns out getting clicking right is rather hard.

Triaged issue 651 to geckodriver, which appears to actually be a valid bug. When an element in an <iframe> is attempted clicked, we don’t scroll it into view.

Commented on issue 611 to geckodriver.

Triaged issue 645 to geckodriver regarding action chains and the shift modifier.

Commented on issue 646 to geckodriver, which is also about shifted state.

Closed issue 648 as I’m unable to reproduce it.

Commented on issue 638 but was unable to reproduce it. I wonder if it can be a system dependent problem related to being unable to parse the correct .ini files on macOS or something.

Closed issue 647 to geckodriver as the latest Firefox Nightly requires using an unreleased geckodriver off master.

Bumped various version numbers and dependency related to geckodriver in preparation for the v0.16.0 release. We need to get it out soon because you can’t send keys to Firefox Nightly using the v0.15.0 version.


Reviewed bug 1357590.

Provided needinfo on bug 937659.

Fixed up bug 1356229.

Fixed up and replied to issues for bug 1355888.

Rebased bug 1353074 following a backout.

Commented on issue 233 in geckodriver.

Closed issue 654 as setting the proxy configuration is possible in geckodriver.

Commented on bug 1093212 with regards to external non-Mozilla users relying on the Marionette Python packages.

Commented on bug 1357661.

Reviewed bug 937659 which implements page load strategies in Marionette.

Commented on issue 643 about resizing the window to the window’s current size. I thought I had fixed this in bug 1319237.

Reviewed PR 2 to mozversion, fixing lookup of the .ini files on macOS. This should fix issue 638 on geckodriver.

Submitted PR 92 to webdriver-rust, fixing issue 655 to geckodriver about being unable to use IPv6 hostnames when configuring proxies.

Closed PR 91 to webdriver-rust as PR 2 to mozversion fixed issue 638 to geckodriver.

Also closed issue 638 to geckodriver after bumping the dependencies.

Filed and patched bug 1357878 to prevent Marionette from hanging when passing a window size that corresponds to the window’s current size.

Requested a security review from ted and maja_zf on bug 1355888.

Commented on bug 1342162.


Commented on issue 619 in geckodriver regarding “leaking log messages”. I’d argue it works as intended, as it sets the log level of geckodriver’s and Marionette’s logger instances.

Commented on issue 550 in geckodriver.

Tried to reproduce problem reported for PR 90 to webdriver-rust, but was unable to. Rebased it onto the latest master.

Commented on issue 608 to geckodriver. Still unable to reproduce.

Triaged issue 659 to geckodriver which is about the incompatibilities we are currently seeing for Element Send Keys.

Provided needinfo on bug 1335778.

Commented on issue 647 in geckodriver.

Commented on bug 1358029 regarding uses of the timeout configuration object from listener.js, which doesn’t get updated after a call to Set Timeouts.

Fixed up bug 1357878 and also made the Maximize Window command in Marionette behave synchronously.

Commented on issue 602 in geckodriver.

Fixed more failing tests with patches for bug 1321516. Amongst other things I had to add preliminary support for unexpected alerts and fix some expectations.

Commented on bug 1335778 regarding escaping early from interaction.flushEventLoop when the window has been discarded, which might be applicable the case of this bug too.

Responded to code review comments in bug 1356229.


Commented on issue 637 regarding a potential blocker for the geckodriver 0.16.0 release due to failing new session negotiation on Windows.

Closed bug 1358311 as a duplicate of issue 659 in geckodriver.

Closed issue 398 in favour of issue 611 in geckodriver.

Closed issue 613 in geckodriver due to no activity.

Commented on bug 1335778 in geckodriver.

Responded to review comments for bug 1356229.

Had a meeting with whimboo.

Released geckodriver v0.16.0.

Filed issue 666 on geckodriver about the failing i686-unknown-linux-musl optimised build.


Commented on issue 671 regarding the Windows 32-bit geckodriver binary being treated as malware by Windows Defender.

Closed issue 672 in geckodriver as a duplicate of issue 613.

Triaged and commented on issue 613 in geckodriver. It looks like the close-last-window functionality that I added t the webdriver crate for deleting the session when we are closing the last window does not work as expected.

Closed issue 663 to geckodriver as window.screenX is not a setter.

Commented on issue 670 that Selenium is probably using the default port, preventing multiple geckodriver processes from being run at the same time.

Commented on issue 668 to geckodriver.


Closed issue 900 to the WebDriver specification, answering a question on element serialisation.

Commented on issue 93 on webdriver-rust regarding the fact that rustc-serialize has been deprecated in favour of serde.

Commented on issue 671 to geckodriver about the malware warning on the Windows 32-bit binary.

Filed and patched bug 1358988 to write the assigned socket port to the marionette.prot preference after binding to it. If the user requests the port 0, this lets us communicate the port back to the client.

Rebased bug 1355888.

Responded to code review issues regarding bug 1355890 about adding a UX cue.

Rebased and fixed test failures with bug 1357878.

Closed issue 675 to geckodriver as a duplicate of issue 643.

Commented on issue 495 in geckodriver.

Patched bug 1359004 to add preliminary support for unexpected open alerts to Marionette.

Reviewed bug 1353447.

Patched bug 1359043.

Patched bug 1359050.

Patched bug 1359053.

Patched bug 1359054.

Requested more information from reporter on issue 676 on geckodriver.

Patched bug 1359059.

Patched bug 1359079.

Submitted PR 678 to geckodriver which fixes issue 613 about geckodriver not ending the session when closing the last open window.

Commented on issue 670 in geckodriver regarding running multiple geckodrivers in parallel.

Closed issue 677 to geckodriver about Set Timeouts not working because it was reported for 0.15.0.

Commented on issue 671 in geckodriver. It turns out a user got Symantec to whitelist geckodriver.exe from their virus scanner. Hopefully they are working on a long-term solution so that future geckodriver.exe’s with different hashes are also problem-free.

Tried reproducing issue 674 to geckodriver to no avail.

Commented on issue 676 to geckodriver.

Commented on issue 330 on exposing console logs in geckodriver.

Triaged issue 3893 to Selenium regarding the Java bindings’ shim for the Set Window Rect command.

Commented on issue 584 to geckodriver.

Commented on bug 1356237 about forking the transport.js protocol from devtools into Marionette as devtools is apparently becoming an addon.

Submitted PR 5673 to WPT which fixes the Element Send Keys implementation for the test client.

Closed issue 679 in geckodriver as a duplicate of issue 643.

Commented on bug 1356237 which forks the devtools protocol implementation to the Marionette subtree because devtools is being made into an addon.


Closed issue 681 to geckodriver as a duplicate of issue 515. I also confirmed that it is resolved by bug 1353074, which I’ve unfortunately not been able to land yet.

Rebased and triggered a new try run of bug 1353074, which makes the unload handler for injected scripts safe for web content to introspect.

Rebased and fixed code review issue with patches for bug 1357878 to make the Maximize Window command synchronous.

Fixed a test issue and rebased bug 1359050.

Commented on issue 682 on geckodriver regarding the issue template and what information is relevant.

Closed issue 680 to geckodriver.

Fixed code review issues and rebased patches to bug 1355888 for removing the marionette.enabled preference.

Filed bug 1359386 on Firefox regarding a modality bug with the new “update Firefox” dialogue in Linux WMs.

Commented on bug 1321516.

Fixed up PR 678 to geckodriver.

Filed and patched bug 1359427 to hide gecko.log from VCSes.

Talked to Gijs about the approach for bug 1355890 and we agreed I would rework the patch.

Commented on issue 684, requesting more information from the reporter.

Commented on issue 683 to geckodriver. Hard to tell if it’s a Selenium or a real geckodriver issue.

Commented on bug 1359050.

Commented on bug 1359043.

Fixed up bug 1359079 after a code review issue.

Filed issue 902 on the WebDriver specification.

Talked to jgraham about the security implications of exposing the commands for evaluating JS in chrome context by default in Marionette. He filed bug 1359472 as a result of this.

Reviewed bug 1335778.

Filed bug 1359636 about making DRM easier to use in Firefox.


Commented on issue 619 in geckodriver.

Commented on issue 564 in geckodriver.

Filed bug 1359733 about the upgrade indiction on the hamburger menu not being present in windows opened after an update has been received.

Commented on PR 903 to the WebDriver standard.

Commented on issue 686 about Firefox updates happening whilst geckodriver is being used.

Reviewed PR 685 which makes geckodriver read the Firefox version number from stdout, when it fails to read it from the application .ini file.

Commented on issue 659 in geckodriver.

Released geckodriver v0.16.1.

Commented on issue 688 to geckodriver.

Commented on issue 601 to geckodriver.

Provided needinfo on bug 1332064.

Filed bug 1359881 about the application update icon in the hamburger menu looking grainy on a low-res display.

Attended Marionette meeting.

1:1 with dburns.


Reviewed bug 1357407.

Meeting with Ali, Jean Yves, and James regarding marketing strategy for WebDriver/WPT.

Sent bug 1357878, bug 1359043, and bug 1359079 off to the autoland queue.

Fixed code review issues and integrated bug 1359427.

Rebased bug 1357878.

Requested needinfo from the security team on bug 1355888.

Commented on bug 1353074 regarding uplifting it. Also updated issue 515 in geckodriver with that status.

Commented on PR 696 to geckodriver which fixes the i686 Linux optimised build by downgrading backtrace-sys. I don’t think this is a viable solution, but probing the author if we can fix the root cause.

Fixed up bug 1355890 to add a visual UX cue to the browser when the Marionette remote control protcol is active.

Commented on issue 695 to geckodriver requesting more information.

Closed issue 687 as a duplicate of issue 570 in geckodriver about full-document screenshots.

Commented on issue 650 on geckodriver that we need more information.

Closed issue 694 to geckodriver about the page load timeout not working. It looks like the client is sending the wrong format.

Closed issue 692 to geckodriver.

Triaged issue 693 about supporting page load strategies. This is tracked by bug 937659.

Commented on issue 659 to geckodriver.

Commented on issue 688 to geckodriver. Not reproducible.

Commented on issue 691 to geckodriver. We don’t support any “element scroll behaviour” capability.

Commented on issue 680 to geckodriver.

Commented on issue 690 to geckodriver. Not able to reproduce.

Commented on issue 665 to geckodriver. Asked some questions to clarify the issue on what goes wrong when they press Control + A.

Addressed issue 689 by submitting PR 701 to geckodriver to return the correct error code when there is no current session.

Commented on issue 684 to geckodriver.


Commented on issue 702 to geckodriver.

Commented on issue 659 to geckodriver.

Commented on issue 691 to geckodriver. We don’t intend to support the elementScrollBehavior capability.

Commented on issue 511 to geckodriver.

Commented on issue 688 in geckodriver.

Commented on issue 683 to geckodriver. The reporter submitted a patch to the Selenium Node.js bindings!

Reviewed bug 1360466.

Reviewed bug 1189749.

Reviewed bug 1357634.

Meeting with jdorlus about the Marionette harness.

Commneted on PR 704 to geckodriver, contesting why the PR was merged. It was supposed to fix 32-bit optimised Linux builds, but I’m not really sure it was the best fix.