Skip to content

Commit 10bd228

Browse files
author
John Doherty
committed
cleaned up driver loading logic
1 parent 719cd05 commit 10bd228

File tree

4 files changed

+83
-62
lines changed

4 files changed

+83
-62
lines changed

runtime/chromeDriver.js

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
1-
"use strict";
2-
(function(){
3-
var chromedriver = require('chromedriver');
4-
var selenium = require('selenium-webdriver');
1+
'use strict';
52

6-
module.exports = function () {
7-
var driver = new selenium.Builder().withCapabilities({
8-
browserName: 'chrome',
9-
javascriptEnabled: true,
10-
acceptSslCerts: true,
11-
chromeOptions: {
12-
args: ['start-maximized']
13-
},
14-
path: chromedriver.path
15-
}).build();
3+
var chromedriver = require('chromedriver');
4+
var selenium = require('selenium-webdriver');
165

17-
driver.manage().window().maximize();
6+
/**
7+
* Creates a Selenium WebDriver using Chrome as the browser
8+
* @returns {ThenableWebDriver} selenium web driver
9+
*/
10+
module.exports = function() {
1811

19-
return driver;
20-
}
21-
})();
12+
var driver = new selenium.Builder().withCapabilities({
13+
browserName: 'chrome',
14+
javascriptEnabled: true,
15+
acceptSslCerts: true,
16+
chromeOptions: {
17+
args: ['start-maximized']
18+
},
19+
path: chromedriver.path
20+
}).build();
21+
22+
driver.manage().window().maximize();
23+
24+
return driver;
25+
};

runtime/firefoxDriver.js

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
1-
"use strict";
2-
(function(){
3-
var firefox = require('geckodriver');
4-
var selenium = require('selenium-webdriver');
1+
'use strict';
52

6-
module.exports = function () {
7-
var driver = new selenium.Builder().withCapabilities({
8-
browserName: 'firefox',
9-
javascriptEnabled: true,
10-
acceptSslCerts: true,
11-
'webdriver.firefox.bin': firefox.path
12-
}).build();
3+
var firefox = require('geckodriver');
4+
var selenium = require('selenium-webdriver');
135

14-
driver.manage().window().maximize();
6+
/**
7+
* Creates a Selenium WebDriver using Firefox as the browser
8+
* @returns {ThenableWebDriver} selenium web driver
9+
*/
10+
module.exports = function() {
1511

16-
return driver;
17-
}
18-
})();
12+
var driver = new selenium.Builder().withCapabilities({
13+
browserName: 'firefox',
14+
javascriptEnabled: true,
15+
acceptSslCerts: true,
16+
'webdriver.firefox.bin': firefox.path
17+
}).build();
18+
19+
driver.manage().window().maximize();
20+
21+
return driver;
22+
};

runtime/phantomDriver.js

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
1-
"use strict";
2-
(function(){
3-
var phantomjs = require('phantomjs-prebuilt');
4-
var selenium = require('selenium-webdriver');
1+
'use strict';
52

6-
module.exports = function () {
7-
var driver = new selenium.Builder().withCapabilities({
8-
browserName: 'phantomjs',
9-
javascriptEnabled: true,
10-
acceptSslCerts: true,
11-
'phantomjs.binary.path': phantomjs.path
12-
}).build();
3+
var phantomjs = require('phantomjs-prebuilt');
4+
var selenium = require('selenium-webdriver');
135

14-
driver.manage().window().maximize();
6+
/**
7+
* Creates a Selenium WebDriver using PhantomJS as the browser
8+
* @returns {ThenableWebDriver} selenium web driver
9+
*/
10+
module.exports = function() {
1511

16-
return driver;
17-
}
18-
})();
12+
var driver = new selenium.Builder().withCapabilities({
13+
browserName: 'phantomjs',
14+
javascriptEnabled: true,
15+
acceptSslCerts: true,
16+
'phantomjs.binary.path': phantomjs.path
17+
}).build();
18+
19+
driver.manage().window().maximize();
20+
21+
return driver;
22+
};

runtime/world.js

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,31 +16,39 @@ var assert = require('chai').assert;
1616
var reporter = require('cucumber-html-reporter');
1717
var cucumberJunit = require('cucumber-junit');
1818

19+
// drivers
20+
var FireFoxDriver = require('./firefoxDriver.js');
21+
var PhantomJSDriver = require('./phantomDriver.js');
22+
var ChromeDriver = require('./chromeDriver');
23+
1924
/**
2025
* create the selenium browser based on global var set in index.js
26+
* @returns {ThenableWebDriver} selenium web driver
2127
*/
2228
function getDriverInstance() {
2329

2430
var driver;
31+
2532
switch (browserName || '') {
2633

2734
case 'firefox': {
28-
driver = require("./firefoxDriver")();
35+
driver = new FireFoxDriver();
2936
} break;
3037

3138
case 'phantomjs': {
32-
driver = require("./phantomDriver")();
39+
driver = new PhantomJSDriver();
3340
} break;
3441

3542
case 'chrome': {
36-
driver = require("./chromeDriver")();
43+
driver = new ChromeDriver();
3744
} break;
3845

3946
// try to load from file
4047
default: {
4148
var driverFileName = path.resolve(process.cwd(), browserName);
49+
4250
if (!fs.isFileSync(driverFileName)) {
43-
throw "Could not find driver file: " + driverFileName;
51+
throw new Error('Could not find driver file: ' + driverFileName);
4452
}
4553
driver = require(driverFileName)();
4654
}
@@ -60,16 +68,16 @@ function World() {
6068

6169
// create a list of variables to expose globally and therefore accessible within each step definition
6270
var runtime = {
63-
driver: null, // the browser object
64-
selenium: selenium, // the raw nodejs selenium driver
65-
By: selenium.By, // in keeping with Java expose selenium By
66-
by: selenium.By, // provide a javascript lowercase version
67-
until: selenium.until, // provide easy access to selenium until methods
68-
expect: expect, // expose chai expect to allow variable testing
69-
assert: assert, // expose chai assert to allow variable testing
70-
trace: consoleInfo, // expose an info method to log output to the console in a readable/visible format
71-
page: global.page||{}, // empty page objects placeholder
72-
shared: global.shared||{} // empty shared objects placeholder
71+
driver: null, // the browser object
72+
selenium: selenium, // the raw nodejs selenium driver
73+
By: selenium.By, // in keeping with Java expose selenium By
74+
by: selenium.By, // provide a javascript lowercase version
75+
until: selenium.until, // provide easy access to selenium until methods
76+
expect: expect, // expose chai expect to allow variable testing
77+
assert: assert, // expose chai assert to allow variable testing
78+
trace: consoleInfo, // expose an info method to log output to the console in a readable/visible format
79+
page: global.page || {}, // empty page objects placeholder
80+
shared: global.shared || {} // empty shared objects placeholder
7381
};
7482

7583
// expose properties to step definition methods via global variables
@@ -81,6 +89,7 @@ function World() {
8189
}
8290

8391
function createGlobalObjects() {
92+
8493
// import shared objects from multiple paths (after global vars have been created)
8594
if (global.sharedObjectPaths && Array.isArray(global.sharedObjectPaths) && global.sharedObjectPaths.length > 0) {
8695

0 commit comments

Comments
 (0)