BrowserStack — параллельное тестирование Node.js

Я искал способы создать разумную структуру для масштабируемого тестирования в Node.js с использованием BrowserStack.

Пожалуйста, просмотрите источник здесь:

https://gist.github.com/Palgie/10886008

У меня возникает проблема при попытке закрыть сеансы или выйти из драйвера, поэтому при выполнении одновременных тестов он часто сообщает мне, что мои максимальные сеансы используются (см. Ниже).

Это похоже на состояние гонки, но это может быть что-то ослепительно очевидное.

  Now testing Chrome - 22.0
  Now testing IE - 10.0
  ․․․․
  Stopping test
  Stopping test
  ․

    4 passing (14s)
    1 failing

    1)  "after all" hook:
       Error: This driver instance does not have a valid session ID (did you call WebDriver.quit()?) and may no longer be used.
        at checkHasNotQuit (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/webdriver.js:291:13)
        at webdriver.WebDriver.schedule (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/webdriver.js:263:3)
        at webdriver.WebDriver.quit (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/webdriver.js:331:21)
        at Context.<anonymous> (/Users/gourleyp/Sites/bs-webdriver/driver.js:35:14)
        at webdriver.promise.ControlFlow.runInNewFrame_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1598:20)
        at webdriver.promise.ControlFlow.runEventLoop_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1463:8)
        at wrapper [as _onTimeout] (timers.js:252:14)
        at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
    ==== async task ====
        at Context.<anonymous> (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/testing/index.js:126:14)
        at Hook.Runnable.run (/usr/local/lib/node_modules/mocha/lib/runnable.js:196:15)
        at next (/usr/local/lib/node_modules/mocha/lib/runner.js:259:10)
        at /usr/local/lib/node_modules/mocha/lib/runner.js:271:7
        at done (/usr/local/lib/node_modules/mocha/lib/runnable.js:185:5)
        at /usr/local/lib/node_modules/mocha/lib/runnable.js:199:9
        at /Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/testing/index.js:92:5
        at /Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/goog/base.js:1178:15
        at webdriver.promise.ControlFlow.runInNewFrame_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1598:20)
        at notify (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:428:12)
        at notifyAll (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:397:7)
        at resolve (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:375:7)
        at fulfill (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:493:5)
        at /Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1465:10
        at Object.webdriver.promise.asap (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:732:5)
        at newFrame.then.e (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1614:25)
        at /Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/goog/base.js:1178:15
        at webdriver.promise.ControlFlow.runInNewFrame_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1598:20)
        at notify (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:428:12)
        at notifyAll (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:397:7)
        at resolve (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:375:7)
        at fulfill (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:493:5)
        at webdriver.promise.ControlFlow.resolveFrame_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1519:9)
        at webdriver.promise.ControlFlow.getNextTask_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1488:12)
        at webdriver.promise.ControlFlow.runEventLoop_ (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/promise.js:1446:59)
        at wrapper [as _onTimeout] (timers.js:252:14)
        at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)

В источнике, на который я ссылаюсь, который, насколько я понимаю, должен выполнять сеанс, но мне кажется, что это не так.

test.after(function() {
  console.log('Stopping test');
  driver.quit();
});

Насколько я понимаю, после запуска всех тестов мокко или тестов веб-драйвера в этом браузере он завершит работу драйвера, а затем инициализирует новый экземпляр в предыдущем методе.

Любая помощь будет оценена по достоинству!

Ваше здоровье


person Palgie    schedule 16.04.2014    source источник


Ответы (1)


Вы можете использовать selenium-runner для параллельного запуска тестов. Пример использования selenium-runner для параллельного запуска тестов в BrowserStack приведен в следующей документации: https://www.browserstack.com/automate/node.

Кроме того, если selenium-runner не удовлетворяет ваши потребности, не могли бы вы поделиться своими потребностями (какой конкретный код фреймворка или библиотеки вы хотите запускать параллельно), чтобы мы могли рассмотреть проблему

Акшай @ BrowserStack

person Akshay    schedule 22.04.2014