UNPKG

playwright-testing-library

Version:
108 lines 5.37 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.withinFixture = exports.screenFixture = exports.registerSelectorsFixture = exports.queriesFixture = exports.options = exports.installTestingLibraryFixture = void 0; const test_1 = require("@playwright/test"); const helpers_1 = require("./helpers"); const queries_1 = require("./queries"); const defaultConfig = { asyncUtilExpectedState: 'visible', asyncUtilTimeout: 1000, testIdAttribute: 'data-testid', }; const options = Object.fromEntries(Object.entries(defaultConfig).map(([key, value]) => [key, [value, { option: true }]])); exports.options = options; const queriesFixture = ({ page, asyncUtilExpectedState, asyncUtilTimeout }, use) => __awaiter(void 0, void 0, void 0, function* () { return use((0, queries_1.queriesFor)(page, { asyncUtilExpectedState, asyncUtilTimeout })); }); exports.queriesFixture = queriesFixture; const screenFixture = ({ page, asyncUtilExpectedState, asyncUtilTimeout }, use) => __awaiter(void 0, void 0, void 0, function* () { const { proxy, revoke } = (0, queries_1.screenFor)(page, { asyncUtilExpectedState, asyncUtilTimeout }); yield use(proxy); revoke(); }); exports.screenFixture = screenFixture; const withinFixture = ({ asyncUtilExpectedState, asyncUtilTimeout }, use) => __awaiter(void 0, void 0, void 0, function* () { return use((root) => 'goto' in root ? (0, queries_1.screenFor)(root, { asyncUtilExpectedState, asyncUtilTimeout }).proxy : (0, queries_1.queriesFor)(root, { asyncUtilExpectedState, asyncUtilTimeout })); }); exports.withinFixture = withinFixture; const engine = () => { const getError = (error, matcher) => { if (typeof matcher === 'function' && error instanceof ReferenceError) { return new ReferenceError([ error.message, '\n⚠️ A ReferenceError was thrown when using a function TextMatch, did you reference external scope in your matcher function?', '\nProvided matcher function:', matcher instanceof TestingLibraryDeserializedFunction ? matcher.original : matcher.toString(), '\n', ].join('\n')); } return error; }; return { query(root, selector) { const args = JSON.parse(selector, window.__testingLibraryReviver); if ((0, queries_1.isAllQuery)(queryName)) throw new Error(`PlaywrightTestingLibrary: the plural '${queryName}' was used to create this Locator`); try { // @ts-expect-error const result = window.TestingLibraryDom[queryName](root, ...args); return result; } catch (error) { throw getError(error, args[0]); } }, queryAll(root, selector) { const testingLibrary = window.TestingLibraryDom; const args = JSON.parse(selector, window.__testingLibraryReviver); try { // @ts-expect-error const result = testingLibrary[queryName](root, ...args); if (!result) return []; return Array.isArray(result) ? result : [result]; } catch (error) { throw getError(error, args[0]); } }, }; }; const registerSelectorsFixture = [ ({}, use) => __awaiter(void 0, void 0, void 0, function* () { try { yield Promise.all(queries_1.synchronousQueryNames.map((name) => __awaiter(void 0, void 0, void 0, function* () { return test_1.selectors.register((0, helpers_1.queryToSelector)(name), `(${engine.toString().replace(/queryName/g, `"${name}"`)})()`); }))); } catch (error) { // eslint-disable-next-line no-console console.error('PlaywrightTestingLibrary: failed to register Testing Library functions\n', error); } yield use(); }), { scope: 'worker', auto: true }, ]; exports.registerSelectorsFixture = registerSelectorsFixture; const installTestingLibraryFixture = [ ({ context, asyncUtilExpectedState, asyncUtilTimeout, testIdAttribute }, use) => __awaiter(void 0, void 0, void 0, function* () { yield context.addInitScript(yield (0, helpers_1.buildTestingLibraryScript)({ config: { asyncUtilExpectedState, asyncUtilTimeout, testIdAttribute }, })); yield use(); }), { scope: 'test', auto: true }, ]; exports.installTestingLibraryFixture = installTestingLibraryFixture; //# sourceMappingURL=fixtures.js.map