Muhammad AbdulMoiz
Software Developer at Sastaticket.pk
Author: Muhammad AbdulMoiz
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.
Github : https://github.com/angular/protractor
More information:
http://www.protractortest.org/
Installing Dependencies
// Install Protractor using npm
npm install --save-dev protractor
// Installing via yarn
yarn add --dev protractor
package.json
// When setup is with browser stack
{
"scripts": {
"e2e": "protractor conf/single.conf.js",
}
}
// When setup is local
{
"prepree2e": "npm start", // Initialize app
"pree2e": "webdriver-manager update --standalone false --gecko false --quiet", // webdriver manager start
"e2e": "protractor ./protractor.conf.js" // run e2e
}
Configuration with BrowserStack
Over ride default regex via package.json
exports.config = {
'specs': [ '../specs/single.js' ],
'seleniumAddress': 'http://hub-cloud.browserstack.com/wd/hub',
'capabilities': {
'browserstack.user': 'USER_NAME',
'browserstack.key': 'BROWSER_STACK_KEY',
'build': 'BUILD_NAME',
'name': 'single_test',
'browserName': 'chrome', // Browser to target
'resolution': '1024x768', // Screen resolution to target
'browserstack.debug': 'true' // Debugging mode to take extra screen shots
}
};
Target is remote
Configuration with BrowserStack
Over ride default regex via package.json
exports.config = {
.
. // SAME AS PREVIOUS CONFIGURATION
.
// THINGS ADDED
// Code to start browserstack local before start of test
beforeLaunch: function(){
console.log("Connecting local");
return new Promise(function(resolve, reject){
exports.bs_local = new browserstack.Local();
exports.bs_local.start({'key': exports.config.capabilities['browserstack.key'] }, function(error) {
if (error) return reject(error);
console.log('Connected. Now testing...');
resolve();
});
});
},
// Code to stop browserstack local after end of test
afterLaunch: function(){
return new Promise(function(resolve, reject){
exports.bs_local.stop(resolve);
});
}
};
Target is localhost
// 1) protractor
npm install protractor
// 2) browserstack-local
// it is used for tunneling with local host
npm install browserstack-local
https://www.browserstack.com/automate/protractor
// Examples
{
capibilities: {
'browserName': 'android',
'platform': 'ANDROID',
'device': 'Samsung Galaxy S5'
}
}
{
capibilities: {
'os': 'Windows',
'os_version': '10',
'browserName': 'Edge',
'browser_version': '15.0',
'resolution': '1280x1024'
}
}
We can also use manual tunneling via ngRok
Apples-MacBook-Pro:ngrok AM$ ./ngrok http 4200
https://ngrok.com/
Running multiple instances in parallel
'multiCapabilities': [{
'browserName': 'Chrome'
},{
'browserName': 'Safari'
},{
'browserName': 'Firefox'
},{
'browserName': 'IE'
}]
All sessions videos are recording which will help us debug errors
Thanks for watching and listening!!
Questions????
By Muhammad AbdulMoiz
Using protractor with browser stack