aboutsummaryrefslogtreecommitdiff
path: root/node_modules/selenium-webdriver/test
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/selenium-webdriver/test')
-rw-r--r--node_modules/selenium-webdriver/test/firefox/firefox_test.js40
-rw-r--r--node_modules/selenium-webdriver/test/lib/http_test.js31
-rw-r--r--node_modules/selenium-webdriver/test/lib/promise_test.js19
-rw-r--r--node_modules/selenium-webdriver/test/lib/until_test.js41
4 files changed, 104 insertions, 27 deletions
diff --git a/node_modules/selenium-webdriver/test/firefox/firefox_test.js b/node_modules/selenium-webdriver/test/firefox/firefox_test.js
index 485964f91..dbf9910fa 100644
--- a/node_modules/selenium-webdriver/test/firefox/firefox_test.js
+++ b/node_modules/selenium-webdriver/test/firefox/firefox_test.js
@@ -26,6 +26,8 @@ var firefox = require('../../firefox'),
Context = require('../../firefox').Context,
error = require('../..').error;
+var {consume} = require('../../lib/promise');
+
var JETPACK_EXTENSION = path.join(__dirname,
'../../lib/test/data/firefox/jetpack-sample.xpi');
@@ -53,9 +55,7 @@ test.suite(function(env) {
* skipped if dev cannot be found on the current system.
*/
function runWithFirefoxDev(options, testFn) {
- let binary = new firefox.Binary();
- binary.useDevEdition();
- return binary.locate().then(exe => {
+ return firefox.Channel.AURORA.locate().then(exe => {
options.setBinary(exe);
driver = env.builder()
.setFirefoxOptions(options)
@@ -67,21 +67,33 @@ test.suite(function(env) {
});
}
- test.it('can start Firefox with custom preferences', function*() {
- var profile = new firefox.Profile();
- profile.setPreference('general.useragent.override', 'foo;bar');
+ describe('can start Firefox with custom preferences', function() {
+ function runTest(opt_dir) {
+ return consume(function*() {
+ let profile = new firefox.Profile(opt_dir);
+ profile.setPreference('general.useragent.override', 'foo;bar');
+
+ let options = new firefox.Options().setProfile(profile);
+
+ driver = env.builder().
+ setFirefoxOptions(options).
+ build();
- var options = new firefox.Options().setProfile(profile);
+ yield driver.get('data:text/html,<html><div>content</div></html>');
- driver = env.builder().
- setFirefoxOptions(options).
- build();
+ var userAgent = yield driver.executeScript(
+ 'return window.navigator.userAgent');
+ assert(userAgent).equalTo('foo;bar');
+ });
+ }
- yield driver.get('data:text/html,<html><div>content</div></html>');
+ test.it('profile created from scratch', function() {
+ return runTest();
+ });
- var userAgent = yield driver.executeScript(
- 'return window.navigator.userAgent');
- assert(userAgent).equalTo('foo;bar');
+ test.it('profile created from template', function() {
+ return io.tmpDir().then(runTest);
+ });
});
test.it('can start Firefox with a jetpack extension', function() {
diff --git a/node_modules/selenium-webdriver/test/lib/http_test.js b/node_modules/selenium-webdriver/test/lib/http_test.js
index 1c6c073ad..2dd27869d 100644
--- a/node_modules/selenium-webdriver/test/lib/http_test.js
+++ b/node_modules/selenium-webdriver/test/lib/http_test.js
@@ -325,6 +325,37 @@ describe('http', function() {
assert.ok(executor.w3c, 'should never downgrade');
});
});
+
+ it('handles legacy new session failures', function() {
+ let rawResponse = {
+ status: error.ErrorCode.NO_SUCH_ELEMENT,
+ value: {message: 'hi'}
+ };
+
+ send.returns(Promise.resolve(
+ new http.Response(500, {}, JSON.stringify(rawResponse))));
+
+ return executor.execute(command)
+ .then(() => assert.fail('should have failed'),
+ e => {
+ assert.ok(e instanceof error.NoSuchElementError);
+ assert.equal(e.message, 'hi');
+ });
+ });
+
+ it('handles w3c new session failures', function() {
+ let rawResponse = {error: 'no such element', message: 'oops'};
+
+ send.returns(Promise.resolve(
+ new http.Response(500, {}, JSON.stringify(rawResponse))));
+
+ return executor.execute(command)
+ .then(() => assert.fail('should have failed'),
+ e => {
+ assert.ok(e instanceof error.NoSuchElementError);
+ assert.equal(e.message, 'oops');
+ });
+ });
});
describe('extracts Session from DESCRIBE_SESSION response', function() {
diff --git a/node_modules/selenium-webdriver/test/lib/promise_test.js b/node_modules/selenium-webdriver/test/lib/promise_test.js
index 96d2ccc22..8da1cd89e 100644
--- a/node_modules/selenium-webdriver/test/lib/promise_test.js
+++ b/node_modules/selenium-webdriver/test/lib/promise_test.js
@@ -301,6 +301,25 @@ describe('promise', function() {
});
promiseManagerSuite(() => {
+ describe('fulfilled', function() {
+ it('returns input value if it is already a valid promise', function() {
+ let p = promise.createPromise(function() {});
+ let r = promise.fulfilled(p);
+ assert.strictEqual(p, r);
+ });
+
+ it('creates a new promise fulfilled with input', function() {
+ return promise.fulfilled(1234).then(v => assert.equal(1234, v));
+ });
+
+ it('can convert thenables to valid promise', function() {
+ let thenable = {then: function(cb) {cb(1234)}};
+ let p = promise.fulfilled(thenable);
+ assert.notStrictEqual(thenable, p);
+ return p.then(v => assert.equal(1234, v));
+ });
+ });
+
describe('when', function() {
it('ReturnsAResolvedPromiseIfGivenANonPromiseValue', function() {
var ret = promise.when('abc');
diff --git a/node_modules/selenium-webdriver/test/lib/until_test.js b/node_modules/selenium-webdriver/test/lib/until_test.js
index 31b2b32ad..3226a467a 100644
--- a/node_modules/selenium-webdriver/test/lib/until_test.js
+++ b/node_modules/selenium-webdriver/test/lib/until_test.js
@@ -70,39 +70,54 @@ describe('until', function() {
.then(fail, (e2) => assert.strictEqual(e2, e));
});
+ const ELEMENT_ID = 'some-element-id';
+ const ELEMENT_INDEX = 1234;
+
+ function onSwitchFrame(expectedId) {
+ if (typeof expectedId === 'string') {
+ expectedId = WebElement.buildId(expectedId);
+ } else {
+ assert.equal(typeof expectedId, 'number', 'must be string or number');
+ }
+ return cmd => {
+ assert.deepEqual(
+ cmd.getParameter('id'), expectedId, 'frame ID not specified');
+ return true;
+ };
+ }
+
it('byIndex', function() {
- executor.on(CommandName.SWITCH_TO_FRAME, () => true);
- return driver.wait(until.ableToSwitchToFrame(0), 100);
+ executor.on(CommandName.SWITCH_TO_FRAME, onSwitchFrame(ELEMENT_INDEX));
+ return driver.wait(until.ableToSwitchToFrame(ELEMENT_INDEX), 100);
});
it('byWebElement', function() {
- executor.on(CommandName.SWITCH_TO_FRAME, () => true);
- var el = new webdriver.WebElement(driver, {ELEMENT: 1234});
+ executor.on(CommandName.SWITCH_TO_FRAME, onSwitchFrame(ELEMENT_ID));
+
+ var el = new webdriver.WebElement(driver, ELEMENT_ID);
return driver.wait(until.ableToSwitchToFrame(el), 100);
});
it('byWebElementPromise', function() {
- executor.on(CommandName.SWITCH_TO_FRAME, () => true);
+ executor.on(CommandName.SWITCH_TO_FRAME, onSwitchFrame(ELEMENT_ID));
var el = new webdriver.WebElementPromise(driver,
- Promise.resolve(new webdriver.WebElement(driver, {ELEMENT: 1234})));
+ Promise.resolve(new webdriver.WebElement(driver, ELEMENT_ID)));
return driver.wait(until.ableToSwitchToFrame(el), 100);
});
it('byLocator', function() {
- executor.on(CommandName.FIND_ELEMENTS, () => [WebElement.buildId(1234)]);
- executor.on(CommandName.SWITCH_TO_FRAME, () => true);
+ executor.on(CommandName.FIND_ELEMENTS, () => [WebElement.buildId(ELEMENT_ID)]);
+ executor.on(CommandName.SWITCH_TO_FRAME, onSwitchFrame(ELEMENT_ID));
return driver.wait(until.ableToSwitchToFrame(By.id('foo')), 100);
});
it('byLocator_elementNotInitiallyFound', function() {
- var foundResponses = [[], [], [WebElement.buildId(1234)]];
+ let foundResponses = [[], [], [WebElement.buildId(ELEMENT_ID)]];
executor.on(CommandName.FIND_ELEMENTS, () => foundResponses.shift());
- executor.on(CommandName.SWITCH_TO_FRAME, () => true);
+ executor.on(CommandName.SWITCH_TO_FRAME, onSwitchFrame(ELEMENT_ID));
return driver.wait(until.ableToSwitchToFrame(By.id('foo')), 2000)
- .then(function() {
- assert.equal(foundResponses.length, 0);
- });
+ .then(() => assert.deepEqual(foundResponses, []));
});
it('timesOutIfNeverAbletoSwitchFrames', function() {