Skip to content

Commit e955969

Browse files
committed
Cleaning up test code
1 parent 38e8a90 commit e955969

File tree

12 files changed

+90
-105
lines changed

12 files changed

+90
-105
lines changed

javascript/node/selenium-webdriver/lib/test/index.js

Lines changed: 14 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -44,19 +44,9 @@ var nativeRun = !serverJar && !remoteUrl;
4444

4545

4646
var browsersToTest = (function() {
47-
if (process.env['SELENIUM_BROWSER']) {
48-
if (process.env['SELENIUM_BROWSERS']) {
49-
console.log('SELENIUM_BROWSER and SELENIUM_BROWSERS both set for');
50-
console.log('Selenium test suite; unsetting SELENIUM_BROWSER');
51-
} else {
52-
process.env['SELENIUM_BROWSERS'] = process.env['SELENIUM_BROWSER'];
53-
}
54-
delete process.env['SELENIUM_BROWSER'];
55-
}
56-
5747
var permitRemoteBrowsers = !!remoteUrl || !!serverJar;
5848
var permitUnknownBrowsers = !nativeRun;
59-
var browsers = process.env['SELENIUM_BROWSERS'] || webdriver.Browser.FIREFOX;
49+
var browsers = process.env['SELENIUM_BROWSER'] || webdriver.Browser.FIREFOX;
6050

6151
browsers = browsers.split(',');
6252
browsers.forEach(function(browser) {
@@ -114,28 +104,16 @@ function browsers(currentBrowser, browsersToIgnore) {
114104
function TestEnvironment(browserName, server) {
115105
var name = browserName;
116106

117-
var autoCreate = true;
118-
this.__defineGetter__(
119-
'autoCreateDriver', function() { return autoCreate; });
120-
this.__defineSetter__(
121-
'autoCreateDriver', function(auto) { autoCreate = auto; });
122-
123-
this.__defineGetter__('browser', function() { return browserName; });
124-
125-
var driver;
126-
this.__defineGetter__('driver', function() { return driver; });
127-
this.__defineSetter__('driver', function(d) {
128-
if (driver) throw Error('Driver already created');
129-
driver = d;
130-
});
107+
this.currentBrowser = function() {
108+
return browserName;
109+
};
131110

132111
this.browsers = function(var_args) {
133112
var browsersToIgnore = Array.prototype.slice.apply(arguments, [0]);
134113
return browsers(browserName, browsersToIgnore);
135114
};
136115

137116
this.builder = function() {
138-
assert.ok(!driver, 'Can only have one driver at a time');
139117
var builder = new webdriver.Builder();
140118
var realBuild = builder.build;
141119

@@ -148,34 +126,11 @@ function TestEnvironment(browserName, server) {
148126
builder.usingServer(remoteUrl);
149127
}
150128
builder.disableEnvironmentOverrides();
151-
return driver = realBuild.call(builder);
129+
return realBuild.call(builder);
152130
};
153131

154132
return builder;
155133
};
156-
157-
this.createDriver = function() {
158-
if (!driver) {
159-
driver = this.builder().build();
160-
}
161-
return driver;
162-
};
163-
164-
this.refreshDriver = function() {
165-
if (driver) {
166-
driver.quit();
167-
driver = null;
168-
}
169-
this.createDriver();
170-
};
171-
172-
this.dispose = function() {
173-
if (driver) {
174-
var d = driver;
175-
driver = null;
176-
return d.quit();
177-
}
178-
};
179134
}
180135

181136

@@ -206,6 +161,14 @@ function suite(fn, opt_options) {
206161
}
207162

208163
try {
164+
165+
// Server is only started if required for a specific config.
166+
testing.after(function() {
167+
if (seleniumServer) {
168+
return seleniumServer.stop();
169+
}
170+
});
171+
209172
browsers.forEach(function(browser) {
210173
testing.describe('[' + browser + ']', function() {
211174

@@ -229,20 +192,7 @@ function suite(fn, opt_options) {
229192
return seleniumServer.start(60 * 1000);
230193
});
231194
}
232-
233-
var env = new TestEnvironment(browser, serverToUse);
234-
235-
testing.beforeEach(function() {
236-
if (env.autoCreateDriver) {
237-
return env.createDriver().getSession(); // Catch start-up failures.
238-
}
239-
});
240-
241-
testing.after(function() {
242-
return env.dispose();
243-
});
244-
245-
fn(env);
195+
fn(new TestEnvironment(browser, serverToUse));
246196
});
247197
});
248198
} finally {
@@ -257,14 +207,6 @@ function suite(fn, opt_options) {
257207
testing.before(fileserver.start);
258208
testing.after(fileserver.stop);
259209

260-
// Server is only started if required for a specific config.
261-
testing.after(function() {
262-
if (seleniumServer) {
263-
seleniumServer.stop();
264-
}
265-
});
266-
267-
268210
// PUBLIC API
269211

270212

javascript/node/selenium-webdriver/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,6 @@
3030
"mocha" : ">= 1.21.x"
3131
},
3232
"scripts": {
33-
"test": "node_modules/.bin/mocha --harmony --no-timeouts --recursive test"
33+
"test": "node_modules/.bin/mocha --harmony -t 600000 --recursive test"
3434
}
3535
}

javascript/node/selenium-webdriver/test/chrome/options_test.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,14 +192,18 @@ describe('chrome.Options', function() {
192192
});
193193

194194
test.suite(function(env) {
195-
env.autoCreateDriver = false;
195+
var driver;
196+
197+
test.afterEach(function() {
198+
driver.quit();
199+
});
196200

197201
describe('Chrome options', function() {
198202
test.it('can start Chrome with custom args', function() {
199203
var options = new chrome.Options().
200204
addArguments('user-agent=foo;bar');
201205

202-
var driver = env.builder().
206+
driver = env.builder().
203207
setChromeOptions(options).
204208
build();
205209

javascript/node/selenium-webdriver/test/cookie_test.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,14 @@ var test = require('../lib/test'),
2626

2727
test.suite(function(env) {
2828
var driver;
29-
beforeEach(function() { driver = env.driver; });
29+
30+
test.before(function() {
31+
driver = env.builder().build();
32+
});
33+
34+
test.after(function() {
35+
driver.quit();
36+
});
3037

3138
test.ignore(env.browsers(Browser.SAFARI)). // Cookie handling is broken.
3239
describe('Cookie Management;', function() {

javascript/node/selenium-webdriver/test/element_finding_test.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,14 @@ test.suite(function(env) {
3030
var browsers = env.browsers;
3131

3232
var driver;
33-
beforeEach(function() { driver = env.driver; });
33+
34+
test.before(function() {
35+
driver = env.builder().build();
36+
});
37+
38+
test.after(function() {
39+
driver.quit();
40+
});
3441

3542
describe('finding elements', function() {
3643

javascript/node/selenium-webdriver/test/firefox/firefox_test.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,18 @@ var NORMAL_EXTENSION = path.join(__dirname,
2929

3030

3131
test.suite(function(env) {
32-
env.autoCreateDriver = false;
33-
3432
describe('firefox', function() {
3533
describe('Options', function() {
34+
var driver;
35+
36+
test.beforeEach(function() {
37+
driver = null;
38+
});
39+
3640
test.afterEach(function() {
37-
return env.dispose();
41+
if (driver) {
42+
driver.quit();
43+
}
3844
});
3945

4046
test.it('can start Firefox with custom preferences', function() {
@@ -43,7 +49,7 @@ test.suite(function(env) {
4349

4450
var options = new firefox.Options().setProfile(profile);
4551

46-
var driver = env.builder().
52+
driver = env.builder().
4753
setFirefoxOptions(options).
4854
build();
4955

@@ -60,7 +66,7 @@ test.suite(function(env) {
6066

6167
var options = new firefox.Options().setProfile(profile);
6268

63-
var driver = env.builder().
69+
driver = env.builder().
6470
setFirefoxOptions(options).
6571
build();
6672

@@ -76,7 +82,7 @@ test.suite(function(env) {
7682

7783
var options = new firefox.Options().setProfile(profile);
7884

79-
var driver = env.builder().
85+
driver = env.builder().
8086
setFirefoxOptions(options).
8187
build();
8288

@@ -92,7 +98,7 @@ test.suite(function(env) {
9298

9399
var options = new firefox.Options().setProfile(profile);
94100

95-
var driver = env.builder().
101+
driver = env.builder().
96102
setFirefoxOptions(options).
97103
build();
98104

javascript/node/selenium-webdriver/test/logging_test.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,29 @@ var Browser = require('..').Browser,
2222
test = require('../lib/test');
2323

2424
test.suite(function(env) {
25-
env.autoCreateDriver = false;
26-
2725
// Logging API has numerous issues with PhantomJS:
2826
// - does not support adjusting log levels for type "browser".
2927
// - does not return proper log level for "browser" messages.
3028
// - does not delete logs after retrieval
3129
test.ignore(env.browsers(Browser.PHANTOM_JS)).
3230
describe('logging', function() {
31+
var driver;
32+
33+
test.beforeEach(function() {
34+
driver = null;
35+
});
36+
3337
test.afterEach(function() {
34-
env.dispose();
38+
if (driver) {
39+
driver.quit();
40+
}
3541
});
3642

3743
test.it('can be disabled', function() {
3844
var prefs = new logging.Preferences();
3945
prefs.setLevel(logging.Type.BROWSER, logging.Level.OFF);
4046

41-
var driver = env.builder()
47+
driver = env.builder()
4248
.setLoggingPrefs(prefs)
4349
.build();
4450

@@ -59,7 +65,7 @@ test.suite(function(env) {
5965
var prefs = new logging.Preferences();
6066
prefs.setLevel(logging.Type.BROWSER, logging.Level.SEVERE);
6167

62-
var driver = env.builder()
68+
driver = env.builder()
6369
.setLoggingPrefs(prefs)
6470
.build();
6571

@@ -82,7 +88,7 @@ test.suite(function(env) {
8288
var prefs = new logging.Preferences();
8389
prefs.setLevel(logging.Type.BROWSER, logging.Level.DEBUG);
8490

85-
var driver = env.builder()
91+
driver = env.builder()
8692
.setLoggingPrefs(prefs)
8793
.build();
8894

@@ -111,7 +117,7 @@ test.suite(function(env) {
111117
var prefs = new logging.Preferences();
112118
prefs.setLevel(logging.Type.BROWSER, logging.Level.DEBUG);
113119

114-
var driver = env.builder()
120+
driver = env.builder()
115121
.setLoggingPrefs(prefs)
116122
.build();
117123

@@ -134,7 +140,7 @@ test.suite(function(env) {
134140
prefs.setLevel(logging.Type.BROWSER, logging.Level.DEBUG);
135141
prefs.setLevel(logging.Type.DRIVER, logging.Level.SEVERE);
136142

137-
var driver = env.builder()
143+
driver = env.builder()
138144
.setLoggingPrefs(prefs)
139145
.build();
140146

javascript/node/selenium-webdriver/test/page_loading_test.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,13 @@ test.suite(function(env) {
2828
var browsers = env.browsers;
2929

3030
var driver;
31-
beforeEach(function() { driver = env.driver; });
31+
test.before(function() {
32+
driver = env.builder().build();
33+
});
34+
35+
test.after(function() {
36+
driver.quit();
37+
});
3238

3339
test.it('should wait for document to be loaded', function() {
3440
driver.get(Pages.simpleTestPage);

javascript/node/selenium-webdriver/test/proxy_test.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ var Browser = require('..').Browser,
2828

2929

3030
test.suite(function(env) {
31-
env.autoCreateDriver = false;
32-
3331
function writeResponse(res, body, encoding, contentType) {
3432
res.writeHead(200, {
3533
'Content-Length': Buffer.byteLength(body, encoding),
@@ -86,15 +84,17 @@ test.suite(function(env) {
8684
test.after(helloServer.stop.bind(helloServer));
8785
test.after(goodbyeServer.stop.bind(goodbyeServer));
8886

89-
test.afterEach(env.dispose.bind(env));
87+
var driver;
88+
test.beforeEach(function() { driver = null; });
89+
test.afterEach(function() { driver && driver.quit(); });
9090

9191
test.ignore(env.browsers(Browser.SAFARI)). // Proxy support not implemented.
9292
describe('manual proxy settings', function() {
9393
// phantomjs 1.9.1 in webdriver mode does not appear to respect proxy
9494
// settings.
9595
test.ignore(env.browsers(Browser.PHANTOM_JS)).
9696
it('can configure HTTP proxy host', function() {
97-
var driver = env.builder().
97+
driver = env.builder().
9898
setProxy(proxy.manual({
9999
http: proxyServer.host()
100100
})).
@@ -109,7 +109,7 @@ test.suite(function(env) {
109109
// PhantomJS does not support bypassing the proxy for individual hosts.
110110
test.ignore(env.browsers(Browser.PHANTOM_JS)).
111111
it('can bypass proxy for specific hosts', function() {
112-
var driver = env.builder().
112+
driver = env.builder().
113113
setProxy(proxy.manual({
114114
http: proxyServer.host(),
115115
bypass: helloServer.host()
@@ -135,7 +135,7 @@ test.suite(function(env) {
135135
test.ignore(env.browsers(Browser.PHANTOM_JS, Browser.SAFARI)).
136136
describe('pac proxy settings', function() {
137137
test.it('can configure proxy through PAC file', function() {
138-
var driver = env.builder().
138+
driver = env.builder().
139139
setProxy(proxy.pac(proxyServer.url('/proxy.pac'))).
140140
build();
141141

0 commit comments

Comments
 (0)