angularjs - Integrador de transportador con Yeoman a través de Grunt
gruntjs protractor (3)
Instale
protractor
ygrunt-protractor-runner
denpm
:npm install protractor grunt-protractor-runner --save-dev
Cree un archivo de configuración para transportador (
protractor.conf.js
), cambie lasspecs
ybaseUrl
a sus archivos de prueba y servidor de prueba:exports.config = { seleniumAddress: ''http://localhost:4444/wd/hub'', specs: [''test/e2e/*_test.js''], baseUrl: ''http://localhost:9001'' //default test port with Yeoman }
Actualiza tu
Gruntfile.js
, agrega lo siguiente después de la tarea de karma:protractor: { options: { keepAlive: true, configFile: "protractor.conf.js" }, run: {} }
Agregue la tarea del transportador bajo prueba
grunt.registerTask(''test'', [ ''clean:server'', ''concurrent:test'', ''autoprefixer'', ''connect:test'', ''karma'', ''protractor:run'' ]);
Descargue e inicie el servidor de selenio:
node_modules/protractor/bin/webdriver-manager update node_modules/protractor/bin/webdriver-manager start
(En Windows :)
node node_modules/protractor/bin/webdriver-manager update node node_modules/protractor/bin/webdriver-manager start
Actualice su
package.json
, agregue lo siguiente después de"devDependencies"
. Esto ejecutará el comando después de lanpm install
por lo que no es necesario que recuerde todo el tiempo."scripts": { "install": "node node_modules/protractor/bin/webdriver-manager update" }
Ejecute la prueba usando gruñido
grunt test
Si quiere que el transportador inicie el servidor por usted, elimine
seleniumAddress: ''http://localhost:4444/wd/hub'',
de protractor.conf.js
, luego ejecutar la grunt test
iniciará una instancia de selenio independiente durante la prueba y la abandonará después de ejecutar el conjunto de pruebas.
Quiero integrar Transportador con un andamio producido por Yeoman. Seguí un tutorial y, en él, el scenario-runner
más antiguo se usó para configurar pruebas e2e (a través de grunt
).
Me gustaría actualizar mi andamio y utilizar Transportador en su lugar.
¿Alguna idea?
Como @user2172816 menciona en su respuesta, @user2172816 seleniumAddress: ''http://localhost:4444/wd/hub''
de tu configuración de transportador generalmente hará que Protractor inicie una instancia de Selenium por ti.
Como alternativa, puede usar grunt-protractor-webdriver para iniciar el selenio:
1) Instalar y guardar grunt-transportador-webdriver
npm install grunt-protractor-webdriver --save-dev
2) Agregue lo siguiente en su función de definición de Grunt:
grunt.loadNpmTasks(''grunt-protractor-webdriver'');
3) Agregue la siguiente tarea del transportador webdrractor de ejemplo:
protractor_webdriver: {
start: {
options: {
path: ''node_modules/protractor/bin/'',
command: ''webdriver-manager start''
}
}
}
4) Agregue protractor_webdriver
a su tarea de test
antes de ejecutar transportador, por ejemplo
grunt.registerTask(''test'', [
''clean:server'',
''concurrent:test'',
''autoprefixer'',
''connect:test'',
''karma'',
''protractor_webdriver'',
''protractor:run''
]);
Una cosa para agregar a la respuesta existente; si quieres iniciar el servidor de Selenium automáticamente, también debes especificar la ubicación de tu seleniumServerJar y chromeDriver (si usas Chrome), de lo contrario las pruebas no funcionarán hasta que hayas iniciado manualmente el servidor de Selenium (asegúrate de ejecutar "webdriver- actualización del administrador "desde la línea de comando primero):
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: {
}
},