Welcome to the second annual update on progress in cross-browser interop testing through web-platform-tests. This year has seen big improvements to the platform coverage of wpt, as well as increasing the number of features that can be tested with wpt, and the visibility of test results in Gecko and in other browsers. In addition there have been numerous fixes intended to make the experience of working with wpt better and the results more reliable. So in no particular order:

== Gecko CI ==

* web-platform-tests are now enabled on CI on all tier-1 platforms i.e. Desktop Firefox on Linux, Windows and macOS, and mobile Firefox on Android (using the x86 emulator)

* web-platform-tests reftests run the full set of CSS tests on all platforms.

* web-platform-tests run with leak checking enabled in debug, and also run under LSAN. When tests are imported, any existing leaks are automatically added to the allowed list for those tests.

* wpt wasm tests are running in the jsshell.

== Testability ==
* Substantially increased the scope of the testdriver.js [1] API to allow writing tests that are not possible using standard DOM APIs. In particular the following things are now possible:

  - Sending trusted key and mouse events
- Sending complex series of trusted pointer and key interactions for things like in-content drag and drop or pinch zoom
  - File upload

Also added the 'bless' API for cases where something trusted is required but the details are unimportant.

* Implemented support for running tests on HTTP/2 (this is currently disabled by default due to problems with upstream CI that will be solved by migrating from Travis).

* Added support for fuzzy matching in reftests, to allow reftests to pass in the face of small unavoidable differences between test and ref (this is not yet merged but is expected to be landed by the end of the year).

* Added multiple top-level domains to wpt to allow cross-site tests.
Changed wpt runner to run tests in a true top level browsing context (i.e. with null `opener`).

== Results Collection and Viewability ==

* Many fixes and improvements to the wpt.fyi interface to allow efficient selection and comparison of multiple test runs.

* Set up Taskcluster to run all tests after each upstream commit on Firefox nightly and Chrome dev on Linux.

* Set up daily runs of stable and weekly runs of beta, also using Taskcluster.

* Regular, reliable, Edge and Safari Stable/TP runs using a custom buildbot setup and Sauce Labs for Edge.

== Sync ==

* We deployed a new, faster, sync for mozilla-central that enables us to sync test changes made in Gecko repositories as soon as they land in our repositories, creates Bugzilla bugs to track upstream PRs and corresponding changes to Firefox test results, and allows us to downstream changes from web-platform-tests much more frequently.

* Servo's sync system was updated to allow continuous syncing of PRs from servo/servo to web-platform-tests and frequent downstreaming.

* Since launching the new sync we have upstreamed over 500 changes from Gecko bugs to the web-platform-tests repository.

* Over the same time period we have seen about 1,500 changes synced from the Chromium repository to upstream web-platform-tests.

== Developer Ergonomics ==

* Stopped using the in-tree MANIFEST.json file and instead downloaded it on demand. Apart from avoiding merge conflicts, this helps avoid breaking many pieces of tooling including Phabricator and git-cinnabar.

* Added reftest-analyzer compatible output to the default logger used by mach wpt.

* Improved multi-global tests by extending .any.js tests to be more flexible and support more kinds of global scope.

== GitHub Infrastructure ==

* Moved test-stability checks from Travis to Taskcluster for performance and reliability

* Started running PR checks in Safari using Azure Pipelines.

* Started checking for tests that are close to the timeout value and likely to become intermittent.

* Continued making more infrastructure Python 3 compatible.

* Running affected tests on Chrome, Firefox and Safari and showing regressions as PR statuses (currently in beta)

== Meta ==

* Moved the web-platform-tests GitHub repository to its own organisation.

* Started the process of creating a more formal governance structure for web-platform-tests, forming a provisional core team with membership from a range of stakeholders.

A couple of the mentioned items are still under review, but will almost certainly merge before the end of the year :) These improvements have been the result of a close collaboration between people across the web-platform-tests community, including the Interop Testing team at Mozilla, the Ecosystem Infra team at Google and many, many, others. Huge thanks to everyone involved.

[1] https://web-platform-tests.org/writing-tests/testdriver.html
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to