Skip to content

Commit

Permalink
[js] Test cleanup
Browse files Browse the repository at this point in the history
Fixes #2390
  • Loading branch information
jleyba committed Jul 1, 2016
1 parent c344464 commit ef3b8e2
Show file tree
Hide file tree
Showing 11 changed files with 58 additions and 23 deletions.
8 changes: 8 additions & 0 deletions javascript/node/selenium-webdriver/builder.js
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,14 @@ class Builder {
return this;
}

/**
* @return {firefox.Options} the Firefox specific options currently configured
* for this instance.
*/
getFirefoxOptions() {
return this.firefoxOptions_;
}

/**
* Sets Opera specific {@linkplain opera.Options options} for drivers created
* by this builder. Any logging or proxy settings defined on the given options
Expand Down
14 changes: 6 additions & 8 deletions javascript/node/selenium-webdriver/lib/http.js
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,9 @@ class Executor {
return new Session(parsed['sessionId'], parsed['value']);
}

if (parsed) {
if (parsed
&& typeof parsed === 'object'
&& 'value' in parsed) {
let value = parsed['value'];
return typeof value === 'undefined' ? null : value;
}
Expand Down Expand Up @@ -349,7 +351,7 @@ function tryParse(str) {
* @param {!Response} httpResponse The HTTP response to parse.
* @param {boolean} w3c Whether the response should be processed using the
* W3C wire protocol.
* @return {{value: ?}} The parsed response.
* @return {?} The parsed response.
* @throws {WebDriverError} If the HTTP response is an error.
*/
function parseHttpResponse(httpResponse, w3c) {
Expand All @@ -369,11 +371,7 @@ function parseHttpResponse(httpResponse, w3c) {
} else {
error.checkLegacyResponse(parsed);
}

if (!parsed || typeof parsed !== 'object') {
parsed = {value: parsed};
}
return parsed
return parsed;
}

let value = httpResponse.body.replace(/\r\n/g, '\n');
Expand All @@ -386,7 +384,7 @@ function parseHttpResponse(httpResponse, w3c) {
throw new error.WebDriverError(value);
}

return {value: value || null};
return value || null;
}


