Testing med Selenium

Vegard Øye

Hvordan kombinere Selenium, mocha og chai.

Selenium

  • Testrammeverk for webapplikasjoner
  • Skrevet i Java
  • Gjør det mulig å lage makroer for en nettleser
    • Åpne en adresse
    • Finne et element
    • Klikke på elementet

selenium-webdriver

  • JavaScript-grensesnitt for Selenium
  • Kan kombineres med andre JavaScript-biblioteker:
    • mocha
    • chai, chai-as-promised
  • Installeres med npm:
    • npm install selenium-webdriver

ChromeDriver

Installasjon

  1. npm
  2. ChromeDriver
  3. selenium-webdriver
    • npm install selenium-webdriver
  4. Mocha
    • npm install -g mocha
  5. Chai
    • npm install chai
    • npm install chai-as-promised

Filstruktur

test/
|-- test.js
`-- node_modules/
    |-- selenium_webdriver/
    |-- chai/
    |-- chai-as-promised/
    `-- ...

Kjøres med:

mocha test.js

test.js

var selenium = require('selenium-webdriver');
var chai = require('chai');
chai.use(require('chai-as-promised'));
var expect = chai.expect;

before(function() {
  this.timeout(60000);
  this.driver = new selenium.Builder()
    .withCapabilities(selenium.Capabilities.chrome())
    .build();
  return this.driver.getWindowHandle();
});

after(function() {
  return this.driver.quit();
});

describe('Component', function() {
  // ...
});

test.js, del 2

describe('Component', function() {
  beforeEach(function() {
    // ...
  });

  afterEach(function() {
    // ...
  });

  it('should work as expected', function() {
    // Selenium test code here
  });
});

Resultat:

  • Component should work as expected: ✔

test.js, del 3

describe('Search field', function() {
  it('should clear when selected', function() {
    this.driver.get('http://...');
    var searchField = this.driver.findElement({ css: '#searchField' });
    searchField.click();
    return expect(searchField.getText()).to.eventually.equal('');
  });
});

Resultat:

  • Search field should clear when selected: ✔

Linker