From 52f1f3b353659a5559045ac738dc03b9c3715ebf Mon Sep 17 00:00:00 2001 From: Nick Tomlin Date: Fri, 17 Mar 2017 14:17:08 -0500 Subject: [PATCH 1/9] chore(typos): Clean up typos in README and index.ts --- README.md | 2 +- lib/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 533b08f..3fcf9d8 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ You can view the full list of commands in [`lib/index.ts`](lib/index.ts#L8). Usage ----- -If you are using a versoin of `selenium-webdriver` below `3.0.0-beta-1`, you +If you are using a version of `selenium-webdriver` below `3.0.0-beta-1`, you must use the `patch()` function before you create your webdriver instance: ```js diff --git a/lib/index.ts b/lib/index.ts index f2d59ee..847fb9d 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -157,7 +157,7 @@ export function extend(baseDriver: WebDriver, fallbackGracefully = false): Exten } /** - * Patches webdriver so that the extender can defie new commands. + * Patches webdriver so that the extender can define new commands. * * @example * patch(require('selenium-webdriver/lib/command'), From 517ad1de5992f6a926a1f6589abd26a54525b937 Mon Sep 17 00:00:00 2001 From: Nick Tomlin Date: Fri, 17 Mar 2017 14:41:44 -0500 Subject: [PATCH 2/9] chore(build): Compile to es6 now that protractor has dropped <6 support --- package.json | 2 -- tsconfig.json | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/package.json b/package.json index 4e34ba1..74317ea 100644 --- a/package.json +++ b/package.json @@ -26,9 +26,7 @@ "selenium-webdriver": "^2.53.2" }, "devDependencies": { - "@types/es6-promise": "0.0.32", "@types/jasmine": "^2.5.37", - "@types/node": "^6.0.46", "clang-format": "^1.0.42", "gulp": "^3.9.1", "gulp-clang-format": "^1.0.23", diff --git a/tsconfig.json b/tsconfig.json index d32da74..9c12cf9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es5", + "target": "es6", "module": "commonjs", "moduleResolution": "node", "sourceMap": true, From a989bafa713e1bcbdf4c7425001a948e8d0f1079 Mon Sep 17 00:00:00 2001 From: Nick Tomlin Date: Fri, 17 Mar 2017 14:44:49 -0500 Subject: [PATCH 3/9] breaking(typings): Update typings and remove patch since we are now using selenium 3.x --- README.md | 12 +----------- lib/index.ts | 31 ------------------------------- package.json | 4 ++-- spec/command_tests/helpers.ts | 5 +---- spec/command_tests/normal_spec.ts | 2 +- spec/index_spec.ts | 10 +--------- spec/mockdriver.ts | 2 +- 7 files changed, 7 insertions(+), 59 deletions(-) diff --git a/README.md b/README.md index 3fcf9d8..50727a5 100644 --- a/README.md +++ b/README.md @@ -11,18 +11,8 @@ You can view the full list of commands in [`lib/index.ts`](lib/index.ts#L8). Usage ----- -If you are using a version of `selenium-webdriver` below `3.0.0-beta-1`, you -must use the `patch()` function before you create your webdriver instance: +Use WebDriver JS Extender's `extend` function on your webdriver instance: -```js -require('webdriver-js-extender').patch( - require('selenium-webdriver/lib/command'), - require('selenium-webdriver/executors'), - require('selenium-webdriver/http')); -``` - -Once you've patched `selenium-webdriver` (or if you're using version `3.x`), all -you need to do is run the `extend` function on your webdriver instance: ```js var extendedWebdriver = require('webdriver-js-extender').extend(webdriver); diff --git a/lib/index.ts b/lib/index.ts index 847fb9d..46094e0 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -155,34 +155,3 @@ export function extend(baseDriver: WebDriver, fallbackGracefully = false): Exten return extendedDriver; } - -/** - * Patches webdriver so that the extender can define new commands. - * - * @example - * patch(require('selenium-webdriver/lib/command'), - * require('selenium-webdriver/executors'), - * require('selenium-webdriver/http')); - * - * @param {*} lib_command The object at 'selenium-webdriver/lib/command' - * @param {*} executors The object at 'selenium-webdriver/executors' - * @param {*} http The object at 'selenium-webdriver/http' - */ -export function patch(lib_command: any, executors: any, http: any) { - if (lib_command.DeferredExecutor === undefined) { - throw new Error( - 'The version of `selenium-webdriver` you provided does ' + - 'not use Deferred Executors. Are you using version 3.x or above? If ' + - 'so, you do not need to call the `patch()` function.'); - } - lib_command.DeferredExecutor = DeferredExecutor; - executors.DeferredExecutor = DeferredExecutor; - // Based off of - // https://github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/javascript/node/selenium-webdriver/executors.js#L45 - executors.createExecutor = (url: any, opt_agent?: any, opt_proxy?: any) => { - return new DeferredExecutor(wdpromise.when(url, (url: any) => { - var client = new http.HttpClient(url, opt_agent, opt_proxy); - return new http.Executor(client); - })); - }; -} diff --git a/package.json b/package.json index 74317ea..929f54d 100644 --- a/package.json +++ b/package.json @@ -22,8 +22,8 @@ "license": "MIT", "typings": "built/lib/index.d.ts", "dependencies": { - "@types/selenium-webdriver": "^2.53.35", - "selenium-webdriver": "^2.53.2" + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" }, "devDependencies": { "@types/jasmine": "^2.5.37", diff --git a/spec/command_tests/helpers.ts b/spec/command_tests/helpers.ts index b2115ba..b924165 100644 --- a/spec/command_tests/helpers.ts +++ b/spec/command_tests/helpers.ts @@ -5,7 +5,7 @@ import {MockAppium} from '../mock-server'; import {Session, CommandList} from '../mock-server/interfaces'; import {session as commandList} from '../mock-server/commands'; import {Command} from 'selenium-mock'; -import {extend, patch, ExtendedWebDriver} from '../../lib'; +import {extend, ExtendedWebDriver} from '../../lib'; let portfinder = require('portfinder'); @@ -28,9 +28,6 @@ export function initMockSeleniumStandaloneServerAndGetDriverFactory(annotateComm let server: MockAppium; let port: number; beforeAll((done) => { - patch(require('selenium-webdriver/lib/command'), - require('selenium-webdriver/executors'), - require('selenium-webdriver/http')); portfinder.getPort((err: Error, p: number) => { if (err) { done.fail(err); diff --git a/spec/command_tests/normal_spec.ts b/spec/command_tests/normal_spec.ts index 65350ae..371df68 100644 --- a/spec/command_tests/normal_spec.ts +++ b/spec/command_tests/normal_spec.ts @@ -106,7 +106,7 @@ describe('normal tests', () => { }).then((fileContents) => { expect(fileContents).toBe('bar'); return driver.pullFolderFromDevice('/tmp/wd_js_ext/folder'); - }).then((folderContents) => { + }).then((folderContents: any) => { expect(folderContents['a.txt']).toBe('x'); expect(folderContents['b.txt']).toBe('y'); expect(folderContents['c.txt']).toBe('z'); diff --git a/spec/index_spec.ts b/spec/index_spec.ts index 8e6b603..1ba6edb 100644 --- a/spec/index_spec.ts +++ b/spec/index_spec.ts @@ -1,5 +1,5 @@ import * as webdriver from 'selenium-webdriver'; -import {extend, patch} from '../lib'; +import {extend} from '../lib'; import {DeferredExecutor} from '../lib/deferred_executor'; import {buildMockDriver, Data} from './mockdriver'; @@ -28,12 +28,4 @@ describe('extender', () => { done(); }); }); - - it('should patch selenium-webdriver', () => { - patch(require('selenium-webdriver/lib/command'), - require('selenium-webdriver/executors'), - require('selenium-webdriver/http')); - expect(require('selenium-webdriver/executors').createExecutor( - 'http://localhost')).toEqual(jasmine.any(DeferredExecutor)); - }); }); diff --git a/spec/mockdriver.ts b/spec/mockdriver.ts index 7ed543b..a11f3b2 100644 --- a/spec/mockdriver.ts +++ b/spec/mockdriver.ts @@ -1,5 +1,5 @@ import * as webdriver from 'selenium-webdriver'; -let buildPath = require('selenium-webdriver/http').buildPath; +let buildPath = require('selenium-webdriver/lib/http').buildPath; export interface Data { sessionId: string; From a75eac457f3cd58cb253c5c36a7567f576809a92 Mon Sep 17 00:00:00 2001 From: Nick Tomlin Date: Fri, 17 Mar 2017 16:10:42 -0500 Subject: [PATCH 4/9] chore: Remove unused deferred_executor --- lib/index.ts | 1 - spec/deferred_executor_spec.ts | 52 ---------------------------------- 2 files changed, 53 deletions(-) delete mode 100644 spec/deferred_executor_spec.ts diff --git a/lib/index.ts b/lib/index.ts index 46094e0..9567dc1 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -2,7 +2,6 @@ import {promise as wdpromise, WebDriver} from 'selenium-webdriver'; import {CommandDefinition} from './command_definition'; import * as commandDefinitions from './command_definitions'; -import {DeferredExecutor} from './deferred_executor'; import {Extender} from './extender'; export interface ExtendedWebDriver extends WebDriver { diff --git a/spec/deferred_executor_spec.ts b/spec/deferred_executor_spec.ts deleted file mode 100644 index 355947c..0000000 --- a/spec/deferred_executor_spec.ts +++ /dev/null @@ -1,52 +0,0 @@ -import * as webdriver from 'selenium-webdriver'; -import {DeferredExecutor} from '../lib/deferred_executor'; - - -describe('Deferred Executor', () => { - function makeExecutor(done: Function) { - return { - execute: (command: any) => { - expect(command).toBe('command'); - done(); - }, - defineCommand: (name: string, method: string, path: string) => { - expect(name).toBe('name'); - expect(method).toBe('method'); - expect(path).toBe('path'); - done(); - } - }; - }; - - it('should call execute on pending executors', (done) => { - let deferred = webdriver.promise.defer(); - var deferredExecutor = new DeferredExecutor(deferred.promise); - - deferredExecutor.execute('command'); - deferred.fulfill(makeExecutor(done)); - }); - - it('should call execute on fulfilled executors', (done) => { - let deferred = webdriver.promise.defer(); - var deferredExecutor = new DeferredExecutor(deferred.promise); - - deferred.fulfill(makeExecutor(done)); - deferredExecutor.execute('command'); - }); - - it('should call defineCommand on pending executors', (done) => { - let deferred = webdriver.promise.defer(); - var deferredExecutor = new DeferredExecutor(deferred.promise); - - deferredExecutor.defineCommand('name', 'method', 'path'); - deferred.fulfill(makeExecutor(done)); - }); - - it('should call defineCommand on fulfilled executors', (done) => { - let deferred = webdriver.promise.defer(); - var deferredExecutor = new DeferredExecutor(deferred.promise); - - deferred.fulfill(makeExecutor(done)); - deferredExecutor.defineCommand('name', 'method', 'path'); - }); -}); From 09aae00f780f619dd9071391420c02d6b38eb094 Mon Sep 17 00:00:00 2001 From: Nick Tomlin Date: Fri, 17 Mar 2017 16:11:30 -0500 Subject: [PATCH 5/9] chore: Bump version to indicate breaking changes --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 929f54d..44c70d9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "webdriver-js-extender", - "version": "1.0.0", + "version": "2.0.0", "description": "A plugin which adds additional commands to selenium's javascript implementation of the webdriver client side API", "scripts": { "prepublish": "gulp prepublish", From b1173311bef58161e341dc0e9505452cf5903a77 Mon Sep 17 00:00:00 2001 From: Nick Tomlin Date: Fri, 17 Mar 2017 16:21:39 -0500 Subject: [PATCH 6/9] chore(specs): Refactor specs to work with new return payload from driver I _think_ this is updated to reflect the new return types (we used to get `null` but now get an object with a uuid `sessionId` and a `result` property. --- spec/command_tests/table_spec.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/spec/command_tests/table_spec.ts b/spec/command_tests/table_spec.ts index 1009135..4e313dc 100644 --- a/spec/command_tests/table_spec.ts +++ b/spec/command_tests/table_spec.ts @@ -81,7 +81,14 @@ describe('table tests', () => { let driver = driverFactory(); (driver as any)[commandName].apply(driver, testcase.args || []).then( (results: Testcase) => { - expect(results.result).toEqual(testcase.result == null ? null : testcase.result); + let result = results.result + + if (testcase.result != null) { + expect(result).toEqual(testcase.result); + } else if (result != null) { + expect(result.sessionId).toBeDefined(); + expect(result.status).toEqual(0); + } if (testcase.session) { for (let varname in testcase.session) { expect((results.session as any)[varname]). From fd370b0f928b0fd0082853724ca914e6b9aff5ee Mon Sep 17 00:00:00 2001 From: Nick Tomlin Date: Mon, 2 Jul 2018 16:04:27 -0500 Subject: [PATCH 7/9] Revert "chore(specs): Refactor specs to work with new return payload from driver" This reverts commit b1173311bef58161e341dc0e9505452cf5903a77. --- spec/command_tests/table_spec.ts | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/spec/command_tests/table_spec.ts b/spec/command_tests/table_spec.ts index 4e313dc..1009135 100644 --- a/spec/command_tests/table_spec.ts +++ b/spec/command_tests/table_spec.ts @@ -81,14 +81,7 @@ describe('table tests', () => { let driver = driverFactory(); (driver as any)[commandName].apply(driver, testcase.args || []).then( (results: Testcase) => { - let result = results.result - - if (testcase.result != null) { - expect(result).toEqual(testcase.result); - } else if (result != null) { - expect(result.sessionId).toBeDefined(); - expect(result.status).toEqual(0); - } + expect(results.result).toEqual(testcase.result == null ? null : testcase.result); if (testcase.session) { for (let varname in testcase.session) { expect((results.session as any)[varname]). From 753ad8b1fe684c4a670a1a3f2d061f328924e23e Mon Sep 17 00:00:00 2001 From: Nick Tomlin Date: Mon, 2 Jul 2018 16:05:07 -0500 Subject: [PATCH 8/9] chore: Remove unused import --- spec/index_spec.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/spec/index_spec.ts b/spec/index_spec.ts index 1ba6edb..fee2a68 100644 --- a/spec/index_spec.ts +++ b/spec/index_spec.ts @@ -1,6 +1,5 @@ import * as webdriver from 'selenium-webdriver'; import {extend} from '../lib'; -import {DeferredExecutor} from '../lib/deferred_executor'; import {buildMockDriver, Data} from './mockdriver'; From ba0e5fde71a6691709ec76fda520212f3dd65cfc Mon Sep 17 00:00:00 2001 From: Nick Tomlin Date: Mon, 2 Jul 2018 16:14:51 -0500 Subject: [PATCH 9/9] chore: Update minimum node to 6.x to match protractor core --- .travis.yml | 5 +++-- package.json | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 08ae0d1..b9e743a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,9 @@ language: node_js sudo: false node_js: - - "4" - - "5" + - "6" + - "8" + - "10" env: global: diff --git a/package.json b/package.json index 44c70d9..6660646 100644 --- a/package.json +++ b/package.json @@ -35,5 +35,8 @@ "run-sequence": "^1.2.2", "selenium-mock": "^0.1.5", "typescript": "^2.0.0" + }, + "engines": { + "node": ">=6.9.x" } }