90 lines
3.3 KiB
ReStructuredText
90 lines
3.3 KiB
ReStructuredText
WebRender Tests
|
|
===============
|
|
|
|
The WebRender class of tests are used to test the WebRender module
|
|
(lives in gfx/wr) in a standalone way, without being pulled into Gecko.
|
|
WebRender is written entirely in Rust code, and has its own test suites.
|
|
|
|
If you are having trouble with these test suites, please contact the
|
|
Graphics team (#gfx on Matrix/Element or Slack) and they will be able to
|
|
point you in the right direction. Bugs against these test suites should
|
|
be filed in the `Core :: Graphics: WebRender`__ component.
|
|
|
|
__ https://bugzilla.mozilla.org/enter_bug.cgi?product=Core&component=Graphics%3A%20WebRender
|
|
|
|
WebRender
|
|
---------
|
|
|
|
The WebRender suite has one linting job, ``WR(tidy)``, and a
|
|
``WR(wrench)`` test job per platform. Generally these test jobs are only
|
|
run if code inside the ``gfx/wr`` subtree are touched, although they may
|
|
also run if upstream files they depend on (e.g. docker images) are
|
|
modified.
|
|
|
|
WR(tidy)
|
|
~~~~~~~~
|
|
|
|
The tidy lint job basically runs the ``servo-tidy`` tool on the code in
|
|
the ``gfx/wr`` subtree. This tool checks a number of code style and
|
|
licensing things, and is good at emitting useful error messages if it
|
|
encounters problems. To run this locally, you can do something like
|
|
this:
|
|
|
|
.. code:: shell
|
|
|
|
cd gfx/wr
|
|
pip install servo-tidy
|
|
servo-tidy
|
|
|
|
To run on tryserver, use ``./mach try fuzzy`` and select the
|
|
``webrender-lint-tidy`` job.
|
|
|
|
WR(wrench)
|
|
~~~~~~~~~~
|
|
|
|
The exact commands run by this test job vary per-platform. Generally,
|
|
the commands do some subset of these things:
|
|
|
|
- build the different webrender crates with different features
|
|
enabled/disabled to make sure they build without errors
|
|
- run ``cargo test`` to run the built-in rust tests
|
|
- run the reftests to ensure that the rendering produced by WebRender
|
|
matches the expectations
|
|
- run the rawtests (scenarios hand-written in Rust code) to ensure the
|
|
behaviour exhibited by WebRender is correct
|
|
|
|
Running locally (Desktop platforms)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
The test scripts can be found in the ``gfx/wr/ci-scripts/`` folder and
|
|
can be run directly from the ``gfx/wr`` folder if you have the
|
|
prerequisite tools (compilers, libraries, etc.) installed. If you build
|
|
mozilla-central you should already have these tools. On MacOS you may
|
|
need to do a ``brew install cmake pkg-config`` in order to get
|
|
additional dependencies needed for building osmesa-src.
|
|
|
|
.. code:: shell
|
|
|
|
cd gfx/wr
|
|
ci-scripts/linux-debug-tests.sh # use the script for your platform as needed
|
|
|
|
Note that when running these tests locally, you might get small
|
|
antialiasing differences in the reftests, depending on your local
|
|
freetype library. This may cause a few tests from the ``reftests/text``
|
|
folder to fail. Usually as long as they fail the same before/after your
|
|
patch it shouldn't be a problem, but doing a try push will confirm that.
|
|
|
|
Running locally (Android emulator/device)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
To run the wrench reftests locally on an Android platform, you have to
|
|
first build the wrench tool for Android, and then run the mozharness
|
|
script that will control the emulator/device, install the APK, and run
|
|
the reftests. Steps for doing this are documented in more detail in the
|
|
``gfx/wr/wrench/android.txt`` file.
|
|
|
|
Running on tryserver
|
|
^^^^^^^^^^^^^^^^^^^^
|
|
|
|
To run on tryserver, use ``./mach try fuzzy`` and select the appropriate
|
|
``webrender-<platform>-(release|debug)`` job.
|