Skip to content

Instantly share code, notes, and snippets.

@cyk
Last active July 2, 2017 20:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cyk/5494cfce480c782a84970151aed79ff9 to your computer and use it in GitHub Desktop.
Save cyk/5494cfce480c782a84970151aed79ff9 to your computer and use it in GitHub Desktop.
Testem BrowserStack Launcher Travis CI
// .travis/browserstack.js
#!/usr/bin/env node
const browserstack = require('browserstack');
let WORKER_ID = 0;
let username = process.env.BROWSERSTACK_USER;
let password = process.env.BROWSERSTACK_ACCESS_KEY;
// The exports from BrowserStack Travis addon we're relying on adds
// a suffix (https://git.io/vQW21#L171), removing it here to log in
username = username.split('-travis')[0];
let client = browserstack.createClient({ username, password });
'SIGINT SIGTERM SIGHUP'.split(' ').forEach((evt) => {
process.on(evt, () => {
console.log(`Closed BrowserStack Worker process ${evt}`);
if (client !== null) {
client.terminateWorker(WORKER_ID, () => process.exit());
}
});
});
let name = process.env.TRAVIS_JOB_NUMBER || null;
let build = process.env.TRAVIS_BUILD_NUMBER || null;
let project = process.env.TRAVIS_REPO_SLUG || null;
let settings = {
os: process.argv[2],
os_version: process.argv[3],
browser: process.argv[4],
browser_version: process.argv[5],
device: process.argv[6],
url: process.argv[7],
name,
build,
project
};
for (var i in settings) {
if (settings[i] === null || settings[i] === '' || settings[i] === 'nil') {
delete settings[i];
}
}
console.log(settings);
client.createWorker(settings, (error, worker) => {
if (error) console.log(error);
WORKER_ID = worker.id
});
setTimeout(() => client.terminateWorker(WORKER_ID), 600000);
// testem.js
/* eslint-env node */
module.exports = {
test_page: 'tests/index.html?hidepassed',
disable_watching: true,
browser_start_timeout: 600,
launch_in_ci: [
'BS_Edge',
'BS_Firefox',
'BS_IE',
'BS_Safari'
],
launch_in_dev: [
'PhantomJS',
'Chrome'
],
launchers: {
'BS_Edge': {
'exe': '.travis/browserstack.js',
'args': ['WINDOWS', '10', 'Edge', 'latest', ''],
'protocol': 'browser'
},
'BS_Firefox': {
'exe': '.travis/browserstack.js',
'args': ['WINDOWS', '10', 'Firefox', 'latest', ''],
'protocol': 'browser'
},
'BS_IE': {
'exe': '.travis/browserstack.js',
'args': ['WINDOWS', '10', 'IE', 'latest', ''],
'protocol': 'browser'
},
'BS_Safari': {
'exe': '.travis/browserstack.js',
'args': ['OS X', 'Sierra', 'Safari', 'latest', ''],
'protocol': 'browser'
}
},
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment