November 2015


Travel day back to London via Copenhagen.


Resolved bug 1141050 as WONTFIX.

Attended office meeting.

1:1 with dburns.


Spent a lot of time rebasing and integrating the various WebDriver specification tests submitted by Microsoft, as they had done some very funky things to their git history.

Rebased bug 1211501 and fixed two cases of a missing return statement that caused the client to never get past the initial waiting for readiness. Conferred with gaye and requested checkin.

Submitted PR 37 to wpt-tools.

Fixed linting issues and enabled linting for WebDriver tests in wpt PR 2307.


Reconfigured to use nginx.

After some investigation, gmarty informed me that the autolander bot for Gaia is still disabled. But I was able to land the patch for bug 1211501 manually.

Reviewed rb/24493 for bug 1222388 which attempts to fix mach marionette-test.

Reviewed r/5944.


Added note to explain why WebDriver is returning a "true" string from Get Element Attribute.

Reviewed bug 1222388.

Filed and patched bug 1223028 to fix the ability to run multiple emulator callbacks in a single executeAsynsScript invocation. Hopefully this addresses the concerns raised by bhsu.

Submitted a refactor of the patch for bug 1202381, and thanked the original contributor for his work. Sometimes what seems obvious ends up being more complicated that you would have thought…

Did a lot of investigation into why bug 1211489’s try runs are not passing on Gaia. Initial investigation showed that the Gaia SHA, recorded in a file in Gecko, was not up-to-date and that it hadn’t been updated for quite a while. This turned out to be inaccurate, partly because inbound haven’t been merged into central for a few days.

I rebased and triggered a new try run just to be sure, but I do not have high hopes for it.

Also there are still emulator callback failures in Mn.

rillian informed me that rustc 1.4 is required on PATH for compilation of libMP4Metadata.a to succeed. Indeed it did.

Did a lot of work on simplifying and making the make process faster. Unfortunately the latter was not a success, as my attempts at doing lazy evaluation of variables were not particularly successful, and in fact made the remote update progress slower. However, I do believe that it can be sped up significantly with a little bit more work.

Spent some quality time submitting travel expense reports.


Replied to a discussion about how to prevent future marionette-webapi breakage.

Fixed up a code review issue for bug 1202381 (in rb/24683).

Addressed a documentation issue with rb/24679 for bug 1223028.

Pushed bug 1202381 to inbound.

Provided feedback on bug 1220012 about a memory leak in Marionette. Requested some more information from ting as I don’t fully understand the problem yet.

Followed up on Titus Fortners comment about Get Active Element in bug 805475. From what I can tell it’s there in wires.

Replied to office survey about amenities.

Provided feedback on bug 1217988 about the reported operating system in Marionette’s returned capabilities. It looks like we’re returning back the operating system name of the system that compiled Firefox rather than the effective system’s OS.

Provided feedback on bug 1215806 about how the element visibility atom from Selenium works.

Patched bug 1217988 and submitted review rb/24793.

Filed bug 1223429 about returning exit code 10 from the Marionette harness when there are test failures. Apparently mozharness uses the exit code to distinguish between test failures and harness problems.

Provided feedback on bug 1217598 about the input types allowed for the expiry field for the Add Cookie command. The WebDriver specification is vague in this area, and I feel it should call out the accepted input format and what error should be returned if this isn’t met; especially because there isn’t a good specification that says anything about what happens if you pass the cookie manager an invalid value.

Provided feedback on bug 1216995 about the wires binary being dynamically linked. Suggested we statically link against the musl C library instead.

Reviewed rb/24809 for bug 1223429 about the exit code for the Marionette test harness.

Interacted with a possible candidate for implementing the WebDriver WPT client and infrastructure, waffles.

Filed bug 1223459 about spinning up an HTTP server for ./mach doc DIRECTORY using some flag. This would be useful if your development environment lives on another remote machine, and you wish to access this from your terminal. Started work on this.


Backed out bug 1217988 and bug 1223028 late last night for breakage on Mac. I think only bug 1217988 had to be backed out, so re-landed bug 1223028 this morning.

Reviewed rb/24861 from bug 1223171 that introduces a new addon class to the Marionette Python client. It is very good.

Attended office meeting.

For bug 1217988 which I had to back out last night, I triggered a full try run after having fixed up some references to the old platform name of "DARWIN".

Submitted rb/24949 for bug 1223459 that lets you spin up a web server using ./mach doc DIRECTORY --http [ADDRESS].

Finished reivew of rb/24861 for bug 1223171.

Looked into bug 1215502 and requested more info from whimboo. I suspect it can be closed.

Provided feedback on bug 1202576.

Triggered another try run for bug 1211489 to see if the Gaia reference has been updated yet.


Pushed bug 1223459 to inbound.

Provided feedback on bug 805475.

Made bug 814416 block the WebDriver implementation tracking bug.

Started work on refactoring bug 1223907 about wrong cookie body encapsulation.


Submitted rb/25125 for bug 1223907.

Attempted to push bug 1217988 to inbound once again.

Tried to understand bug 1220012, but still need more information.

Started work on bug 1123506, which is my deliverable this quarter.


Reviewed bug 1220012.

Rebased, fixed a Map deletion issue, and triggered another try run for bug 1211489.

Rebased and retriggered try run for bug 1223907.

Continued work on bug 1123506.


Continued work on bug 1123506. Made sufficient progress to get basic synchronous script execution work.


Chatted more to the potential Quarter of Contribution candidate. Also wrote a long email to the candidate, going into more technical detail.

Provided a lot of feedback on the Engineering Productivity Vision and Strategy document.

Work on bug 1123506. Synchronous- and asynchronous script execution in content sandboxes is now mostly working.

1:1 with dburns.


Attended office meetings.

Work on bug 1123506. Most tests are passing now, except some sandbox tests.


Continued work on bug 1123506 and got quite far in greening up the remaining tests. I still need to go over and compare the old algorithms to the new, as I suspect there is still significant discrepancy.

Pushed a try run which I expect to have a lot of failures, but which will give me an idea of where I am.


Worked on getting more tests passing for bug 1123506, and made good progress on a number of edge cases such as,,,,, and

Pushed new try run to verify progress so far.


Reviewed rb/26037.

Marked bug 1153828 and bug 1143872 as good first bugs.

Continued work on bug 1123506, but discovered that we need to land bug 1223907 and bug 1211489 first.

Learned from aus that I was using b2g-desktop for running tests, and that I should be using mulet instead. Spent some time reconfiguring my build environment.


Reviewed rb/26037.

Found the bug that caused bug 1223907 from being landed. The removal of the val.result in XPCOM_EXCEPTIONS in error.isError is causing an object like {result: …} to be treated as an error.

Also discovered that the reason we’ve been unable to land bug 1211489 is because the Marionette JS client is passing along the wrong, unserialised variable body, to the Marionette server instead of the serialised variable data. This only happens to work right now because the server isn’t using protocol level 3 yet. I filed bug 1227991 about this and requested review from aus.

Redirected needinfo request to jkew for bug 1203649, and they were able to triage it within 30 minutes. Properly impressive, but sadly proves the point that you need to know the right people to get anything done at Mozilla.

Walked through fire and hell to rebase bug 1201050.

Filed bug 1228058 about inconsistent TaskCluster configurations for what is uploaded on try and gaia-master. It seems gaia-master produces artifacts that are sensible. Specifically they include the marionette-mocha-gecko.log output that is often needed to tell if the Marionette remote server does anything wrong.

Filed bug 1228079 about re-running failed Gij jobs also on try.


Filed bug 1228311 about remembering the last try syntax used in MozReview.

Rebased and riggered new try runs for bug 1201050, bug 1211489, and bug 1223907.

I found that the return value in bug 1201050 was being “double wrapped” because actions.js was calling the onSuccess callback using {value: val || null}, causing the dispatcher to again wrap it inside another dict.

Ended up pushing bug 1201050 and bug 1223907 to inbound. Waiting to push bug 1211489 until Gij 39 has a green result.


PTO and travel day.


Closed bug 1143872 as invalid.


Wrote a weblog entry about WebDriver at TPAC.

Looking into failing Gij test tests/jsmarionette/runner/marionette-js-runner/test/integration/clientasync.js for bug 1211489 that was backed out. Found that the test is using the asynchronous TCP driver which I conciously decided not to change in the first round because I did not think it was used.

Filed and patched bug 1229011 as a follow-up on this, which essentially just applies the same logic from the synchronous TCP driver to the asynchronous driver. This is, hopefully, the last change I have to make to Gaia before I can land bug 1211489.

Provided feedback on why I don’t think bug 1202663 should be uplifted, or at least that I’m not willing to do the work.

Investigated bug 1154432 a bit and found that the Python client sends a parameter max_length, whereas the Marionette server is looking for max_len for the multiActions command. Submitted a patch for this, but since I have no way of running the Gu tests I cannot really be sure this fixes the problem.

Filed bug 1229055 regarding the inability to pass on arguments directly to the eslint binary from ./mach eslint -- -f unix testing/marionette.

Attended EngProd fortnightly meeting.