Automated testing of web applications using JavaScript can provide confidence that changes and new installations do not break existing functionality. There are various types of tests, including unit, end-to-end, compatibility, and performance tests. Popular JavaScript testing tools include QUnit for unit testing, Selenium and Protractor for end-to-end testing, and PhantomJS for headless browser testing without a GUI. These tools can test JavaScript applications and allow writing tests in JavaScript when the application itself is also written in JavaScript.
4. If I change something, I‟m confident that I didn‟t break the application
If I install something, I‟m confident that it didn‟t break the application
At any point, I‟m confident that the application still works as expected
4
6. Unit Test – test discreet methods, functions, or services
E2E Test – test end to end operation of the application
Compatibility Test – test with different browsers/devices/environments
Performance Test – test with various loads and stress
Security Test – test the confidentiality and integrity of the application
6
11. No cost to download
Open source frameworks can be forked/modified
Very modular – combination of frameworks and runners
Vibrant and active development
If I‟m writing my client and server in JavaScript, why not my tests?
11
12. http://qunitjs.com
JavaScript unit testing framework
Used to test jQuery, jQuery UI and jQuery Mobile
test("a basic test example", function() {
ok( true, "this test is fine" );
var value = "hello";
equal( value, "hello", "We expect value to be hello" );
});
Demo 12
14. http://seleniumhq.org
Web Application testing platform
Open source (Apache 2.0), released by TW in 2004
Selenium IDE – basic recorder, implemented as a Firefox Extension
Selenium WebDriver – “remote control” for browser
Selenium Grid – instantiate browsers on remote machines
Demo - IDE 14
18. http://pivotal.github.io/jasmine/
BDD Framework for writing JavaScript tests
Clean syntax
Support for mocks (spies)
describe("a basic test example", function() {
it(“tests that true is always the truth”, function() {
expect(true).toBe(true);
});
});
18
19. Protractor
https://github.com/angular/protractor
Testing framework for AngularJS, built on top of WebDriverJS
Supports Jasmine tests by default
(Mocha coming soon)
Scripts to support easy install of Selenium
npm install –g protractor
webdriver-manager update
webdriver-manager start
19
24. http://phantomjs.org
Headless (Qt)WebKit with JavaScript API
Ability to act as a browser without actually having a GUI
Ideal for running in hosted instances (e.g. docker)
page.open(„http://localhost:8088‟, function(status) {
page.evaluate(function() {
/* test elements on the page */
});
});
Demo - Phantom 24
29. Testing is really important to maintain confidence in your application
Abundance of JavaScript testing frameworks, many of which are modular
Unit and end-to-end tests in both browser-based and headless mode
29