webentwicklung-frage-antwort-db.com.de

Einrichten der kontinuierlichen Integration des Winkelmessers mit Jenkins

Ich schreibe Automatisierungs-Testskripte mit Protractor und jetzt muss ich das CI mit Jenkins einrichten.

Aufgaben, die es ausführen muss, sind:

  1. Starten des Selenium Standalon-Servers.
  2. Starten Sie den Test mit der Datei conf.js.
  3. Stoppen des Selenium-Standalone-Servers.

Kann jemand in dieser Hinsicht helfen?

43
mohit

Ich habe dazu ein kleines bash-Skript erstellt. 

# 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

Dieses Skript wird von einem Free-Style-Projekt in Jenkins (Build > Execute Shell)) aufgerufen.

enter image description here

Dann wird der Testergebnisbericht durch Lesen der Ergebnisse des Winkelmessers erstellt. Daher müssen Sie Junit-Berichte vom Winkelmesser erstellen (siehe hier ):

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

Um den Bericht in Jenkins sichtbar zu machen, füge ich eine Job-Build-Aktion hinzu: Publish JUnit test result report:

enter image description here

38
gontard

Alternativ können Sie dies als Grunt-Task ausführen. Installieren Sie zuerst Grunt auf Jenkins. Installieren Sie die NPM-Pakete für protractor_webdriver und winkelmesser. Richten Sie die Konfigurationsdatei so ein, dass sie auf den Pfad des knotenmoduls und der Konfigurationsdatei verweist.

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

Installieren Sie dann Winkelmesser-Module. Das Gruntfile würde ähnlich aussehen. Ich habe ein Testverzeichnis erstellt, in dem sich die Dateien conf und spec befinden würden.

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

Mit dem neuesten Winkelmesser können Sie den Selenium-Standalone-Server direkt von der conf.js (oder von Ihrem beliebigen Einstiegspunkt für den Winkelmesser aus) ausführen. 

kommentieren Sie die seleniumAddress: 'http://localhost:4444/wd/hub',-Zeile aus (oder löschen Sie sie) und ersetzen Sie sie durch seleniumServerJar: './node_modules/protractor/Selenium/latest.jar'

latest.jar IST NICHT STANDARDMÄSSIG INSTALLIERT, ICH HABE ES ALS SYMLINK ZUR NEUESTEN VERSION ERSTELLT, DIE ÜBER npm install protractor --save INSTALLIERT WURDE. DIES VERLEIHT MEINEN conf.js-DATEIEN IM SELBEN VERZEICHNIS EINE LÄNGERE LEBENSDAUER . IM ./node_modules/protractor/Selenium/-ORDNER HABE ICH ln -s Selenium-server-standalone-2.48.2.jar latest.jarausgeführt. 

7
Lost Odinson

Sie können Gulp verwenden, was viel einfacher ist.

Nachdem Sie gulp in Jenkins System installiert haben , können Sie die npm-Abhängigkeiten (npm install) installieren und gulp-Aufgaben direkt als Windows-Stapelbefehl in Jenkins wie folgt ausführen:

 enter image description here Um den Selenium-Server betriebsbereit zu machen und verschiedene andere Parameter bereitzustellen, können Sie Pakete wie 'gulp-angle-protractor' in der Datei gulpfile.js wie folgt verwenden:

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

Ich weiß, dass dies bereits gelöst ist und ich möchte, dass Anfänger Jenkins Job- und Lauftest erstellen. Ich schlage vor, Selenium-Server-Standalone-Jar in der Konfigurationsdatei zu verwenden und die Konfigurationsdatei von Jenkins aufzurufen.
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
    .....

Jenkins Job erstellen 

  • Installieren Sie den Knoten js auf dem Jenkins Server
  • Installieren Sie das Html Publisher Plugin , um einen Testbericht zu erstellen

  • Erstellen Sie ein Freestyle-Projekt oder was auch immer Sie brauchen

  • Gehen Sie zum Abschnitt Build -> Buildschritt hinzufügen und wählen Sie den Befehl Ausführen von Windows Batch, wenn der Jenkins-Server in Windows andernfalls ExecuteShell für Linux auswählt

 enter image description here

  • Conf.js aufrufen (Pakete installieren und Konfigurationsdatei aufrufen)

 enter image description here

  • Für die Berichterstellung Gehen Sie zu den Nacherstellungsaktionen -> Hinzufügen von Veröffentlichungs-HTML Berichte, und rufen Sie Ihre Berichtsdatei auf (die Datei wird vom Stammverzeichnis Ihres -Projekts aus angenommen.)

 enter image description here

Sie können den Ausführungsbefehl jedoch mit gulp oder ähnlichen Paketen anpassen. Vielen Dank 

0