Zhen Zhang edited this page Jul 30, 2016 · 17 revisions

Servo has a test suite which runs on every reviewed pull request, via bors-servo and the buildbot. It uses Mozilla's Mach system to run the tests.

You can run the test suite yourself through these ./mach commands:

  • ./mach test: Runs all the Servo tests.
  • ./mach test-unit: Runs unit tests (functions tagged with #[test]) inside Servo and its dependencies. May also run ref or content tests depending on your platform.
  • ./mach test-wpt: Runs the web platform tests on Servo.
  • ./mach test-css Runs a subset of the CSS WG tests (mostly reftests) on Servo. Uses the same harnesses as the web-platform-tests and the further information there still applies.

Writing test

  • Write wpt/css tests
  • Write unit tests: These are common Rust programs under tests/unit, and is organized to reflect the components tree. You can follow the existing structure and Rust testing guide.

Assign a Temporary Hostfile for Testing

In some tests (e.g. wpt tests), you need to use a hostfile to translate testing domain names to real IPs. For example, translating wpt1.testserver.com to But you may not have the permission to change the system hostfile in a shared server. Instead, you can assign a temporary hostfile using the HOST_FILE environment variable.

First, create a hostfile, say /tmp/hostfile.txt, in the following format ip<single space>hostname<new line>. For example: wpt1.testserver.com wpt2.testserver.com

Then, set the HOST_FILE environment variable as the absolute path to the hostfile.

export HOST_FILE=/tmp/hostfile.txt

Now, if you open http://wpt1.testserver.com in servo, you will go to directly.

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.