2014-04-23 15 views
7

laufen lasse Ich nehme an, dass das möglich ist und wirklich ziemlich einfach, aber ich bin zu Grunzen und Winkelmesser neu und ich konnte die Antwort online nicht finden (vielleicht benutzte ich falsch Suchkriterium).Wie man einzelnen e2e Test mit grunt und Winkelmesser

ich folgende e2e-Test in der Datei haben test/e2e/Recipients.js:

describe('Recipients Tab', function() { 

    beforeEach(function() { 
     browser.get('#/recipients'); 
    }); 

    it('should have no e-mail list', function() { 
     expect(element(by.css('accordion')).isPresent()).toBe(false); 
    }); 
}); 

Derzeit Ich tue dies:

grunt e2e 

Meine Winkelmesser Konfigurationsdatei:

exports.config = { 
    seleniumAddress: 'http://localhost:4444/wd/hub', 
    capabilities: { 
     'browserName': 'chrome' 
    }, 
    specs: ['../e2e/**/*.js'], 
    baseUrl : 'http://localhost:8080/spr', 

    jasmineNodeOpts: { 
     showColors: true // Use colors in the command line report. 
    } 
}; 

Natürlich Dies führt alle meine Tests aus, aber während ich einen spezifischen Test entwickle, möchte ich nicht den gesamten Test ausführen Batterie von Tests. Ich möchte diese eine Datei ausführen.

Wie kann ich das tun? Gibt es eine Flagge oder etwas?

Dank

+0

Wie sieht Ihre protractor.conf.js aus?Bitte bearbeiten Sie es in Ihre ursprüngliche Frage –

+0

Sie können die "specs" Winkelmesser Option verwenden, um eine durch Kommas getrennte Liste von JS-Dateien zur Ausführung übergeben. Sie müssen Ihre Gruntfile.js bearbeiten, um diese Option an Winkelmesser übergeben –

+0

JB Nizet, ich habe es gerade versucht und es funktioniert. Vielen Dank. Willst du eine Antwort schreiben, die ich stattdessen annehmen kann? – redwulf

Antwort

7

Sie müssen nur die Option specs an den Winkelmesser CLI übergeben. Die Option specs erwartet, dass eine durch Kommas getrennte Liste von JS-Dateien ausgeführt wird.

Sie müssen Ihre Gruntfile.js bearbeiten, um diese Option an den Winkelmesser zu übergeben.

+7

grunt e2e --specs = 'js/test/e2e/PreviewSpec.js' funktioniert für mich. Danke – redwulf

0

Sie x voran kurz vor dem Beschreiben der Sie keine Notwendigkeit zu laufen. Für exanple, wenn Sie benötigen, um den Test Anzug Verwendung nicht laufen wie folgt

xdescribe('Recipients Tab', function() { 

beforeEach(function() { 
    browser.get('#/recipients'); 
}); 

it('should have no e-mail list', function() { 
    expect(element(by.css('accordion')).isPresent()).toBe(false); 
}); 

});

+1

Ich wusste nichts darüber und es ist nützlich, aber wie ich es verstehe, jedes Mal, wenn ich etwas anderes testen möchte, muss ich das x in allen anderen Spezifikationen hinzufügen. Ich wollte etwas, das dem ähnelt, was maven tut: mvn -Dtest = com.project.MyTestClass Test – redwulf

+0

@redwulf hast du irgendetwas im Winkelmesser mit Grunt gefunden, um einzelnen Test wie mvn auszuführen? Schätze deine Hilfe! – rohitkadam19

9

Alternativ organisieren Ihre Tests als eine Reihe von test suites:

exports.config = { 
    seleniumAddress: 'http://localhost:4444/wd/hub', 
    capabilities: { 'browserName': 'chrome' }, 

    suites: { 
    homepage: 'tests/e2e/homepage/**/*Spec.js', 
    search: ['tests/e2e/contact_search/**/*Spec.js'] 
    }, 

    jasmineNodeOpts: { showColors: true } 
}; 

Und nur bestimmte Testsuiten laufen, --suite Befehlszeilenargument verwenden:

protractor protractor.conf.js --suite homepage 

Siehe auch: Protractor for AngularJS.

+0

Ich wusste nichts darüber. Nützliches Zeug – redwulf

0

Da Sie Grunt + Protractor verwenden, würde ich vorschlagen, dass einzelne Tests nicht in "progractor.conf.js", sondern in "Gruntfile.js" mit dem Grunt-Modul "Grunt-Winkelmesser-Runner" installiert werden. So können Sie Setup so viele einzelne oder mehrere Tests können, wie Sie mit anderen Konfiguration wollen

Grundsätzlich schließen Sie es an der Spitze:

grunt.loadNpmTasks('grunt-protractor-runner'); 

dann, Setup Ihre Aufgabe in grunt.initConfig wie folgt aus:

Grunt Aufgabe in der gleichen Datei
grunt.initConfig({ 
..... 
..... 
..... 
     protractor: { 
     options: { 
     configFile: "protractor.conf.js", 
     keepAlive: true // If false, the grunt process stops when the test fails. 
    }, 
    singleTestRun: { 
     options: { 
      args: { 
       baseUrl: "http://yourDomain.com", // setting up base URL here 
       specs: [ 
        './specs/*.js', 
        './another/specs/*.js' 
       ], 
       capabilities: { 
        'browserName': 'chrome', 
        shardTestFiles: false 
       }, 
      } 
     } 
    }, 
}, 
..... 
..... 
..... 
}); 

dann registrieren:

grunt.registerTask('run-test', ['someTaskOne', 'protractor:singleTestRun', 'shell:someshellscript']); 

und führen Sie dann diese Aufgabe mit:

grunt run-test 
Verwandte Themen