Page MenuHomePhabricator

Split work for gated extensions webdriver.io tests
Open, Needs TriagePublic

Description

In T410611 I spent some time looking into where time is spent in the gated-extensions CI job. The job usually takes +20 minutes to run, it run your commit against the "gated" extensions sequential.

One way to make the tests run faster is to split the work into multiple jobs. For example if the full job takes 20 minutes for 20 extensions, then split it int two jobs that runs ten extensions each. That way theoretically the jobs will take 10 minutes each. This means though that each change needs one extra worker to complete.

Splitting the work into four workers would then theoretically make the jobs take 5 minutes (in practices the Wikibase tests takes 4 minutes to run so we need to invest some time into that extension too).

In T415553#11557577 we can see an example of the runtime for the gated job for core. For webdriverIO tests we spend 464 seconds running tests. For Cypress it takes 427 seconds. We could split the job into two, where one job run webdriverIO tests and the other one run Cypress tests. That way we will almost split the test in half. The projects that runs Cypress could have their own npm run command to start the test. That way it will be easier to separate which test that runs in each job.

Acceptance Criteria:

  • Split the gated extensions job to run in two jobs to decrease the feedback loop for the developers

Questions:

  • Is the current amount of workers enough?

Event Timeline

One way could be to split the job by the type of test they run. One job run webdriverIO tests and the other Cypress. Maybe we could switch so they have two diffent start points in npm to make it easier.