Clone this repo:

Branches

  1. a96b8cc Add helper method to get/set the screen brightness on Mac by Alex Attar · 25 hours ago main
  2. 00ad2b2 Change Python max version to < 3.11 by Camillo Bruni · 4 days ago
  3. 6535877 Add basic speedometer2 and motionnmark unittests by Camillo Bruni · 4 days ago
  4. ab998db Improve documentation by Camillo Bruni · 4 days ago
  5. 3d6d8c8 Split Benchmark and Runner into separate classes by Camillo Bruni · 10 days ago

Crossbench

Crossbench is a cross-browser/cross-benchmark runner to extract performance numbers.

Setup:

This project uses poetry deps and package scripts to setup the correct environment for testing and debugging.

pip3 install poetry

Basic usage:

poetry run crossbench speedometer_2.0 \
    --browser=/path/to/chromium \
    --stories=VanillaJS.* \
    --probe=profiling \
    --probe=v8.log

Main Components

Browsers

Crossbench supports running benchmarks on one or multiple browser configurations. The main implementation uses selenium for maximum system independence.

You can specify a single browser with --browser=<name>

poetry run crossbench speedometer_2.0 \
    --browser=/path/to/chromium  \
    -- \
    --browser-flag-foo \
    --browser-flag-bar \

For more complex scenarios you can use a browser.config.hjson file. It allows you to specify multiple browser and multiple flag configurations in a single file and produce performance numbers with a single invocation.

poetry run crossbench speedometer_2.0 \
    --browser-config=config.hjson

The example file lists and explains all configuration details.

Probes

Probes define a way to extract arbitrary (performance) numbers from a host or running browser. This can reach from running simple JS-snippets to extract page-specific numbers to system-wide profiling.

Multiple probes can be added with repeated --probe=XXX options. You can use the describe subcommand to list all probes:

poetry run crossbench describe probes

Benchmarks

Use the describe command to list all benchmark details:

poetry run crossbench describe benchmarks

Stories

Stories define sequences of browser interactions. This can be simply loading a URL and waiting for a given period of time, or in more complex scenarios, actively interact with a page and navigate multiple times.

Use --help or describe to list all stories for a benchmark:

poetry run crossbench speedometer_2.0 --help

Use --stories to list individual comma-separated story names, or use a regular expression as filter.

poetry run crossbench speedometer_2.0 \
    --browser=/path/to/chromium \
    --stories=VanillaJS.*