June 2016


Reviewed PR 67.

Submitted PR 3102 to WPT to lint a new WebDriver specification test.

Attended Applicative.


Attended Applicative.

Commented on bug 1250290 to clarify intentions on what the goals are for exposing performance related things via Marionette.

More feedback on bug 1277090 about moving us off the Selenium atom for getting an element’s attribute in chrome.

Submitted PR 305 with some window dimensions fixes to WebDriver.

Closed PR 303 that attempted to count the number of deleted cookies, and based on that return an error if the requested cookie was not deleted. I don’t think we can reliably track this, and as dburns pointed out implementations need not necessarily follow the exact steps laid out in the algorithm.


Travel back to London.


More travel back to London.


Attended EngProd team meeting.

Reviewed PR 11306 to the WebDriver implementation in Servo.

Reviewed PR 70 to geckodriver that proposes a fix to call quitApplication when deleting a session. I think however the Marionette implementation is wrong, and that calling Marionette:deleteSession should probably quit the browser implicitly.

Reviewed PR 69 to geckodriver that fixes extraction of directories inside ZIP archives of profiles sent over the capabilities. I’m a bit surprised that zip::read::ZipFile does not have an is_dir() function or similar.

Commented on issue 68 in geckodriver about a Windows version of 0.7.1.


Spent the day trying to figure out how to cross-compile geckodriver for Windows from Linux on Travis.

Submitted PR 35 to webdriver-rust to disable the default features that the cookie crate comes with as to not depend on the openssl crate.


Submitted PR 73 which allows for cross-compilation of geckodriver on Windows and for building static binaries using the musl libc.

Requested needinfo from hskupin on bug 1277090.

Commented on the Cargo/Rust in Gecko document in preparation for the work week. I pointed out that there is also a scenario where we want build free-standing binaries for programs such as geckodriver to test changes to WebDriver/Marionette and WPT on integration.

Responded to issue 74 about C++ runtime on Windows for geckodriver.

Did a bit of workweek planning.

Requested needinfo on bug 1277791 regarding making the accessibility subsystem optional when activating Marionette.

Commented on bug 721859 about a user complaining that Firefox 47 breaks FirefoxDriver.

Commented on WebDriver bug 29687 about the need to scroll a parent element which has overflow: scroll set before calling scrollIntoView on the target element.

Wrote a London drinking companion guide for my team members. I hope it is useful.


Fixed up code review issues for PR 73 to add cross-compilation on Travis to geckodriver.

Asked more questions about Windows runtime libraries in issue 74 in geckodriver.

Triaged and resolved issue 75 to geckodriver which I believe is also due to bug 1123506.

Asked question in issue 76 about geckodriver connecting to old instance of Firefox.

Commented on issue 42, which appears to be a duplicate of issue 76.

Commented on bug 1277791 regarding performance degradation when accessibility features are enabled in Marionette.

Filed bug 1279205 about implementing a specification compatible Is Element Selected command.

Filed bug 1279203 about implementing a specification compatible Get Page Source command.

Filed bug 1279207 to add checks for whether the current top-level browsing context is no longer open for most commands in Marionette.

Filed bug 1279211 to add checks for any open user prompts for most commands in Marionette.

Resolved bug 1123847 because we decided not to throw an error when not finding the cookie to delete.

Resolved bug 1206126 as a duplicate of bug 1279211 because I had already added a bunch of references to it on the WebDriver status page.

Resolved bug 1216995 that had reported not all builds of geckodriver worked across all distributions of Linux. I suggest we ship statically linked binaries using the musl C library. Continuing to track this issue in issue 72.

Triaged bug 1255258 that claims multiple key sequences involving modifier keys do not work in Marionette.

Triaged bug 1255260 that claims there is an incorrect number of keyDown events when using modifiers in Marionette.

Triaged bug 1255946 regarding returning the top-level browsing context’s title when you inside a nested browsing context click on a link that causes the _top frame to navigate.

Triaged bug 1255955 and gave it a better title. It’s about the wrong element being clicked when it is out of view in a <select> element.

Triaged bug 1255957 that claims it is impossible to click an empty <option> element inside a <select> list.

Triaged bug 1260557 that claims clicking a link to open a window a second time causes the first opened window to be closed.

Reviewed bug 1261842.


Closed issue 77 on geckodriver because it is invalid.


Closed issue 79 in geckodriver as a duplicate of bug 1123506 about evaluating scripts with lasting side effect.


Work week preparation in the office.

Commented on issue 81 regarding Marionette support in Firefox and how release channels are affected by the fact that FirefoxDriver no longer works in Firefox 47 (stable).

Commented on issue 52 about inability to “convert data to object” in Marionette’s Get Active Element command.

Provided a link to the Ruby implementation of finding the default path to the Firefox installation in PR 66 that landed last week.

