Интеграция транспортера с Йоменом через грунт
Я хочу интегрировать Транспортер с эшафотом, созданным Йоменом. Я следил за учебником, и в нем более старый scenario-runner
использовался для настройки тестирования e2e (через grunt
).
Я бы хотел обновить мой эшафот и вместо этого использовать Транспортер.
Любые мысли?
Ответы
Ответ 1
-
Установите protractor
и grunt-protractor-runner
из npm
:
npm install protractor grunt-protractor-runner --save-dev
-
Создайте файл конфигурации для транспортиратора (protractor.conf.js
), измените specs
и baseUrl
на тестовые файлы и тестовый сервер:
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['test/e2e/*_test.js'],
baseUrl: 'http://localhost:9001' //default test port with Yeoman
}
-
Обновите свой Gruntfile.js
, добавьте следующее после задачи кармы:
protractor: {
options: {
keepAlive: true,
configFile: "protractor.conf.js"
},
run: {}
}
-
Добавьте задачу проверки транспортира
grunt.registerTask('test', [
'clean:server',
'concurrent:test',
'autoprefixer',
'connect:test',
'karma',
'protractor:run'
]);
-
Загрузите и запустите сервер selenium:
node_modules/protractor/bin/webdriver-manager update
node_modules/protractor/bin/webdriver-manager start
(В Windows:)
node node_modules/protractor/bin/webdriver-manager update
node node_modules/protractor/bin/webdriver-manager start
-
Обновите свой package.json
, добавьте следующее после "devDependencies"
. Это запустит команду после npm install
, поэтому вам не нужно запоминать каждый раз.
"scripts": {
"install": "node node_modules/protractor/bin/webdriver-manager update"
}
-
Запустите тест с помощью grunt
grunt test
Если вы хотите, чтобы транспортир запускал сервер для вас, удалите
seleniumAddress: 'http://localhost:4444/wd/hub',
из protractor.conf.js
, затем запуск grunt test
запустит автономный экземпляр селена во время теста и выйдет из него после запуска набора тестов.
Ответ 2
Одна вещь добавить к существующему ответу; если вы хотите запустить сервер Selenium автоматически, вы также должны указать местоположение вашего seleniumServerJar и chromeDriver (если используете Chrome), например, иначе тесты не будут работать до тех пор, пока вы вручную не запустите сервер Selenium (обязательно запустите "webdriver- менеджер обновления" из командной строки):
protractor: {
options: {
keepAlive: false,
configFile: "test/config/protractor.conf.js",
noColor: true, // If true, protractor will not use colors in its output.
args: {
seleniumServerJar: 'node_modules/protractor/selenium/selenium-server-standalone-2.39.0.jar',
chromeDriver: 'node_modules/protractor/selenium/chromedriver.exe'
}
},
run: {
}
},
Ответ 3
Как @user2172816 упоминает в своем ответе - оставляя seleniumAddress: 'http://localhost:4444/wd/hub'
из вашего конфигуратора транспортира, обычно заставляет Protractor запускать экземпляр Selenium для вас.
В качестве альтернативы вы можете использовать grunt-protractor-webdriver, чтобы запустить Selenium:
1) Установите и сохраните grunt-protractor-webdriver
npm install grunt-protractor-webdriver --save-dev
2) Добавьте в свою функцию определения Grunt следующее:
grunt.loadNpmTasks('grunt-protractor-webdriver');
3) Добавьте следующую примерную задачу веб-ретранслятора:
protractor_webdriver: {
start: {
options: {
path: 'node_modules/protractor/bin/',
command: 'webdriver-manager start'
}
}
}
4) Добавьте protractor_webdriver
в свою задачу test
перед запуском транспортира, например.
grunt.registerTask('test', [
'clean:server',
'concurrent:test',
'autoprefixer',
'connect:test',
'karma',
'protractor_webdriver',
'protractor:run'
]);