One trick for 3 times faster `ng test`

I know, the title sounds like a click bait. But it's not, I assure you.

There is an issue in the Angular framework that leads to a memory leak in unit tests, which slows down the browser executing the tests, and results in looong ng test.

The issue has been around for quite some time, and will be fixed in the framework in a future version (maybe 11.x or 12?).

But in the meantime, this workaround can lead to 3 times faster tests. On the project I first tested it, 1631 tests went from taking 2min50s to 50s on CI (from 2min to 40s on my laptop) 🚀

TL:DR;

In a CLI project, open test.ts and add the following lines:

import { ɵDomSharedStylesHost } from '@angular/platform-browser';

// https://github.com/angular/angular/issues/31834
afterEach(() => {
  getTestBed().inject(ɵDomSharedStylesHost).ngOnDestroy();
});

And let us know how much faster is your ng test!

Why?

When we test a component, the framework inserts its styles in


Photo de Cédric Exbrayat
Cédric Exbrayat