Friday, 2 June 2017

protractor

1. install nodejs

2. install protractor and start selenium server
  •     npm install -g protractor
  •     webdriver-manager update
chromedriver version which protractor uses for tests executing depends on version in node_modules/protractor
npm update protractor - update protractor to latest version
webdriver-manager update - update chrome driver to latest version
  •     webdriver-manager start

3. run protractor
  •     protractor conf.js

4. angular locator
  •     browser.getTitle()
  •     by.model
  •     by.id
  •     by.binding
  •     by.repeater

5. webdriverjs is asynchronous
  • by default it return promise
  • .then() is called when promise is 'fulfilled', .catch() is called when promise is 'rejected
  • 'control flow' ensure async tasks executed and completed in the correct order 

6. framework
  • by default, protractor use jasmine
  • cucumber is no longer included
  • it also support mocha and cucumber, cucumber is prefered

7. exports.config = {
        seleniumAddress: "http://127.0.0.1:4444/wd/hub",
        baseUrl: "localhost:8080"
}
  • used for globals variables and configuation of test

8. webdriver control flow
  • most webdriver actions are asynchronous
  • to synchroize, use either 'control flow', 'promise chain' or 'async/await'
  • control flow makes sure commands are executed in the order they were received
  • protractor will wait until control flow is empty before deeming a test finished

9. protractor click method on anchor is not working
  • browser.executeScript("arguments[0].scrollIntoView();", e.getWebElement());
  • browser.executeScript("arguments[0].click();", e.getWebElement());

10. protractor-cucumber-framework

11. 'defineSupportCode' is depreciated in cucumber
  • use 'import {Given,Then,When} from "cucumber";'
  • use 'import {setWorldConstructor} from 'cucumber''

12. debug in vscode
  • add configuration
  • specify 'program' and 'args'
            "args":["${workspaceFolder}/protractor.conf.js"],
            "program": "${workspaceFolder}/node_modules/protractor/bin/protractor"
  • node_modules/protractor/bin/webdriver-manager update
  • webdriver-manager start before debug
  • kill -9 $(lsof -ti tcp:4444)

13. cucumber (gherkin) full support plugin
  • setting.json in .vscode folder to specify feature/step mapping


reference:
1. install nodejs in windows
2. protractor tutorial
3. enqueue non-promise statement into control flow
4. protractor-cucumber-framework
5. protractor-vs-webdriverio-vs-nightwatch
6. in depth protractor tutorial
7. protractor not working on anchor
8. webdriver control flow
9. return promise in protractor-cucumber-framework step function
10. defineSupportCode is not supported in cucumber
11. how to use setWorldConstructor
12. debug protractor in vscode
13. “could not find update-config.json” error message

No comments:

Post a Comment