Parallax Sign in
ParallaxCross-browser test grid

An OwnStack product

Your tests pass. On which browser?

Parallax runs one suite against Chromium, Firefox and WebKit at the same time and shows you where they disagree. The cell that is green on two engines and red on the third is not noise around the answer. It is the answer.

failed 10 passed 1 failed 1 errored 2 flaky 8.3s
Matrix4 specs × 3 engines
Specchromiumfirefoxwebkit
signs a customer in412ms1180ms903ms
adds an item to the cart388ms1044ms861ms
picks a delivery date501ms1297ms2140ms
completes checkout733ms1610ms1288ms

One run. WebKit is the only engine that fails the date picker, and it takes 2.1s to do it.

How it works

One suite, three engines, one verdict.

Parallel

Three engines at once

One process per browser, so a WebKit crash cannot take Chromium’s results with it and the matrix finishes in about the time the slowest engine takes.

Honest

Failed, not errored

A violated expectation and a broken runner are different things and are reported differently. A red build tells you which one you have.

Flake

Retries that stay honest

Flake is retried, and a spec that only passes on the third attempt is marked flaky rather than quietly rounded up to green.

Wire it into CI

Exits non-zero when the matrix is red.

Writes JUnit XML your CI already knows how to render, with the browser in the classname so a failure says which engine broke.

RUN=$(curl -sf -X POST -H "Authorization: Bearer $PARALLAX_KEY" \
  https://parallax-api.ownstack.org/api/suites/1/run | jq -r .id)

curl -sf -H "Authorization: Bearer $PARALLAX_KEY" \
  https://parallax-api.ownstack.org/api/runs/$RUN/junit -o junit.xml

curl -sf -H "Authorization: Bearer $PARALLAX_KEY" \
  https://parallax-api.ownstack.org/api/runs/$RUN | jq -e .green