Testing
Tools to test applications based on web technology
Jest: Jest is Facebookâs comprehensive test framework which has replaced Jasmine and covers all test aspects (assertions, test case organisation, display and reporting, mocking, stubbing, spying and code coverage) except for browser environment simulation for which jsdom is used as a plug-in.
Jasmine: Jasmine was one of the first feature-rich JavaScript testing frameworks. Although Jest has replaced it, it has arguably more literature and a larger community given that it is older. It is also more Angular focused whilst, arguably, Jest is more React focused.
Karma: Karma is a test runner that runs directly in the web browser and integrates with various other testing frameworks. It has particular focus on testing AngularJS-based applications.
jsdom: jsdom simulates a real web browser environment entirely in JavaScript (browser Js objects, DOM, HTML, etc) without embedding or controlling an off-the-shelf web browser engine like Selenium-based solutions.
Selenium: Selenium allows scripting web interactions across different real browsers (Chrome, FireFox, etc.) through an API called WebDriver that is provided for most mainstream programming languages (Java, C#, Python, etc). Selenium is not a test framework per se so it is often used via wrappers such as Protractor.
Protractor: Protractor wraps Selenium to facilitate the testing of Angular-based applications.
Puppeteer: Puppeteer provides a Node.js library to control run the Chrome browser engine in headless mode. It is a substitute for PhantomJS which is no longer actively developed.