Reviewed PR 36 in webdriver-rust and commented on PR 78 to geckodriver.

Reviewed PR 36 to webdriver-rust properly.

Fixed the Windows cross compilation and disabled FreeBSD in PR 73 to geckodriver.

Submitted PR 82 to geckodriver to update the README file to not mention --no-default-features as this is implied by the Cargo.toml options.

Submitted PR 83 to geckodriver to do releases through Travis.


Attending work week day 2.

Commented on issue 81 with regards to how to get Marionette output with more verbosity using the Selenium bindings.

Gave some direction on issue 2279 reported in the Selenium project about updating the different client bindings to use the single Set Timeout command endpoint with a JSON dictionary instead of the individual HTTP endpoints it currently uses when interacting with WebDriver conformant remote ends.

Commented on issue 81 in geckodriver about getting the console output from the binary from the Selenium Java bindings.

Responded to issue 85 in geckodriver about missing marionetteProtocol field in the Marionette handshake.

Provided some useful (I think) feedback on the question of how to ship geckodriver in issue 87.

Filed and patched bug 1280101 about not erroring on requesting a window size greater than the dimensions of the current screen in Marionette.

Commented on issue 89 in geckodriver regarding default logging level.


Third day of the work week.

Commented on issue 61 in geckodriver where a user confirmed that the binaries we produce by cross-compiling from Linux on Travis work fine without the VS runtime.

I also think the issue described initially in issue 61 has to do with the RemoteWebDriver’s inability to detect whether it’s talking to a WebDriver conformant remote end when it creates the session.

Pushed an update to PR 83 in geckodriver with a Github OAuth token as well as a regulation to only do deployment when tagged on the official repository.

Also commented on issue 89 with regards to Firefox 47 support and Marionette.

It looks like issue 85 in geckodriver is due to using a (very old) Firefox version. dburns also by chance discovered that the available Firefox version on Travis is 31 ESR.

Updated instructions on how to use Marionette after confusion was highlighted in issue 90 and on IRC.


Fourth day of the work week.

Commented on bug 853287 regarding the use of Xrays on sandboxes in Marionette.

Triaged and commented on issue 93 in geckodriver, which is blocked by bug 1103196.

Answered some questions in issue 89 in geckodriver about Firefox releases and Marionette support. However, I still want to find out why th elogging level is incorrect.

Triaged issue 94 about <select> and <option> elements.

Resolved issue 92 in geckodriver for lack of actionable things to do.

Filed issue 2301 in Selenium about providing a shim for the Get Element Attribute and Get Element Property commands when using the client bindings to talk to WebDriver conformant remote ends. This was triggered by issue 95 in geckodriver.

Closed issue 85 because it is using a Firefox that is too old.

Resolved bug 1280516 as duplicate of bug 1274550, which makes the Get Active Element command in Marionette spec conformant.


Final day of the work week. Thank heavens.

Triaged and requested more information on issue 97 regarding SOCKS proxy support in Marionette.

Reviewed bug 1279370 regarding removing some unsupported capabilities that are passed into Marionette. I declined the patch, not because it’s bad, but because I feel it should be geckodriver’s responsibility as an intermediary to consume and remove these capabilities before passing them on to the driver.

Answered question about <input type=file multiple> and closed issue 98 in geckodriver.

Filed and patched bug 1280645.

Dug back into bug 1277090 and found that boolean attribute are not a thing in XUL. For example <button disabled="false"> does not disable the button in XUL as it would have done in HTML. Accepted both patches in the bug provided the dead code path is removed.


Investigated bug 1280448 that is about enabling basic auth logins to websites using Marionette. These are URLs looking like https://user:pass@example.com. I found that the current user prompt, that is window.confirm/alert, implementation in Marionette does not distinguish between what kind of dialogue it is dealing with. This can cause GeckoDriver#dismissAlert to be used to dismiss a phishing dialogue, which does not seem ideal. Unfortunately Chrome and Firefox disagree on what kinds of information to surface to the user, and Chrome does not give you a warning dialogue about whether you’re really sure you want to submit credentials to a website. Firefox does this because it could be used in phishing.

Resolved issue 2299 in Selenium as a duplicate of issue 2110.

Commented on issue 2196.

Resolved issue 100 in geckodriver that is yet another duplicate of bug 1123506.


Resolved bug 1280854 and bug 1279280 as being duplicates of bug 1278605 that broke FirefoxDriver in the Firefox 47 release.

Requested needinfo on bug 1277090 as author pushed code without fixing the code review issues.

Responded to review comments in issue 83 about using Travis to release geckodriver.

Triaged bug 1280300 which is about navigating to fragments in the same document. hskupin suggests this may be because we are waiting for unload- and load events to occur, but which naturally are not triggered because we’re not actually unloading and loading any documents.

