Skip to content

Instantly share code, notes, and snippets.

@rebers
Last active August 5, 2016 15:26
Show Gist options
  • Save rebers/2addd311076ad4e8620560b8c5723b77 to your computer and use it in GitHub Desktop.
Save rebers/2addd311076ad4e8620560b8c5723b77 to your computer and use it in GitHub Desktop.
Nightwatch.js BrowserStack Runner
// 1. start the dev server using production config
process.env.NODE_ENV = 'testing';
const server = require('../../build/dev-server.js');
const spawn = require('cross-spawn');
const browserStack = require('browserstack-local');
const testEnv = require('../../config/test.env.js');
// For more information on Nightwatch's config file, see
// http://nightwatchjs.org/guide#settings-file
let opts = process.argv.slice(2);
if (opts.indexOf('--config') === -1) {
opts = opts.concat(['--config', 'test/e2e/nightwatch.conf.js']);
}
// Default environment: Chrome
// Override the environment flag, for example: `npm run e2e -- --env chrome,firefox`
if (opts.indexOf('--env') === -1) {
opts = opts.concat(['--env', 'chrome']);
}
const browserStackTunnel = new browserStack.Local();
browserStackTunnel.start({
key: testEnv.BROWSERSTACK_ACCESS_KEY || 'BROWSERSTACK_ACCESS_KEY',
}, (error) => {
if (error) {
browserStackTunnel.stop();
throw error;
}
const runner = spawn('./node_modules/.bin/nightwatch', opts, {
stdio: 'inherit',
});
runner.on('exit', (code) => {
// Code to stop browserstack local after end of single test
browserStackTunnel.stop();
server.close();
process.exit(code);
});
runner.on('error', (err) => {
browserStackTunnel.stop();
server.close();
throw err;
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment