From 2a63267e614de87fd4e30fb9dddfb90e13c13f0b Mon Sep 17 00:00:00 2001 From: Andrei Rusu Date: Tue, 28 Jan 2020 22:25:37 +0100 Subject: [PATCH] Fixed #2294: ES6 async/awaits does not work with browser.elements() --- lib/api/protocol/_base-action.js | 4 ++-- lib/element/index.js | 2 +- test/lib/mockserver.js | 5 ++++- test/sampletests/es6await/webdriver/getText/getTextES6.js | 3 +++ test/src/runner/testRunnerEs6Async.js | 2 +- 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/api/protocol/_base-action.js b/lib/api/protocol/_base-action.js index e2fca6d82e..3bf6470c57 100644 --- a/lib/api/protocol/_base-action.js +++ b/lib/api/protocol/_base-action.js @@ -53,7 +53,7 @@ module.exports = class ProtocolAction { * * @return {Promise} */ - findElements({element, parentElement, id, using, value, commandName, callback = function() {}}) { + findElements({element, parentElement, id, using, value, commandName, callback = (r) => (r)}) { if (!(element instanceof Element)) { try { element = Element.createFromSelector(value, using); @@ -85,7 +85,7 @@ module.exports = class ProtocolAction { elementIdElements: 'locateMultipleElementsByElementId', }; - let transportAction = commandToActionMap[commandName]; + const transportAction = commandToActionMap[commandName]; if (element.usingRecursion) { return this.elementLocator.findElement({element, transportAction}); diff --git a/lib/element/index.js b/lib/element/index.js index a747e94ca5..a206a14120 100644 --- a/lib/element/index.js +++ b/lib/element/index.js @@ -177,7 +177,7 @@ class Element { */ static createFromSelector(value, using) { if (!value) { - throw new Error('Invalid selector value specified'); + throw new Error(`Invalid selector value specified "${value}"`); } if (value instanceof Element) { diff --git a/test/lib/mockserver.js b/test/lib/mockserver.js index 968af8cd0d..7e1f1d2bf0 100644 --- a/test/lib/mockserver.js +++ b/test/lib/mockserver.js @@ -236,8 +236,11 @@ module.exports = { * @param {Object} item * @param {boolean} once */ - addMock(item, once) { + addMock(item, once, twice) { server.addMock(item, once); + if (twice) { + server.addMock(item, once); + } return this; }, diff --git a/test/sampletests/es6await/webdriver/getText/getTextES6.js b/test/sampletests/es6await/webdriver/getText/getTextES6.js index eea299faa1..4059b758c5 100644 --- a/test/sampletests/es6await/webdriver/getText/getTextES6.js +++ b/test/sampletests/es6await/webdriver/getText/getTextES6.js @@ -6,6 +6,9 @@ module.exports = { const page = client.page.simplePageObj(); + const result = await client.elements('css selector', '#element-selector'); + assert.deepStrictEqual(result.value[0], {'element-6066-11e4-a52e-4f735466cecf': '5cc459b8-36a8-3042-8b4a-258883ea642b'}); + const textResult = await page.getText('#element-selector'); assert.ok(!!textResult); assert.ok('value' in textResult); diff --git a/test/src/runner/testRunnerEs6Async.js b/test/src/runner/testRunnerEs6Async.js index 8c56dc9434..e0979c04ab 100644 --- a/test/src/runner/testRunnerEs6Async.js +++ b/test/src/runner/testRunnerEs6Async.js @@ -145,7 +145,7 @@ describe('testRunner ES6 Async', function() { 'element-6066-11e4-a52e-4f735466cecf': '5cc459b8-36a8-3042-8b4a-258883ea642b' }] }) - }, true); + }, true, true); MockServer.addMock({ url: '/session/13521-10219-202/element/5cc459b8-36a8-3042-8b4a-258883ea642b/text',