/
saucelabs.js
90 lines (73 loc) · 2.23 KB
/
saucelabs.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
var webdriver = require('selenium-webdriver');
var DEFAULT_BROWSER_ENV = 'chrome:32:Windows 8.1';
var sauce = {
createNewDriver: function() {
var caps = this._getCapabilities();
var hubUrl = this._getHubUrl();
var driver = new webdriver.Builder().
withCapabilities(caps).
usingServer(hubUrl).
build();
return driver;
},
_getCapabilities: function() {
var testName = 'Blip (local)';
var buildLabel;
var tunnelIdentifier;
var credentials = this._getCredentials();
var browser = this._getBrowser();
var tags = ['e2e', 'local'];
var caps = new webdriver.Capabilities()
.set('username', credentials.username)
.set('accessKey', credentials.accessKey)
.set(webdriver.Capability.BROWSER_NAME, browser[0])
.set(webdriver.Capability.VERSION, browser[1])
.set(webdriver.Capability.PLATFORM, browser[2]);
if (process.env.TRAVIS) {
testName = 'Blip';
buildLabel = 'TRAVIS #' + process.env.TRAVIS_BUILD_NUMBER + ' (' + process.env.TRAVIS_BUILD_ID + ')';
tunnelIdentifier = process.env.TRAVIS_JOB_NUMBER;
tags[1] = 'ci';
caps
.set('tunnel-identifier', tunnelIdentifier)
.set('build', buildLabel);
}
caps
.set('name', testName)
.set('tags', tags);
return caps;
},
_getCredentials: function() {
var username = process.env.SAUCE_USERNAME;
var accessKey = process.env.SAUCE_ACCESS_KEY;
if (!(username && accessKey)) {
throw new Error('Must set both SAUCE_USERNAME and SAUCE_ACCESS_KEY' +
' env variables');
}
return {
username: username,
accessKey: accessKey
};
},
_getBrowser: function() {
var result;
var browserEnv = process.env.BROWSER || DEFAULT_BROWSER_ENV;
if (browserEnv) {
result = browserEnv.split(':');
}
if (result.length < 3) {
throw new Error('Unrecognized BROWSER env variable "' +
browserEnv + '"');
}
return result;
},
_getHubUrl: function() {
var credentials = this._getCredentials();
return [
'http://',
credentials.username, ':', credentials.accessKey,
'@localhost:4445/wd/hub'
].join('');
},
};
module.exports = sauce;