UNPKG

playwright-fluent

Version:
83 lines (82 loc) 3.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const path = tslib_1.__importStar(require("path")); const fluent_api_1 = require("../../../fluent-api"); describe('Selector API - getAllHandles', () => { let p; beforeEach(() => { p = new fluent_api_1.PlaywrightFluent(); }); afterEach(async () => { await p.close(); }); test('should throw an error when browser has not been launched', async () => { // Given // When let result = undefined; try { const selector = p.selector('foobar'); await selector.getAllHandles(); } catch (error) { result = error; } // Then const expectedErrorMessage = "Cannot query selector 'foobar' because no browser has been launched"; expect(result && result.message).toContain(expectedErrorMessage); }); test('should get no handle on wrong selector', async () => { // Given const url = `file:${path.join(__dirname, 'get-all-handles.test.html')}`; // prettier-ignore await p .withBrowser('chromium') .withOptions({ headless: true }) .navigateTo(url); // When const selector = p.selector('foobar'); const handles = await selector.getAllHandles(); // Then expect(Array.isArray(handles)).toBe(true); expect(handles.length).toBe(0); }); test('should get handles', async () => { // Given const url = `file:${path.join(__dirname, 'get-all-handles.test.html')}`; // prettier-ignore await p .withBrowser('chromium') .withOptions({ headless: true }) .navigateTo(url); // When const selector = p.selector('[role="row"]'); const handles = await selector.getAllHandles(); // Then expect(Array.isArray(handles)).toBe(true); expect(handles.length).toBe(3); expect(await handles[0].evaluate((node) => node.innerText)).toContain('row1'); expect(await handles[1].evaluate((node) => node.innerText)).toContain('row2'); expect(await handles[2].evaluate((node) => node.innerText)).toContain('row3'); expect(selector.toString()).toBe('selector([role="row"])'); }); test('should get handles, even when selector is created before browser is launched', async () => { // Given const url = `file:${path.join(__dirname, 'get-all-handles.test.html')}`; const selector = p.selector('[role="row"]'); // prettier-ignore await p .withBrowser('chromium') .withOptions({ headless: true }) .navigateTo(url); // When const handles = await selector.getAllHandles(); // Then expect(Array.isArray(handles)).toBe(true); expect(handles.length).toBe(3); expect(await handles[0].evaluate((node) => node.innerText)).toContain('row1'); expect(await handles[1].evaluate((node) => node.innerText)).toContain('row2'); expect(await handles[2].evaluate((node) => node.innerText)).toContain('row3'); expect(selector.toString()).toBe('selector([role="row"])'); }); });