Some random notes on investigating how to untangle various “browser” concepts in Marionette:

Triaged issue 101 in geckodriver and filed bug 1280947 as a result of that. It turns out we are not generating DOM events when interacting with <input type=file> elements.

Triaged issue 102 in geckodriver.

Based on jimevans’ and lukeis’ input I took the time to re-work my suggestion for a Selenium getAttribute shim so that Selenium-compatible clients can speak to WebDriver-conformant remote ends.

Commented on bug 1280978 about the performance regressions with the new Firefox find-in-page functionality.


Resolved bug 1281096 because it is incomplete.

Found that the reason for issue 89 is that geckodriver sets the preference marionette.logging to true, triggering compatibility behaviour in Marionette for Gecko <= 45.

Submitted PR 103 to geckodriver which adds a -v flag to increase the verbosity of Gecko. This resolves issue 89 described above.

Commented on bug 1277090 regarding the existence of boolean attributes in XUL.

Commneted on issue 105 about coming up with a shim to enable switching to window by ID when using a Selenium API client to speak to a WebDriver-conformant remote end.

Commented on issue 56 explaining the train model and when the patch is expected to be available in Nightly.


Reviewed bug 1281293 about LInux 4.4 not accepting socket connections. I turns out it was due to a change in the kernel.

Commented on bug 1281397 regarding Marionette’s element.isBooleanAttribute missing a number of boolean attribute elements. The list I used in the implementation is the attributes list in the HTML specification. So if the list is not exhaustive, this might be an issue with HTML too.

Commented on bug 1275521 regarding auto-accepting permissions in Marionette. Not entirely sure what this bug is about yet.

Fixed the tests in PR 103 which adds verbose flags to geckodriver.

Commented on issue 75 in geckodriver, about what Firefoxen has bug 1123506 that fixed evaluation of scripts with lasting side-effects in Marionette.

Commented on issue 104 in geckodriver regarding attaching to an existing session.

Submitted PR 106 to cross-compile geckodriver to ARM. Not entirely sure if I have chosen the right ARM compile target.

Opened issue 107 with geckodriver to improve the help text in the binary.

Rebased and merged PR 78 from dburns which adds the Get Element Property command to geckodriver.

Patched the geckodriver executable name and the URLs pointing to the geckodriver repository and releases in the Selenium Java bindings.

Triaged and closed issue 108 for being a duplicate of bug 1123506 about script evaluation with lasting side-effects.

Reviewed and merged PR 78 to the Selenium documentation project.

Submitted PR 109 to geckodriver which introduces a -V flag to show version information, but more importantly include a link to the repository and copying information so that we can distirbute the program in executable form without a license file.

Wrote a short design document, possibly quite silly and technically incorrect, about a possible prototype for a distributed bug tracking system.


Commented on bug 1281750 that I’m opposed to returning the process ID of Firefox as part of the capabilities Marionette returns when creating a new session.

Commented on bug 1240830 regarding randomising the port for Marionette when connecting to it from geckodriver.

Addressed code review issues in PR 109.

Commented on issue 97 to request more information why setting a proxy through geckodriver isn’t working as Marionette appears to have support for proxies.

Submitted PR 111 to geckodriver which introduces a changelog. This replaces PR 11. Nice symmetry of numbers!


Last day in the Mozilla Covent Garden office. )-:

Reviewed bug 1281397 which fixes the data structure returned from the Get Element Property command.

Reviewed PR 112 to geckodriver about connecting to Marionette on a randomised, free port.

Triaged bug 1275521 and found that geckodriver is not starting Firefox with the profile it is given.

Merged PR 79 to selenium-docs which fixes some typos.


Resolved issue 117 in geckodriver because it was resolved by PR 73.

Resolved issue 116 as it was resolved by PR 83 to geckodriver.


Triaged issue 113 in geckodriver, and found that the Set Window Position command is missing from the WebDriver specification. It’s implemented in Marionette but missing from webdriver-rust/geckodriver.

Submitted PR 307 to the WebDriver specification which defines the Get Window Position and Set Window Position commands.

Finished reviewing PR 66 to geckodriver.

Resolved issue 115 as a duplicate of issue 42.

Reviewed PR 1 to rust-mozrunner to locate the default paths of Firefox.

Updated the EngProd status document with the recent significant changes to Marionette and WebDriver.


Submitted PR 308 to abstract the concept of window size to the WebDriver specification, so that the steps of Get Window Size aren’t duplicated.

Updated the executable name from wires to geckodriver in Selenium.

Uplifted bug 1280101 to Beta and Aurora. Made a note of this in issue 56 in geckodriver.

