Простой тест WebdriverIO - Mocha не отображает браузер

Я хочу протестировать НЕ без головы, но не могу этого сделать.

Приведенный ниже код запускает браузер Chrome. НЕ без головы. OK.

// test.js

var webdriverio = require('webdriverio');

var options = {
  desiredCapabilities: {
    browserName: 'chrome'
  }
};

webdriverio
  .remote(options)
  .init()
  .url('http://www.google.com')
  .title(function(err, res) {
    console.log('Title was: ' + res.value);
  })
  .end();

Приведенный ниже код (тестовый код Mocha) не запускает браузер Chrome от $ mocha test.js.

Без головы. НГ.

Но тест пройден! Я не могу этого понять.

Я проверил журнал Selenium Server, но он не показывает (не оставляет) никаких журналов. Никаких следов.

// test-mocha.js

var expect = require('expect.js');
var webdriverio = require('webdriverio');

var options = {
  desiredCapabilities: {
    browserName: 'chrome'
  }
};

describe('WebdriverIO Sample Test', function () {
  it('should return "Google"', function () {
    webdriverio
      .remote(options)
      .init()
      .url('http://www.google.com')
      .title(function(err, res) {
        var title = res.value;
        expect(title).to.be('Google');
      })
      .end();
  })
});

Результат теста следующий:

  WebdriverIO Sample Test
    ✓ should return "Google"

  1 passing (4ms) 

person Feel Physics    schedule 26.11.2014    source источник


Ответы (1)


webdriver.io асинхронный. Измените свой тест, чтобы пометить его как асинхронный, и используйте обратный вызов done после того, как все проверки в тесте будут выполнены. Это два изменения: 1. добавить done в качестве параметра функции, которую вы передаете в it, и 2. добавить вызов done() после вашего вызова expect.

  it('should return "Google"', function (done) { // <- 1
    webdriverio
      .remote(options)
      .init()
      .url('http://www.google.com')
      .title(function(err, res) {
        var title = res.value;
        expect(title).to.be('Google');
        done(); // <- 2
      })
      .end();
  })

Без этого Mocha считает ваш тест синхронным, поэтому он просто завершает тест до того, как webdriverio выполнит свою работу.

person Louis    schedule 26.11.2014
comment
Хотя это кажется очевидным, меня слишком смутило, что все тесты прошли успешно. Так что спасибо за вопрос и ответ! - person SGD; 11.05.2015