Unit testing (Unit tests take a small piece of the product and test that piece in isolation. Unit tests are fast, reliable, isolate failures)
- Jest/Enyzme, Mocha/Chai, AVA/Type
Integration Testing (takes a small group of units often 2 units and tests their behavior as a whole, verifying that they coherently work together.)
- Karma
E2E Testing (with e2e tests, you have to wait for the entire product to be built then to be deployed and finally for all the e2e tests to run, E2e are not fast, not reliable, but stimulates real user.)
- Selenium, Cypress, Puppeteer, Cucumber.js, Nightwatch.js
E2E testing allows us to cover sections of the application that unit tests and integration tests don't cover.
Google recommends 70/20/10 70% unit tests, 20% integration tests, and 10% end-to-end tests.