tree: 672d7ef289cff073bc3d948514d5bfaf75c3a8de [path history] [tgz]
  1. frontend/
  2. model/
  3. .cloudignore
  4. cron.yaml
  5. Makefile
  7. queue.yaml


This is the Go module for the test-results server ( Remaining parts are in the default Python module located at infra/appengine/test_results. Each handler will eventually be migrated from the Python application to Go.

For the list of paths handled by the Go module, see frontend/app.yaml and dispatch.yaml.

For more details, see the README at infra/appengine/test_results.


apt-get install nodejs
apt-get install npm
npm install -g bower
npm install -g vulcanize

Google employees should follow instructions at http://go/nodejs to install NodeJS 4.x or later.

To set up the go environment, run:

eval `../../../../`


To run test-results locally:

make devserver

You can use the -F flag with curl to send multipart/form data. For example, to send request to test testfile/upload:

curl -v -F master='tryserver.chromium.mac' -F builder='linux_chromium_rel_ng' -F
file=@<local-path-to-test-results-file> -F testtype='browser_tests (with patch)'


make build

This can be useful if you want to debug a vulcanized file containing combined and compressed source of all used components. This is actual code used in production. Note that this should not be used for normal development on a local devserver since changes to source code of the components will not be result in changes in the tested app. To go back to normal development, please run

make clean


make test


make [deploy_staging|deploy_prod]

Use the migrate traffic button on the appengine console to move traffic to the new service. Then monitor viceroy for 10-20 minutes.

How to upload test results to the Test Results Server


A few services use test results from test launchers running on Chromium Infrastructure to provide useful data for developers:

  • Flakiness Dashboard allows to have a quick look at recent test runs to help the pattern of failures and platforms which are affected.
  • Flakiness Surface, which is still in development, uses this data to show the tests that have highest flakiness and will in future provide detailed information about each specific test to help finding the root cause and fixing them.


You can start uploading your test results in 3 steps:

  1. Read JSON Test Results Format spec.
  2. Modify source code of your test launcher to make a request to the after running the tests and collecting their results. The request should be multipart/form-data POST request and include the following parameters:
    • master, e.g. tryserver.chromium.linux (note the missing master. prefix),
    • builder, e.g. linux_chromium_rel_ng,
    • testtype, e.g. browser_tests (with patch), and
    • file, e.g. this file (but rename to remove the “_0” suffix).
  3. Deploy the changes to production and verify that your test results are shown in Flakiness Dashboard after selecting test type that matches your step name.

Recommended way to implement this is to use test_results.upload function in the recipe that is running your test, e.g. see example. However, if for some reasons you can not do that, you can also use this example in Python.

If something is unclear, please let us know at and we’ll use your feedback to improve this doc.