August 2016


Cleared PR 153 that adds Edge support to wptrunner for integration.

Caught up on a lot of email as I’ve been on PTO.

Pushed a fixup to bug 1239552 so that frame scripts get their own scopes in Marionette. This works around the problem that on Windows IPC message handlers are registered twice for the same frame in officially branded builds. Unfortunately, it does not resolve the core issue.

Commented on issue 152 in geckodriver that I think the person is still using an older version of geckodriver.

Commented on issue 153 in geckodriver about a reported problem with setting the browser window size.

Commented on issue 154 about breakage because the --webdriver-port flag was renamed --port and Selenium hasn’t updated.

Commented on bug 1290814 about how Selenium/geckodriver may be confusing two sessions that are actually the same process.

Commented on issue 2161 in the Web Platform Tests project on writing a meta-circular WebDriver client. kgupta is interested in using this to test pointer events.

Tried to reproduce bug 1290890 about CSS transform click problems in Marionette without any success.

Commented on PR 310 for the WebDriver specification which is about splitting out the functionality to get named cookies into a separate endpoint.


Resolved bug 1290966 as it uses invalid JavaScript.

Responded to issue 153 in geckodriver about setting window size in Marionette. It frustrates me that people file issues with so little information, making them extremely hard to reproduce.

Resolved bug 1290985 about using a web element reference as argument for an evaluated script, as the argument needs to be an actual reference and not a string.

Provided some input on bug 1290993 about addon injection using Marionette on Fennec. Pointed out that ahal had done the initial work on this in Firefox.

Triaged bug 1200366 and found it is likely a duplicate of bug 1272653, which makes the Get Element Attribute command spec compatible by supporting boolean attributes.

Filed bug 1291235 about annoyances with the recent redesign of the Review Board user interface.

Commented on bug 1290814 to do with multiple instances of geckodriver and Firefox. It is likely that the second geckodriver instance connects to the existing Firefox instance.

Commented on issue 127 about serialising HTMLFormControlsCollection et al. which landed in Marionette as part of bug 1284232. I still need to update the specification.

Investigated and patched bug 1290966. It turns out that we push the callback argument for the arguments applied to the injected script at the time of script evaluation in Marionette (when Cu.evalInSandbox is called). This causes problems because it is not safely cloned.

Picked up bug 1230151 again that deals with out of sync responses from the server. Rebased the patch and did a new try run to be sure.

Filed bug 1291320 about Marionette not waiting for DOM content loaded events when navigating backwards, forwards, or refreshing. Discovered this while rebasing bug 1280300 to support navigation by fragments, as mconley has make our navigation algorithm better.

Addressed code review issues and rebased bug 1280300 on top of the changes mconley had made recently to the Marionette navigation algorithm.

Commented on PR 155 that fixes a typo in the geckodriver README file.


Commented on bug 1291084 which Maja experiences on her work computer. It looks like it is GFX and Direct3D related. Crap.

Updated the change log in geckodriver to explicitly point out the defaults change to now use multiprocess Firefox (e10s). Also corrected a small syntactic mistake.

1:1 with dburns.

Addressed test failures with the patch for bug 1280300 that allows us to navigate by fragment without expecting DOMContentLoaded events. Unfortunately I think there are problems with our URL parsing implementation (the one exposed to JavaScript as the URL object).


Fixed up the patch for bug 1290966 again because it turns out I fixed the wrong problem the first time around. The core of the issue was that the callback function that is available to asynchronous scripts is defined by the privileged content frame script, and accessing or introspecting any property on it will result in “permission denied” errors. I work around this by encapsulating or “hiding” the callback function in a dummy wrapper so that all the elements on the arguments object can be safely accessed.

Submitted PR 160 to document the available specialisation capabilities available for Firefox in geckodriver.


Commented on issue 157 in geckodriver about Firefox 48 e10s crashes that have been reported by Google. Requested some more information to help us properly diagnose the issue.

Resolved bug 1291305 because it concerns FirefoxDriver.

Requested needinfo on bug 1280300 to have it uplifted. Closed PR 150 which tracks this bug now that it is possible to navigate by fragment in Marionette.

Reviewed and merged PR 3432 to the Web Platform Tests. It turns out that the default value for the scope keyword argument to the @fixture decorator in pytest is default.

Reviewed bug 1290375.

Submitted patches for bug 1255955 to add support for <select> and <select multiple> elements to Marionette. Quite impressed with myself that I managed to do that in half a day.

Reviewed and merged PR 163 to geckodriver that removes the command-line flag to disable e10s as we now rely on the browser default.


Filed bug 1293219 about the build being broken if you have --enable-rust switched on because it complains about not finding cargo.

Looked at bug 1293107 about a possible regression to do with navigation to error pages from bug 1280300, but was unable to reproduce it locally.

It turns out the previous was a fallout from making the error message of ending up on error pages more explicit, and that it is really a duplicate of bug 1273754.

Reviewed bug 1292728 to disable a test.

Submitted deliverable, which is on fleshing out the keyboard interactions parts of the WebDriver specification.

