From fc30c29a1950568cbba57fbd9429474b7df62988 Mon Sep 17 00:00:00 2001 From: Dmitry Gozman Date: Sat, 19 Dec 2020 12:21:20 -0800 Subject: [PATCH] test: add a test for custom engine that does not respect root (#4777) --- test/selectors-register.spec.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/test/selectors-register.spec.ts b/test/selectors-register.spec.ts index 168ae483e3..88640a8dc2 100644 --- a/test/selectors-register.spec.ts +++ b/test/selectors-register.spec.ts @@ -123,3 +123,21 @@ it('should handle errors', async ({playwright, page}) => { error = await playwright.selectors.register('css', createDummySelector).catch(e => e); expect(error.message).toBe('"css" is a predefined selector engine'); }); + +it('should not rely on engines working from the root', async ({ playwright, page }) => { + const createValueEngine = () => ({ + create(root, target) { + return undefined; + }, + query(root, selector) { + return root && root.value.includes(selector) ? root : undefined; + }, + queryAll(root, selector) { + return root && root.value.includes(selector) ? [root] : []; + }, + }); + + await playwright.selectors.register('__value', createValueEngine); + await page.setContent(``); + expect(await page.$eval('input >> __value=value2', e => e.id)).toBe('input2'); +});