web-dev-qa-db-fra.com

Configuration de l'intégration continue de Protractor à l'aide de Jenkins

J'écris des scripts de test d'automatisation avec Protractor et je dois maintenant configurer le CI pour cela avec Jenkins.

Les tâches à exécuter sont les suivantes:

  1. Démarrage du serveur standard Selenium.
  2. Lancer le test en utilisant le fichier conf.js.
  3. Arrêt du serveur autonome Selenium.

Quelqu'un peut-il aider à cet égard?

43
mohit

J'ai créé un petit script bash pour le faire. 

# 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

Ce script est appelé à partir d'un projet de style libre in jenkins (Build > Execute Shell)

enter image description here

Ensuite, le rapport de résultat du test est généré en lisant les résultats du test du rapporteur. Par conséquent, vous devez produire des rapports Junit à partir d'un rapporteur, (regardez ici ):

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));
},

Pour rendre le rapport visible dans Jenkins, j'ajoute une action de post-génération dans le travail: Publish JUnit test result report:

enter image description here

38
gontard

Alternativement, vous pouvez exécuter ceci en tant que tâche Grunt. Commencez par installer Grunt sur Jenkins. Installez les packages NPM pour protractor_webdriver et rapporteur. Configurez le fichier de configuration pour qu'il pointe le chemin node_module et les chemins du fichier de configuration.

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

Ensuite, installez les modules de noeud de rapporteur. Le Gruntfile ressemblerait à ceci. J'ai créé un répertoire de test où les fichiers conf et spec seraient situés.

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'
]);  
});
12
Jack Shultz

Le dernier rapporteur vous permet d’exécuter le serveur autonome Selenium directement à partir du fichier conf.js (ou de tout autre point d’entrée du rapporteur). 

commentez (ou supprimez) la ligne seleniumAddress: 'http://localhost:4444/wd/hub', et remplacez-la par seleniumServerJar: './node_modules/protractor/Selenium/latest.jar'

latest.jar N'EST PAS INSTALLÉ PAR DÉFAUT, JE L'AI CRÉÉ EN TANT QUE LIEN SYMBOLIQUE VERS LA DERNIÈRE VERSION INSTALLÉE VIA npm install protractor --save. CELA DONNE UNE VIE PLUS LONGUE À MES FICHIERS conf.js DANS LE MÊME RÉPERTOIRE . DANS LE DOSSIER ./node_modules/protractor/Selenium/ J'AI EXÉCUTÉ ln -s Selenium-server-standalone-2.48.2.jar latest.jar 

7
Lost Odinson

Vous pouvez utiliser Gulp qui est beaucoup plus simple.

Après installation de gulp dans Jenkins System , vous pouvez installer les dépendances npm (npm install) et exécuter les tâches gulp directement en tant que commande batch de Windows dans Jenkins comme ci-dessous:

enter image description here En tâche de fond pour que le serveur Selenium soit opérationnel et fournisse divers autres paramètres, vous pouvez utiliser des packages tels que 'gulp-angular-protractor' dans le fichier gulpfile.js, comme ci-dessous:

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 
         },
0
Vishal Aggarwal

Je sais que cela est déjà résolu et je souhaite cibler les débutants pour créer un travail Jenkins et exécuter un test. Je suggère d'utiliser le fichier jar Selenium-server-standalone dans le fichier de configuration et d'appeler le fichier de configuration à partir 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
    .....

Création de Job Jenkins 

  • Installer le noeud js sur le serveur Jenkins
  • Installer Html Publisher Plugin pour le rapport de test de bout en bout

  • Créez un projet Freestyle ou quels que soient vos besoins

  • Accédez à la section Construction -> Ajouter une étape de construction, puis choisissez la commande Exécuter Windows Batch si le serveur Jenkins sous Windows sinon, choisissez ExecuteShell pour Linux.

 enter image description here

  • Appelez conf.js (installez les packages et appelez votre fichier de configuration)

 enter image description here

  • Pour les rapports, passez à la section Actions post-construction -> Ajouter des rapports de publication HTML Et appelez votre fichier de rapport (fichier supposé depuis la racine de votre projet )

 enter image description here

Cependant, vous pouvez personnaliser la commande d'exécution à l'aide de gulp ou d'autres packages similaires. Merci 

0
Surendra Jnawali