Управлять тестами с помощью одной задачи Gulp
Я пытаюсь получить тестирование e2e в моем проекте angular с помощью Gulp.
Я могу заставить его работать, но только если я вручную запустил автономный сервер selenium с помощью webdriver-manager start
в отдельном окне терминала.
В идеале мне бы хотелось, чтобы моя задача gulp управляла запуском и остановкой сервера, чтобы не добавлять дополнительные накладные расходы для моей команды для выполнения этих тестов.
Я получил настройку, следуя инструкциям здесь:
https://github.com/mllrsohn/gulp-protractor
Они описывают 2 варианта запуска сервера selenium. Один из них заключается в настройке задачи gulp, которая выглядит так же, как webdriver-manager start
:
gulp.task('webdriver_standalone', require("gulp-protractor").webdriver_standalone);
Это работает, но не тогда, когда моя задача e2eTest вызывает его как зависимость. Мне нужно запустить gulp webdriver_standalone
в отдельном окне терминала.
Я не могу понять другую предложенную опцию.
указывает на секцию selenium в файле конфигурации транспортира
Эти инструкции требуют пути к изолированному серверу selenium-server-standalone в protractor
node_modules
(./node_modules/protractor/selenium/selenium-server-standalone-2.45.0.jar
), но в моем каталоге node_modules/protractor/
нет такой банки (или под selenium
каталог вообще)
Инструкции для Running Protractor без плагина, похоже, имеют ту же проблему, что и для запуска сервера селена в другом окне терминала.
Есть ли способ получить эту настройку, чтобы одна задача gulp запускала автономный сервер, запускала тесты и закрывала его без каких-либо других вмешательств?
Ответы
Ответ 1
При запуске Protractor у вас есть несколько вариантов Selenium WebDriver (помните, что WebDriver - это веб-сервис, написанный на Java):
- Запуск с помощью Транспортера с удаленным (автономным) сервисом. Он может быть локальным или на другой машине. Если Selenium находится на другой машине, то ваше веб-приложение должно быть общедоступным, а не только localhost. Если вы решите использовать автономное обслуживание Selenium, тогда вы настраиваете свой файл config/ Gulp с помощью параметра seleniumAddress.
- "Задайте" Транспортер "для запуска Селена для вас. В этом случае Protractor будет запускать Selenium WebDriver с файлом Jar, который вы предоставляете в конфигурации seleniumServerJar.
- Не используйте Selenium WD. Вместо этого используйте прямое соединение, совместимое с Chrome и (возможно) только с Firefox.
В вашем случае просто запустите:
./node_modules/protractor/bin/webdriver-manager update
Он будет загружать селен. Затем укажите конфигурацию в правильную банку.
Ответ 2
Самый простой способ заставить это работать локально - использовать локальный Selenium Standalone jar, как предложил Игорь в варианте №2. (Получить gulp довольно сложно, чтобы запустить webdriver-manager start
в качестве порожденной задачи child_process или async.)
Вы можете легко получить эту банку в своей папке node_modules
, используя:
npm install selenium-server-standalone-jar --save-dev
Затем в вашем комментарии protractor.conf.js
или удалите строку seleniumAddress и добавьте строку для seleniumServerJar.
exports.config = {
seleniumServerJar: '../node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-2.47.1.jar',
//seleniumAddress: 'http://localhost:4444/wd/hub',
/* Lines below for completeness only, leave yours as is. */
framework: 'jasmine2',
specs: ['login-spec.js'],
multiCapabilities: [{
browserName: 'chrome',
browserName: 'firefox'
}]
};