From d8a9b4da362c0ee3d1616595a9f652a59b178065 Mon Sep 17 00:00:00 2001 From: Mykola Mokhnach Date: Thu, 31 Mar 2022 17:46:44 +0200 Subject: [PATCH] feat(base-driver): Add more shadow root-related W3C routes (#16700) --- packages/base-driver/lib/protocol/routes.js | 6 ++++++ packages/base-driver/test/unit/protocol/routes.spec.js | 2 +- packages/types/src/index.ts | 10 ++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/base-driver/lib/protocol/routes.js b/packages/base-driver/lib/protocol/routes.js index f6566539e0d..609e99c9d43 100644 --- a/packages/base-driver/lib/protocol/routes.js +++ b/packages/base-driver/lib/protocol/routes.js @@ -243,6 +243,12 @@ const METHOD_MAP = { '/session/:sessionId/element/:elementId/shadow': { GET: {command: 'elementShadowRoot'} }, + '/session/:sessionId/shadow/:shadowId/element': { + POST: {command: 'findElementFromShadowRoot', payloadParams: {required: ['using', 'value']}} + }, + '/session/:sessionId/shadow/:shadowId/elements': { + POST: {command: 'findElementsFromShadowRoot', payloadParams: {required: ['using', 'value']}} + }, '/session/:sessionId/element/:elementId/css/:propertyName': { GET: {command: 'getCssProperty'} }, diff --git a/packages/base-driver/test/unit/protocol/routes.spec.js b/packages/base-driver/test/unit/protocol/routes.spec.js index 194b1387255..2d0583deb93 100644 --- a/packages/base-driver/test/unit/protocol/routes.spec.js +++ b/packages/base-driver/test/unit/protocol/routes.spec.js @@ -38,7 +38,7 @@ describe('Protocol', function () { } let hash = shasum.digest('hex').substring(0, 8); // Modify the hash whenever the protocol has intentionally been modified. - hash.should.equal('262ca3c4'); + hash.should.equal('7d48d815'); }); }); diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 546b7d2f416..07cb298a494 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -246,6 +246,16 @@ export interface ExternalDriver extends Driver { getLocationInView?(elementId: string): Promise; getSize?(elementId: string): Promise; elementShadowRoot?(elementId: string): Promise; + findElementFromShadowRoot?( + strategy: string, + selector: string, + shadowId: string + ): Promise; + findElementsFromShadowRoot?( + strategy: string, + selector: string, + shadowId: string + ): Promise; equalsElement?(elementId: string, otherElementId: string): Promise; submit?(elementId: string): Promise; keys?(value: string[]): Promise;