Don't commit focused tests
We've all done it, committing a focused test. Most of the time this won't be spotted during a review, and this might lead to bigger problems. So... how can this be prevented?
Visual Studio Code extension link
Last week, Dzhavat Ushev created the Test Focus Highlighter Visual Studio Code extension which highlights focused tests.
Neat right?! But this doesn't prevent us from committing tests, for this we have to take it a step further.
TSLint link
For projects that are using TSLint, the built-in ban rule can be used to ban the usage of specific functions or global methods. I didn't know this existed, but Maxime Robert pointed me to it.
This ban rule can be configured in the tslint.json
file.
ESLint link
eslint-plugin-ban link
Sadly, for ESLint there isn't a built-in rule but there are options. Inspired by the TSLint ban rule, there's an ESLint ban rule that is created by the community. It has the same configuration and behaves the same way as the TSLint version.
This ban rule can be configured in the .eslintrc.json
file.
eslint-plugin-jest link
The second option, if you're using Jest, is to use the eslint-plugin-jest ESLint plugin. This plugin has a set of options and one of these is no-focused-tests. You can enable the rule specifically, use the "all configuration", or the "recommended configuration".
Pre-commit hook link
After this post was released, Netanel Basal shared a third option by using a pre-commit hook. This will prevent a user from committing a focused test.
For this method, you have to (1) create the hook, and (2) enable the hook with for example husky.
For an example, you can take a look at the Transloco library. Thanks Netanel!
Conclusion link
Using the Visual Studio Code extension helps you to spot focused tests, but doesn't prevent that these tests are committed. Using a linter helps to spot these focused tests (or skipped tests). Linting your project during a continuous integration run will give you a warning or will throw an error (depending on how it's configured) to prevent an accidental commit.
Happy linting!
Feel free to update this blog post on GitHub, thanks in advance!
Join My Newsletter (WIP)
Join my weekly newsletter to receive my latest blog posts and bits, directly in your inbox.
Support me
I appreciate it if you would support me if have you enjoyed this post and found it useful, thank you in advance.