diff --git a/src/server/dom.ts b/src/server/dom.ts index 9dbe8be5c2..4e7c65871a 100644 --- a/src/server/dom.ts +++ b/src/server/dom.ts @@ -938,15 +938,19 @@ export function waitForSelectorTask(selector: SelectorInfo, state: 'attached' | let lastElement: Element | undefined; return injected.pollRaf((progress, continuePolling) => { - const element = injected.querySelector(parsed, root || document); + const elements = injected.querySelectorAll(parsed, root || document); + const element = elements[0]; const visible = element ? injected.isVisible(element) : false; if (lastElement !== element) { lastElement = element; - if (!element) + if (!element) { progress.log(` selector did not resolve to any element`); - else + } else { + if (elements.length > 1) + progress.log(` selector resolved to ${elements.length} elements. Proceeding with the first one.`); progress.log(` selector resolved to ${visible ? 'visible' : 'hidden'} ${injected.previewNode(element)}`); + } } switch (state) { diff --git a/tests/page/page-wait-for-selector-1.spec.ts b/tests/page/page-wait-for-selector-1.spec.ts index b9218b3fcf..ef358ebd95 100644 --- a/tests/page/page-wait-for-selector-1.spec.ts +++ b/tests/page/page-wait-for-selector-1.spec.ts @@ -169,6 +169,22 @@ it('should report logs while waiting for hidden', async ({page, server}) => { expect(error.message).toContain(`selector resolved to visible