selenium jenkins continuous-integration protractor

selenium - Configuración de integración continua de transportador usando Jenkins



continuous-integration protractor (5)

Estoy escribiendo secuencias de comandos de prueba de automatización con Transportador y ahora necesito configurar el elemento de configuración para esto utilizando Jenkins.

Las tareas que debe realizar son:

  1. Iniciando el servidor standalon de selenio.
  2. Comenzando la prueba usando el archivo conf.js.
  3. Detener el servidor independiente de selenio.

¿Alguien puede ayudar en este sentido?


Alternativamente, puede ejecutar esto como una tarea Grunt. Primero instale gruñido en Jenkins. Instale los paquetes de NPM para protractor_webdriver y transportador. Configure el archivo de configuración para señalar la ruta del nodo_modulo y las rutas de acceso de archivo de configuración.

http://sideroad.secret.jp/articles/grunt-on-jenkins/

Luego instale los módulos de nodo transportador. El Gruntfile se vería similar a esto. Creé un directorio de prueba donde se ubicarían los archivos conf y spec.

module.exports = function (grunt) { grunt.initConfig({ protractor_webdriver: { your_target: { options: { path: ''node_modules/protractor/bin/'', command: ''webdriver-manager start'' } } }, protractor: { options: { configFile: "node_modules/protractor/referenceConf.js", // Default config file keepAlive: true, // If false, the grunt process stops when the test fails. noColor: false, // If true, protractor will not use colors in its output. args: { // Arguments passed to the command } }, your_target: { options: { configFile: "test/conf.js", // Target-specific config file args: {} // Target-specific arguments } } } }); grunt.registerTask(''p:test'', [ ''protractor_webdriver'', ''protractor'' ]); });


Creé un pequeño script bash para hacer esto.

# start selenium ./node_modules/protractor/bin/webdriver-manager start > /dev/null 2>&1 & # wait until selenium is up while ! curl http://localhost:4444/wd/hub/status &>/dev/null; do :; done # run the build grunt cibuild --force # stop selenium curl -s -L http://localhost:4444/selenium-server/driver?cmd=shutDownSeleniumServer > /dev/null 2>&1

Este script se invoca desde un proyecto de estilo libre en jenkins ( Build > Execute shell)

Luego, el informe del resultado de la prueba se genera leyendo los resultados de la prueba del transportador. Por lo tanto, debe generar informes de un transportador, (mire here ):

onPrepare: function() { // The require statement must be down here, since jasmine-reporters // needs jasmine to be in the global and protractor does not guarantee // this until inside the onPrepare function. require(''jasmine-reporters''); jasmine.getEnv().addReporter( new jasmine.JUnitXmlReporter(''xmloutput'', true, true)); },

Para que el informe sea visible en jenkins agrego una acción de compilación posterior en el trabajo: Publish JUnit test result report :


El transportador más nuevo le permite ejecutar el servidor independiente de selenio directamente desde el conf.js (o cualquier punto de entrada del transportador que tenga).

comentar (o eliminar) el seleniumAddress: ''http://localhost:4444/wd/hub'', línea, y reemplazarlo con seleniumServerJar: ''./node_modules/protractor/selenium/latest.jar'',

latest.jar no está instalado por defecto, lo creé como un enlace simbólico a la última versión instalada a través de npm install protractor --save . Esto le da más vida a mis archivos conf.js en el mismo directorio. Dentro de la carpeta ./node_modules/protractor/selenium/ ejecuté ln -s selenium-server-standalone-2.48.2.jar latest.jar


Puedes usar Gulp, que es mucho más simple.

Después de instalar Gulp en Jenkins System , puede instalar las tareas de npm dependence (npm install) y run gulp directamente como el comando de Windows Batch en Jenkins, como se muestra a continuación:

En segundo plano, para que el servidor de selenio funcione y proporcione otros parámetros, puede usar paquetes como ''gulp-angular-transportador'' en gulpfile.js como se muestra a continuación:

gulpfile.js

''use strict''; var gulp = require(''gulp''), gulpProtractorAngular = require(''gulp-angular-protractor''), gulpStart = gulp.Gulp.prototype.start, currentStartTaskName; gulp.Gulp.prototype.start = function (task) { currentStartTaskName = task; gulpStart.apply(this, arguments); }; function executeWebTests(suiteName, appName) { return gulp.src([]) .pipe(gulpProtractorAngular({ ''configFile'': ''./conf.js'', ''debug'': false, ''autoStartStopServer'': true, args: [ ''--suite'', suiteName, ''--capabilities.browserName'', ''chrome'', ''--params.APPNAME'', appName, ''--params.SUITENAME'', currentStartTaskName, ''--capabilities.platformName'', ''Windows''], keepAlive: false })) .on(''error'', function (e) { console.log(''Ended with below ERROR::'',e); process.exit(1); }) .on(''end'', function () { console.log(''Test complete''); process.exit(); }); } gulp.task(''RegressionSuiteTask'', function () { executeWebTests(''regressionTests,'',''Application_Name''); });

conf.js

suites: { regressionTests: [''testCases/**/*.js'']//will run all specs in subfolders },


Sé que esto ya se resolvió y quiero apuntar para principiante para crear el trabajo de Jenkins y ejecutar la prueba. Sugiero usar el jar selenium-server-standalone en el archivo de configuración y el archivo de configuración de llamadas de Jenkins.
conf.js

.. exports.config = { //seleniumAddress: ''http://localhost:4444/wd/hub'', seleniumServerJar: ''node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.5.3.jar'', .... //html reporter logic .....

Creando el trabajo de Jenkins

  • Instale el nodo js en el Servidor Jenkins
  • Instalar el complemento de editor Html para el informe de prueba de extremo a extremo

  • Crea un proyecto de estilo libre o lo que sea que necesites

  • Vaya a la sección Crear -> Agregar paso de compilación y elija Ejecutar comando por lotes de Windows si el servidor de Jenkins en Windows de lo contrario elige Ejecutar Shell para Linux

  • Llame a conf.js (instale paquetes y llame a su archivo de configuración)

  • Para informar sobre la sección Acciones para la creación posterior a la publicación -> Agregar publicación de informes HTML y llamar a su archivo de informe (archivo asumido desde la raíz de su proyecto)

Sin embargo, puede personalizar el comando de ejecución usando gulp u otros paquetes similares. Gracias