I'm assuming this is possible and actually pretty simple, but I'm new to both grunt and protractor and I was not able to find the answer online (maybe I used wrong search criteria).
I have the following e2e test in file 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);
});
});
Currently, I'm doing this:
grunt e2e
My protractor config file:
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.
}
};
Of course this runs all my tests, but while I'm developing a specific test, I don't want to run the entire battery of tests. I want to run this one file.
How can I do that? Is there any flag or something?
Thanks
describe('Login page', function() { beforeEach(function() { browser. ignoreSynchronization = true; ptor = protractor. getInstance(); }); it('should contain navigation items', function(){ //test case code here }); it('should login the user successfully', function(){ //test case code here }) });
Alternatively, organize your tests as a set of 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 }
};
And run only specific test suites, using --suite
command line argument:
protractor protractor.conf.js --suite homepage
See also: Protractor for AngularJS.
You just have to pass the specs
option to the protractor CLI. The specs option expects a comma-separated list of JS files to run.
You'll need to edit your Gruntfile.js to pass this option to protractor.
Since you're using Grunt+Protractor, I would suggest having single tests setup not in 'protractor.conf.js' but in 'Gruntfile.js' using 'grunt-protractor-runner' Grunt module. So you can setup as many single or multiple tests as you want with different configuration
Basically, you include it at the top:
grunt.loadNpmTasks('grunt-protractor-runner');
then, setup your task in grunt.initConfig like this:
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
},
}
}
},
},
.....
.....
.....
});
then, register Grunt task in the same file:
grunt.registerTask('run-test', ['someTaskOne', 'protractor:singleTestRun', 'shell:someshellscript']);
and then, run this task with:
grunt run-test
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With