Commented on issue 72 in “leadfoot” (not sure what it is) about bug 1123506 fixing access to the global scope that a document provides when executing scripts.

Filed and patched bug 1282800 about removing the device capability from Marionette.

Commented on issue 27 in geckodriver about an issue providing an encoded profile to the capabilities object directly in the Selenium Python bindings. We should ensure a Selenium issue is filed for this.

Commented on issue 86 in geckodriver to report back using a more modern Firefox version.

Submitted PR 37 to webdriver-rust that adds the Get Window Position and Set Window Position commands.

Reviewed PR 1 to rust-mozrunner again after jgraham fixed it up.

Filed bug 1282873 about Marionette looking for proxy settings only in the requiredCapabilities field. It should also look in the desiredCapabilities field. Thanks to jleyba for discovering this!

Submitted PR 309 to the WebDriver specification to enforce size- and type checks throughout.


Rebased and merged PR 308 that introduces window size abstractions to the WebDriver specification.

Replied to issue 69 in selenium-docs about best place to run documentation related discussions.

Submitted PR 310 to the WebDriver specification to split the endpoint for getting cookies into two distinct endpoints.

Triaged bug 1282970 which is about implementing the WebDriver functionality to return a single cookie. This is related to PR 310 I just filed with the WebDriver specification. The implementation of this bug depends on how the PR ends up looking.

Cleared needinfo for bug 1280101, about aligning the Set Window Size command with the WebDriver specification for conformance, caused the Windows test machines to die. I don’t think I care enough about uplifting this patch to beta that I want to spend the time investigating why they died. We can let the patch ride the regular train to beta, I think.

Landed bug 1282800, which removes the device capability from Marionette on inbound.

Closed PR 122 in geckodriver because it is likely a local system problem.

Replied to a discussion on the Rust user forum about the cross compilation story with Rust.

Merged PR 80 with updates to the quick tour document of the new Selenium documentation.

Closed issue 123 to geckodriver because Firefox 47 is not supported.

Submitted PR 2406 to Selenium to enable the Node.js bindings to use Firefox profiles with Marionette.

Commented on PR 179 about re-enabling Firefox testing for Web Push that the preferences and profile are being propagated to Firefox, but that neither of the settings used actually disable the permissions dialogue.

Submitted PR 2407 to the Selenium Node.js bindings that adds support for the Marionette extension commands that allows you to switch contexts between content and chrome.

Spent a lot of time investigating and debugging bug 1275521. With PR 2406 it is possible to use a profile with geckodriver and Marionette, but with the preferences set I can’t see that the permission dialogues are being accepted automatically.

Commented on bug 1103196 that we need to support self-signed/untrusted certificates by default.

Closed issue 110 in geckodriver because Firefox 47 is not supported.

Filed issue 126 with geckodriver than it should consume the firefox_profile capability before creating a new session with Marionette. Because Marionette currently returns all passed in capabilities as part of the return value for the New Session command, we end up sending a sizable Base 64 string often. Whether Marionette should actually send this back is debatable, but it’s nevertheless unnecessary to pass it to Marionette in the first place.

Triaged issue 102 and verified that it is a real bug in Marionette that navigating to a malformed URL causes the Firefox UI to break. It is however unclear what the intention of the specification is here.

Filed bug 1283216 to use the default Firefox build when constructing the Marionette object from the Python bindings.

Commented on issue 1614 in Selenium that it would be nice if all drivers could support dealing with “unexpected” top-level browsing contexts that have not been initiated through the driver’s own mechanisms.

Added several items to the agenda of the WebDriver WG F2F meeting in a few weeks in Seattle.

Commented on PR 2406 regarding a comment that jleyba made that if the profile and the browser is on the same system, it would be nice not to have to encode it and send it across the wire, but just point to the path where it is.


Commented on issue 110 with some helpful tips on reproducing and debugging issues in geckodriver.

Closed issue 128 in geckodriver because Firefox 47 is not supported.

Responded to PR 69 in selenium-docs with some directions. Also filed issue 81 in conjunction with this to implement multiple-language code folding so we can have code examples in multiple languages.

Submitted PR 129 to geckodriver to clarify support for different Firefox versions and the implementation status of Marionette.

Reviewed PR 125 that adds macOS compilation to the CI for geckodriver.

Attempted to triage issue 127 in geckodriver but I’m unable to reproduce this with Nightly.

Filed and patched bug 1283459 to rename pacUrl to proxyAutoconfigUrl in order to not have to manage compatibility in this area, as existing Selenium implementations are using the former. Commented on PR 311 to the WebDriver specification that the Seleniun field name is fine and that we are happy to adapt.

Submitted PR 130 to clean up some logging strings in geckodriver before the 0.9.0 release.

Added some getting started with mozilla-central development to bug 1282970, about introducing a new Get Named Cookie command.