Reviewed PR 161 which turns the accepted capabilities of geckodriver into a firefoxOpts object similar to that chromedriver uses.

Reviewed PR 162 to support setting Firefox preferences in through a prefs dictionary on the firefoxOpts object like chromeOpts.

Commented on PR 164 which duplicates the work done in PR 162 in geckodriver.

Submitted PR 321 to the WebDriver specification so that Element Click and the pointer-interactable element concepts can share the same definition of in-view centre point of an element.

Wrote an email to the Browser Tools- and Testing WG to suggest a new command to spawn new top-level browsing contexts in WebDriver.

Also sent another email detailing how it might be possible to look at any client rects that is inside the viewport instead of just the first one.


Commented on issue 168 in geckodriver regarding file uploads, which is meant to work in Marionette.

Resolved bug 1293622 as a duplicate of bug 1255955.

Commented on issue 94 in geckodriver about adding support for <select> and <option> elements to Marionette.

Commented on bug 1293640 and requested more information to properly diagnose setting a window’s position in Marionette through geckodriver.

Responded to issue 113 in geckodriver.

Addressed code review issues for bug 1255955.


Requested uplift of bug 1281397 which aligns Get Element Property in Marionette to the specification.

Travel day to Hvaler.





Rebased and fixed a code review issue in PR 37 to the WebDriver Rust library that adds support for setting a window’s position.

Commented on PR 173 in geckodriver about what is required in order to try to reproduce it.

Commented on issue 152 about setting the logging level of geckodriver from the Selenium Java bindings. It seems some of these people lack a fundamental understanding of how computer programs are structured.

Triaged issue 176 in geckodriver and filed issue 2607 with the Selenium Node.js bindings as a result of it. It looks like the Node.js bindings are failing to map the new string-based errors down to the appropriate types.

Commented on issue 127 with regards to some confusion over the Get Element Attribute and Get Element Property commands. I expect we will have to explain this a lot in the time to come.

Commented on issue 172 in geckodriver. I don’t understand this issue report.

Resolved issue 178 in geckodriver about <select> lists as a duplicate of issue 94.

Updated all cargo dependencies in geckodriver.

Commented on bug 1294540 about a crash using the Marionette test runner.


Fixed up test failures in patch for bug 1255955.

Replied to issue 179 about element visibility and interactability in geckodriver.

Closed issue 173 in geckodriver because the information available to properly diagnose it is not there, and we fail to reproduce it.

Commented on issue 180 about what I suspect is more trouble providing profiles to Firefox through geckodriver.

Submitted PR 322 to the WebDriver specification that we need to scroll the element into view before we check for pointer-interactability.



Closed issue 183 in geckodriver as it is a duplicate of issue 94. At any rate, bug 1255955 just landed in the integration repository, and <select> elements should soon be supported in Nightly.

Commented on issue 181 in geckodriver about a memory leak on retrieving textContent by the Get Element Attribute command. This is obviously the wrong command to call if you want to retrieve a property, but it should in any case not produce memory leaks.


Back at work after PTO.

A lot of email processing.

Requested uplift of bug 1255955 to Aurora and Beta.

Closed issue 94 which was the tracking bug for supporting interaction with <select> elements in Marionette in geckodriver.

Reviewed bug 1293982 which addresses a slight misconception about how the Python socket API works. Apparently calling so.close() does not actually close your socket. First you need to call so.shutdown(socket.SHUT_RDWR). It’s good to discover this after running the code for more than four years in production…

Responded to bug 1294151 on breakage in FirefoxDriver with recent Firefox versions. Yes it is a sad, sad reality.

Provided needinfo on bug 1296175 regarding a sandbox usage conversion I did as part of bug 1123506. waitFor is a function from the simpletest harness and is no longer available to general sandboxes. Because the code in question needs system principal privileges, we cannot use the "simpletest" sandbox, so the change replicates what the waitFor function is doing in the simpletest harness.

Replied to a discussion about named arguments in the Rust internals forum. Not sure I have much I should have said there, however…

Filed bug 1296628 to fix the underlying problems identified by bug 1239552. Closed bug 1239552 as the workaround has landed and been uplifted to the relevant trains.

Commented on issue 114 about another question about Windows 32-bit binaries for geckodriver.

Commented on issue 152 about how geckodriver is started in Selenium.

Commented on issue 184 in geckodriver about how to provide us with more debug diagnostic information about why geckodriver is exiting with exit code 1.

Filed issue 2632 with Selenium with a suggestion that we make it easier to show stdout/stderr output from drivers and the other various components in Selenium to help driver implementorsmore easily diagnose issues.

Commented on issue 188 in geckodriver about the inability to use a Firefox profile with geckodriver. I believe it is Selenium related, and probably because the reporter is using an old version of Selenium.

Investigated and commented on issue 180 about being unable to load in an extension using Firefox profiles in the Java bindings with geckodriver and Marionette.

Commented on issue 72 in the Leadfoot WebDriver binding that they need a lookup table for WebDriver conformant error codes.

Commented on issue 186 in geckodriver about the differences between the Get Element Attribute and Get Element Property commands.

