Skip to content

Fix #328 - Improve parallelism and shared work in CI pipelines

Justin Wernick requested to merge 328-improve-fuzz-performance into master

This MR uses Gitlab's "parallel matrix" together with Mocha's grep to break down the fuzz tests into multiple pipelines that run in parallel.

I also experimented with pulling out the common action of building the docker containers used by all the functional tests and running it once in the build step rather than rebuilding it in every parallel job (see https://gitlab.com/eyeo/adblockplus/abc/webext-sdk/-/pipelines/621528349 as an example of that) but found that the cost of uploading and downloading the docker containers added extra overhead.

There is also an improvement to serial performance for running the full test suite on a development machine. This is done by drastically reducing the static timeout when the service worker is suspended. For slow machines, this doesn't make much of a difference, because the service worker takes longer than that to actually shut down. However, for fast computers, this lets the test continue much faster. This is generally true in the tests when using things like wait (which can be fast on faster computers) vs using a static timeout to wait a certain amount of time.

  • End to end CI pipeline time: 14m38s
  • Time to run npm test -- v3 chromium (on my machine): 6m24.616s
Edited by Justin Wernick

Merge request reports