mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00
feat(console api): support locator.filter (#19389)
This commit is contained in:
parent
256e9fd443
commit
3c17a2603a
@ -53,21 +53,13 @@ class Locator {
|
|||||||
self.getByText = (text: string | RegExp, options?: { exact?: boolean }): Locator => self.locator(getByTextSelector(text, options));
|
self.getByText = (text: string | RegExp, options?: { exact?: boolean }): Locator => self.locator(getByTextSelector(text, options));
|
||||||
self.getByTitle = (text: string | RegExp, options?: { exact?: boolean }): Locator => self.locator(getByTitleSelector(text, options));
|
self.getByTitle = (text: string | RegExp, options?: { exact?: boolean }): Locator => self.locator(getByTitleSelector(text, options));
|
||||||
self.getByRole = (role: string, options: ByRoleOptions = {}): Locator => self.locator(getByRoleSelector(role, options));
|
self.getByRole = (role: string, options: ByRoleOptions = {}): Locator => self.locator(getByRoleSelector(role, options));
|
||||||
|
self.filter = (options?: { hasText?: string | RegExp, has?: Locator }): Locator => new Locator(injectedScript, selector, options);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type ConsoleAPIInterface = {
|
|
||||||
$: (selector: string) => void;
|
|
||||||
$$: (selector: string) => void;
|
|
||||||
inspect: (selector: string) => void;
|
|
||||||
selector: (element: Element) => void;
|
|
||||||
generateLocator: (element: Element, language?: Language) => void;
|
|
||||||
resume: () => void;
|
|
||||||
};
|
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
interface Window {
|
interface Window {
|
||||||
playwright?: ConsoleAPIInterface;
|
playwright?: any;
|
||||||
inspect: (element: Element | undefined) => void;
|
inspect: (element: Element | undefined) => void;
|
||||||
__pw_resume: () => Promise<void>;
|
__pw_resume: () => Promise<void>;
|
||||||
}
|
}
|
||||||
@ -89,6 +81,7 @@ class ConsoleAPI {
|
|||||||
resume: () => this._resume(),
|
resume: () => this._resume(),
|
||||||
...new Locator(injectedScript, ''),
|
...new Locator(injectedScript, ''),
|
||||||
};
|
};
|
||||||
|
delete window.playwright.filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _querySelector(selector: string, strict: boolean): (Element | undefined) {
|
private _querySelector(selector: string, strict: boolean): (Element | undefined) {
|
||||||
|
|||||||
@ -66,3 +66,10 @@ it('should support playwright.locator({ has })', async ({ page }) => {
|
|||||||
expect(await page.evaluate(`playwright.locator('div', { has: playwright.locator('span') }).element.innerHTML`)).toContain('Hello');
|
expect(await page.evaluate(`playwright.locator('div', { has: playwright.locator('span') }).element.innerHTML`)).toContain('Hello');
|
||||||
expect(await page.evaluate(`playwright.locator('div', { has: playwright.locator('text=Hello') }).element.innerHTML`)).toContain('span');
|
expect(await page.evaluate(`playwright.locator('div', { has: playwright.locator('text=Hello') }).element.innerHTML`)).toContain('span');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should support playwright.getBy*', async ({ page }) => {
|
||||||
|
await page.setContent('<span>Hello</span><span title="world">World</span>');
|
||||||
|
expect(await page.evaluate(`playwright.getByText('hello').element.innerHTML`)).toContain('Hello');
|
||||||
|
expect(await page.evaluate(`playwright.getByTitle('world').element.innerHTML`)).toContain('World');
|
||||||
|
expect(await page.evaluate(`playwright.locator('span').filter({ hasText: 'hello' }).element.innerHTML`)).toContain('Hello');
|
||||||
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user