Commented on issue 2285 about implementing a spec-compatible actions API in the Selenium project.

Investigated issue 181 about the memory leak problem in Marionette. It looks like a frame script in a document that is never reloaded or navigated, will cause the heap to increase somewhat over time. It is not the case if the browser is navigated, and I suspect this is because of the way we magically map message handlers and their callbacks over a proxy interface.


Closed issue 184 in geckodriver because it turns out to be resolved by issue 2544 in Selenium.


Requested uplift of bug 1280300 which fixes navigation to a fragment in the current document. Unsure which other patches are a prerequisite for this, but I suspect some of mconley’s patches are. Asked the sheriffs if there’s an easy way to find out.

Commented on issue 185 in geckodriver about how to find out the latest release in an automated way.

Submitted PR 191 to increase the verbosity of geckodriver and Gecko by using a capability passed to the New Session command.


Resolved bug 1297403 as WONTFIX.

Worked on bug 1103196 to get unsigned/invalid SSL certificates support working in Marionette. However, I spent most of my time reworking the test system and coded a new multiprocess HTTPD setup for the Marionette Python test runner.


Continued work on bug 1103196. Added support for spinning up the new fixture servers in the Marionette test runner. It is one of the worst pieces of code I’ve ever worked with.


Closed issue 193 about package name scheme changes in geckodriver as it is a non-bug and they will stay consistent in the future.

Closed issue 195 in geckodriver as it was resolved by bug 1280645.

Closed issue 126.

Closed issue 102 because it was resolved bug 1280300.

Patched bug 1280947 so that interaction with <input type=file> elements dispatch the correct DOM events, in particular the change event.

Investigated bug 1244425 and found that new File(path) now works in content space with e10s enabled. I made the bug depend on 1280947 as it contains some improvements to the mozSetFileArray call.

Closed issue 86 as we cannot reproduce it and no further diagnostic information has been added.

Provided needinfo on bug 1283216.

Requested needinfo on bug 1298025 regarding moving the temporary addon installation code from the Marionette client to a Marionette extension command.

Commented on bug 1297983 regarding making use of the fire-once option in addEventListener(type, listener, {once: true}) throughout Marionette.

Submitted a person on my team for the peer recognition programme.


Patched bug 1298025 that moves the addon installation code from the Marionette client to internally in Marionette. This explicitly breaks backwards compatibility with earlier releases of Gecko that do not support the Marionette:installAddon and Marionette:uninstallAddon commands.

Commented on geckodriver PRs 162 and 191.

Resolved bug 1298382 as WONTFIX because we have no intentions of supporting the Selenium-styled log interfaces for Marionette until there is a solid spec for it.

Cleared needinfo on bug 1280300 as I’m not sure we care enough about fragment navigation to rebase the patches for uplift to beta.

Attended Anjana’s Outreachy internship presentation.

Commented on issue 197 in geckodriver that we need more information to be able to properly diagnose the problem with why the Selenium Python library is raising a KeyError when attempting to find an anonymous node element.

Resolved bug 1296110 as a duplicate of bug 1270585.

Triaged and commented on issue 196 in geckodriver about a user prompt not causing an executing script to return with an error immediately. I suspect this is bug 1270585.

Filed and patched bug 1298454 about reusing element.makeWebElement.


Closed issue 199 in geckodriver because it is a duplicate of issue 94 about support for <select> elements.

Submitted PR 118 to the Go GTK+3 library bindings which adds support for convertion **gchar arrays to Go []string slices and vice versa. Quite proud of this patch as it doesn’t invoke a wrapper in C. It does look like the project itself is rather unmaintained, but I will try to get the patch landed there first before deciding whether I’m in the right position to fork it.


Closed issue 200 and issue 201 in geckodriver.


Locked down the conversation in issue 94 in geckodriver because it is a duplicate.

Responded to a discussion around pointer events in the WebDriver specification and whether they are low-level enough. I think these are valid concerns.

Responded to issue 2161 in WPT about the actions API in WebDriver.

Reviewed PR 323 about the noop and key actions for the WebDriver specification.

Reviewed bug 1284457 which reduces the socket timeout time in the Marionette Python client from 360 to 60 seconds. We could probably reduce it further.

Patched bug 1244425 which makes us dependent on one less CPOW in Marionette.

Responded to a comment on PR 323 I reviewed earlier about actions for the WebDriver specification.

Closed issue 202 in geckodriver about support for the Selenium log API.

Submitted PR 2686 to Selenium which adds support for finding anonymous XBL elements using the Python bindings. I also pushed a fixup to the corresponding branch in geckodriver to fix the element marshaling.

Submitted jgraham’s fixed up patch for adding support for XBL anonymous node retrieval as PR 203 to geckodriver.

Commented on issue 202 about the GeckoDriver#getLogs command.


Fixed an issue I found in bug 1244425 where I had forgotten to remove the message handlers from testing/marionette/frame.js, and requested integration from Autoland.

Provided needinfo on bug 1290372 about making the transport.wait_for_port check smarter. hskupin says we can probably reduce the wait time substantially by also looking at the return code from the binary, but it’s not clear to me if this will work for mobile.