playwright-fluent
Version:
Fluent API around playwright
70 lines (69 loc) • 3.26 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const path = tslib_1.__importStar(require("path"));
const playwright_1 = require("playwright");
const SUT = tslib_1.__importStar(require("../index"));
describe('query selector all in page', () => {
let browser = undefined;
// eslint-disable-next-line @typescript-eslint/no-empty-function
beforeEach(() => { });
afterEach(async () => {
if (browser) {
await browser.close();
}
});
test('should return an error when page has not been initalized', async () => {
// Given
const page = undefined;
// When
// Then
const expectedError = new Error("Cannot query selector 'foobar' because no browser has been launched");
await SUT.querySelectorAllInPage('foobar', page).catch((error) => expect(error).toMatchObject(expectedError));
});
test('should return an empty array when selector is not found', async () => {
// Given
browser = await playwright_1.chromium.launch({ headless: true });
const context = await browser.newContext({ viewport: null });
const page = await context.newPage();
// When
const result = await SUT.querySelectorAllInPage('foobar', page);
// Then
expect(Array.isArray(result)).toBe(true);
expect(result.length).toBe(0);
});
test('should return all found elements', async () => {
// Given
browser = await playwright_1.chromium.launch({ headless: true });
const context = await browser.newContext({ viewport: null });
const page = await context.newPage();
await page.goto(`file:${path.join(__dirname, 'query-selector-all-in-page.test.html')}`);
// When
const result = await SUT.querySelectorAllInPage('[role="row"]', page);
// Then
expect(result.length).toBe(3);
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
expect((await result[0].getProperty('innerText')).toString()).toContain('row1');
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
expect((await result[1].getProperty('innerText')).toString()).toContain('row2');
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
expect((await result[2].getProperty('innerText')).toString()).toContain('row3');
});
test('should return an empty array on page error', async () => {
// Given
browser = await playwright_1.chromium.launch({ headless: true });
const context = await browser.newContext({ viewport: null });
const page = await context.newPage();
await page.goto(`file:${path.join(__dirname, 'query-selector-all-in-page.test.html')}`);
// When
const result = await SUT.querySelectorAllInPage('[role="row"]', page);
// Then
expect(result.length).toBe(3);
// When Page is closed
await page.close();
// And I query again the selectors
const result2 = await SUT.querySelectorAllInPage('[role="row"]', page);
// Then an empty array should be returned
expect(result2.length).toBe(0);
});
});
;