To encourage contribution best practices, we should run coverage checks on critical logic in the library against our current test suite.
### Tasks
- [x] Use `nyc` to generate test coverage reports
- [ ] Assess coverage reports on new code only (if possible)
- [x] Implement a GitHub Action to present and block PRs if coverage on new logic is below 80%
- [x] Rename test files to `*.test.js`