AngularJS End to End (E2E) Testing | Protractor
Protractor is an end-to-end test framework developed for Angular and AngularJS applications. It run tests against the application interacting with it as a real user would, running in a real browser. In this article, we are going to create a basic test.
Pre-requisite: Installation and Setup of Protractor
Approach:
- We are going to create a basic test program in which we are going to check whether the title of the Angular web app is correct or not.
- All the Protractor tests will have a file which will contain the configuration and this will be the initial file that will initiate the test.
- Let's create this file with the name conf.js.
conf.js:
exports.config = {
// Capabilities to be passed to the
// webdriver instance.
// Here we are specifying the browser
// to be chrome
capabilities: {
'browserName': 'chrome'
},
// Framework to use. Jasmine is
// being used here.
framework: 'jasmine',
// The test file which are relative
// to the current working directory
// when protractor is called.
specs: ['test.js'],
// Options to be passed to Jasmine.
jasmineNodeOpts: {
defaultTimeoutInterval: 30000
}
};
- Now let's create our test file test.js. In this file, we are going to access an AngularJS web app and then check if the title is correct or not.
- Browser is a global created by Protractor, which is used for browser-level commands such as navigation with browser.get.
- The describe and it syntax is from the Jasmine framework where describe is a description of your test while it is the steps for the test.
The spec file named test.js:
describe('Protractor Demo App', function () {
it('should have a title', function () {
// Open the AngularJS webpage
browser.get(
'http://juliemr.github.io/protractor-demo/');
// Check if the title is 'Super
// Calculator' or not.
expect(browser.getTitle())
.toEqual('Super Calculator');
});
});
- Finally, we are ready to run our file using the command given below:
protractor conf.js
- This will run the configuration file and the test will be run as shown in the screenshot below:
Output:
