diff options
Diffstat (limited to 'node_modules/selenium-webdriver/test')
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() { |