Protractor is an end-to-end test framework for Angular and AngularJS applications. Protractor runs tests against your application running in a real browser, interacting with it as a user would.
Use npm to install Protractor globally with:
npm install -g protractor
This will install two command line tools, protractor
and
webdriver-manager
. Try running
protractor --version
to make sure it's working.
The webdriver-manager
is a helper tool to easily get an
instance of a Selenium Server running. Use it to download the necessary
binaries with:
webdriver-manager update
Now start up a server with:
webdriver-manager start
This will start up a Selenium Server and will output a bunch of info logs. Your Protractor test will send requests to this server to control a local browser. You can see information about the status of the server at http://localhost:4444/wd/hub.
Open a new command line or terminal window and create a clean folder for testing.
Protractor needs two files to run, a spec file and a configuration file.
Let's start with a simple test that navigates to the todo list example in the AngularJS website and adds a new todo item to the list.
Copy the following into todo-spec.js
:
describe('angularjs homepage todo list', function() {
it('should add a todo', function() {
browser.get('https://angularjs.org');
element(by.model('todoList.todoText')).sendKeys('write first protractor test');
element(by.css('[value="add"]')).click();
var todoList = element.all(by.repeater('todo in todoList.todos'));
expect(todoList.count()).toEqual(3);
expect(todoList.get(2).getText()).toEqual('write first protractor test');
// You wrote your first test, cross it off the list
todoList.get(2).element(by.css('input')).click();
var completedAmount = element.all(by.css('.done-true'));
expect(completedAmount.count()).toEqual(2);
});
});
The describe
and it
syntax is from the Jasmine
framework. browser
is a global created by Protractor,
which is used for browser-level commands such as navigation with
browser.get
.
Now create the configuration file. Copy the following into
conf.js
:
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['todo-spec.js']
};
This configuration tells Protractor where your test files
(specs
) are, and where to talk to your Selenium Server
(seleniumAddress
). It will use the defaults for all other
configuration. Chrome is the default browser.
Now run the test with:
protractor conf.js
You should see a Chrome browser window open up and navigate to the
todo list in the AngularJS page, then close itself (this should be very
fast!). The test output should be
1 test, 3 assertions, 0 failures
. Congratulations, you've
run your first Protractor test!
Learn more with the Tutorial.