bcgov / cas-registration

A web app for Registration in OBPS under the Clean Growth branch
Apache License 2.0
1 stars 1 forks source link

Parallelize e2e tests in CI #1078

Open marcellmueller opened 7 months ago

marcellmueller commented 7 months ago

Description of the Tech Debt

Our e2e test is our longest running CI job at around 10 minutes currently. We are quickly catching up on our e2e testing and this number will continue to grow over time and will be a potential bottleneck with our CI.

It's possible to use multiple workers in CI to run the tests concurrently and save us a bit of time:

https://playwright.dev/docs/test-parallel

Edit: Shon mentioned that this would likely be difficult due to the way our authorization works for the tests. It might be worth a quick spike though this could be a blocker.

SH: Although parallelizing can improve test execution time and scalability it can introduce complexity and overhead in CI pipelines.

Tech Debt Triage

The purpose of our technical debt triage process is to analyze technical debt to determine risk level of the technical debt and the value in tackling that technical debt.

Risk Value Scoring:

Level Value
High 3
Medium 2
Low 1
Technical Debt - Risk Types Level Value
Business Area Risk - Risk of business area visibility / damage to user experience 1
Developer Fault Risk - How likely will this tech debt cause a future error related to coding on top of it 1
System Fault Risk - Risk of system errors or application downtime 1
Time Scale Risk - Compound risk effect if left alone. How much more difficult to fix or dangerous will this become over time? 1
Time Sink Risk - How much will this tech debt slow the development process down 3
TOTAL SCORE: 7
BCerki commented 5 months ago

@shon-button, is this already in place? Do we still need this ticket?

shon-button commented 5 months ago

@BCerki I do not believe we have done any exploration on the results of changing the client/playwright.config.ts/workers and removing the e2e files annotation: test.describe.configure({ mode: "serial" });