From 5311a8d7111a555cfea619ab67d4094573eeaaad Mon Sep 17 00:00:00 2001 From: Ryan Wheale Date: Tue, 17 Dec 2019 10:00:34 -0700 Subject: [PATCH] fix(shadowFind): fix issues with retry-ability and $.find semantics --- src/commands/shadowFind/command.js | 14 +++++++++++--- src/validators/validateSelector.js | 16 ---------------- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/src/commands/shadowFind/command.js b/src/commands/shadowFind/command.js index fb38db7..387453a 100644 --- a/src/commands/shadowFind/command.js +++ b/src/commands/shadowFind/command.js @@ -9,10 +9,18 @@ export default function shadowFind(subject, selector, options = {}) { validateOptions(options, DEFAULT_COMMAND_OPTIONS); const elGetter = () => { - const currentElement = subject[0].shadowRoot || subject[0]; - const found = currentElement.querySelectorAll(selector); + const found = Cypress.$(selector, subject); - return found; + if (found.length) { + return found; + } + + return Array.from(subject).reduce((result, sub) => { + if (sub.shadowRoot) { + return result.add(selector, sub.shadowRoot); + } + return result; + }, Cypress.$([])); }; return resolveValue(elGetter, options).then(foundElements => { diff --git a/src/validators/validateSelector.js b/src/validators/validateSelector.js index df6bc5b..68a2558 100644 --- a/src/validators/validateSelector.js +++ b/src/validators/validateSelector.js @@ -4,20 +4,4 @@ export default selector => { if (!selector || typeof selector !== 'string') { throw new InternalError(ERR_TYPES.INVALID_SELECTOR); } - - /* - * Matches any spaces not inside "" - * e.g. `input[placeholder="First A Name"]` will not be matched - * however `div input[placeholder="Text"]` will find the whitespace - */ - const illegalSpaceBeforeRegex = /(?