From 2379d23cd5bf877431edeeaf28b0c6ba9527f803 Mon Sep 17 00:00:00 2001 From: Christian Bromann Date: Wed, 10 Apr 2019 08:59:54 +0200 Subject: [PATCH] Ensure ms edge runs on w3c on Sauce (#3832) * ensure ms edge runs on w3c on Sauce * fix request mock --- packages/webdriver/src/utils.js | 14 ++++++++--- .../__fixtures__/edgedriver.response.json | 25 +++++++++++++++++++ packages/webdriver/tests/utils.test.js | 3 +++ .../webdriverio/tests/__mocks__/request.js | 4 ++- 4 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 packages/webdriver/tests/__fixtures__/edgedriver.response.json diff --git a/packages/webdriver/src/utils.js b/packages/webdriver/src/utils.js index 38c28229c68..7e4b3ebaa16 100644 --- a/packages/webdriver/src/utils.js +++ b/packages/webdriver/src/utils.js @@ -198,11 +198,19 @@ export function isW3C (capabilities) { * assume session to be a WebDriver session when * - capabilities are returned * (https://w3c.github.io/webdriver/#dfn-new-sessions) - * - a `platform` capability is not given but a platformName is returned - * which is not defined in the JSONWire protocol + * - it is an Appium session (since Appium is full W3C compliant) */ const isAppium = capabilities.automationName || capabilities.deviceName - return Boolean((!capabilities.platform && capabilities.platformName) || isAppium) + const hasW3CCaps = ( + capabilities.platformName && + capabilities.browserVersion && + /** + * local safari doesn't provide platformVersion therefor + * check also for setWindowRect + */ + (capabilities.platformVersion || capabilities.setWindowRect) + ) + return Boolean(hasW3CCaps || isAppium) } /** diff --git a/packages/webdriver/tests/__fixtures__/edgedriver.response.json b/packages/webdriver/tests/__fixtures__/edgedriver.response.json new file mode 100644 index 00000000000..629052c965d --- /dev/null +++ b/packages/webdriver/tests/__fixtures__/edgedriver.response.json @@ -0,0 +1,25 @@ +{ + "value": { + "sessionId": "867A8C76-537F-4F2B-897C-85F87DF2C995", + "capabilities": { + "ms:inPrivate": false, + "browserVersion": "44.17763.1.0", + "takesScreenshot": true, + "acceptSslCerts": true, + "cssSelectorsEnabled": true, + "javascriptEnabled": true, + "browserName": "MicrosoftEdge", + "locationContextEnabled": true, + "platform": "ANY", + "takesElementScreenshot": true, + "webdriver.remote.sessionid": "199008b1e1e64a039d45e534d71b1e32", + "hasMetadata": true, + "applicationCacheEnabled": true, + "webStorageEnabled": true, + "pageLoadStrategy": "normal", + "platformName": "windows", + "platformVersion": "10", + "unhandledPromptBehavior": "dismiss and notify" + } + } +} diff --git a/packages/webdriver/tests/utils.test.js b/packages/webdriver/tests/utils.test.js index bb90892333c..c7f4bbac3b8 100644 --- a/packages/webdriver/tests/utils.test.js +++ b/packages/webdriver/tests/utils.test.js @@ -8,6 +8,7 @@ import chromedriverResponse from './__fixtures__/chromedriver.response.json' import geckodriverResponse from './__fixtures__/geckodriver.response.json' import safaridriverResponse from './__fixtures__/safaridriver.response.json' import safaridriverLegacyResponse from './__fixtures__/safaridriver.legacy.response.json' +import edgedriverResponse from './__fixtures__/edgedriver.response.json' describe('utils', () => { it('isSuccessfulResponse', () => { @@ -118,6 +119,7 @@ describe('utils', () => { const chromeCaps = chromedriverResponse.value const appiumCaps = appiumResponse.value.capabilities const geckoCaps = geckodriverResponse.value.capabilities + const edgeCaps = edgedriverResponse.value.capabilities const safariCaps = safaridriverResponse.value.capabilities const safariLegacyCaps = safaridriverLegacyResponse.value @@ -127,6 +129,7 @@ describe('utils', () => { expect(environmentDetector({ capabilities: chromeCaps, requestedCapabilities }).isW3C).toBe(false) expect(environmentDetector({ capabilities: geckoCaps, requestedCapabilities }).isW3C).toBe(true) expect(environmentDetector({ capabilities: safariCaps, requestedCapabilities }).isW3C).toBe(true) + expect(environmentDetector({ capabilities: edgeCaps, requestedCapabilities }).isW3C).toBe(true) expect(environmentDetector({ capabilities: safariLegacyCaps, requestedCapabilities }).isW3C).toBe(false) expect(isW3C()).toBe(false) }) diff --git a/packages/webdriverio/tests/__mocks__/request.js b/packages/webdriverio/tests/__mocks__/request.js index 32d7b991883..119de495733 100644 --- a/packages/webdriverio/tests/__mocks__/request.js +++ b/packages/webdriverio/tests/__mocks__/request.js @@ -14,7 +14,9 @@ const requestMock = jest.fn().mockImplementation((params, cb) => { sessionId, capabilities: { browserName: 'mockBrowser', - platformName: 'node' + platformName: 'node', + browserVersion: '1234', + setWindowRect: true } }