From e044bae8885251bf5bedb5a87060d451d4f42838 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Fri, 18 Mar 2022 20:22:33 -0800 Subject: [PATCH] chore: make count() work with _vue selectors (#12899) --- packages/playwright-core/src/server/selectors.ts | 2 +- tests/page/selectors-vue.spec.ts | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/playwright-core/src/server/selectors.ts b/packages/playwright-core/src/server/selectors.ts index 25d1a9a74b..f23590cbe4 100644 --- a/packages/playwright-core/src/server/selectors.ts +++ b/packages/playwright-core/src/server/selectors.ts @@ -92,7 +92,7 @@ export class Selectors { } async _queryCount(frame: frames.Frame, info: SelectorInfo, scope?: dom.ElementHandle): Promise { - const context = await frame._utilityContext(); + const context = await frame._context(info.world); const injectedScript = await context.injectedScript(); return await injectedScript.evaluate((injected, { parsed, scope }) => { return injected.querySelectorAll(parsed, scope || document).length; diff --git a/tests/page/selectors-vue.spec.ts b/tests/page/selectors-vue.spec.ts index 239632404a..eaa2edb63f 100644 --- a/tests/page/selectors-vue.spec.ts +++ b/tests/page/selectors-vue.spec.ts @@ -30,10 +30,14 @@ for (const [name, url] of Object.entries(vues)) { it('should work with single-root elements @smoke', async ({ page }) => { expect(await page.$$eval(`_vue=book-list`, els => els.length)).toBe(1); + expect(await page.locator(`_vue=book-list`).count()).toBe(1); + await expect(page.locator(`_vue=book-list`)).toHaveCount(1); expect(await page.$$eval(`_vue=book-item`, els => els.length)).toBe(3); + expect(await page.locator(`_vue=book-item`).count()).toBe(3); + await expect(page.locator(`_vue=book-item`)).toHaveCount(3); expect(await page.$$eval(`_vue=book-list >> _vue=book-item`, els => els.length)).toBe(3); + expect(await page.locator(`_vue=book-list >> _vue=book-item`).count()).toBe(3); expect(await page.$$eval(`_vue=book-item >> _vue=book-list`, els => els.length)).toBe(0); - }); it('should work with multi-root elements (fragments)', async ({ page }) => {