Create protractor.conf.js file with minimal default configuration
// An example configuration file.
// https://raw.github.com/angular/protractor/master/example/conf.js
exports.config = {
// webdriver-start can start on default port 4444
seleniumAddress: 'http://localhost:4444/wd/hub',
// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'chrome'
},
// Options to be passed to Jasmine-node.
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000
},
// The params object will be passed directly to the Protractor instance,
// and can be accessed from your test as browser.params. It is an arbitrary
// object and can contain anything you may need in your test.
params: { }
};
// tests/e2e/auth_spec.js
const LoginPage = require('./pages/LoginPage');
describe('authentication', ()=> {
it('should log user in', ()=> {
let loginPage = new LoginPage();
loginPage.setEmail(vars.user.randomEmail);
loginPage.setPass();
loginPage.login();
})
});
In Action
Work with $timeout (makes protractor not wait for Angular promises)
browser.ignoreSynchronization = true;
browser.get(url);
// do something
browser.ignoreSynchronization = false;
Find elements
// by css
element(by.css('#agree')).click();
// by css (ng-click)
element(by.css('[ng-click="act()"]'));
// by ng-model
element(by.model('detail.price'))
// get attribute via promise
element(by.id('someId'))
.getAttribute('href')
.then((url)=> {
expect(typeof url).toBe('string');
});
// by repeater
element(by.exactRepeater('row in rows'));
Assertions
expect(elem).isPresent()).toBeTruthy();
Delete cookies
browser.driver.manage().deleteAllCookies();
Slow things down
browser.sleep(5000);
Send keys
// upon element
selectedElement.sendKeys(1, protractor.Key.ENTER, protractor.Key.ESCAPE);
// without element selected
browser.actions().sendKeys(protractor.Key.ENTER).perform();
More Sources
---
[Practical End-to-End Testing with Protractor](http://www.ng-newsletter.com/posts/practical-protractor.html)
[Protractor for AngularJS](http://ramonvictor.github.io/protractor/slides/#/)
[angular-eonasdan-datetimepicker](https://github.com/atais/angular-eonasdan-datetimepicker/tree/master/tests)
Getting Started
Install dependencies
Create protractor.conf.js file with minimal default configuration
Add gulp task
The first test
Page Objects
How to define it
How to use it
In Action
Work with $timeout (makes protractor not wait for Angular promises)
Find elements
Assertions
Delete cookies
Slow things down
Send keys
Upload image
element(by.css('input[type="file"]')).sendKeys(absolutePath);