it uses protractor beneath, so this is a good resource: http://angular.github.io/protractor/#/api
Notes:
-
Most commands return promises, so you only resolve their values through using jasmine expect API or using .then(function()) structure.
-
Promises are resolved by WebdriverJS promise manager . If you want to schedule non-api made promise into the chain, you have to use one of:
.then(function(){ <your non-api code> })
- browser.wait()
browser.controlFlow().execute(<promise>)
Based on this post: https://spagettikoodi.wordpress.com/2015/01/14/angular-testing-cheat-sheet/ by @crystoll
browser.testrunner.navigation.to('https://XXXXXXXX/', {auth:'plain'}); // Load address, can also use '#yourpage'
browser.sleep(10000); // if your test is outrunning the browser
browser.getLocationAbsUrl() // get the current address
browser.ignoreSynchronization = true; // If true, uiveri5 will not attempt to synchronize with the page before performing actions - make cause wonky behaviour in further tests.
Here's a trick how to wait for something to become present/visible:
browser.wait(function() {
return element(by.id('create')).isPresent();
}, 5000);
element(by.id('create')).click();
element(by.id('create')).isPresent() // Be careful with this: element is often present while it's not displayed...
element(by.id('create')).isEnabled() //Enabled/disabled, as in ng-disabled...
element(by.id('create')).isDisplayed() //Is element currently visible/displayed?
element(by.id('user_name'))
element(by.css('#myItem'))
element(by.control({id: "testID"}); // details: https://github.com/SAP/ui5-uiveri5/blob/master/docs/usage/locators.md#control-locators
element(by.textarea('person.extraDetails'));
element (by.input( 'username' ));
element (by.input( 'username' )).clear();
element(by.buttonText('Save'));
element(by.partialButtonText('Save'));
element(by.linkText('Save'));
element(by.partialLinkText('Save'));
element(by.css('.class="cssclass"]'));
var dog = element(by.cssContainingText('.pet', 'Dog'));
var list = element.all(by.css('.items));
var list3 = element.all(by.xpath('//div
expect(list.count()).toBe(3);
expect(list.get(0).getText()).toBe('First’)
expect(list.get(1).getText()).toBe('Second’)
expect(list.first().getText()).toBe('First’)
expect(list.last().getText()).toBe('Last’)
element(by.id('user_name').sendKeys("user1");
sendKeys(protractor.Key.ENTER);
sendKeys(protractor.Key.TAB);
element(by.id('user_name')).clear()
element(by.id('item1')).getLocation().then(function(location) {
var x = location.x;
var y = location.y;
});
element(by.id('item1')).getSize().then(function(size) {
var width = size.width;
var height = size.height;
});
to(Not)Be( null | true | false )
to(Not)Equal( value )
to(Not)Match( regex | string )
toBeDefined()
toBeUndefined()
toBeNull()
toBeTruthy()
toBeFalsy()
to(Not)Contain( string )
toBeLessThan( number )
toBeGreaterThan( number )
toBeNaN()
toBeCloseTo( number, precision )
toThrow()