In our previous post, we have seen how to install protractor and it’s prerequisites.
we will setup some more steps to run protractor tests
Create a new file conf.ts under C:\Protractor\Test\
import {Config, browser} from 'protractor';
export let config: Config = {
framework: 'jasmine',
capabilities: {
browserName: 'chrome',
chromeOptions: {'args': ['disable-infobars']}
},
specs: [ './specs/calculator.js' ],
onPrepare: () => {
let globals = require('protractor');
let browser = globals.browser;
browser.ignoreSynchronization = true;
browser.manage().window().maximize();
browser.manage().timeouts().implicitlyWait(5000);
},
seleniumAddress: 'http://localhost:4444/wd/hub',
noGlobals: true
};refer configuration library for more options.
Create a spec file calculator.ts under C:\Protractor\Test\specs
import {browser, element, by, By, $, $, ExpectedConditions} from 'protractor';
import protractor = require('protractor');
describe('Protractor Demo App', function() {
var firstNumber = element(by.model('first'));
var secondNumber = element(by.model('second'));
var goButton = element(by.id('gobutton'));
var history = element.all(by.repeater('result in memory'));
let value = element(by.xpath("//*[@class='table']/tbody//tr[1]/td[3]"));
function add(a, b) {
firstNumber.sendKeys(a);
secondNumber.sendKeys(b);
goButton.click();
}
beforeEach(function() {
browser.get('http://juliemr.github.io/protractor-demo/');
});
it('should add correctly', function() {
add(1, 2);
browser.sleep(3000);
expect<any>(value.getText()).toEqual('3');
})
it('should have a history', function() {
add(3, 4);
browser.sleep(3000);
add(5, 6);
browser.sleep(3000);
expect<any>(history.count()).toEqual(2);
})
});Jasmine framework considers each test script as specs,
Describe represents test suite and accepts 2 parameters, description and function name (can pass empty function as well), describe can have any number of test cases ( it blocks)
beforeEach executes every time a it block encounters.
each it block defines one one test case [we should keep each it block independent].
Refer jasmine 2 for more information.
Folder structure should look like

Now key press ctrl + ` to open terminal and enter
webdriver-manager start
You should see a line
INFO - Selenium Server is up and running
Then click on + sign to create another terminal instance and enter
npm test

npm test performs following steps- [look for the scripts section of package.json]
tsc – All the *.ts files are transpiled to *.js files and then executes
protractor ConvertedJSfiles/conf.js
Console output –
protractor ConvertedJSfiles/conf.js [19:50:08] I/launcher - Running 1 instances of WebDriver [19:50:08] I/hosted - Using the selenium server at http://localhost:4444/wd/hub Started .. 2 specs, 0 failures Finished in 12.627 seconds [19:50:24] I/launcher - 0 instance(s) of WebDriver still running [19:50:24] I/launcher - chrome #01 passed
2 specs as we have 2 it blocks in calculator.ts file
Complete code can be found under github.com:Protractor-typescript


1 Comment