Expand Down
6 changes: 6 additions & 0 deletions javascript/node/selenium-webdriver/lib/test/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ var build = require('./build'),
isDevMode = require('../devmode'),
webdriver = require('../../'),
flow = webdriver.promise.controlFlow(),
firefox = require('../../firefox'),
remote = require('../../remote'),
testing = require('../../testing'),
fileserver = require('./fileserver');
Expand Down Expand Up @@ -159,6 +160,10 @@ function TestEnvironment(browserName, server) {
var parts = browserName.split(/:/, 3);

if (parts[0] === LEGACY_FIREFOX) {
var options = builder.getFirefoxOptions() || new firefox.Options();
options.useGeckoDriver(false);
builder.setFirefoxOptions(options);

parts[0] = webdriver.Browser.FIREFOX;
}

Expand All @@ -168,6 +173,7 @@ function TestEnvironment(browserName, server) {
} else if (remoteUrl) {
builder.usingServer(remoteUrl);
}

builder.disableEnvironmentOverrides();
return realBuild.call(builder);
};
Expand Down
3 changes: 2 additions & 1 deletion javascript/node/selenium-webdriver/test/actions_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ test.suite(function(env) {
test.beforeEach(function() { driver = env.builder().build(); });
test.afterEach(function() { driver.quit(); });

test.ignore(env.browsers(Browser.PHANTOM_JS, Browser.SAFARI)).
test.ignore(
env.browsers(Browser.FIREFOX, Browser.PHANTOM_JS, Browser.SAFARI)).
describe('WebDriver.actions()', function() {

test.it('can move to and click element in an iframe', function() {
Expand Down
6 changes: 5 additions & 1 deletion javascript/node/selenium-webdriver/test/cookie_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,11 @@ test.suite(function(env) {
assertHasCookies();
});

test.ignore(env.browsers(Browser.ANDROID, Browser.FIREFOX, Browser.IE)).
test.ignore(env.browsers(
Browser.ANDROID,
Browser.FIREFOX,
'legacy-' + Browser.FIREFOX,
Browser.IE)).
it('should retain cookie expiry', function() {
let expirationDelay = 5 * 1000;
let expiry = new Date(Date.now() + expirationDelay);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,8 @@ test.suite(function(env) {
assert(execute('return arguments.length', 1, 'a', false)).equalTo(3);
});

test.it('can return arguments object as array', function() {
test.ignore(env.browsers(Browser.FIREFOX)).
it('can return arguments object as array', function() {
execute('return arguments', 1, 'a', false).then(function(val) {
assert(val.length).equalTo(3);
assert(val[0]).equalTo(1);
Expand Down
10 changes: 6 additions & 4 deletions javascript/node/selenium-webdriver/test/logging_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,10 @@ test.suite(function(env) {
// - does not return proper log level for "browser" messages.
// - does not delete logs after retrieval
// Logging API is not supported in IE.
// Logging API not supported in Marionette.
// Tests depend on opening data URLs, which is broken in Safari (issue 7586)
test.ignore(env.browsers(Browser.PHANTOM_JS, Browser.IE, Browser.SAFARI)).
test.ignore(env.browsers(
Browser.PHANTOM_JS, Browser.IE, Browser.SAFARI, Browser.FIREFOX)).
describe('logging', function() {
var driver;

Expand Down Expand Up @@ -64,7 +66,7 @@ test.suite(function(env) {
});

// Firefox does not capture JS error console log messages.
test.ignore(env.browsers(Browser.FIREFOX)).
test.ignore(env.browsers(Browser.FIREFOX, 'legacy-firefox')).
it('can be turned down', function() {
var prefs = new logging.Preferences();
prefs.setLevel(logging.Type.BROWSER, logging.Level.SEVERE);
Expand All @@ -87,7 +89,7 @@ test.suite(function(env) {
});

// Firefox does not capture JS error console log messages.
test.ignore(env.browsers(Browser.FIREFOX)).
test.ignore(env.browsers(Browser.FIREFOX, 'legacy-firefox')).
it('can be made verbose', function() {
var prefs = new logging.Preferences();
prefs.setLevel(logging.Type.BROWSER, logging.Level.DEBUG);
Expand Down Expand Up @@ -116,7 +118,7 @@ test.suite(function(env) {
});

// Firefox does not capture JS error console log messages.
test.ignore(env.browsers(Browser.FIREFOX)).
test.ignore(env.browsers(Browser.FIREFOX, 'legacy-firefox')).
it('clears records after retrieval', function() {
var prefs = new logging.Preferences();
prefs.setLevel(logging.Type.BROWSER, logging.Level.DEBUG);
Expand Down
4 changes: 3 additions & 1 deletion javascript/node/selenium-webdriver/test/page_loading_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,9 @@ test.suite(function(env) {
assert(driver.getTitle()).equalTo('We Arrive Here');
});

test.it('should be able to get a fragment on the current page', function() {
// Skip Firefox; see https://bugzilla.mozilla.org/show_bug.cgi?id=1280300
test.ignore(browsers(Browser.FIREFOX)).
it('should be able to get a fragment on the current page', function() {
driver.get(Pages.xhtmlTestPage);
driver.get(Pages.xhtmlTestPage + '#text');
driver.findElement(By.id('id1'));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,10 @@ test.suite(function(env) {

test.it('an element found in a different frame is stale', function() {
driver.get(Pages.missedJsReferencePage);
driver.switchTo().frame('inner');

var frame = driver.findElement(By.css('iframe[name="inner"]'));
driver.switchTo().frame(frame);

var el = driver.findElement(By.id('oneline'));
driver.switchTo().defaultContent();
el.getText().then(fail, function(e) {
Expand Down
5 changes: 3 additions & 2 deletions javascript/node/selenium-webdriver/test/upload_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,14 +71,15 @@ test.suite(function(env) {
});

driver.findElement(By.id('upload')).sendKeys(fp);
driver.findElement(By.id('go')).submit();
driver.findElement(By.id('go')).click();

// Uploading files across a network may take a while, even if they're small.
var label = driver.findElement(By.id('upload_label'));
driver.wait(until.elementIsNotVisible(label),
10 * 1000, 'File took longer than 10 seconds to upload!');

driver.switchTo().frame('upload_target');
var frame = driver.findElement(By.id('upload_target'));
driver.switchTo().frame(frame);
assert(driver.findElement(By.css('body')).getText())
.equalTo(LOREM_IPSUM_TEXT);
});
Expand Down
17 changes: 13 additions & 4 deletions javascript/node/selenium-webdriver/test/window_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,22 +33,29 @@ test.suite(function(env) {
});

test.it('can set size of the current window', function() {
driver.get(test.Pages.echoPage);
changeSizeBy(-20, -20);
});

test.it('can set size of the current window from frame', function() {
driver.get(test.Pages.framesetPage);
driver.switchTo().frame('fourth');

var frame = driver.findElement({css: 'frame[name="fourth"]'});
driver.switchTo().frame(frame);
changeSizeBy(-20, -20);
});

test.it('can set size of the current window from iframe', function() {
driver.get(test.Pages.iframePage);
driver.switchTo().frame('iframe1-name');

var frame = driver.findElement({css: 'iframe[name="iframe1-name"]'});
driver.switchTo().frame(frame);
changeSizeBy(-20, -20);
});

test.it('can set the window position of the current window', function() {
// See https://github.com/mozilla/geckodriver/issues/113
test.ignore(env.browsers(Browser.FIREFOX)).
it('can set the window position of the current window', function() {
driver.manage().window().getPosition().then(function(position) {
driver.manage().window().setSize(640, 480);
driver.manage().window().setPosition(position.x + 10, position.y + 10);
Expand All @@ -72,7 +79,9 @@ test.suite(function(env) {
});
});

test.it('can set the window position from a frame', function() {
// See https://github.com/mozilla/geckodriver/issues/113
test.ignore(env.browsers(Browser.FIREFOX)).
it('can set the window position from a frame', function() {
driver.get(test.Pages.iframePage);
driver.switchTo().frame('iframe1-name');
driver.manage().window().getPosition().then(function(position) {
Expand Down

0 comments on commit ef3b8e2

Please sign in to comment.