Description
The CI workflow takes a long, long time to complete. A number of places can benefit from a closer inspection in terms of performance. The goal is to examine the workflow for time hogs and fix them.
Reproduction
Push a commit to a PR or open a new one.
Expected behavior
Tests should finish in time periods that can be described as short or, at max, reasonable.
Working guidelines
If you can find a performance issue, comment here with a possible solution and if your solution is upvoted (馃憤) you can go ahead and implement it via a PR. The PR will be a proof-of-concept to show whether your solution actually cuts down CI times.

@dhruvkb What dependency is this when we have already installed setup?
@jahnvigupta The setup will just setup node and npm and then install the common node modules. Whereas, the install dependencies step will install the project-specific dependencies configured in the package.json file.
I think if all the dependencies are installed in the beginning then the jobs can be run in parallel.
Each job actually runs in a new virtual instance and hence for all jobs, setup will be required. Also, if the jobs don't have dependencies on any other job then all those jobs run in parallel by default.
@dhruvkb I think if even the node_modules directory is cached after the npm install step in the Setup job, then later we won't have to install the dependencies again in each of lint, unit and build jobs. In these three jobs, cached node modules will be restored on the cache-hit. This should improve the workflow run time by around 45 seconds I believe.
Caching node_modules seems like the wrong idea since the binaries that npm install installs will not be available from the cache.
Moreover, since the task with the biggest time overhead is snapshot testing, we should look for improvements there, most notably in the Docker image build step and the actual snapshot test run step.
Ok, I didn't think about it in terms of the binary perspective. Thanks for pointing it out. I will close the open PR as it doesn't serve the purpose. And I will look into ways to improve the snapshot testing job.
We're closing this for now since we're disabled snapshot tests.