Protractor - run multiple tests in parallel on different browsers
angularjs, protractor, selenium-grid
Solution
Update Feb 2014 - This answer is no longer valid. Use Paolo Moretti's answer below.
There may be a better way to do this but currently I am just executing these as concurrent Grunt tasks.
1) Add the grunt concurrent plugin
npm install grunt-concurrent --save-dev
2) Add a task for each browser under grunt.initConfig. We can add the browser as an arg to re-use our configuration file.
protractor: {
options: {
keepAlive: true,
singleRun: false,
configFile: "test/protractor.conf.js"
},
run_chrome: {
options: {
args: {
browser: "chrome"
}
}
},
run_firefox: {
options: {
args: {
browser: "firefox"
}
}
}
},
3) Register these as tasks;
grunt.registerTask('protractor-chrome', ['protractor:run_chrome']);
grunt.registerTask('protractor-firefox', ['protractor:run_firefox']);
4) Create your concurrent task under grunt.initConfig
concurrent: {
protractor_test: ['protractor-chrome', 'protractor-firefox']
},
5) Add the grunt task for concurrent
grunt.registerTask('protractor-e2e', ['concurrent:protractor_test']);
And executing that should give you concurrent protractor tests.
Problem
I can't find any information on how to set this up, but it seems like a pretty basic concept, so I'm sure there's an answer out there. I know how to run protractor on different browsers by setting the `browserName` property of the `capabilities` object in the config. And that's working great. I can set it to `'chrome'` or `'firefox'` or whatever I need and it runs just as expected. But the only way to run a single test suite against multiple browsers (as far as I know) is to create separate config files, each with a different `browserName` and then run each browser with its own config. This works, but its really slow because tests are then running in sequence, rather than concurrently. Is there any way to run it on multiple browsers in parallel? Can it be done on SauceLabs? or even using a local Selenium-Grid? We are just trying to streamline our testing process and this would be a huge help. Any suggestions or info would be greatly appreciated. Thanks in advance.