Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Testing Angular apps with Protractor

Testing Angular apps with Protractor

angularを使用したwebアプリケーションにおけるE2Eテストに関するスライドです。また、こちらは2017年6月16日に行われたD-cubeの資料となっています。

Tomohiro Akutsu

June 18, 2017
Tweet

Other Decks in Programming

Transcript

  1. Testing ɹngular apps with Protractor June 2017 v.1.0.0 Tomohiro Akutsu

    Front-end Engineer BizReach, Inc. June 16 2017 @Bizreach, Inc.
  2. ## Agenda ### E2E Testing and Protractor ### Install and

    Setup ### API/Usage ### Resource of Learning 1SPUSBDUPSͷ֓ཁ 1SPUSBDUPSͷΠϯετʔϧɺ$POGKTͷهड़ ༻ҙ͞Ε͍ͯΔ"1*΍ه๏ ࠓޙɺΑΓ஌ࣝΛਂΊΔ͋ͨͬͯ
  3. ## Do not Talk ### Unit Testing of Front-end ###

    Comparison with Other Testing Framework ϑϩϯτΤϯυʹ͓͚ΔϢχοτςετ ଞͷςετπʔϧͱͷൺֱݕ౼
  4. ## Example QBDLBHFKTPOͷTDSJQUT಺ʹهड़ “scripts”: { … “test”: “protractor ./test/protractor/conf.js”, “webdriver”:

    “webdriver-manager update && webdriver-manager start”, … } ίϚϯυͰςετͷ࣮ߦ͕Մೳɻ஫ҙͱͯ͠͸ͦΕͧΕผλϒͰ։͘͜ͱɻ
  5. ## Setup DPOGKTʹ֤छઃఆΛهड़ɹhttps://github.com/angular/protractor/blob/master/lib/config.ts export.config = { seleniumAddress: ‘http://localhost:4444/wd/hub’, capabilities: {

    ‘browserName’: ‘chrome’ }, specs: [spec.js], baseUrl: ‘http://localhost:9000/’, jasminNodeOpts: { showColors: true, defaultTimeoutInterval: 30000 } };
  6. ## Basic Example spec.js describe(‘this test description is Hoge.’, function()

    { it(‘Fuga in Hoge’, function() { browser.get(‘https://angular.io/’); expect(browser.getTitle()).toEqual(‘Angular Docs’); }); it(‘Piyo in Hoge’, function() { … }); });
  7. ## browser browser.get(‘url’) var baseUrl = ‘http://localhost:3000’; … browser.get(baseUrl +

    ‘/path/’); expect(browser.getTitle()).toEqual(‘This page title is Hoge’); browser.waitForAngular() browser.waitForAngular();
  8. ## element, by <p class=“name”>My name is {{person.name}}.</p> <input type=“text”

    ng-model=“person.name”> var input = element(by.model(‘person.name’)); input.sendKeys(‘Tomohiro’); expect(element(by.css(‘p.name’)).getText()).toEqual(‘…is Tomohiro.’); element(by.model(‘modelName’)); <ul> <li>Blue</li> <li>Green</li> <li>Yellow</li> </ul> var yellow = element(by.cssContainingText(‘li’, ‘Yellow’)); element(by.cssContainingText(‘cssSelector’, ‘searchString’));
  9. ## element, by <ul ng-repeat=“item in items”> <li>{{item.name}}</li> </ul> element(by.repeater(‘item

    in items’)).row(0).column(‘name’); element(by.repeater(‘repeatDescriptor’)); <a href=“url” class=“button”>Click</a> var button = element(by.className(‘button’)); expect(button.getText()).toEqual(‘Click’); button.click(); element(by.className(‘className’));