2014-04-23 10 views
7

Zakładam, że jest to możliwe, a właściwie całkiem proste, ale jestem nowy zarówno dla pomruków, jak i kątomierzy i nie byłem w stanie znaleźć odpowiedzi w Internecie (może użyłem nieprawidłowo kryteria wyszukiwania).Jak uruchomić test e2e z pomiarem i kątomierzem

Mam następujący e2e test w pliku 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); 
    }); 
}); 

Obecnie robię tak:

grunt e2e 

Mój plik kątomierz config:

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. 
    } 
}; 

Oczywiście to uruchamia wszystkie moje testy, ale podczas opracowywania konkretnego testu nie chcę uruchamiać całego testu bateria testów. Chcę uruchomić ten jeden plik.

Jak mogę to zrobić? Czy jest jakaś flaga lub coś takiego?

Dzięki

+0

Jak wygląda Twój protractor.conf.js?Zmień go w oryginalnym pytaniu. –

+0

Możesz użyć opcji kątomierza 'specs', aby przekazać rozdzieloną przecinkami listę plików JS do wykonania. Będziesz musiał edytować plik Gruntfile.js, aby przekazać tę opcję do kątomierza –

+0

JB Nizet, właśnie to wypróbowałem i to działa. Dzięki. Czy chcesz napisać odpowiedź, którą mogę przyjąć zamiast tego? – redwulf

Odpowiedz

7

Trzeba tylko przekazać opcję specs do kątomierza CLI. Opcja specs oczekuje na uruchomienie rozdzielonej przecinkami listy plików JS.

Będziesz musiał edytować plik Gruntfile.js, aby przekazać tę opcję do kątomierza.

+7

grunt e2e --specs = 'js/test/e2e/PreviewSpec.js' działa dla mnie. dzięki – redwulf

0

Właśnie przedrostek x przed opisem, którego nie trzeba uruchamiać. Jeśli nie musisz używać zestawu testowego, wykonaj następujące czynności:

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

Nie wiedziałem o tym i jest to przydatne, ale jak rozumiem, za każdym razem, gdy chcę przetestować coś innego, muszę dodać x we ​​wszystkich innych specyfikacjach. Chciałem czegoś podobnego do tego, co robi maven: test mvn -Dtest = com.project.MyTestClass – redwulf

+0

@redwulf czy znalazłeś coś w kątomierzu z pomrukiem do wykonania pojedynczego testu, tak jak robi to mvn? Doceniam Twoją pomoc! – rohitkadam19

9

Alternatywnie, organizować testy jako zbiór 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 } 
}; 

I uruchomić tylko konkretnych apartamentów testowych, używając argumentu wiersza poleceń --suite:

protractor protractor.conf.js --suite homepage 

Zobacz także: Protractor for AngularJS.

+0

Nie wiedziałem o tym. Przydatne rzeczy – redwulf

0

Ponieważ używasz Grunt + kątomierza, sugerowałbym, aby ustawienia pojedynczego testu nie były ustawione w "protractor.conf.js", ale w "Gruntfile.js" przy użyciu modułu Gruntfold-runner-Grunt. Więc można skonfigurować wiele testy pojedyncze lub wielokrotne, jak chcesz z inną konfiguracją

Zasadniczo, można umieścić go na górze:

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

wtedy, konfiguracja zadanie w grunt.initConfig tak:

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

następnie zarejestrować zadanie Grunt w tym samym pliku:

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

a następnie uruchom to zadanie za pomocą:

grunt run-test 
Powiązane problemy