aboutsummaryrefslogtreecommitdiff
path: root/node_modules/selenium-webdriver/test/lib
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/selenium-webdriver/test/lib')
-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
3 files changed, 78 insertions, 13 deletions
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() {