
Problem
Testing is boring, repeating, wasting time.


How to make some testing automatically?

E2E testing framework that runs test in a browser interacting as a real user.
-
Developed by Google.
-
Created especially for Angular applications.
-
Can be used non Angular sites as well.





Selenium
Test Library
DOM Library
BOM Library
Web Driver
( Browser robot )
> npm install -g protractor
( Node.js and Java is required )
What can Protractor do ?

content right?
element exist ?
- hover
- click
- form validation
- redirect
- url check
- ajax
- ... ...
Quick Demo



Selenium

spec.js
( Test Script )

conf.js ( Protractor config )



How to write a Test Script

describe('angularjs homepage todo list', function() {
it('first test', function() {
browser.get('https://angularjs.org');
var element(by.model('todoList.todoText'));
expect(todoList.count()).toEqual(3);
});
});
browser.ignoreSynchronization = true;
describe('Advantech homepage', function() {
it('check bu ec link correct', function() {
browser.get('http://www.advantech.com');
$('.bu-color-ec').click();
var url_now = browser.driver.getCurrentUrl();
var url_spec = '/embedded-boards-design-in-services/';
expect(url_now).toContain(url_spec);
});
});
spec.js
for Non-Angular website
suite : a series of test specs
spec : a test unit.
matcher : check if this spec is pass





PM

web UI
scenario


Designer
Developer

HTML

QA

examine
- test suite
- test specs


in Search textbox
send Key "Advantech"
click "google search"
check Search Result
1. "Advantech" is the first result
2. the link is www.advantech.com
go to Google Search
describe('[Test Google Search]', function() {
it('the first search result is Advantech', function() {
expect(result).toContain('Advantech');
});
it('the first search result is www.advantech.com', function() {
expect(result).toContain('www.advantech.com');
});
});

#lst-ib
#hplogo
input[name=btnK]

#ires .r a
browser.ignoreSynchronization = true;
describe('[Test Google Search]', function() {
browser.get('https://www.google.com/');
$('#lst-ib').sendKeys('advantech');
$('#hplogo').click();
$('input[name=btnK]').click();
browser.driver.sleep(2000);
var element = $$('#ires .r a').get(0)
it('the first search result is Advantech', function() {
var result = element.getText();
expect(result).toContain('Advantech');
});
it('the first search result is www.advantech.com', function() {
var result = element.getAttribute('href');
expect(result).toContain('www.advantech.com');
});
});

#lst-ib
#hplogo
input[name=btnK]

#ires .r a
1. Google Resarch
2. Real case in Wise support portal website
DEMO
Advance - Report and PrintScreen

- Protractor can test most UI interact as real user.
- It can save time for repeating test cases.
- time spent writing/maintain tests and code.
Conclusion
Protractor
By Jayson Chiang
Protractor
- 596