@telefonica/acceptance-testing 2.17.0 → 2.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/acceptance-testing.cjs.development.js +63 -0
- package/dist/acceptance-testing.cjs.development.js.map +1 -1
- package/dist/acceptance-testing.cjs.production.min.js +1 -1
- package/dist/acceptance-testing.cjs.production.min.js.map +1 -1
- package/dist/acceptance-testing.esm.js +63 -1
- package/dist/acceptance-testing.esm.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -80,7 +80,7 @@ Type: `string`, default to `null`.
|
|
|
80
80
|
Path to resource to wait for activity on before considering the server running.
|
|
81
81
|
Must be used in conjunction with `host` and `port`.
|
|
82
82
|
|
|
83
|
-
### 4. Setup your CI to run using the [web-builder docker image](https://github.com/Telefonica/
|
|
83
|
+
### 4. Setup your CI to run using the [web-builder docker image](https://github.com/Telefonica/js-toolbox/tree/master/packages/acceptance-testing/docker/web-builder)
|
|
84
84
|
|
|
85
85
|
Github actions example:
|
|
86
86
|
|
|
@@ -1056,9 +1056,15 @@ var wait = function wait(expectation, timeout, interval) {
|
|
|
1056
1056
|
interval = 50;
|
|
1057
1057
|
}
|
|
1058
1058
|
var startTime = Date.now();
|
|
1059
|
+
var startStack = new Error().stack;
|
|
1059
1060
|
return new Promise(function (resolve, reject) {
|
|
1060
1061
|
var rejectOrRerun = function rejectOrRerun(error) {
|
|
1061
1062
|
if (Date.now() - startTime >= timeout) {
|
|
1063
|
+
if (error instanceof Error) {
|
|
1064
|
+
if (error.message === 'Element not removed') {
|
|
1065
|
+
error.stack = startStack;
|
|
1066
|
+
}
|
|
1067
|
+
}
|
|
1062
1068
|
reject(error);
|
|
1063
1069
|
return;
|
|
1064
1070
|
}
|
|
@@ -1077,6 +1083,62 @@ var wait = function wait(expectation, timeout, interval) {
|
|
|
1077
1083
|
setTimeout(runExpectation, 0);
|
|
1078
1084
|
});
|
|
1079
1085
|
};
|
|
1086
|
+
var waitForElementToBeRemoved = function waitForElementToBeRemoved(element, timeout, interval) {
|
|
1087
|
+
if (timeout === void 0) {
|
|
1088
|
+
timeout = 10000;
|
|
1089
|
+
}
|
|
1090
|
+
if (interval === void 0) {
|
|
1091
|
+
interval = 100;
|
|
1092
|
+
}
|
|
1093
|
+
var startStack = new Error().stack;
|
|
1094
|
+
var wait = /*#__PURE__*/function () {
|
|
1095
|
+
var _ref24 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {
|
|
1096
|
+
var t0, box;
|
|
1097
|
+
return _regeneratorRuntime().wrap(function _callee15$(_context15) {
|
|
1098
|
+
while (1) switch (_context15.prev = _context15.next) {
|
|
1099
|
+
case 0:
|
|
1100
|
+
t0 = Date.now();
|
|
1101
|
+
case 1:
|
|
1102
|
+
if (!(Date.now() - t0 < timeout)) {
|
|
1103
|
+
_context15.next = 11;
|
|
1104
|
+
break;
|
|
1105
|
+
}
|
|
1106
|
+
_context15.next = 4;
|
|
1107
|
+
return element.boundingBox();
|
|
1108
|
+
case 4:
|
|
1109
|
+
box = _context15.sent;
|
|
1110
|
+
if (box) {
|
|
1111
|
+
_context15.next = 7;
|
|
1112
|
+
break;
|
|
1113
|
+
}
|
|
1114
|
+
return _context15.abrupt("return");
|
|
1115
|
+
case 7:
|
|
1116
|
+
_context15.next = 9;
|
|
1117
|
+
return new Promise(function (resolve) {
|
|
1118
|
+
return setTimeout(resolve, interval);
|
|
1119
|
+
});
|
|
1120
|
+
case 9:
|
|
1121
|
+
_context15.next = 1;
|
|
1122
|
+
break;
|
|
1123
|
+
case 11:
|
|
1124
|
+
throw new Error('Element not removed');
|
|
1125
|
+
case 12:
|
|
1126
|
+
case "end":
|
|
1127
|
+
return _context15.stop();
|
|
1128
|
+
}
|
|
1129
|
+
}, _callee15);
|
|
1130
|
+
}));
|
|
1131
|
+
return function wait() {
|
|
1132
|
+
return _ref24.apply(this, arguments);
|
|
1133
|
+
};
|
|
1134
|
+
}();
|
|
1135
|
+
return wait()["catch"](function (error) {
|
|
1136
|
+
if (error.message === 'Element not removed') {
|
|
1137
|
+
error.stack = startStack;
|
|
1138
|
+
}
|
|
1139
|
+
throw error;
|
|
1140
|
+
});
|
|
1141
|
+
};
|
|
1080
1142
|
|
|
1081
1143
|
exports.createApiEndpointMock = createApiEndpointMock;
|
|
1082
1144
|
exports.getGlobalBrowser = getGlobalBrowser;
|
|
@@ -1090,5 +1152,6 @@ exports.screen = screen;
|
|
|
1090
1152
|
exports.serverHostName = serverHostName;
|
|
1091
1153
|
exports.serverPort = serverPort;
|
|
1092
1154
|
exports.wait = wait;
|
|
1155
|
+
exports.waitForElementToBeRemoved = waitForElementToBeRemoved;
|
|
1093
1156
|
exports.within = within;
|
|
1094
1157
|
//# sourceMappingURL=acceptance-testing.cjs.development.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acceptance-testing.cjs.development.js","sources":["../src/index.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs';\nimport findRoot from 'find-root';\nimport {getDocument, queries} from 'pptr-testing-library';\nimport {configureToMatchImageSnapshot} from 'jest-image-snapshot';\nimport globToRegExp from 'glob-to-regexp';\nconst execSync = require('child_process').execSync;\n\nimport type {\n Page,\n ElementHandle,\n ScreenshotOptions,\n Browser,\n ClickOptions,\n Viewport,\n GeolocationOptions,\n HTTPRequest,\n ResponseForRequest,\n} from 'puppeteer';\nimport type {getQueriesForElement} from 'pptr-testing-library';\n\ntype CustomScreenshotOptions = ScreenshotOptions & {\n skipNetworkWait?: boolean;\n};\n\nexport const getGlobalBrowser = (): Browser => (global as any).browser;\nexport const getGlobalPage = (): Page => (global as any).page;\n\nconst isCi = process.argv.includes('--ci') || process.env.CI;\nconst isUsingDockerizedChromium = isCi || new URL(getGlobalBrowser().wsEndpoint()).port === '9223';\n\nexport const serverHostName = ((): string => {\n if (isCi) {\n return 'localhost';\n }\n\n if (isUsingDockerizedChromium) {\n return process.platform === 'linux' ? '172.17.0.1' : 'host.docker.internal';\n }\n\n return 'localhost';\n})();\n\nconst rootDir = findRoot(process.cwd());\nconst pkg = JSON.parse(fs.readFileSync(path.join(rootDir, 'package.json'), 'utf-8'));\nconst projectConfig = pkg.acceptanceTests ?? {};\nconst server = (isCi ? projectConfig.ciServer : projectConfig.devServer) ?? projectConfig.server;\n\nexport const serverPort = server?.port;\n\nconst toMatchImageSnapshot = configureToMatchImageSnapshot({\n failureThreshold: 0,\n failureThresholdType: 'percent',\n customSnapshotIdentifier: ({defaultIdentifier}) => defaultIdentifier,\n});\n\nlet calledToMatchImageSnapshotOutsideDocker = false;\n\nconst localToMatchImageSnapshot = () => {\n calledToMatchImageSnapshotOutsideDocker = true;\n // let the expectation pass, then fail in afterEach. This way we allow developers to debug screenshot tests in local\n // but don't allow them to save screenshots taken outside the dockerized chromium\n return {\n message: () => '',\n pass: true,\n };\n};\n\nexpect.extend({\n toMatchImageSnapshot: isUsingDockerizedChromium ? toMatchImageSnapshot : localToMatchImageSnapshot,\n});\n\nafterEach(() => {\n if (calledToMatchImageSnapshotOutsideDocker) {\n const error = new Error(\n `Calling .toMatchImageSnapshot() is not allowed outside dockerized browser. Please, run your screenshot test in headless mode.`\n );\n error.stack = (error.stack || '').split('\\n')[0];\n throw error;\n }\n});\n\ntype WaitForPaintEndOptions = {\n fullPage?: boolean;\n captureBeyondViewport?: boolean;\n};\n\nconst waitForPaintEnd = async (\n element: ElementHandle | Page,\n {fullPage = true, captureBeyondViewport}: WaitForPaintEndOptions = {}\n) => {\n const MAX_WAIT = 15000;\n const STEP_TIME = 250;\n const t0 = Date.now();\n\n let buf1 = (await element.screenshot(\n normalizeSreenshotOptions({fullPage, captureBeyondViewport})\n )) as Buffer;\n await new Promise((r) => setTimeout(r, STEP_TIME));\n let buf2 = (await element.screenshot(\n normalizeSreenshotOptions({fullPage, captureBeyondViewport})\n )) as Buffer;\n\n // buffers are different if compare != 0\n while (buf1.compare(buf2)) {\n if (Date.now() - t0 > MAX_WAIT) {\n throw Error('Paint end timeout');\n }\n buf1 = buf2;\n await new Promise((r) => setTimeout(r, STEP_TIME));\n buf2 = (await element.screenshot(\n normalizeSreenshotOptions({fullPage, captureBeyondViewport})\n )) as Buffer;\n }\n};\n\nexport interface PageApi extends Omit<Page, 'click' | 'type' | 'select'> {\n clear: (selector: ElementHandle) => Promise<void>;\n // These are overridden:\n type: (selector: ElementHandle, text: string, options?: {delay: number}) => Promise<void>;\n click: (selector: ElementHandle, options?: ClickOptions) => Promise<void>;\n select: (selector: ElementHandle, ...values: string[]) => Promise<string[]>;\n screenshot: (options?: CustomScreenshotOptions) => Promise<Buffer | string | void>;\n}\n\nconst normalizeSreenshotOptions = ({captureBeyondViewport = false, ...options}: ScreenshotOptions = {}) => {\n // Puppeter default for captureBeyondViewport is true, but we think false is a better default.\n // When this is true, the fixed elements (like fixed footers) are relative to the original page\n // viewport, not to the full page, so those elements look weird in fullPage screenshots.\n return {...options, captureBeyondViewport};\n};\n\n// Puppeteer already calls scrollIntoViewIfNeeded before clicking an element. But it doesn't work in all situations\n// For example, when there is a fixed footer in the page and the element to click is under it, the browser won't scroll\n// because the element is already in the viewport (the ifNeeded part is important here). By forcing the scroll to the\n// center, we manage to fix these edge cases.\nconst scrollIntoView = (el: ElementHandle) => el.evaluate((e) => e.scrollIntoView({block: 'center'}));\n\nexport const getPageApi = (page: Page): PageApi => {\n const api: PageApi = Object.create(page);\n\n api.type = async (elementHandle, text, options) => {\n await scrollIntoView(elementHandle);\n return elementHandle.type(text, options);\n };\n api.click = async (elementHandle, options) => {\n await scrollIntoView(elementHandle);\n return elementHandle.click(options);\n };\n api.select = async (elementHandle, ...values) => {\n await scrollIntoView(elementHandle);\n return elementHandle.select(...values);\n };\n\n api.screenshot = async (options?: CustomScreenshotOptions) => {\n if (!options?.skipNetworkWait) {\n await page.waitForNetworkIdle();\n }\n await waitForPaintEnd(page, options);\n return page.screenshot(normalizeSreenshotOptions(options));\n };\n\n api.clear = async (elementHandle) => {\n await elementHandle.click({clickCount: 3});\n await elementHandle.press('Delete');\n };\n\n // For some reason, puppeteer browserContext.overridePermissions doesn't work with newer chrome versions.\n // This workaround polyfills the browser geolocation api to return the mocked position\n api.setGeolocation = (position: GeolocationOptions) =>\n page.evaluate((position) => {\n window.navigator.geolocation.getCurrentPosition = (callback) => {\n // @ts-ignore\n callback({\n coords: position,\n });\n };\n }, position as any);\n\n return api;\n};\n\nlet needsRequestInterception = false;\ntype RequestMatcherFn = (req: HTTPRequest) => boolean;\nlet requestHandlers: Array<{\n matcher: RequestMatcherFn;\n handler: jest.Mock<any, any>;\n}> = [];\n\nconst requestInterceptor = (req: HTTPRequest) => {\n const {handler} = requestHandlers.find(({matcher}) => matcher(req)) ?? {handler: null};\n if (!handler) {\n req.continue();\n return;\n }\n const response = handler(req);\n req.respond(response);\n};\n\nexport const interceptRequest = (\n matcher: RequestMatcherFn\n): jest.Mock<Partial<ResponseForRequest>, [HTTPRequest]> => {\n needsRequestInterception = true;\n const spy = jest.fn();\n requestHandlers.push({matcher, handler: spy});\n return spy;\n};\n\ntype ApiEndpointMock = {\n spyOn(path: string, method?: string): jest.Mock<unknown, [HTTPRequest]>;\n};\n\nexport const createApiEndpointMock = ({baseUrl}: {baseUrl: string}): ApiEndpointMock => {\n interceptRequest((req) => req.method() === 'OPTIONS' && req.url().startsWith(baseUrl)).mockImplementation(\n () => ({\n status: 204,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'POST,PATCH,PUT,GET,OPTIONS',\n 'Access-Control-Allow-Headers': '*',\n },\n })\n );\n\n return {\n spyOn(path: string, method: string = 'GET') {\n const matcher = (req: HTTPRequest) => {\n const url = req.url();\n const urlPath = url.substring(baseUrl.length);\n return (\n req.method() === method && url.startsWith(baseUrl) && !!urlPath.match(globToRegExp(path))\n );\n };\n\n const spy = jest.fn();\n\n interceptRequest(matcher).mockImplementation((req) => {\n const spyResult = spy(req);\n const status = spyResult.status ?? 200;\n const resBody = spyResult.body || spyResult;\n return {\n status,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n },\n contentType: 'application/json',\n body: JSON.stringify(resBody),\n };\n });\n\n return spy;\n },\n };\n};\n\ntype CookieConfig = {\n name: string;\n value: string;\n url?: string;\n domain?: string;\n path?: string;\n secure?: boolean;\n httpOnly?: boolean;\n sameSite?: 'Strict' | 'Lax' | 'None';\n expires?: number;\n priority?: 'Low' | 'Medium' | 'High';\n sameParty?: boolean;\n sourceScheme?: 'Unset' | 'NonSecure' | 'Secure';\n sourcePort?: number;\n};\n\ninterface OpenPageCommonConfig {\n userAgent?: string;\n viewport?: Viewport;\n isDarkMode?: boolean;\n cookies?: Array<CookieConfig>;\n}\n\ninterface OpenPageUrlConfig extends OpenPageCommonConfig {\n url: string;\n}\n\ninterface OpenPagePathConfig extends OpenPageCommonConfig {\n url?: undefined;\n\n path?: string;\n port?: number;\n protocol?: string;\n hostname?: string;\n}\n\ntype OpenPageConfig = OpenPageUrlConfig | OpenPagePathConfig;\n\nexport const openPage = async ({\n userAgent,\n isDarkMode,\n viewport,\n cookies,\n ...urlConfig\n}: OpenPageConfig): Promise<PageApi> => {\n const url = ((): string => {\n if (urlConfig.url !== undefined) {\n return urlConfig.url;\n }\n\n const {path = '/', port = serverPort, protocol = 'http', hostname = serverHostName} = urlConfig;\n\n if (!port) {\n const error = new Error(\n 'You must specify a port. You can specify it when calling openPage() or by configuring a dev and ci server in the acceptanceTests config in your package.json'\n );\n // Error.captureStackTrace(error, openPage);\n throw error;\n }\n\n return `${protocol}://${hostname}:${port}${path}`;\n })();\n\n const currentUserAgent = userAgent || (await getGlobalBrowser().userAgent());\n const page = getGlobalPage();\n\n await page.bringToFront();\n if (viewport) {\n await page.setViewport(viewport);\n }\n if (cookies) {\n await page.setCookie(...cookies);\n }\n await page.setUserAgent(`${currentUserAgent} acceptance-test`);\n await page.emulateMediaFeatures([{name: 'prefers-color-scheme', value: isDarkMode ? 'dark' : 'light'}]);\n\n // A set of styles to make screenshot tests more reliable.\n await page.evaluateOnNewDocument(() => {\n const style = document.createElement('style');\n style.innerHTML = `\n *, *:after, *:before {\n transition-delay: 0s !important;\n transition-duration: 0s !important;\n animation-delay: -0.0001s !important;\n animation-duration: 0s !important;\n animation-play-state: paused !important;\n caret-color: transparent !important;\n font-variant-ligatures: none !important;\n }\n *::-webkit-scrollbar {\n display: none !important;\n width: 0 !important;\n height: 0 !important;\n }\n `;\n window.addEventListener('DOMContentLoaded', () => {\n document.head.appendChild(style);\n });\n });\n\n if (needsRequestInterception) {\n await page.setRequestInterception(true);\n page.on('request', requestInterceptor);\n }\n\n try {\n await page.goto(url);\n } catch (e) {\n if ((e as Error).message.includes('net::ERR_CONNECTION_REFUSED')) {\n const connectionError = new Error(`Could not connect to ${url}. Is the server running?`);\n Error.captureStackTrace(connectionError, openPage);\n throw connectionError;\n } else {\n throw e;\n }\n }\n await page.waitForFunction('document.fonts.status === \"loaded\"');\n\n return getPageApi(page);\n};\n\nconst buildQueryMethods = ({page, element}: {page?: Page; element?: ElementHandle} = {}): ReturnType<\n typeof getQueriesForElement\n> => {\n const boundQueries: any = {};\n for (const [queryName, queryFn] of Object.entries(queries)) {\n boundQueries[queryName] = async (...args: any) => {\n const doc = await getDocument(page ?? getGlobalPage());\n const body = await doc.$('body');\n const queryArgs = [...args];\n if (queryName.startsWith('findBy')) {\n if (queryArgs.length === 1) {\n queryArgs.push(undefined);\n }\n queryArgs.push({timeout: 10000});\n }\n const elementHandle: ElementHandle = await queryFn(element ?? body, ...queryArgs);\n\n const newElementHandle = Object.create(elementHandle);\n\n newElementHandle.screenshot = async (options: CustomScreenshotOptions) => {\n if (!options?.skipNetworkWait) {\n await (page ?? getGlobalPage()).waitForNetworkIdle();\n }\n await waitForPaintEnd(elementHandle, {...options, fullPage: false});\n return elementHandle.screenshot(normalizeSreenshotOptions(options));\n };\n\n newElementHandle.click = async (options?: ClickOptions) => {\n await scrollIntoView(elementHandle);\n return elementHandle.click(options);\n };\n\n newElementHandle.type = async (text: string, options?: {delay: number}) => {\n await scrollIntoView(elementHandle);\n return elementHandle.type(text, options);\n };\n\n newElementHandle.select = async (...values: Array<string>) => {\n await scrollIntoView(elementHandle);\n return elementHandle.select(...values);\n };\n\n return newElementHandle;\n };\n }\n return boundQueries;\n};\n\nexport const getScreen = (page: Page) => buildQueryMethods({page});\n\nexport const screen = buildQueryMethods();\n\nexport const within = (element: ElementHandle) => buildQueryMethods({element});\n\nexport type {ElementHandle, Viewport} from 'puppeteer';\n\nbeforeEach(async () => {\n await getGlobalPage().setRequestInterception(false);\n // by resetting the page we clean up all the evaluateOnNewDocument calls, which are persistent between documents\n await (global as any).jestPuppeteer.resetPage();\n});\n\nafterEach(async () => {\n try {\n const page = getGlobalPage();\n requestHandlers = [];\n needsRequestInterception = false;\n page.off('request', requestInterceptor);\n\n // clear tab, this way we clear the DOM and stop js execution or pending requests\n await page.goto('about:blank');\n } catch (e) {\n // ignore, at this point page might be destroyed\n }\n});\n\n/**\n * Returns a new path to the file that can be used by chromium in acceptance tests\n *\n * To be able to use `element.uploadFile()` in a dockerized chromium, the file must exist in the\n * host and the docker, and both sides must use the same path.\n *\n * To workaround this bug or limitation, this function prepares the file by copying it to /tmp in\n * the host and the container.\n */\nexport const prepareFile = (filepath: string): string => {\n const isLocal = !isCi;\n const isHeadless = !!process.env.HEADLESS;\n const usesDocker = isLocal && isHeadless;\n\n const dockerComposeFile = path.join(__dirname, '..', 'docker-compose.yaml');\n\n if (usesDocker) {\n const containerId = execSync(`docker-compose -f ${dockerComposeFile} ps -q`).toString().trim();\n\n if (!containerId) {\n throw Error('acceptance-testing container not found');\n }\n\n execSync(`docker cp ${filepath} ${containerId}:/tmp`);\n\n const newPath = path.join('/tmp', path.basename(filepath));\n\n fs.copyFileSync(filepath, newPath);\n\n return newPath;\n } else {\n return filepath;\n }\n};\n\n/**\n * A convenience method to defer an expectation\n */\nexport const wait = <T>(expectation: () => Promise<T> | T, timeout = 10000, interval = 50): Promise<T> => {\n const startTime = Date.now();\n return new Promise((resolve, reject) => {\n const rejectOrRerun = (error: unknown) => {\n if (Date.now() - startTime >= timeout) {\n reject(error);\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n setTimeout(runExpectation, interval);\n };\n const runExpectation = () => {\n try {\n Promise.resolve(expectation())\n .then((r) => resolve(r))\n .catch(rejectOrRerun);\n } catch (error) {\n rejectOrRerun(error);\n }\n };\n setTimeout(runExpectation, 0);\n });\n};\n"],"names":["execSync","require","getGlobalBrowser","global","browser","getGlobalPage","page","isCi","process","argv","includes","env","CI","isUsingDockerizedChromium","URL","wsEndpoint","port","serverHostName","platform","rootDir","findRoot","cwd","pkg","JSON","parse","fs","readFileSync","path","join","projectConfig","_pkg$acceptanceTests","acceptanceTests","server","_ref","ciServer","devServer","serverPort","toMatchImageSnapshot","configureToMatchImageSnapshot","failureThreshold","failureThresholdType","customSnapshotIdentifier","_ref2","defaultIdentifier","calledToMatchImageSnapshotOutsideDocker","localToMatchImageSnapshot","message","pass","expect","extend","afterEach","error","Error","stack","split","waitForPaintEnd","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","element","_temp","_ref4","_ref4$fullPage","fullPage","captureBeyondViewport","MAX_WAIT","STEP_TIME","t0","buf1","buf2","wrap","_callee$","_context","prev","next","Date","now","screenshot","normalizeSreenshotOptions","sent","Promise","r","setTimeout","compare","stop","_x","_x2","apply","arguments","_temp2","_ref5$captureBeyondVi","_ref5","options","_objectWithoutPropertiesLoose","_excluded","_extends","scrollIntoView","el","evaluate","e","block","getPageApi","api","Object","create","type","_ref6","_callee2","elementHandle","text","_callee2$","_context2","abrupt","_x3","_x4","_x5","click","_ref7","_callee3","_callee3$","_context3","_x6","_x7","select","_ref8","_callee4","_len","values","_key","_args4","_callee4$","_context4","length","Array","_x8","_ref9","_callee5","_callee5$","_context5","skipNetworkWait","waitForNetworkIdle","_x9","clear","_ref10","_callee6","_callee6$","_context6","clickCount","press","_x10","setGeolocation","position","window","navigator","geolocation","getCurrentPosition","callback","coords","needsRequestInterception","requestHandlers","requestInterceptor","req","_ref11","_requestHandlers$find","find","_ref12","matcher","handler","response","respond","interceptRequest","spy","jest","fn","push","createApiEndpointMock","_ref13","baseUrl","method","url","startsWith","mockImplementation","status","headers","spyOn","urlPath","substring","match","globToRegExp","spyResult","_spyResult$status","resBody","body","contentType","stringify","openPage","_ref15","_callee7","_ref14","userAgent","isDarkMode","viewport","cookies","urlConfig","currentUserAgent","connectionError","_callee7$","_context7","_excluded2","undefined","_urlConfig$path","_urlConfig$port","_urlConfig$protocol","protocol","_urlConfig$hostname","hostname","bringToFront","setViewport","setCookie","setUserAgent","emulateMediaFeatures","name","value","evaluateOnNewDocument","style","document","createElement","innerHTML","addEventListener","head","appendChild","setRequestInterception","on","t1","captureStackTrace","waitForFunction","_x11","buildQueryMethods","_temp3","_ref16","boundQueries","_loop","_Object$entries$_i","_Object$entries","_i","queryName","queryFn","_callee12","doc","_len2","args","_key2","queryArgs","newElementHandle","_args12","_callee12$","_context12","getDocument","$","concat","timeout","_ref18","_callee8","_callee8$","_context8","_x12","_ref19","_callee9","_callee9$","_context9","_x13","_ref20","_callee10","_callee10$","_context10","_x14","_x15","_callee11","_args11","_callee11$","_context11","entries","queries","getScreen","screen","within","beforeEach","_callee13","_callee13$","_context13","jestPuppeteer","resetPage","_callee14","_callee14$","_context14","off","prepareFile","filepath","isLocal","isHeadless","HEADLESS","usesDocker","dockerComposeFile","__dirname","containerId","toString","trim","newPath","basename","copyFileSync","wait","expectation","interval","startTime","resolve","reject","rejectOrRerun","runExpectation","then"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAMA,QAAQ,gBAAGC,OAAO,CAAC,eAAe,CAAC,CAACD,QAAQ;IAmBrCE,gBAAgB,GAAG,SAAnBA,gBAAgBA;EAAA,OAAmBC,MAAc,CAACC,OAAO;AAAA;IACzDC,aAAa,GAAG,SAAhBA,aAAaA;EAAA,OAAgBF,MAAc,CAACG,IAAI;AAAA;AAE7D,IAAMC,IAAI,gBAAGC,OAAO,CAACC,IAAI,CAACC,QAAQ,CAAC,MAAM,CAAC,IAAIF,OAAO,CAACG,GAAG,CAACC,EAAE;AAC5D,IAAMC,yBAAyB,GAAGN,IAAI,qBAAQO,GAAG,eAACZ,gBAAgB,EAAE,CAACa,UAAU,EAAE,CAAC,CAACC,IAAI,KAAK,MAAM;IAErFC,cAAc,gBAAI;EAC3B,IAAIV,IAAI,EAAE;IACN,OAAO,WAAW;;EAGtB,IAAIM,yBAAyB,EAAE;IAC3B,OAAOL,OAAO,CAACU,QAAQ,KAAK,OAAO,GAAG,YAAY,GAAG,sBAAsB;;EAG/E,OAAO,WAAW;AACtB,CAAC;AAED,IAAMC,OAAO,gBAAGC,QAAQ,eAACZ,OAAO,CAACa,GAAG,EAAE,CAAC;AACvC,IAAMC,GAAG,gBAAGC,IAAI,CAACC,KAAK,eAACC,EAAE,CAACC,YAAY,eAACC,IAAI,CAACC,IAAI,CAACT,OAAO,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;AACpF,IAAMU,aAAa,IAAAC,oBAAA,GAAGR,GAAG,CAACS,eAAe,YAAAD,oBAAA,GAAI,EAAE;AAC/C,IAAME,MAAM,IAAAC,IAAA,GAAI1B,IAAI,GAAGsB,aAAa,CAACK,QAAQ,GAAGL,aAAa,CAACM,SAAS,YAAAF,IAAA,GAAKJ,aAAa,CAACG,MAAM;IAEnFI,UAAU,GAAGJ,MAAM,oBAANA,MAAM,CAAEhB;AAElC,IAAMqB,oBAAoB,gBAAGC,+CAA6B,CAAC;EACvDC,gBAAgB,EAAE,CAAC;EACnBC,oBAAoB,EAAE,SAAS;EAC/BC,wBAAwB,EAAE,SAAAA,yBAAAC,KAAA;IAAA,IAAEC,iBAAiB,GAAAD,KAAA,CAAjBC,iBAAiB;IAAA,OAAMA,iBAAiB;;CACvE,CAAC;AAEF,IAAIC,uCAAuC,GAAG,KAAK;AAEnD,IAAMC,yBAAyB,GAAG,SAA5BA,yBAAyBA;EAC3BD,uCAAuC,GAAG,IAAI;;;EAG9C,OAAO;IACHE,OAAO,EAAE,SAAAA;MAAA,OAAM,EAAE;;IACjBC,IAAI,EAAE;GACT;AACL,CAAC;AAEDC,MAAM,CAACC,MAAM,CAAC;EACVZ,oBAAoB,EAAExB,yBAAyB,GAAGwB,oBAAoB,GAAGQ;CAC5E,CAAC;AAEFK,SAAS,CAAC;EACN,IAAIN,uCAAuC,EAAE;IACzC,IAAMO,KAAK,GAAG,IAAIC,KAAK,gIAC4G,CAClI;IACDD,KAAK,CAACE,KAAK,GAAG,CAACF,KAAK,CAACE,KAAK,IAAI,EAAE,EAAEC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChD,MAAMH,KAAK;;AAEnB,CAAC,CAAC;AAOF,IAAMI,eAAe;EAAA,IAAAC,KAAA,gBAAAC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,QACpBC,OAA6B,EAAAC,KAAA;IAAA,IAAAC,KAAA,EAAAC,cAAA,EAAAC,QAAA,EAAAC,qBAAA,EAAAC,QAAA,EAAAC,SAAA,EAAAC,EAAA,EAAAC,IAAA,EAAAC,IAAA;IAAA,OAAAb,mBAAA,GAAAc,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAAb,KAAA,GAAAD,KAAA,cACsC,EAAE,GAAAA,KAAA,EAAAE,cAAA,GAAAD,KAAA,CAApEE,QAAQ,EAARA,QAAQ,GAAAD,cAAA,cAAG,IAAI,GAAAA,cAAA,EAAEE,qBAAqB,GAAAH,KAAA,CAArBG,qBAAqB;UAEjCC,QAAQ,GAAG,KAAK;UAChBC,SAAS,GAAG,GAAG;UACfC,EAAE,GAAGQ,IAAI,CAACC,GAAG,EAAE;UAAAJ,QAAA,CAAAE,IAAA;UAAA,OAEHf,OAAO,CAACkB,UAAU,CAChCC,yBAAyB,CAAC;YAACf,QAAQ,EAARA,QAAQ;YAAEC,qBAAqB,EAArBA;WAAsB,CAAC,CAC/D;QAAA;UAFGI,IAAI,GAAAI,QAAA,CAAAO,IAAA;UAAAP,QAAA,CAAAE,IAAA;UAAA,OAGF,IAAIM,OAAO,CAAC,UAACC,CAAC;YAAA,OAAKC,UAAU,CAACD,CAAC,EAAEf,SAAS,CAAC;YAAC;QAAA;UAAAM,QAAA,CAAAE,IAAA;UAAA,OAChCf,OAAO,CAACkB,UAAU,CAChCC,yBAAyB,CAAC;YAACf,QAAQ,EAARA,QAAQ;YAAEC,qBAAqB,EAArBA;WAAsB,CAAC,CAC/D;QAAA;UAFGK,IAAI,GAAAG,QAAA,CAAAO,IAAA;QAAA;UAAA,KAKDX,IAAI,CAACe,OAAO,CAACd,IAAI,CAAC;YAAAG,QAAA,CAAAE,IAAA;YAAA;;UAAA,MACjBC,IAAI,CAACC,GAAG,EAAE,GAAGT,EAAE,GAAGF,QAAQ;YAAAO,QAAA,CAAAE,IAAA;YAAA;;UAAA,MACpBxB,KAAK,CAAC,mBAAmB,CAAC;QAAA;UAEpCkB,IAAI,GAAGC,IAAI;UAACG,QAAA,CAAAE,IAAA;UAAA,OACN,IAAIM,OAAO,CAAC,UAACC,CAAC;YAAA,OAAKC,UAAU,CAACD,CAAC,EAAEf,SAAS,CAAC;YAAC;QAAA;UAAAM,QAAA,CAAAE,IAAA;UAAA,OACpCf,OAAO,CAACkB,UAAU,CAC5BC,yBAAyB,CAAC;YAACf,QAAQ,EAARA,QAAQ;YAAEC,qBAAqB,EAArBA;WAAsB,CAAC,CAC/D;QAAA;UAFDK,IAAI,GAAAG,QAAA,CAAAO,IAAA;UAAAP,QAAA,CAAAE,IAAA;UAAA;QAAA;QAAA;UAAA,OAAAF,QAAA,CAAAY,IAAA;;OAAA1B,OAAA;GAIX;EAAA,gBA3BKL,eAAeA,CAAAgC,EAAA,EAAAC,GAAA;IAAA,OAAAhC,KAAA,CAAAiC,KAAA,OAAAC,SAAA;;AAAA,GA2BpB;AAWD,IAAMV,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAAW,MAAA;kCAAqE,EAAE,GAAAA,MAAA;IAAAC,qBAAA,GAAAC,KAAA,CAAlE3B,qBAAqB;IAArBA,qBAAqB,GAAA0B,qBAAA,cAAG,KAAK,GAAAA,qBAAA;IAAKE,OAAO,GAAAC,6BAAA,CAAAF,KAAA,EAAAG,SAAA;;;;EAIzE,OAAAC,QAAA,KAAWH,OAAO;IAAE5B,qBAAqB,EAArBA;;AACxB,CAAC;AAED;AACA;AACA;AACA;AACA,IAAMgC,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,EAAiB;EAAA,OAAKA,EAAE,CAACC,QAAQ,CAAC,UAACC,CAAC;IAAA,OAAKA,CAAC,CAACH,cAAc,CAAC;MAACI,KAAK,EAAE;KAAS,CAAC;IAAC;AAAA;IAExFC,UAAU,GAAG,SAAbA,UAAUA,CAAIjG,IAAU;EACjC,IAAMkG,GAAG,GAAYC,MAAM,CAACC,MAAM,CAACpG,IAAI,CAAC;EAExCkG,GAAG,CAACG,IAAI;IAAA,IAAAC,KAAA,GAAAnD,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAkD,SAAOC,aAAa,EAAEC,IAAI,EAAEjB,OAAO;MAAA,OAAApC,mBAAA,GAAAc,IAAA,UAAAwC,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAtC,IAAA,GAAAsC,SAAA,CAAArC,IAAA;UAAA;YAAAqC,SAAA,CAAArC,IAAA;YAAA,OACpCsB,cAAc,CAACY,aAAa,CAAC;UAAA;YAAA,OAAAG,SAAA,CAAAC,MAAA,WAC5BJ,aAAa,CAACH,IAAI,CAACI,IAAI,EAAEjB,OAAO,CAAC;UAAA;UAAA;YAAA,OAAAmB,SAAA,CAAA3B,IAAA;;SAAAuB,QAAA;KAC3C;IAAA,iBAAAM,GAAA,EAAAC,GAAA,EAAAC,GAAA;MAAA,OAAAT,KAAA,CAAAnB,KAAA,OAAAC,SAAA;;;EACDc,GAAG,CAACc,KAAK;IAAA,IAAAC,KAAA,GAAA9D,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA6D,SAAOV,aAAa,EAAEhB,OAAO;MAAA,OAAApC,mBAAA,GAAAc,IAAA,UAAAiD,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA/C,IAAA,GAAA+C,SAAA,CAAA9C,IAAA;UAAA;YAAA8C,SAAA,CAAA9C,IAAA;YAAA,OAC/BsB,cAAc,CAACY,aAAa,CAAC;UAAA;YAAA,OAAAY,SAAA,CAAAR,MAAA,WAC5BJ,aAAa,CAACQ,KAAK,CAACxB,OAAO,CAAC;UAAA;UAAA;YAAA,OAAA4B,SAAA,CAAApC,IAAA;;SAAAkC,QAAA;KACtC;IAAA,iBAAAG,GAAA,EAAAC,GAAA;MAAA,OAAAL,KAAA,CAAA9B,KAAA,OAAAC,SAAA;;;EACDc,GAAG,CAACqB,MAAM;IAAA,IAAAC,KAAA,GAAArE,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAoE,SAAOjB,aAAa;MAAA,IAAAkB,IAAA;QAAAC,MAAA;QAAAC,IAAA;QAAAC,MAAA,GAAAzC,SAAA;MAAA,OAAAhC,mBAAA,GAAAc,IAAA,UAAA4D,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA1D,IAAA,GAAA0D,SAAA,CAAAzD,IAAA;UAAA;YAAAyD,SAAA,CAAAzD,IAAA;YAAA,OACvBsB,cAAc,CAACY,aAAa,CAAC;UAAA;YAAA,KAAAkB,IAAA,GAAAG,MAAA,CAAAG,MAAA,EADDL,MAAM,OAAAM,KAAA,CAAAP,IAAA,OAAAA,IAAA,WAAAE,IAAA,MAAAA,IAAA,GAAAF,IAAA,EAAAE,IAAA;cAAND,MAAM,CAAAC,IAAA,QAAAC,MAAA,CAAAD,IAAA;;YAAA,OAAAG,SAAA,CAAAnB,MAAA,WAEjCJ,aAAa,CAACe,MAAM,CAAApC,KAAA,CAApBqB,aAAa,EAAWmB,MAAM,CAAC;UAAA;UAAA;YAAA,OAAAI,SAAA,CAAA/C,IAAA;;SAAAyC,QAAA;KACzC;IAAA,iBAAAS,GAAA;MAAA,OAAAV,KAAA,CAAArC,KAAA,OAAAC,SAAA;;;EAEDc,GAAG,CAACzB,UAAU;IAAA,IAAA0D,KAAA,GAAAhF,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA+E,SAAO5C,OAAiC;MAAA,OAAApC,mBAAA,GAAAc,IAAA,UAAAmE,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAjE,IAAA,GAAAiE,SAAA,CAAAhE,IAAA;UAAA;YAAA,IAChDkB,OAAO,YAAPA,OAAO,CAAE+C,eAAe;cAAAD,SAAA,CAAAhE,IAAA;cAAA;;YAAAgE,SAAA,CAAAhE,IAAA;YAAA,OACnBtE,IAAI,CAACwI,kBAAkB,EAAE;UAAA;YAAAF,SAAA,CAAAhE,IAAA;YAAA,OAE7BrB,eAAe,CAACjD,IAAI,EAAEwF,OAAO,CAAC;UAAA;YAAA,OAAA8C,SAAA,CAAA1B,MAAA,WAC7B5G,IAAI,CAACyE,UAAU,CAACC,yBAAyB,CAACc,OAAO,CAAC,CAAC;UAAA;UAAA;YAAA,OAAA8C,SAAA,CAAAtD,IAAA;;SAAAoD,QAAA;KAC7D;IAAA,iBAAAK,GAAA;MAAA,OAAAN,KAAA,CAAAhD,KAAA,OAAAC,SAAA;;;EAEDc,GAAG,CAACwC,KAAK;IAAA,IAAAC,MAAA,GAAAxF,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAuF,SAAOpC,aAAa;MAAA,OAAApD,mBAAA,GAAAc,IAAA,UAAA2E,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAzE,IAAA,GAAAyE,SAAA,CAAAxE,IAAA;UAAA;YAAAwE,SAAA,CAAAxE,IAAA;YAAA,OACtBkC,aAAa,CAACQ,KAAK,CAAC;cAAC+B,UAAU,EAAE;aAAE,CAAC;UAAA;YAAAD,SAAA,CAAAxE,IAAA;YAAA,OACpCkC,aAAa,CAACwC,KAAK,CAAC,QAAQ,CAAC;UAAA;UAAA;YAAA,OAAAF,SAAA,CAAA9D,IAAA;;SAAA4D,QAAA;KACtC;IAAA,iBAAAK,IAAA;MAAA,OAAAN,MAAA,CAAAxD,KAAA,OAAAC,SAAA;;;;;EAIDc,GAAG,CAACgD,cAAc,GAAG,UAACC,QAA4B;IAAA,OAC9CnJ,IAAI,CAAC8F,QAAQ,CAAC,UAACqD,QAAQ;MACnBC,MAAM,CAACC,SAAS,CAACC,WAAW,CAACC,kBAAkB,GAAG,UAACC,QAAQ;;QAEvDA,QAAQ,CAAC;UACLC,MAAM,EAAEN;SACX,CAAC;OACL;KACJ,EAAEA,QAAe,CAAC;;EAEvB,OAAOjD,GAAG;AACd;AAEA,IAAIwD,wBAAwB,GAAG,KAAK;AAEpC,IAAIC,eAAe,GAGd,EAAE;AAEP,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIC,GAAgB;;EACxC,IAAAC,MAAA,IAAAC,qBAAA,GAAkBJ,eAAe,CAACK,IAAI,CAAC,UAAAC,MAAA;MAAA,IAAEC,OAAO,GAAAD,MAAA,CAAPC,OAAO;MAAA,OAAMA,OAAO,CAACL,GAAG,CAAC;MAAC,YAAAE,qBAAA,GAAI;MAACI,OAAO,EAAE;KAAK;IAA/EA,OAAO,GAAAL,MAAA,CAAPK,OAAO;EACd,IAAI,CAACA,OAAO,EAAE;IACVN,GAAG,YAAS,EAAE;IACd;;EAEJ,IAAMO,QAAQ,GAAGD,OAAO,CAACN,GAAG,CAAC;EAC7BA,GAAG,CAACQ,OAAO,CAACD,QAAQ,CAAC;AACzB,CAAC;IAEYE,gBAAgB,GAAG,SAAnBA,gBAAgBA,CACzBJ,OAAyB;EAEzBR,wBAAwB,GAAG,IAAI;EAC/B,IAAMa,GAAG,GAAGC,IAAI,CAACC,EAAE,EAAE;EACrBd,eAAe,CAACe,IAAI,CAAC;IAACR,OAAO,EAAPA,OAAO;IAAEC,OAAO,EAAEI;GAAI,CAAC;EAC7C,OAAOA,GAAG;AACd;IAMaI,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAAC,MAAA;MAAKC,OAAO,GAAAD,MAAA,CAAPC,OAAO;EAC1CP,gBAAgB,CAAC,UAACT,GAAG;IAAA,OAAKA,GAAG,CAACiB,MAAM,EAAE,KAAK,SAAS,IAAIjB,GAAG,CAACkB,GAAG,EAAE,CAACC,UAAU,CAACH,OAAO,CAAC;IAAC,CAACI,kBAAkB,CACrG;IAAA,OAAO;MACHC,MAAM,EAAE,GAAG;MACXC,OAAO,EAAE;QACL,6BAA6B,EAAE,GAAG;QAClC,8BAA8B,EAAE,4BAA4B;QAC5D,8BAA8B,EAAE;;KAEvC;GAAC,CACL;EAED,OAAO;IACHC,KAAK,WAAAA,MAAC/J,IAAY,EAAEyJ;UAAAA;QAAAA,SAAiB,KAAK;;MACtC,IAAMZ,OAAO,GAAG,SAAVA,OAAOA,CAAIL,GAAgB;QAC7B,IAAMkB,GAAG,GAAGlB,GAAG,CAACkB,GAAG,EAAE;QACrB,IAAMM,OAAO,GAAGN,GAAG,CAACO,SAAS,CAACT,OAAO,CAAC7C,MAAM,CAAC;QAC7C,OACI6B,GAAG,CAACiB,MAAM,EAAE,KAAKA,MAAM,IAAIC,GAAG,CAACC,UAAU,CAACH,OAAO,CAAC,IAAI,CAAC,CAACQ,OAAO,CAACE,KAAK,CAACC,YAAY,CAACnK,IAAI,CAAC,CAAC;OAEhG;MAED,IAAMkJ,GAAG,GAAGC,IAAI,CAACC,EAAE,EAAE;MAErBH,gBAAgB,CAACJ,OAAO,CAAC,CAACe,kBAAkB,CAAC,UAACpB,GAAG;;QAC7C,IAAM4B,SAAS,GAAGlB,GAAG,CAACV,GAAG,CAAC;QAC1B,IAAMqB,MAAM,IAAAQ,iBAAA,GAAGD,SAAS,CAACP,MAAM,YAAAQ,iBAAA,GAAI,GAAG;QACtC,IAAMC,OAAO,GAAGF,SAAS,CAACG,IAAI,IAAIH,SAAS;QAC3C,OAAO;UACHP,MAAM,EAANA,MAAM;UACNC,OAAO,EAAE;YACL,6BAA6B,EAAE;WAClC;UACDU,WAAW,EAAE,kBAAkB;UAC/BD,IAAI,EAAE3K,IAAI,CAAC6K,SAAS,CAACH,OAAO;SAC/B;OACJ,CAAC;MAEF,OAAOpB,GAAG;;GAEjB;AACL;IAwCawB,QAAQ;EAAA,IAAAC,MAAA,gBAAA7I,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA4I,SAAAC,MAAA;IAAA,IAAAC,SAAA,EAAAC,UAAA,EAAAC,QAAA,EAAAC,OAAA,EAAAC,SAAA,EAAAxB,GAAA,EAAAyB,gBAAA,EAAAxM,IAAA,EAAAyM,eAAA;IAAA,OAAArJ,mBAAA,GAAAc,IAAA,UAAAwI,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAtI,IAAA,GAAAsI,SAAA,CAAArI,IAAA;QAAA;UACpB6H,SAAS,GAAAD,MAAA,CAATC,SAAS,EACTC,UAAU,GAAAF,MAAA,CAAVE,UAAU,EACVC,QAAQ,GAAAH,MAAA,CAARG,QAAQ,EACRC,OAAO,GAAAJ,MAAA,CAAPI,OAAO,EACJC,SAAS,gBAAA9G,6BAAA,CAAAyG,MAAA,EAAAU,UAAA;UAEN7B,GAAG,GAAI;YACT,IAAIwB,SAAS,CAACxB,GAAG,KAAK8B,SAAS,EAAE;cAC7B,OAAON,SAAS,CAACxB,GAAG;;YAGxB,IAAA+B,eAAA,GAAsFP,SAAS,CAAxFlL,IAAI;cAAJA,IAAI,GAAAyL,eAAA,cAAG,GAAG,GAAAA,eAAA;cAAAC,eAAA,GAAqER,SAAS,CAA5E7L,IAAI;cAAJA,IAAI,GAAAqM,eAAA,cAAGjL,UAAU,GAAAiL,eAAA;cAAAC,mBAAA,GAAkDT,SAAS,CAAzDU,QAAQ;cAARA,QAAQ,GAAAD,mBAAA,cAAG,MAAM,GAAAA,mBAAA;cAAAE,mBAAA,GAA+BX,SAAS,CAAtCY,QAAQ;cAARA,QAAQ,GAAAD,mBAAA,cAAGvM,cAAc,GAAAuM,mBAAA;YAElF,IAAI,CAACxM,IAAI,EAAE;cACP,IAAMmC,KAAK,GAAG,IAAIC,KAAK,CACnB,8JAA8J,CACjK;;cAED,MAAMD,KAAK;;YAGf,OAAUoK,QAAQ,WAAME,QAAQ,SAAIzM,IAAI,GAAGW,IAAI;WAClD,EAAG;UAAAsL,SAAA,CAAA5I,EAAA,GAEqBoI,SAAS;UAAA,IAAAQ,SAAA,CAAA5I,EAAA;YAAA4I,SAAA,CAAArI,IAAA;YAAA;;UAAAqI,SAAA,CAAArI,IAAA;UAAA,OAAW1E,gBAAgB,EAAE,CAACuM,SAAS,EAAE;QAAA;UAAAQ,SAAA,CAAA5I,EAAA,GAAA4I,SAAA,CAAAhI,IAAA;QAAA;UAArE6H,gBAAgB,GAAAG,SAAA,CAAA5I,EAAA;UAChB/D,IAAI,GAAGD,aAAa,EAAE;UAAA4M,SAAA,CAAArI,IAAA;UAAA,OAEtBtE,IAAI,CAACoN,YAAY,EAAE;QAAA;UAAA,KACrBf,QAAQ;YAAAM,SAAA,CAAArI,IAAA;YAAA;;UAAAqI,SAAA,CAAArI,IAAA;UAAA,OACFtE,IAAI,CAACqN,WAAW,CAAChB,QAAQ,CAAC;QAAA;UAAA,KAEhCC,OAAO;YAAAK,SAAA,CAAArI,IAAA;YAAA;;UAAAqI,SAAA,CAAArI,IAAA;UAAA,OACDtE,IAAI,CAACsN,SAAS,CAAAnI,KAAA,CAAdnF,IAAI,EAAcsM,OAAO,CAAC;QAAA;UAAAK,SAAA,CAAArI,IAAA;UAAA,OAE9BtE,IAAI,CAACuN,YAAY,CAAIf,gBAAgB,qBAAkB,CAAC;QAAA;UAAAG,SAAA,CAAArI,IAAA;UAAA,OACxDtE,IAAI,CAACwN,oBAAoB,CAAC,CAAC;YAACC,IAAI,EAAE,sBAAsB;YAAEC,KAAK,EAAEtB,UAAU,GAAG,MAAM,GAAG;WAAQ,CAAC,CAAC;QAAA;UAAAO,SAAA,CAAArI,IAAA;UAAA,OAGjGtE,IAAI,CAAC2N,qBAAqB,CAAC;YAC7B,IAAMC,KAAK,GAAGC,QAAQ,CAACC,aAAa,CAAC,OAAO,CAAC;YAC7CF,KAAK,CAACG,SAAS,ymBAed;YACD3E,MAAM,CAAC4E,gBAAgB,CAAC,kBAAkB,EAAE;cACxCH,QAAQ,CAACI,IAAI,CAACC,WAAW,CAACN,KAAK,CAAC;aACnC,CAAC;WACL,CAAC;QAAA;UAAA,KAEElE,wBAAwB;YAAAiD,SAAA,CAAArI,IAAA;YAAA;;UAAAqI,SAAA,CAAArI,IAAA;UAAA,OAClBtE,IAAI,CAACmO,sBAAsB,CAAC,IAAI,CAAC;QAAA;UACvCnO,IAAI,CAACoO,EAAE,CAAC,SAAS,EAAExE,kBAAkB,CAAC;QAAC;UAAA+C,SAAA,CAAAtI,IAAA;UAAAsI,SAAA,CAAArI,IAAA;UAAA,OAIjCtE,IAAI,QAAK,CAAC+K,GAAG,CAAC;QAAA;UAAA4B,SAAA,CAAArI,IAAA;UAAA;QAAA;UAAAqI,SAAA,CAAAtI,IAAA;UAAAsI,SAAA,CAAA0B,EAAA,GAAA1B,SAAA;UAAA,KAEfA,SAAA,CAAA0B,EAAA,CAAY7L,OAAO,CAACpC,QAAQ,CAAC,6BAA6B,CAAC;YAAAuM,SAAA,CAAArI,IAAA;YAAA;;UACtDmI,eAAe,GAAG,IAAI3J,KAAK,2BAAyBiI,GAAG,6BAA0B,CAAC;UACxFjI,KAAK,CAACwL,iBAAiB,CAAC7B,eAAe,EAAEV,QAAQ,CAAC;UAAC,MAC7CU,eAAe;QAAA;UAAA,MAAAE,SAAA,CAAA0B,EAAA;QAAA;UAAA1B,SAAA,CAAArI,IAAA;UAAA,OAKvBtE,IAAI,CAACuO,eAAe,CAAC,oCAAoC,CAAC;QAAA;UAAA,OAAA5B,SAAA,CAAA/F,MAAA,WAEzDX,UAAU,CAACjG,IAAI,CAAC;QAAA;QAAA;UAAA,OAAA2M,SAAA,CAAA3H,IAAA;;OAAAiH,QAAA;GAC1B;EAAA,gBAjFYF,QAAQA,CAAAyC,IAAA;IAAA,OAAAxC,MAAA,CAAA7G,KAAA,OAAAC,SAAA;;AAAA;AAmFrB,IAAMqJ,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAAC,MAAA;mCAA8D,EAAE,GAAAA,MAAA;IAA3D1O,IAAI,GAAA2O,MAAA,CAAJ3O,IAAI;IAAEuD,OAAO,GAAAoL,MAAA,CAAPpL,OAAO;EAGrC,IAAMqL,YAAY,GAAQ,EAAE;EAAC,IAAAC,KAAA,YAAAA,QAC+B;IAAvD,IAAAC,kBAAA,GAAAC,eAAA,CAAAC,EAAA;MAAOC,SAAS,GAAAH,kBAAA;MAAEI,OAAO,GAAAJ,kBAAA;IAC1BF,YAAY,CAACK,SAAS,CAAC,gBAAA9L,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA8L;MAAA,IAAAC,GAAA;QAAAxD,IAAA;QAAAyD,KAAA;QAAAC,IAAA;QAAAC,KAAA;QAAAC,SAAA;QAAAhJ,aAAA;QAAAiJ,gBAAA;QAAAC,OAAA,GAAAtK,SAAA;MAAA,OAAAhC,mBAAA,GAAAc,IAAA,UAAAyL,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAAvL,IAAA,GAAAuL,UAAA,CAAAtL,IAAA;UAAA;YAAAsL,UAAA,CAAAtL,IAAA;YAAA,OACJuL,8BAAW,CAAC7P,IAAI,WAAJA,IAAI,GAAID,aAAa,EAAE,CAAC;UAAA;YAAhDqP,GAAG,GAAAQ,UAAA,CAAAjL,IAAA;YAAAiL,UAAA,CAAAtL,IAAA;YAAA,OACU8K,GAAG,CAACU,CAAC,CAAC,MAAM,CAAC;UAAA;YAA1BlE,IAAI,GAAAgE,UAAA,CAAAjL,IAAA;YAAA,KAAA0K,KAAA,GAAAK,OAAA,CAAA1H,MAAA,EAFsBsH,IAAS,OAAArH,KAAA,CAAAoH,KAAA,GAAAE,KAAA,MAAAA,KAAA,GAAAF,KAAA,EAAAE,KAAA;cAATD,IAAS,CAAAC,KAAA,IAAAG,OAAA,CAAAH,KAAA;;YAGnCC,SAAS,MAAAO,MAAA,CAAOT,IAAI;YAC1B,IAAIL,SAAS,CAACjE,UAAU,CAAC,QAAQ,CAAC,EAAE;cAChC,IAAIwE,SAAS,CAACxH,MAAM,KAAK,CAAC,EAAE;gBACxBwH,SAAS,CAAC9E,IAAI,CAACmC,SAAS,CAAC;;cAE7B2C,SAAS,CAAC9E,IAAI,CAAC;gBAACsF,OAAO,EAAE;eAAM,CAAC;;YACnCJ,UAAA,CAAAtL,IAAA;YAAA,OAC0C4K,OAAO,CAAA/J,KAAA,UAAC5B,OAAO,WAAPA,OAAO,GAAIqI,IAAI,EAAAmE,MAAA,CAAKP,SAAS,EAAC;UAAA;YAA3EhJ,aAAa,GAAAoJ,UAAA,CAAAjL,IAAA;YAEb8K,gBAAgB,GAAGtJ,MAAM,CAACC,MAAM,CAACI,aAAa,CAAC;YAErDiJ,gBAAgB,CAAChL,UAAU;cAAA,IAAAwL,MAAA,GAAA9M,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA6M,SAAO1K,OAAgC;gBAAA,OAAApC,mBAAA,GAAAc,IAAA,UAAAiM,UAAAC,SAAA;kBAAA,kBAAAA,SAAA,CAAA/L,IAAA,GAAA+L,SAAA,CAAA9L,IAAA;oBAAA;sBAAA,IAC5DkB,OAAO,YAAPA,OAAO,CAAE+C,eAAe;wBAAA6H,SAAA,CAAA9L,IAAA;wBAAA;;sBAAA8L,SAAA,CAAA9L,IAAA;sBAAA,OACnB,CAACtE,IAAI,WAAJA,IAAI,GAAID,aAAa,EAAE,EAAEyI,kBAAkB,EAAE;oBAAA;sBAAA4H,SAAA,CAAA9L,IAAA;sBAAA,OAElDrB,eAAe,CAACuD,aAAa,EAAAb,QAAA,KAAMH,OAAO;wBAAE7B,QAAQ,EAAE;wBAAM,CAAC;oBAAA;sBAAA,OAAAyM,SAAA,CAAAxJ,MAAA,WAC5DJ,aAAa,CAAC/B,UAAU,CAACC,yBAAyB,CAACc,OAAO,CAAC,CAAC;oBAAA;oBAAA;sBAAA,OAAA4K,SAAA,CAAApL,IAAA;;mBAAAkL,QAAA;eACtE;cAAA,iBAAAG,IAAA;gBAAA,OAAAJ,MAAA,CAAA9K,KAAA,OAAAC,SAAA;;;YAEDqK,gBAAgB,CAACzI,KAAK;cAAA,IAAAsJ,MAAA,GAAAnN,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAkN,SAAO/K,OAAsB;gBAAA,OAAApC,mBAAA,GAAAc,IAAA,UAAAsM,UAAAC,SAAA;kBAAA,kBAAAA,SAAA,CAAApM,IAAA,GAAAoM,SAAA,CAAAnM,IAAA;oBAAA;sBAAAmM,SAAA,CAAAnM,IAAA;sBAAA,OAC5CsB,cAAc,CAACY,aAAa,CAAC;oBAAA;sBAAA,OAAAiK,SAAA,CAAA7J,MAAA,WAC5BJ,aAAa,CAACQ,KAAK,CAACxB,OAAO,CAAC;oBAAA;oBAAA;sBAAA,OAAAiL,SAAA,CAAAzL,IAAA;;mBAAAuL,QAAA;eACtC;cAAA,iBAAAG,IAAA;gBAAA,OAAAJ,MAAA,CAAAnL,KAAA,OAAAC,SAAA;;;YAEDqK,gBAAgB,CAACpJ,IAAI;cAAA,IAAAsK,MAAA,GAAAxN,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAuN,UAAOnK,IAAY,EAAEjB,OAAyB;gBAAA,OAAApC,mBAAA,GAAAc,IAAA,UAAA2M,WAAAC,UAAA;kBAAA,kBAAAA,UAAA,CAAAzM,IAAA,GAAAyM,UAAA,CAAAxM,IAAA;oBAAA;sBAAAwM,UAAA,CAAAxM,IAAA;sBAAA,OAC5DsB,cAAc,CAACY,aAAa,CAAC;oBAAA;sBAAA,OAAAsK,UAAA,CAAAlK,MAAA,WAC5BJ,aAAa,CAACH,IAAI,CAACI,IAAI,EAAEjB,OAAO,CAAC;oBAAA;oBAAA;sBAAA,OAAAsL,UAAA,CAAA9L,IAAA;;mBAAA4L,SAAA;eAC3C;cAAA,iBAAAG,IAAA,EAAAC,IAAA;gBAAA,OAAAL,MAAA,CAAAxL,KAAA,OAAAC,SAAA;;;YAEDqK,gBAAgB,CAAClI,MAAM,gBAAApE,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA4N;cAAA,IAAAC,OAAA,GAAA9L,SAAA;cAAA,OAAAhC,mBAAA,GAAAc,IAAA,UAAAiN,WAAAC,UAAA;gBAAA,kBAAAA,UAAA,CAAA/M,IAAA,GAAA+M,UAAA,CAAA9M,IAAA;kBAAA;oBAAA8M,UAAA,CAAA9M,IAAA;oBAAA,OAChBsB,cAAc,CAACY,aAAa,CAAC;kBAAA;oBAAA,OAAA4K,UAAA,CAAAxK,MAAA,WAC5BJ,aAAa,CAACe,MAAM,CAAApC,KAAA,CAApBqB,aAAa,EAAA0K,OAAiB,CAAC;kBAAA;kBAAA;oBAAA,OAAAE,UAAA,CAAApM,IAAA;;iBAAAiM,SAAA;aACzC;YAAC,OAAArB,UAAA,CAAAhJ,MAAA,WAEK6I,gBAAgB;UAAA;UAAA;YAAA,OAAAG,UAAA,CAAA5K,IAAA;;SAAAmK,SAAA;KAC1B;GACJ;EAxCD,SAAAH,EAAA,MAAAD,eAAA,GAAmC5I,MAAM,CAACkL,OAAO,CAACC,0BAAO,CAAC,EAAAtC,EAAA,GAAAD,eAAA,CAAA/G,MAAA,EAAAgH,EAAA;IAAAH,KAAA;;EAyC1D,OAAOD,YAAY;AACvB,CAAC;IAEY2C,SAAS,GAAG,SAAZA,SAASA,CAAIvR,IAAU;EAAA,OAAKyO,iBAAiB,CAAC;IAACzO,IAAI,EAAJA;GAAK,CAAC;AAAA;IAErDwR,MAAM,gBAAG/C,iBAAiB;IAE1BgD,MAAM,GAAG,SAATA,MAAMA,CAAIlO,OAAsB;EAAA,OAAKkL,iBAAiB,CAAC;IAAClL,OAAO,EAAPA;GAAQ,CAAC;AAAA;AAI9EmO,UAAU,eAAAvO,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAC,SAAAsO;EAAA,OAAAvO,mBAAA,GAAAc,IAAA,UAAA0N,WAAAC,UAAA;IAAA,kBAAAA,UAAA,CAAAxN,IAAA,GAAAwN,UAAA,CAAAvN,IAAA;MAAA;QAAAuN,UAAA,CAAAvN,IAAA;QAAA,OACDvE,aAAa,EAAE,CAACoO,sBAAsB,CAAC,KAAK,CAAC;MAAA;QAAA0D,UAAA,CAAAvN,IAAA;QAAA,OAE5CzE,MAAc,CAACiS,aAAa,CAACC,SAAS,EAAE;MAAA;MAAA;QAAA,OAAAF,UAAA,CAAA7M,IAAA;;KAAA2M,SAAA;AAAA,CAClD,GAAC;AAEF/O,SAAS,eAAAO,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAC,SAAA2O;EAAA,IAAAhS,IAAA;EAAA,OAAAoD,mBAAA,GAAAc,IAAA,UAAA+N,WAAAC,UAAA;IAAA,kBAAAA,UAAA,CAAA7N,IAAA,GAAA6N,UAAA,CAAA5N,IAAA;MAAA;QAAA4N,UAAA,CAAA7N,IAAA;QAEIrE,IAAI,GAAGD,aAAa,EAAE;QAC5B4J,eAAe,GAAG,EAAE;QACpBD,wBAAwB,GAAG,KAAK;QAChC1J,IAAI,CAACmS,GAAG,CAAC,SAAS,EAAEvI,kBAAkB,CAAC;;QAEvCsI,UAAA,CAAA5N,IAAA;QAAA,OACMtE,IAAI,QAAK,CAAC,aAAa,CAAC;MAAA;QAAAkS,UAAA,CAAA5N,IAAA;QAAA;MAAA;QAAA4N,UAAA,CAAA7N,IAAA;QAAA6N,UAAA,CAAAnO,EAAA,GAAAmO,UAAA;MAAA;MAAA;QAAA,OAAAA,UAAA,CAAAlN,IAAA;;KAAAgN,SAAA;AAAA,CAIrC,GAAC;AAEF;;;;;;;;;IASaI,WAAW,GAAG,SAAdA,WAAWA,CAAIC,QAAgB;EACxC,IAAMC,OAAO,GAAG,CAACrS,IAAI;EACrB,IAAMsS,UAAU,GAAG,CAAC,CAACrS,OAAO,CAACG,GAAG,CAACmS,QAAQ;EACzC,IAAMC,UAAU,GAAGH,OAAO,IAAIC,UAAU;EAExC,IAAMG,iBAAiB,GAAGrR,IAAI,CAACC,IAAI,CAACqR,SAAS,EAAE,IAAI,EAAE,qBAAqB,CAAC;EAE3E,IAAIF,UAAU,EAAE;IACZ,IAAMG,WAAW,GAAGlT,QAAQ,wBAAsBgT,iBAAiB,WAAQ,CAAC,CAACG,QAAQ,EAAE,CAACC,IAAI,EAAE;IAE9F,IAAI,CAACF,WAAW,EAAE;MACd,MAAM9P,KAAK,CAAC,wCAAwC,CAAC;;IAGzDpD,QAAQ,gBAAc2S,QAAQ,SAAIO,WAAW,UAAO,CAAC;IAErD,IAAMG,OAAO,GAAG1R,IAAI,CAACC,IAAI,CAAC,MAAM,EAAED,IAAI,CAAC2R,QAAQ,CAACX,QAAQ,CAAC,CAAC;IAE1DlR,EAAE,CAAC8R,YAAY,CAACZ,QAAQ,EAAEU,OAAO,CAAC;IAElC,OAAOA,OAAO;GACjB,MAAM;IACH,OAAOV,QAAQ;;AAEvB;AAEA;;;IAGaa,IAAI,GAAG,SAAPA,IAAIA,CAAOC,WAAiC,EAAEnD,OAAO,EAAUoD,QAAQ;MAAzBpD,OAAO;IAAPA,OAAO,GAAG,KAAK;;EAAA,IAAEoD,QAAQ;IAARA,QAAQ,GAAG,EAAE;;EACrF,IAAMC,SAAS,GAAG9O,IAAI,CAACC,GAAG,EAAE;EAC5B,OAAO,IAAII,OAAO,CAAC,UAAC0O,OAAO,EAAEC,MAAM;IAC/B,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAI3Q,KAAc;MACjC,IAAI0B,IAAI,CAACC,GAAG,EAAE,GAAG6O,SAAS,IAAIrD,OAAO,EAAE;QACnCuD,MAAM,CAAC1Q,KAAK,CAAC;QACb;;;MAGJiC,UAAU,CAAC2O,cAAc,EAAEL,QAAQ,CAAC;KACvC;IACD,IAAMK,cAAc,GAAG,SAAjBA,cAAcA;MAChB,IAAI;QACA7O,OAAO,CAAC0O,OAAO,CAACH,WAAW,EAAE,CAAC,CACzBO,IAAI,CAAC,UAAC7O,CAAC;UAAA,OAAKyO,OAAO,CAACzO,CAAC,CAAC;UAAC,SAClB,CAAC2O,aAAa,CAAC;OAC5B,CAAC,OAAO3Q,KAAK,EAAE;QACZ2Q,aAAa,CAAC3Q,KAAK,CAAC;;KAE3B;IACDiC,UAAU,CAAC2O,cAAc,EAAE,CAAC,CAAC;GAChC,CAAC;AACN;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"acceptance-testing.cjs.development.js","sources":["../src/index.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs';\nimport findRoot from 'find-root';\nimport {getDocument, queries} from 'pptr-testing-library';\nimport {configureToMatchImageSnapshot} from 'jest-image-snapshot';\nimport globToRegExp from 'glob-to-regexp';\nconst execSync = require('child_process').execSync;\n\nimport type {\n Page,\n ElementHandle,\n ScreenshotOptions,\n Browser,\n ClickOptions,\n Viewport,\n GeolocationOptions,\n HTTPRequest,\n ResponseForRequest,\n} from 'puppeteer';\nimport type {getQueriesForElement} from 'pptr-testing-library';\n\ntype CustomScreenshotOptions = ScreenshotOptions & {\n skipNetworkWait?: boolean;\n};\n\nexport const getGlobalBrowser = (): Browser => (global as any).browser;\nexport const getGlobalPage = (): Page => (global as any).page;\n\nconst isCi = process.argv.includes('--ci') || process.env.CI;\nconst isUsingDockerizedChromium = isCi || new URL(getGlobalBrowser().wsEndpoint()).port === '9223';\n\nexport const serverHostName = ((): string => {\n if (isCi) {\n return 'localhost';\n }\n\n if (isUsingDockerizedChromium) {\n return process.platform === 'linux' ? '172.17.0.1' : 'host.docker.internal';\n }\n\n return 'localhost';\n})();\n\nconst rootDir = findRoot(process.cwd());\nconst pkg = JSON.parse(fs.readFileSync(path.join(rootDir, 'package.json'), 'utf-8'));\nconst projectConfig = pkg.acceptanceTests ?? {};\nconst server = (isCi ? projectConfig.ciServer : projectConfig.devServer) ?? projectConfig.server;\n\nexport const serverPort = server?.port;\n\nconst toMatchImageSnapshot = configureToMatchImageSnapshot({\n failureThreshold: 0,\n failureThresholdType: 'percent',\n customSnapshotIdentifier: ({defaultIdentifier}) => defaultIdentifier,\n});\n\nlet calledToMatchImageSnapshotOutsideDocker = false;\n\nconst localToMatchImageSnapshot = () => {\n calledToMatchImageSnapshotOutsideDocker = true;\n // let the expectation pass, then fail in afterEach. This way we allow developers to debug screenshot tests in local\n // but don't allow them to save screenshots taken outside the dockerized chromium\n return {\n message: () => '',\n pass: true,\n };\n};\n\nexpect.extend({\n toMatchImageSnapshot: isUsingDockerizedChromium ? toMatchImageSnapshot : localToMatchImageSnapshot,\n});\n\nafterEach(() => {\n if (calledToMatchImageSnapshotOutsideDocker) {\n const error = new Error(\n `Calling .toMatchImageSnapshot() is not allowed outside dockerized browser. Please, run your screenshot test in headless mode.`\n );\n error.stack = (error.stack || '').split('\\n')[0];\n throw error;\n }\n});\n\ntype WaitForPaintEndOptions = {\n fullPage?: boolean;\n captureBeyondViewport?: boolean;\n};\n\nconst waitForPaintEnd = async (\n element: ElementHandle | Page,\n {fullPage = true, captureBeyondViewport}: WaitForPaintEndOptions = {}\n) => {\n const MAX_WAIT = 15000;\n const STEP_TIME = 250;\n const t0 = Date.now();\n\n let buf1 = (await element.screenshot(\n normalizeSreenshotOptions({fullPage, captureBeyondViewport})\n )) as Buffer;\n await new Promise((r) => setTimeout(r, STEP_TIME));\n let buf2 = (await element.screenshot(\n normalizeSreenshotOptions({fullPage, captureBeyondViewport})\n )) as Buffer;\n\n // buffers are different if compare != 0\n while (buf1.compare(buf2)) {\n if (Date.now() - t0 > MAX_WAIT) {\n throw Error('Paint end timeout');\n }\n buf1 = buf2;\n await new Promise((r) => setTimeout(r, STEP_TIME));\n buf2 = (await element.screenshot(\n normalizeSreenshotOptions({fullPage, captureBeyondViewport})\n )) as Buffer;\n }\n};\n\nexport interface PageApi extends Omit<Page, 'click' | 'type' | 'select'> {\n clear: (selector: ElementHandle) => Promise<void>;\n // These are overridden:\n type: (selector: ElementHandle, text: string, options?: {delay: number}) => Promise<void>;\n click: (selector: ElementHandle, options?: ClickOptions) => Promise<void>;\n select: (selector: ElementHandle, ...values: string[]) => Promise<string[]>;\n screenshot: (options?: CustomScreenshotOptions) => Promise<Buffer | string | void>;\n}\n\nconst normalizeSreenshotOptions = ({captureBeyondViewport = false, ...options}: ScreenshotOptions = {}) => {\n // Puppeter default for captureBeyondViewport is true, but we think false is a better default.\n // When this is true, the fixed elements (like fixed footers) are relative to the original page\n // viewport, not to the full page, so those elements look weird in fullPage screenshots.\n return {...options, captureBeyondViewport};\n};\n\n// Puppeteer already calls scrollIntoViewIfNeeded before clicking an element. But it doesn't work in all situations\n// For example, when there is a fixed footer in the page and the element to click is under it, the browser won't scroll\n// because the element is already in the viewport (the ifNeeded part is important here). By forcing the scroll to the\n// center, we manage to fix these edge cases.\nconst scrollIntoView = (el: ElementHandle) => el.evaluate((e) => e.scrollIntoView({block: 'center'}));\n\nexport const getPageApi = (page: Page): PageApi => {\n const api: PageApi = Object.create(page);\n\n api.type = async (elementHandle, text, options) => {\n await scrollIntoView(elementHandle);\n return elementHandle.type(text, options);\n };\n api.click = async (elementHandle, options) => {\n await scrollIntoView(elementHandle);\n return elementHandle.click(options);\n };\n api.select = async (elementHandle, ...values) => {\n await scrollIntoView(elementHandle);\n return elementHandle.select(...values);\n };\n\n api.screenshot = async (options?: CustomScreenshotOptions) => {\n if (!options?.skipNetworkWait) {\n await page.waitForNetworkIdle();\n }\n await waitForPaintEnd(page, options);\n return page.screenshot(normalizeSreenshotOptions(options));\n };\n\n api.clear = async (elementHandle) => {\n await elementHandle.click({clickCount: 3});\n await elementHandle.press('Delete');\n };\n\n // For some reason, puppeteer browserContext.overridePermissions doesn't work with newer chrome versions.\n // This workaround polyfills the browser geolocation api to return the mocked position\n api.setGeolocation = (position: GeolocationOptions) =>\n page.evaluate((position) => {\n window.navigator.geolocation.getCurrentPosition = (callback) => {\n // @ts-ignore\n callback({\n coords: position,\n });\n };\n }, position as any);\n\n return api;\n};\n\nlet needsRequestInterception = false;\ntype RequestMatcherFn = (req: HTTPRequest) => boolean;\nlet requestHandlers: Array<{\n matcher: RequestMatcherFn;\n handler: jest.Mock<any, any>;\n}> = [];\n\nconst requestInterceptor = (req: HTTPRequest) => {\n const {handler} = requestHandlers.find(({matcher}) => matcher(req)) ?? {handler: null};\n if (!handler) {\n req.continue();\n return;\n }\n const response = handler(req);\n req.respond(response);\n};\n\nexport const interceptRequest = (\n matcher: RequestMatcherFn\n): jest.Mock<Partial<ResponseForRequest>, [HTTPRequest]> => {\n needsRequestInterception = true;\n const spy = jest.fn();\n requestHandlers.push({matcher, handler: spy});\n return spy;\n};\n\ntype ApiEndpointMock = {\n spyOn(path: string, method?: string): jest.Mock<unknown, [HTTPRequest]>;\n};\n\nexport const createApiEndpointMock = ({baseUrl}: {baseUrl: string}): ApiEndpointMock => {\n interceptRequest((req) => req.method() === 'OPTIONS' && req.url().startsWith(baseUrl)).mockImplementation(\n () => ({\n status: 204,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'POST,PATCH,PUT,GET,OPTIONS',\n 'Access-Control-Allow-Headers': '*',\n },\n })\n );\n\n return {\n spyOn(path: string, method: string = 'GET') {\n const matcher = (req: HTTPRequest) => {\n const url = req.url();\n const urlPath = url.substring(baseUrl.length);\n return (\n req.method() === method && url.startsWith(baseUrl) && !!urlPath.match(globToRegExp(path))\n );\n };\n\n const spy = jest.fn();\n\n interceptRequest(matcher).mockImplementation((req) => {\n const spyResult = spy(req);\n const status = spyResult.status ?? 200;\n const resBody = spyResult.body || spyResult;\n return {\n status,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n },\n contentType: 'application/json',\n body: JSON.stringify(resBody),\n };\n });\n\n return spy;\n },\n };\n};\n\ntype CookieConfig = {\n name: string;\n value: string;\n url?: string;\n domain?: string;\n path?: string;\n secure?: boolean;\n httpOnly?: boolean;\n sameSite?: 'Strict' | 'Lax' | 'None';\n expires?: number;\n priority?: 'Low' | 'Medium' | 'High';\n sameParty?: boolean;\n sourceScheme?: 'Unset' | 'NonSecure' | 'Secure';\n sourcePort?: number;\n};\n\ninterface OpenPageCommonConfig {\n userAgent?: string;\n viewport?: Viewport;\n isDarkMode?: boolean;\n cookies?: Array<CookieConfig>;\n}\n\ninterface OpenPageUrlConfig extends OpenPageCommonConfig {\n url: string;\n}\n\ninterface OpenPagePathConfig extends OpenPageCommonConfig {\n url?: undefined;\n\n path?: string;\n port?: number;\n protocol?: string;\n hostname?: string;\n}\n\ntype OpenPageConfig = OpenPageUrlConfig | OpenPagePathConfig;\n\nexport const openPage = async ({\n userAgent,\n isDarkMode,\n viewport,\n cookies,\n ...urlConfig\n}: OpenPageConfig): Promise<PageApi> => {\n const url = ((): string => {\n if (urlConfig.url !== undefined) {\n return urlConfig.url;\n }\n\n const {path = '/', port = serverPort, protocol = 'http', hostname = serverHostName} = urlConfig;\n\n if (!port) {\n const error = new Error(\n 'You must specify a port. You can specify it when calling openPage() or by configuring a dev and ci server in the acceptanceTests config in your package.json'\n );\n // Error.captureStackTrace(error, openPage);\n throw error;\n }\n\n return `${protocol}://${hostname}:${port}${path}`;\n })();\n\n const currentUserAgent = userAgent || (await getGlobalBrowser().userAgent());\n const page = getGlobalPage();\n\n await page.bringToFront();\n if (viewport) {\n await page.setViewport(viewport);\n }\n if (cookies) {\n await page.setCookie(...cookies);\n }\n await page.setUserAgent(`${currentUserAgent} acceptance-test`);\n await page.emulateMediaFeatures([{name: 'prefers-color-scheme', value: isDarkMode ? 'dark' : 'light'}]);\n\n // A set of styles to make screenshot tests more reliable.\n await page.evaluateOnNewDocument(() => {\n const style = document.createElement('style');\n style.innerHTML = `\n *, *:after, *:before {\n transition-delay: 0s !important;\n transition-duration: 0s !important;\n animation-delay: -0.0001s !important;\n animation-duration: 0s !important;\n animation-play-state: paused !important;\n caret-color: transparent !important;\n font-variant-ligatures: none !important;\n }\n *::-webkit-scrollbar {\n display: none !important;\n width: 0 !important;\n height: 0 !important;\n }\n `;\n window.addEventListener('DOMContentLoaded', () => {\n document.head.appendChild(style);\n });\n });\n\n if (needsRequestInterception) {\n await page.setRequestInterception(true);\n page.on('request', requestInterceptor);\n }\n\n try {\n await page.goto(url);\n } catch (e) {\n if ((e as Error).message.includes('net::ERR_CONNECTION_REFUSED')) {\n const connectionError = new Error(`Could not connect to ${url}. Is the server running?`);\n Error.captureStackTrace(connectionError, openPage);\n throw connectionError;\n } else {\n throw e;\n }\n }\n await page.waitForFunction('document.fonts.status === \"loaded\"');\n\n return getPageApi(page);\n};\n\nconst buildQueryMethods = ({page, element}: {page?: Page; element?: ElementHandle} = {}): ReturnType<\n typeof getQueriesForElement\n> => {\n const boundQueries: any = {};\n for (const [queryName, queryFn] of Object.entries(queries)) {\n boundQueries[queryName] = async (...args: any) => {\n const doc = await getDocument(page ?? getGlobalPage());\n const body = await doc.$('body');\n const queryArgs = [...args];\n if (queryName.startsWith('findBy')) {\n if (queryArgs.length === 1) {\n queryArgs.push(undefined);\n }\n queryArgs.push({timeout: 10000});\n }\n const elementHandle: ElementHandle = await queryFn(element ?? body, ...queryArgs);\n\n const newElementHandle = Object.create(elementHandle);\n\n newElementHandle.screenshot = async (options: CustomScreenshotOptions) => {\n if (!options?.skipNetworkWait) {\n await (page ?? getGlobalPage()).waitForNetworkIdle();\n }\n await waitForPaintEnd(elementHandle, {...options, fullPage: false});\n return elementHandle.screenshot(normalizeSreenshotOptions(options));\n };\n\n newElementHandle.click = async (options?: ClickOptions) => {\n await scrollIntoView(elementHandle);\n return elementHandle.click(options);\n };\n\n newElementHandle.type = async (text: string, options?: {delay: number}) => {\n await scrollIntoView(elementHandle);\n return elementHandle.type(text, options);\n };\n\n newElementHandle.select = async (...values: Array<string>) => {\n await scrollIntoView(elementHandle);\n return elementHandle.select(...values);\n };\n\n return newElementHandle;\n };\n }\n return boundQueries;\n};\n\nexport const getScreen = (page: Page) => buildQueryMethods({page});\n\nexport const screen = buildQueryMethods();\n\nexport const within = (element: ElementHandle) => buildQueryMethods({element});\n\nexport type {ElementHandle, Viewport} from 'puppeteer';\n\nbeforeEach(async () => {\n await getGlobalPage().setRequestInterception(false);\n // by resetting the page we clean up all the evaluateOnNewDocument calls, which are persistent between documents\n await (global as any).jestPuppeteer.resetPage();\n});\n\nafterEach(async () => {\n try {\n const page = getGlobalPage();\n requestHandlers = [];\n needsRequestInterception = false;\n page.off('request', requestInterceptor);\n\n // clear tab, this way we clear the DOM and stop js execution or pending requests\n await page.goto('about:blank');\n } catch (e) {\n // ignore, at this point page might be destroyed\n }\n});\n\n/**\n * Returns a new path to the file that can be used by chromium in acceptance tests\n *\n * To be able to use `element.uploadFile()` in a dockerized chromium, the file must exist in the\n * host and the docker, and both sides must use the same path.\n *\n * To workaround this bug or limitation, this function prepares the file by copying it to /tmp in\n * the host and the container.\n */\nexport const prepareFile = (filepath: string): string => {\n const isLocal = !isCi;\n const isHeadless = !!process.env.HEADLESS;\n const usesDocker = isLocal && isHeadless;\n\n const dockerComposeFile = path.join(__dirname, '..', 'docker-compose.yaml');\n\n if (usesDocker) {\n const containerId = execSync(`docker-compose -f ${dockerComposeFile} ps -q`).toString().trim();\n\n if (!containerId) {\n throw Error('acceptance-testing container not found');\n }\n\n execSync(`docker cp ${filepath} ${containerId}:/tmp`);\n\n const newPath = path.join('/tmp', path.basename(filepath));\n\n fs.copyFileSync(filepath, newPath);\n\n return newPath;\n } else {\n return filepath;\n }\n};\n\n/**\n * A convenience method to defer an expectation\n */\nexport const wait = <T>(expectation: () => Promise<T> | T, timeout = 10000, interval = 50): Promise<T> => {\n const startTime = Date.now();\n const startStack = new Error().stack;\n\n return new Promise((resolve, reject) => {\n const rejectOrRerun = (error: unknown) => {\n if (Date.now() - startTime >= timeout) {\n if (error instanceof Error) {\n if (error.message === 'Element not removed') {\n error.stack = startStack;\n }\n }\n reject(error);\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n setTimeout(runExpectation, interval);\n };\n const runExpectation = () => {\n try {\n Promise.resolve(expectation())\n .then((r) => resolve(r))\n .catch(rejectOrRerun);\n } catch (error) {\n rejectOrRerun(error);\n }\n };\n setTimeout(runExpectation, 0);\n });\n};\n\nexport const waitForElementToBeRemoved = (\n element: ElementHandle<Element>,\n timeout = 10000,\n interval = 100\n): Promise<void> => {\n const startStack = new Error().stack;\n\n const wait = async () => {\n const t0 = Date.now();\n while (Date.now() - t0 < timeout) {\n // boundingBox returns null when the element is not in the DOM\n const box = await element.boundingBox();\n if (!box) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n throw new Error('Element not removed');\n };\n\n return wait().catch((error) => {\n if (error.message === 'Element not removed') {\n error.stack = startStack;\n }\n throw error;\n });\n};\n"],"names":["execSync","require","getGlobalBrowser","global","browser","getGlobalPage","page","isCi","process","argv","includes","env","CI","isUsingDockerizedChromium","URL","wsEndpoint","port","serverHostName","platform","rootDir","findRoot","cwd","pkg","JSON","parse","fs","readFileSync","path","join","projectConfig","_pkg$acceptanceTests","acceptanceTests","server","_ref","ciServer","devServer","serverPort","toMatchImageSnapshot","configureToMatchImageSnapshot","failureThreshold","failureThresholdType","customSnapshotIdentifier","_ref2","defaultIdentifier","calledToMatchImageSnapshotOutsideDocker","localToMatchImageSnapshot","message","pass","expect","extend","afterEach","error","Error","stack","split","waitForPaintEnd","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","element","_temp","_ref4","_ref4$fullPage","fullPage","captureBeyondViewport","MAX_WAIT","STEP_TIME","t0","buf1","buf2","wrap","_callee$","_context","prev","next","Date","now","screenshot","normalizeSreenshotOptions","sent","Promise","r","setTimeout","compare","stop","_x","_x2","apply","arguments","_temp2","_ref5$captureBeyondVi","_ref5","options","_objectWithoutPropertiesLoose","_excluded","_extends","scrollIntoView","el","evaluate","e","block","getPageApi","api","Object","create","type","_ref6","_callee2","elementHandle","text","_callee2$","_context2","abrupt","_x3","_x4","_x5","click","_ref7","_callee3","_callee3$","_context3","_x6","_x7","select","_ref8","_callee4","_len","values","_key","_args4","_callee4$","_context4","length","Array","_x8","_ref9","_callee5","_callee5$","_context5","skipNetworkWait","waitForNetworkIdle","_x9","clear","_ref10","_callee6","_callee6$","_context6","clickCount","press","_x10","setGeolocation","position","window","navigator","geolocation","getCurrentPosition","callback","coords","needsRequestInterception","requestHandlers","requestInterceptor","req","_ref11","_requestHandlers$find","find","_ref12","matcher","handler","response","respond","interceptRequest","spy","jest","fn","push","createApiEndpointMock","_ref13","baseUrl","method","url","startsWith","mockImplementation","status","headers","spyOn","urlPath","substring","match","globToRegExp","spyResult","_spyResult$status","resBody","body","contentType","stringify","openPage","_ref15","_callee7","_ref14","userAgent","isDarkMode","viewport","cookies","urlConfig","currentUserAgent","connectionError","_callee7$","_context7","_excluded2","undefined","_urlConfig$path","_urlConfig$port","_urlConfig$protocol","protocol","_urlConfig$hostname","hostname","bringToFront","setViewport","setCookie","setUserAgent","emulateMediaFeatures","name","value","evaluateOnNewDocument","style","document","createElement","innerHTML","addEventListener","head","appendChild","setRequestInterception","on","t1","captureStackTrace","waitForFunction","_x11","buildQueryMethods","_temp3","_ref16","boundQueries","_loop","_Object$entries$_i","_Object$entries","_i","queryName","queryFn","_callee12","doc","_len2","args","_key2","queryArgs","newElementHandle","_args12","_callee12$","_context12","getDocument","$","concat","timeout","_ref18","_callee8","_callee8$","_context8","_x12","_ref19","_callee9","_callee9$","_context9","_x13","_ref20","_callee10","_callee10$","_context10","_x14","_x15","_callee11","_args11","_callee11$","_context11","entries","queries","getScreen","screen","within","beforeEach","_callee13","_callee13$","_context13","jestPuppeteer","resetPage","_callee14","_callee14$","_context14","off","prepareFile","filepath","isLocal","isHeadless","HEADLESS","usesDocker","dockerComposeFile","__dirname","containerId","toString","trim","newPath","basename","copyFileSync","wait","expectation","interval","startTime","startStack","resolve","reject","rejectOrRerun","runExpectation","then","waitForElementToBeRemoved","_ref24","_callee15","box","_callee15$","_context15","boundingBox"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}Object.defineProperty(exports,"__esModule",{value:!0});var e=t(require("path")),r=t(require("fs")),n=t(require("find-root")),o=require("pptr-testing-library"),a=require("jest-image-snapshot"),i=t(require("glob-to-regexp"));function c(){c=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",i=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(t){s=function(t,e,r){return t[e]=r}}function p(t,e,r,o){var a=Object.create((e&&e.prototype instanceof h?e:h).prototype),i=new L(o||[]);return n(a,"_invoke",{value:k(t,r,i)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=p;var f={};function h(){}function d(){}function v(){}var y={};s(y,a,(function(){return this}));var m=Object.getPrototypeOf,w=m&&m(m(j([])));w&&w!==e&&r.call(w,a)&&(y=w);var g=v.prototype=h.prototype=Object.create(y);function x(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function b(t,e){var o;n(this,"_invoke",{value:function(n,a){function i(){return new e((function(o,i){!function n(o,a,i,c){var u=l(t[o],t,a);if("throw"!==u.type){var s=u.arg,p=s.value;return p&&"object"==typeof p&&r.call(p,"__await")?e.resolve(p.__await).then((function(t){n("next",t,i,c)}),(function(t){n("throw",t,i,c)})):e.resolve(p).then((function(t){s.value=t,i(s)}),(function(t){return n("throw",t,i,c)}))}c(u.arg)}(n,a,o,i)}))}return o=o?o.then(i,i):i()}})}function k(t,e,r){var n="suspendedStart";return function(o,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw a;return{value:void 0,done:!0}}for(r.method=o,r.arg=a;;){var i=r.delegate;if(i){var c=E(i,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=l(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function E(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,E(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=l(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var a=o.arg;return a?a.done?(e[t.resultName]=a.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function O(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function L(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(O,this),this.reset(!0)}function j(t){if(t){var e=t[a];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:S}}function S(){return{value:void 0,done:!0}}return d.prototype=v,n(g,"constructor",{value:v,configurable:!0}),n(v,"constructor",{value:d,configurable:!0}),d.displayName=s(v,u,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===d||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,v):(t.__proto__=v,s(t,u,"GeneratorFunction")),t.prototype=Object.create(g),t},t.awrap=function(t){return{__await:t}},x(b.prototype),s(b.prototype,i,(function(){return this})),t.AsyncIterator=b,t.async=function(e,r,n,o,a){void 0===a&&(a=Promise);var i=new b(p(e,r,n,o),a);return t.isGeneratorFunction(r)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},x(g),s(g,u,"Generator"),s(g,a,(function(){return this})),s(g,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=j,L.prototype={constructor:L,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return i.type="throw",i.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var c=r.call(a,"catchLoc"),u=r.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return n(a.catchLoc,!0);if(this.prev<a.finallyLoc)return n(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return n(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return n(a.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=t,i.arg=e,a?(this.method="next",this.next=a.finallyLoc,f):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),P(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;P(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:j(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function u(t,e,r,n,o,a,i){try{var c=t[a](i),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function s(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var a=t.apply(e,r);function i(t){u(a,n,o,i,c,"next",t)}function c(t){u(a,n,o,i,c,"throw",t)}i(void 0)}))}}function p(){return(p=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t}).apply(this,arguments)}function l(t,e){if(null==t)return{};var r,n,o={},a=Object.keys(t);for(n=0;n<a.length;n++)e.indexOf(r=a[n])>=0||(o[r]=t[r]);return o}var f,h,d=["captureBeyondViewport"],v=["userAgent","isDarkMode","viewport","cookies"],y=require("child_process").execSync,m=function(){return global.browser},w=function(){return global.page},g=process.argv.includes("--ci")||process.env.CI,x=g||"9223"===new URL(m().wsEndpoint()).port,b=function(){return g?"localhost":x?"linux"===process.platform?"172.17.0.1":"host.docker.internal":"localhost"}(),k=null!=(f=JSON.parse(r.readFileSync(e.join(n(process.cwd()),"package.json"),"utf-8")).acceptanceTests)?f:{},E=null!=(h=g?k.ciServer:k.devServer)?h:k.server,O=null==E?void 0:E.port,P=!1;expect.extend({toMatchImageSnapshot:x?a.configureToMatchImageSnapshot({failureThreshold:0,failureThresholdType:"percent",customSnapshotIdentifier:function(t){return t.defaultIdentifier}}):function(){return P=!0,{message:function(){return""},pass:!0}}}),afterEach((function(){if(P){var t=new Error("Calling .toMatchImageSnapshot() is not allowed outside dockerized browser. Please, run your screenshot test in headless mode.");throw t.stack=(t.stack||"").split("\n")[0],t}}));var L=function(){var t=s(c().mark((function t(e,r){var n,o,a,i,u,s,p,l,f;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=void 0===(o=(n=void 0===r?{}:r).fullPage)||o,i=n.captureBeyondViewport,u=15e3,s=250,p=Date.now(),t.next=6,e.screenshot(j({fullPage:a,captureBeyondViewport:i}));case 6:return l=t.sent,t.next=9,new Promise((function(t){return setTimeout(t,s)}));case 9:return t.next=11,e.screenshot(j({fullPage:a,captureBeyondViewport:i}));case 11:f=t.sent;case 12:if(!l.compare(f)){t.next=23;break}if(!(Date.now()-p>u)){t.next=15;break}throw Error("Paint end timeout");case 15:return l=f,t.next=18,new Promise((function(t){return setTimeout(t,s)}));case 18:return t.next=20,e.screenshot(j({fullPage:a,captureBeyondViewport:i}));case 20:f=t.sent,t.next=12;break;case 23:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}(),j=function(t){var e=void 0===t?{}:t,r=e.captureBeyondViewport,n=void 0!==r&&r;return p({},l(e,d),{captureBeyondViewport:n})},S=function(t){return t.evaluate((function(t){return t.scrollIntoView({block:"center"})}))},T=function(t){var e=Object.create(t);return e.type=function(){var t=s(c().mark((function t(e,r,n){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,S(e);case 2:return t.abrupt("return",e.type(r,n));case 3:case"end":return t.stop()}}),t)})));return function(e,r,n){return t.apply(this,arguments)}}(),e.click=function(){var t=s(c().mark((function t(e,r){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,S(e);case 2:return t.abrupt("return",e.click(r));case 3:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}(),e.select=function(){var t=s(c().mark((function t(e){var r,n,o,a=arguments;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,S(e);case 2:for(r=a.length,n=new Array(r>1?r-1:0),o=1;o<r;o++)n[o-1]=a[o];return t.abrupt("return",e.select.apply(e,n));case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),e.screenshot=function(){var e=s(c().mark((function e(r){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=r&&r.skipNetworkWait){e.next=3;break}return e.next=3,t.waitForNetworkIdle();case 3:return e.next=5,L(t,r);case 5:return e.abrupt("return",t.screenshot(j(r)));case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),e.clear=function(){var t=s(c().mark((function t(e){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.click({clickCount:3});case 2:return t.next=4,e.press("Delete");case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),e.setGeolocation=function(e){return t.evaluate((function(t){window.navigator.geolocation.getCurrentPosition=function(e){e({coords:t})}}),e)},e},_=!1,N=[],A=function(t){var e,r=(null!=(e=N.find((function(e){return(0,e.matcher)(t)})))?e:{handler:null}).handler;if(r){var n=r(t);t.respond(n)}else t.continue()},I=function(t){_=!0;var e=jest.fn();return N.push({matcher:t,handler:e}),e},C=function(){var t=s(c().mark((function t(e){var r,n,o,a,i,u,s,p,f;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.userAgent,n=e.isDarkMode,o=e.viewport,a=e.cookies,i=l(e,v),u=function(){if(void 0!==i.url)return i.url;var t=i.path,e=void 0===t?"/":t,r=i.port,n=void 0===r?O:r,o=i.protocol,a=void 0===o?"http":o,c=i.hostname,u=void 0===c?b:c;if(!n)throw new Error("You must specify a port. You can specify it when calling openPage() or by configuring a dev and ci server in the acceptanceTests config in your package.json");return a+"://"+u+":"+n+e}(),t.t0=r,t.t0){t.next=7;break}return t.next=6,m().userAgent();case 6:t.t0=t.sent;case 7:return s=t.t0,p=w(),t.next=11,p.bringToFront();case 11:if(!o){t.next=14;break}return t.next=14,p.setViewport(o);case 14:if(!a){t.next=17;break}return t.next=17,p.setCookie.apply(p,a);case 17:return t.next=19,p.setUserAgent(s+" acceptance-test");case 19:return t.next=21,p.emulateMediaFeatures([{name:"prefers-color-scheme",value:n?"dark":"light"}]);case 21:return t.next=23,p.evaluateOnNewDocument((function(){var t=document.createElement("style");t.innerHTML="\n *, *:after, *:before {\n transition-delay: 0s !important;\n transition-duration: 0s !important;\n animation-delay: -0.0001s !important;\n animation-duration: 0s !important;\n animation-play-state: paused !important;\n caret-color: transparent !important;\n font-variant-ligatures: none !important;\n }\n *::-webkit-scrollbar {\n display: none !important;\n width: 0 !important;\n height: 0 !important;\n }\n ",window.addEventListener("DOMContentLoaded",(function(){document.head.appendChild(t)}))}));case 23:if(!_){t.next=27;break}return t.next=26,p.setRequestInterception(!0);case 26:p.on("request",A);case 27:return t.prev=27,t.next=30,p.goto(u);case 30:t.next=41;break;case 32:if(t.prev=32,t.t1=t.catch(27),!t.t1.message.includes("net::ERR_CONNECTION_REFUSED")){t.next=40;break}throw f=new Error("Could not connect to "+u+". Is the server running?"),Error.captureStackTrace(f,C),f;case 40:throw t.t1;case 41:return t.next=43,p.waitForFunction('document.fonts.status === "loaded"');case 43:return t.abrupt("return",T(p));case 44:case"end":return t.stop()}}),t,null,[[27,32]])})));return function(e){return t.apply(this,arguments)}}(),F=function(t){for(var e=void 0===t?{}:t,r=e.page,n=e.element,a={},i=function(){var t=l[u],e=t[0],i=t[1];a[e]=s(c().mark((function t(){var a,u,l,f,h,d,v,y,m=arguments;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.getDocument(null!=r?r:w());case 2:return a=t.sent,t.next=5,a.$("body");case 5:for(u=t.sent,l=m.length,f=new Array(l),h=0;h<l;h++)f[h]=m[h];return d=[].concat(f),e.startsWith("findBy")&&(1===d.length&&d.push(void 0),d.push({timeout:1e4})),t.next=11,i.apply(void 0,[null!=n?n:u].concat(d));case 11:return v=t.sent,(y=Object.create(v)).screenshot=function(){var t=s(c().mark((function t(e){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(null!=e&&e.skipNetworkWait){t.next=3;break}return t.next=3,(null!=r?r:w()).waitForNetworkIdle();case 3:return t.next=5,L(v,p({},e,{fullPage:!1}));case 5:return t.abrupt("return",v.screenshot(j(e)));case 6:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),y.click=function(){var t=s(c().mark((function t(e){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,S(v);case 2:return t.abrupt("return",v.click(e));case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),y.type=function(){var t=s(c().mark((function t(e,r){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,S(v);case 2:return t.abrupt("return",v.type(e,r));case 3:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}(),y.select=s(c().mark((function t(){var e=arguments;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,S(v);case 2:return t.abrupt("return",v.select.apply(v,e));case 3:case"end":return t.stop()}}),t)}))),t.abrupt("return",y);case 18:case"end":return t.stop()}}),t)})))},u=0,l=Object.entries(o.queries);u<l.length;u++)i();return a},q=F();beforeEach(s(c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,w().setRequestInterception(!1);case 2:return t.next=4,global.jestPuppeteer.resetPage();case 4:case"end":return t.stop()}}),t)})))),afterEach(s(c().mark((function t(){var e;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,e=w(),N=[],_=!1,e.off("request",A),t.next=7,e.goto("about:blank");case 7:t.next=11;break;case 9:t.prev=9,t.t0=t.catch(0);case 11:case"end":return t.stop()}}),t,null,[[0,9]])})))),exports.createApiEndpointMock=function(t){var e=t.baseUrl;return I((function(t){return"OPTIONS"===t.method()&&t.url().startsWith(e)})).mockImplementation((function(){return{status:204,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"POST,PATCH,PUT,GET,OPTIONS","Access-Control-Allow-Headers":"*"}}})),{spyOn:function(t,r){void 0===r&&(r="GET");var n=jest.fn();return I((function(n){var o=n.url(),a=o.substring(e.length);return n.method()===r&&o.startsWith(e)&&!!a.match(i(t))})).mockImplementation((function(t){var e,r=n(t);return{status:null!=(e=r.status)?e:200,headers:{"Access-Control-Allow-Origin":"*"},contentType:"application/json",body:JSON.stringify(r.body||r)}})),n}}},exports.getGlobalBrowser=m,exports.getGlobalPage=w,exports.getPageApi=T,exports.getScreen=function(t){return F({page:t})},exports.interceptRequest=I,exports.openPage=C,exports.prepareFile=function(t){var n=!!process.env.HEADLESS,o=!g&&n,a=e.join(__dirname,"..","docker-compose.yaml");if(o){var i=y("docker-compose -f "+a+" ps -q").toString().trim();if(!i)throw Error("acceptance-testing container not found");y("docker cp "+t+" "+i+":/tmp");var c=e.join("/tmp",e.basename(t));return r.copyFileSync(t,c),c}return t},exports.screen=q,exports.serverHostName=b,exports.serverPort=O,exports.wait=function(t,e,r){void 0===e&&(e=1e4),void 0===r&&(r=50);var n=Date.now();return new Promise((function(o,a){var i=function(t){Date.now()-n>=e?a(t):setTimeout(c,r)},c=function(){try{Promise.resolve(t()).then((function(t){return o(t)})).catch(i)}catch(t){i(t)}};setTimeout(c,0)}))},exports.within=function(t){return F({element:t})};
|
|
1
|
+
"use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}Object.defineProperty(exports,"__esModule",{value:!0});var e=t(require("path")),r=t(require("fs")),n=t(require("find-root")),o=require("pptr-testing-library"),a=require("jest-image-snapshot"),i=t(require("glob-to-regexp"));function c(){c=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",i=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(t){s=function(t,e,r){return t[e]=r}}function p(t,e,r,o){var a=Object.create((e&&e.prototype instanceof h?e:h).prototype),i=new L(o||[]);return n(a,"_invoke",{value:k(t,r,i)}),a}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=p;var l={};function h(){}function d(){}function v(){}var m={};s(m,a,(function(){return this}));var y=Object.getPrototypeOf,w=y&&y(y(j([])));w&&w!==e&&r.call(w,a)&&(m=w);var g=v.prototype=h.prototype=Object.create(m);function x(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function b(t,e){var o;n(this,"_invoke",{value:function(n,a){function i(){return new e((function(o,i){!function n(o,a,i,c){var u=f(t[o],t,a);if("throw"!==u.type){var s=u.arg,p=s.value;return p&&"object"==typeof p&&r.call(p,"__await")?e.resolve(p.__await).then((function(t){n("next",t,i,c)}),(function(t){n("throw",t,i,c)})):e.resolve(p).then((function(t){s.value=t,i(s)}),(function(t){return n("throw",t,i,c)}))}c(u.arg)}(n,a,o,i)}))}return o=o?o.then(i,i):i()}})}function k(t,e,r){var n="suspendedStart";return function(o,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw a;return{value:void 0,done:!0}}for(r.method=o,r.arg=a;;){var i=r.delegate;if(i){var c=E(i,r);if(c){if(c===l)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=f(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===l)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function E(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,E(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),l;var o=f(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,l;var a=o.arg;return a?a.done?(e[t.resultName]=a.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,l):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,l)}function O(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function L(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(O,this),this.reset(!0)}function j(t){if(t){var e=t[a];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:T}}function T(){return{value:void 0,done:!0}}return d.prototype=v,n(g,"constructor",{value:v,configurable:!0}),n(v,"constructor",{value:d,configurable:!0}),d.displayName=s(v,u,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===d||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,v):(t.__proto__=v,s(t,u,"GeneratorFunction")),t.prototype=Object.create(g),t},t.awrap=function(t){return{__await:t}},x(b.prototype),s(b.prototype,i,(function(){return this})),t.AsyncIterator=b,t.async=function(e,r,n,o,a){void 0===a&&(a=Promise);var i=new b(p(e,r,n,o),a);return t.isGeneratorFunction(r)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},x(g),s(g,u,"Generator"),s(g,a,(function(){return this})),s(g,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=j,L.prototype={constructor:L,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return i.type="throw",i.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var c=r.call(a,"catchLoc"),u=r.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return n(a.catchLoc,!0);if(this.prev<a.finallyLoc)return n(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return n(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return n(a.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=t,i.arg=e,a?(this.method="next",this.next=a.finallyLoc,l):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),l},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),P(r),l}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;P(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:j(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),l}},t}function u(t,e,r,n,o,a,i){try{var c=t[a](i),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function s(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var a=t.apply(e,r);function i(t){u(a,n,o,i,c,"next",t)}function c(t){u(a,n,o,i,c,"throw",t)}i(void 0)}))}}function p(){return(p=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t}).apply(this,arguments)}function f(t,e){if(null==t)return{};var r,n,o={},a=Object.keys(t);for(n=0;n<a.length;n++)e.indexOf(r=a[n])>=0||(o[r]=t[r]);return o}var l,h,d=["captureBeyondViewport"],v=["userAgent","isDarkMode","viewport","cookies"],m=require("child_process").execSync,y=function(){return global.browser},w=function(){return global.page},g=process.argv.includes("--ci")||process.env.CI,x=g||"9223"===new URL(y().wsEndpoint()).port,b=function(){return g?"localhost":x?"linux"===process.platform?"172.17.0.1":"host.docker.internal":"localhost"}(),k=null!=(l=JSON.parse(r.readFileSync(e.join(n(process.cwd()),"package.json"),"utf-8")).acceptanceTests)?l:{},E=null!=(h=g?k.ciServer:k.devServer)?h:k.server,O=null==E?void 0:E.port,P=!1;expect.extend({toMatchImageSnapshot:x?a.configureToMatchImageSnapshot({failureThreshold:0,failureThresholdType:"percent",customSnapshotIdentifier:function(t){return t.defaultIdentifier}}):function(){return P=!0,{message:function(){return""},pass:!0}}}),afterEach((function(){if(P){var t=new Error("Calling .toMatchImageSnapshot() is not allowed outside dockerized browser. Please, run your screenshot test in headless mode.");throw t.stack=(t.stack||"").split("\n")[0],t}}));var L=function(){var t=s(c().mark((function t(e,r){var n,o,a,i,u,s,p,f,l;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=void 0===(o=(n=void 0===r?{}:r).fullPage)||o,i=n.captureBeyondViewport,u=15e3,s=250,p=Date.now(),t.next=6,e.screenshot(j({fullPage:a,captureBeyondViewport:i}));case 6:return f=t.sent,t.next=9,new Promise((function(t){return setTimeout(t,s)}));case 9:return t.next=11,e.screenshot(j({fullPage:a,captureBeyondViewport:i}));case 11:l=t.sent;case 12:if(!f.compare(l)){t.next=23;break}if(!(Date.now()-p>u)){t.next=15;break}throw Error("Paint end timeout");case 15:return f=l,t.next=18,new Promise((function(t){return setTimeout(t,s)}));case 18:return t.next=20,e.screenshot(j({fullPage:a,captureBeyondViewport:i}));case 20:l=t.sent,t.next=12;break;case 23:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}(),j=function(t){var e=void 0===t?{}:t,r=e.captureBeyondViewport,n=void 0!==r&&r;return p({},f(e,d),{captureBeyondViewport:n})},T=function(t){return t.evaluate((function(t){return t.scrollIntoView({block:"center"})}))},S=function(t){var e=Object.create(t);return e.type=function(){var t=s(c().mark((function t(e,r,n){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,T(e);case 2:return t.abrupt("return",e.type(r,n));case 3:case"end":return t.stop()}}),t)})));return function(e,r,n){return t.apply(this,arguments)}}(),e.click=function(){var t=s(c().mark((function t(e,r){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,T(e);case 2:return t.abrupt("return",e.click(r));case 3:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}(),e.select=function(){var t=s(c().mark((function t(e){var r,n,o,a=arguments;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,T(e);case 2:for(r=a.length,n=new Array(r>1?r-1:0),o=1;o<r;o++)n[o-1]=a[o];return t.abrupt("return",e.select.apply(e,n));case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),e.screenshot=function(){var e=s(c().mark((function e(r){return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=r&&r.skipNetworkWait){e.next=3;break}return e.next=3,t.waitForNetworkIdle();case 3:return e.next=5,L(t,r);case 5:return e.abrupt("return",t.screenshot(j(r)));case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),e.clear=function(){var t=s(c().mark((function t(e){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.click({clickCount:3});case 2:return t.next=4,e.press("Delete");case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),e.setGeolocation=function(e){return t.evaluate((function(t){window.navigator.geolocation.getCurrentPosition=function(e){e({coords:t})}}),e)},e},_=!1,N=[],A=function(t){var e,r=(null!=(e=N.find((function(e){return(0,e.matcher)(t)})))?e:{handler:null}).handler;if(r){var n=r(t);t.respond(n)}else t.continue()},I=function(t){_=!0;var e=jest.fn();return N.push({matcher:t,handler:e}),e},F=function(){var t=s(c().mark((function t(e){var r,n,o,a,i,u,s,p,l;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.userAgent,n=e.isDarkMode,o=e.viewport,a=e.cookies,i=f(e,v),u=function(){if(void 0!==i.url)return i.url;var t=i.path,e=void 0===t?"/":t,r=i.port,n=void 0===r?O:r,o=i.protocol,a=void 0===o?"http":o,c=i.hostname,u=void 0===c?b:c;if(!n)throw new Error("You must specify a port. You can specify it when calling openPage() or by configuring a dev and ci server in the acceptanceTests config in your package.json");return a+"://"+u+":"+n+e}(),t.t0=r,t.t0){t.next=7;break}return t.next=6,y().userAgent();case 6:t.t0=t.sent;case 7:return s=t.t0,p=w(),t.next=11,p.bringToFront();case 11:if(!o){t.next=14;break}return t.next=14,p.setViewport(o);case 14:if(!a){t.next=17;break}return t.next=17,p.setCookie.apply(p,a);case 17:return t.next=19,p.setUserAgent(s+" acceptance-test");case 19:return t.next=21,p.emulateMediaFeatures([{name:"prefers-color-scheme",value:n?"dark":"light"}]);case 21:return t.next=23,p.evaluateOnNewDocument((function(){var t=document.createElement("style");t.innerHTML="\n *, *:after, *:before {\n transition-delay: 0s !important;\n transition-duration: 0s !important;\n animation-delay: -0.0001s !important;\n animation-duration: 0s !important;\n animation-play-state: paused !important;\n caret-color: transparent !important;\n font-variant-ligatures: none !important;\n }\n *::-webkit-scrollbar {\n display: none !important;\n width: 0 !important;\n height: 0 !important;\n }\n ",window.addEventListener("DOMContentLoaded",(function(){document.head.appendChild(t)}))}));case 23:if(!_){t.next=27;break}return t.next=26,p.setRequestInterception(!0);case 26:p.on("request",A);case 27:return t.prev=27,t.next=30,p.goto(u);case 30:t.next=41;break;case 32:if(t.prev=32,t.t1=t.catch(27),!t.t1.message.includes("net::ERR_CONNECTION_REFUSED")){t.next=40;break}throw l=new Error("Could not connect to "+u+". Is the server running?"),Error.captureStackTrace(l,F),l;case 40:throw t.t1;case 41:return t.next=43,p.waitForFunction('document.fonts.status === "loaded"');case 43:return t.abrupt("return",S(p));case 44:case"end":return t.stop()}}),t,null,[[27,32]])})));return function(e){return t.apply(this,arguments)}}(),C=function(t){for(var e=void 0===t?{}:t,r=e.page,n=e.element,a={},i=function(){var t=f[u],e=t[0],i=t[1];a[e]=s(c().mark((function t(){var a,u,f,l,h,d,v,m,y=arguments;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.getDocument(null!=r?r:w());case 2:return a=t.sent,t.next=5,a.$("body");case 5:for(u=t.sent,f=y.length,l=new Array(f),h=0;h<f;h++)l[h]=y[h];return d=[].concat(l),e.startsWith("findBy")&&(1===d.length&&d.push(void 0),d.push({timeout:1e4})),t.next=11,i.apply(void 0,[null!=n?n:u].concat(d));case 11:return v=t.sent,(m=Object.create(v)).screenshot=function(){var t=s(c().mark((function t(e){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(null!=e&&e.skipNetworkWait){t.next=3;break}return t.next=3,(null!=r?r:w()).waitForNetworkIdle();case 3:return t.next=5,L(v,p({},e,{fullPage:!1}));case 5:return t.abrupt("return",v.screenshot(j(e)));case 6:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),m.click=function(){var t=s(c().mark((function t(e){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,T(v);case 2:return t.abrupt("return",v.click(e));case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),m.type=function(){var t=s(c().mark((function t(e,r){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,T(v);case 2:return t.abrupt("return",v.type(e,r));case 3:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}(),m.select=s(c().mark((function t(){var e=arguments;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,T(v);case 2:return t.abrupt("return",v.select.apply(v,e));case 3:case"end":return t.stop()}}),t)}))),t.abrupt("return",m);case 18:case"end":return t.stop()}}),t)})))},u=0,f=Object.entries(o.queries);u<f.length;u++)i();return a},q=C();beforeEach(s(c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,w().setRequestInterception(!1);case 2:return t.next=4,global.jestPuppeteer.resetPage();case 4:case"end":return t.stop()}}),t)})))),afterEach(s(c().mark((function t(){var e;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,e=w(),N=[],_=!1,e.off("request",A),t.next=7,e.goto("about:blank");case 7:t.next=11;break;case 9:t.prev=9,t.t0=t.catch(0);case 11:case"end":return t.stop()}}),t,null,[[0,9]])})))),exports.createApiEndpointMock=function(t){var e=t.baseUrl;return I((function(t){return"OPTIONS"===t.method()&&t.url().startsWith(e)})).mockImplementation((function(){return{status:204,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"POST,PATCH,PUT,GET,OPTIONS","Access-Control-Allow-Headers":"*"}}})),{spyOn:function(t,r){void 0===r&&(r="GET");var n=jest.fn();return I((function(n){var o=n.url(),a=o.substring(e.length);return n.method()===r&&o.startsWith(e)&&!!a.match(i(t))})).mockImplementation((function(t){var e,r=n(t);return{status:null!=(e=r.status)?e:200,headers:{"Access-Control-Allow-Origin":"*"},contentType:"application/json",body:JSON.stringify(r.body||r)}})),n}}},exports.getGlobalBrowser=y,exports.getGlobalPage=w,exports.getPageApi=S,exports.getScreen=function(t){return C({page:t})},exports.interceptRequest=I,exports.openPage=F,exports.prepareFile=function(t){var n=!!process.env.HEADLESS,o=!g&&n,a=e.join(__dirname,"..","docker-compose.yaml");if(o){var i=m("docker-compose -f "+a+" ps -q").toString().trim();if(!i)throw Error("acceptance-testing container not found");m("docker cp "+t+" "+i+":/tmp");var c=e.join("/tmp",e.basename(t));return r.copyFileSync(t,c),c}return t},exports.screen=q,exports.serverHostName=b,exports.serverPort=O,exports.wait=function(t,e,r){void 0===e&&(e=1e4),void 0===r&&(r=50);var n=Date.now(),o=(new Error).stack;return new Promise((function(a,i){var c=function(t){if(Date.now()-n>=e)return t instanceof Error&&"Element not removed"===t.message&&(t.stack=o),void i(t);setTimeout(u,r)},u=function(){try{Promise.resolve(t()).then((function(t){return a(t)})).catch(c)}catch(t){c(t)}};setTimeout(u,0)}))},exports.waitForElementToBeRemoved=function(t,e,r){void 0===e&&(e=1e4),void 0===r&&(r=100);var n=(new Error).stack;return function(){var n=s(c().mark((function n(){var o;return c().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:o=Date.now();case 1:if(!(Date.now()-o<e)){n.next=11;break}return n.next=4,t.boundingBox();case 4:if(n.sent){n.next=7;break}return n.abrupt("return");case 7:return n.next=9,new Promise((function(t){return setTimeout(t,r)}));case 9:n.next=1;break;case 11:throw new Error("Element not removed");case 12:case"end":return n.stop()}}),n)})));return function(){return n.apply(this,arguments)}}()().catch((function(t){throw"Element not removed"===t.message&&(t.stack=n),t}))},exports.within=function(t){return C({element:t})};
|
|
2
2
|
//# sourceMappingURL=acceptance-testing.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acceptance-testing.cjs.production.min.js","sources":["../src/index.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs';\nimport findRoot from 'find-root';\nimport {getDocument, queries} from 'pptr-testing-library';\nimport {configureToMatchImageSnapshot} from 'jest-image-snapshot';\nimport globToRegExp from 'glob-to-regexp';\nconst execSync = require('child_process').execSync;\n\nimport type {\n Page,\n ElementHandle,\n ScreenshotOptions,\n Browser,\n ClickOptions,\n Viewport,\n GeolocationOptions,\n HTTPRequest,\n ResponseForRequest,\n} from 'puppeteer';\nimport type {getQueriesForElement} from 'pptr-testing-library';\n\ntype CustomScreenshotOptions = ScreenshotOptions & {\n skipNetworkWait?: boolean;\n};\n\nexport const getGlobalBrowser = (): Browser => (global as any).browser;\nexport const getGlobalPage = (): Page => (global as any).page;\n\nconst isCi = process.argv.includes('--ci') || process.env.CI;\nconst isUsingDockerizedChromium = isCi || new URL(getGlobalBrowser().wsEndpoint()).port === '9223';\n\nexport const serverHostName = ((): string => {\n if (isCi) {\n return 'localhost';\n }\n\n if (isUsingDockerizedChromium) {\n return process.platform === 'linux' ? '172.17.0.1' : 'host.docker.internal';\n }\n\n return 'localhost';\n})();\n\nconst rootDir = findRoot(process.cwd());\nconst pkg = JSON.parse(fs.readFileSync(path.join(rootDir, 'package.json'), 'utf-8'));\nconst projectConfig = pkg.acceptanceTests ?? {};\nconst server = (isCi ? projectConfig.ciServer : projectConfig.devServer) ?? projectConfig.server;\n\nexport const serverPort = server?.port;\n\nconst toMatchImageSnapshot = configureToMatchImageSnapshot({\n failureThreshold: 0,\n failureThresholdType: 'percent',\n customSnapshotIdentifier: ({defaultIdentifier}) => defaultIdentifier,\n});\n\nlet calledToMatchImageSnapshotOutsideDocker = false;\n\nconst localToMatchImageSnapshot = () => {\n calledToMatchImageSnapshotOutsideDocker = true;\n // let the expectation pass, then fail in afterEach. This way we allow developers to debug screenshot tests in local\n // but don't allow them to save screenshots taken outside the dockerized chromium\n return {\n message: () => '',\n pass: true,\n };\n};\n\nexpect.extend({\n toMatchImageSnapshot: isUsingDockerizedChromium ? toMatchImageSnapshot : localToMatchImageSnapshot,\n});\n\nafterEach(() => {\n if (calledToMatchImageSnapshotOutsideDocker) {\n const error = new Error(\n `Calling .toMatchImageSnapshot() is not allowed outside dockerized browser. Please, run your screenshot test in headless mode.`\n );\n error.stack = (error.stack || '').split('\\n')[0];\n throw error;\n }\n});\n\ntype WaitForPaintEndOptions = {\n fullPage?: boolean;\n captureBeyondViewport?: boolean;\n};\n\nconst waitForPaintEnd = async (\n element: ElementHandle | Page,\n {fullPage = true, captureBeyondViewport}: WaitForPaintEndOptions = {}\n) => {\n const MAX_WAIT = 15000;\n const STEP_TIME = 250;\n const t0 = Date.now();\n\n let buf1 = (await element.screenshot(\n normalizeSreenshotOptions({fullPage, captureBeyondViewport})\n )) as Buffer;\n await new Promise((r) => setTimeout(r, STEP_TIME));\n let buf2 = (await element.screenshot(\n normalizeSreenshotOptions({fullPage, captureBeyondViewport})\n )) as Buffer;\n\n // buffers are different if compare != 0\n while (buf1.compare(buf2)) {\n if (Date.now() - t0 > MAX_WAIT) {\n throw Error('Paint end timeout');\n }\n buf1 = buf2;\n await new Promise((r) => setTimeout(r, STEP_TIME));\n buf2 = (await element.screenshot(\n normalizeSreenshotOptions({fullPage, captureBeyondViewport})\n )) as Buffer;\n }\n};\n\nexport interface PageApi extends Omit<Page, 'click' | 'type' | 'select'> {\n clear: (selector: ElementHandle) => Promise<void>;\n // These are overridden:\n type: (selector: ElementHandle, text: string, options?: {delay: number}) => Promise<void>;\n click: (selector: ElementHandle, options?: ClickOptions) => Promise<void>;\n select: (selector: ElementHandle, ...values: string[]) => Promise<string[]>;\n screenshot: (options?: CustomScreenshotOptions) => Promise<Buffer | string | void>;\n}\n\nconst normalizeSreenshotOptions = ({captureBeyondViewport = false, ...options}: ScreenshotOptions = {}) => {\n // Puppeter default for captureBeyondViewport is true, but we think false is a better default.\n // When this is true, the fixed elements (like fixed footers) are relative to the original page\n // viewport, not to the full page, so those elements look weird in fullPage screenshots.\n return {...options, captureBeyondViewport};\n};\n\n// Puppeteer already calls scrollIntoViewIfNeeded before clicking an element. But it doesn't work in all situations\n// For example, when there is a fixed footer in the page and the element to click is under it, the browser won't scroll\n// because the element is already in the viewport (the ifNeeded part is important here). By forcing the scroll to the\n// center, we manage to fix these edge cases.\nconst scrollIntoView = (el: ElementHandle) => el.evaluate((e) => e.scrollIntoView({block: 'center'}));\n\nexport const getPageApi = (page: Page): PageApi => {\n const api: PageApi = Object.create(page);\n\n api.type = async (elementHandle, text, options) => {\n await scrollIntoView(elementHandle);\n return elementHandle.type(text, options);\n };\n api.click = async (elementHandle, options) => {\n await scrollIntoView(elementHandle);\n return elementHandle.click(options);\n };\n api.select = async (elementHandle, ...values) => {\n await scrollIntoView(elementHandle);\n return elementHandle.select(...values);\n };\n\n api.screenshot = async (options?: CustomScreenshotOptions) => {\n if (!options?.skipNetworkWait) {\n await page.waitForNetworkIdle();\n }\n await waitForPaintEnd(page, options);\n return page.screenshot(normalizeSreenshotOptions(options));\n };\n\n api.clear = async (elementHandle) => {\n await elementHandle.click({clickCount: 3});\n await elementHandle.press('Delete');\n };\n\n // For some reason, puppeteer browserContext.overridePermissions doesn't work with newer chrome versions.\n // This workaround polyfills the browser geolocation api to return the mocked position\n api.setGeolocation = (position: GeolocationOptions) =>\n page.evaluate((position) => {\n window.navigator.geolocation.getCurrentPosition = (callback) => {\n // @ts-ignore\n callback({\n coords: position,\n });\n };\n }, position as any);\n\n return api;\n};\n\nlet needsRequestInterception = false;\ntype RequestMatcherFn = (req: HTTPRequest) => boolean;\nlet requestHandlers: Array<{\n matcher: RequestMatcherFn;\n handler: jest.Mock<any, any>;\n}> = [];\n\nconst requestInterceptor = (req: HTTPRequest) => {\n const {handler} = requestHandlers.find(({matcher}) => matcher(req)) ?? {handler: null};\n if (!handler) {\n req.continue();\n return;\n }\n const response = handler(req);\n req.respond(response);\n};\n\nexport const interceptRequest = (\n matcher: RequestMatcherFn\n): jest.Mock<Partial<ResponseForRequest>, [HTTPRequest]> => {\n needsRequestInterception = true;\n const spy = jest.fn();\n requestHandlers.push({matcher, handler: spy});\n return spy;\n};\n\ntype ApiEndpointMock = {\n spyOn(path: string, method?: string): jest.Mock<unknown, [HTTPRequest]>;\n};\n\nexport const createApiEndpointMock = ({baseUrl}: {baseUrl: string}): ApiEndpointMock => {\n interceptRequest((req) => req.method() === 'OPTIONS' && req.url().startsWith(baseUrl)).mockImplementation(\n () => ({\n status: 204,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'POST,PATCH,PUT,GET,OPTIONS',\n 'Access-Control-Allow-Headers': '*',\n },\n })\n );\n\n return {\n spyOn(path: string, method: string = 'GET') {\n const matcher = (req: HTTPRequest) => {\n const url = req.url();\n const urlPath = url.substring(baseUrl.length);\n return (\n req.method() === method && url.startsWith(baseUrl) && !!urlPath.match(globToRegExp(path))\n );\n };\n\n const spy = jest.fn();\n\n interceptRequest(matcher).mockImplementation((req) => {\n const spyResult = spy(req);\n const status = spyResult.status ?? 200;\n const resBody = spyResult.body || spyResult;\n return {\n status,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n },\n contentType: 'application/json',\n body: JSON.stringify(resBody),\n };\n });\n\n return spy;\n },\n };\n};\n\ntype CookieConfig = {\n name: string;\n value: string;\n url?: string;\n domain?: string;\n path?: string;\n secure?: boolean;\n httpOnly?: boolean;\n sameSite?: 'Strict' | 'Lax' | 'None';\n expires?: number;\n priority?: 'Low' | 'Medium' | 'High';\n sameParty?: boolean;\n sourceScheme?: 'Unset' | 'NonSecure' | 'Secure';\n sourcePort?: number;\n};\n\ninterface OpenPageCommonConfig {\n userAgent?: string;\n viewport?: Viewport;\n isDarkMode?: boolean;\n cookies?: Array<CookieConfig>;\n}\n\ninterface OpenPageUrlConfig extends OpenPageCommonConfig {\n url: string;\n}\n\ninterface OpenPagePathConfig extends OpenPageCommonConfig {\n url?: undefined;\n\n path?: string;\n port?: number;\n protocol?: string;\n hostname?: string;\n}\n\ntype OpenPageConfig = OpenPageUrlConfig | OpenPagePathConfig;\n\nexport const openPage = async ({\n userAgent,\n isDarkMode,\n viewport,\n cookies,\n ...urlConfig\n}: OpenPageConfig): Promise<PageApi> => {\n const url = ((): string => {\n if (urlConfig.url !== undefined) {\n return urlConfig.url;\n }\n\n const {path = '/', port = serverPort, protocol = 'http', hostname = serverHostName} = urlConfig;\n\n if (!port) {\n const error = new Error(\n 'You must specify a port. You can specify it when calling openPage() or by configuring a dev and ci server in the acceptanceTests config in your package.json'\n );\n // Error.captureStackTrace(error, openPage);\n throw error;\n }\n\n return `${protocol}://${hostname}:${port}${path}`;\n })();\n\n const currentUserAgent = userAgent || (await getGlobalBrowser().userAgent());\n const page = getGlobalPage();\n\n await page.bringToFront();\n if (viewport) {\n await page.setViewport(viewport);\n }\n if (cookies) {\n await page.setCookie(...cookies);\n }\n await page.setUserAgent(`${currentUserAgent} acceptance-test`);\n await page.emulateMediaFeatures([{name: 'prefers-color-scheme', value: isDarkMode ? 'dark' : 'light'}]);\n\n // A set of styles to make screenshot tests more reliable.\n await page.evaluateOnNewDocument(() => {\n const style = document.createElement('style');\n style.innerHTML = `\n *, *:after, *:before {\n transition-delay: 0s !important;\n transition-duration: 0s !important;\n animation-delay: -0.0001s !important;\n animation-duration: 0s !important;\n animation-play-state: paused !important;\n caret-color: transparent !important;\n font-variant-ligatures: none !important;\n }\n *::-webkit-scrollbar {\n display: none !important;\n width: 0 !important;\n height: 0 !important;\n }\n `;\n window.addEventListener('DOMContentLoaded', () => {\n document.head.appendChild(style);\n });\n });\n\n if (needsRequestInterception) {\n await page.setRequestInterception(true);\n page.on('request', requestInterceptor);\n }\n\n try {\n await page.goto(url);\n } catch (e) {\n if ((e as Error).message.includes('net::ERR_CONNECTION_REFUSED')) {\n const connectionError = new Error(`Could not connect to ${url}. Is the server running?`);\n Error.captureStackTrace(connectionError, openPage);\n throw connectionError;\n } else {\n throw e;\n }\n }\n await page.waitForFunction('document.fonts.status === \"loaded\"');\n\n return getPageApi(page);\n};\n\nconst buildQueryMethods = ({page, element}: {page?: Page; element?: ElementHandle} = {}): ReturnType<\n typeof getQueriesForElement\n> => {\n const boundQueries: any = {};\n for (const [queryName, queryFn] of Object.entries(queries)) {\n boundQueries[queryName] = async (...args: any) => {\n const doc = await getDocument(page ?? getGlobalPage());\n const body = await doc.$('body');\n const queryArgs = [...args];\n if (queryName.startsWith('findBy')) {\n if (queryArgs.length === 1) {\n queryArgs.push(undefined);\n }\n queryArgs.push({timeout: 10000});\n }\n const elementHandle: ElementHandle = await queryFn(element ?? body, ...queryArgs);\n\n const newElementHandle = Object.create(elementHandle);\n\n newElementHandle.screenshot = async (options: CustomScreenshotOptions) => {\n if (!options?.skipNetworkWait) {\n await (page ?? getGlobalPage()).waitForNetworkIdle();\n }\n await waitForPaintEnd(elementHandle, {...options, fullPage: false});\n return elementHandle.screenshot(normalizeSreenshotOptions(options));\n };\n\n newElementHandle.click = async (options?: ClickOptions) => {\n await scrollIntoView(elementHandle);\n return elementHandle.click(options);\n };\n\n newElementHandle.type = async (text: string, options?: {delay: number}) => {\n await scrollIntoView(elementHandle);\n return elementHandle.type(text, options);\n };\n\n newElementHandle.select = async (...values: Array<string>) => {\n await scrollIntoView(elementHandle);\n return elementHandle.select(...values);\n };\n\n return newElementHandle;\n };\n }\n return boundQueries;\n};\n\nexport const getScreen = (page: Page) => buildQueryMethods({page});\n\nexport const screen = buildQueryMethods();\n\nexport const within = (element: ElementHandle) => buildQueryMethods({element});\n\nexport type {ElementHandle, Viewport} from 'puppeteer';\n\nbeforeEach(async () => {\n await getGlobalPage().setRequestInterception(false);\n // by resetting the page we clean up all the evaluateOnNewDocument calls, which are persistent between documents\n await (global as any).jestPuppeteer.resetPage();\n});\n\nafterEach(async () => {\n try {\n const page = getGlobalPage();\n requestHandlers = [];\n needsRequestInterception = false;\n page.off('request', requestInterceptor);\n\n // clear tab, this way we clear the DOM and stop js execution or pending requests\n await page.goto('about:blank');\n } catch (e) {\n // ignore, at this point page might be destroyed\n }\n});\n\n/**\n * Returns a new path to the file that can be used by chromium in acceptance tests\n *\n * To be able to use `element.uploadFile()` in a dockerized chromium, the file must exist in the\n * host and the docker, and both sides must use the same path.\n *\n * To workaround this bug or limitation, this function prepares the file by copying it to /tmp in\n * the host and the container.\n */\nexport const prepareFile = (filepath: string): string => {\n const isLocal = !isCi;\n const isHeadless = !!process.env.HEADLESS;\n const usesDocker = isLocal && isHeadless;\n\n const dockerComposeFile = path.join(__dirname, '..', 'docker-compose.yaml');\n\n if (usesDocker) {\n const containerId = execSync(`docker-compose -f ${dockerComposeFile} ps -q`).toString().trim();\n\n if (!containerId) {\n throw Error('acceptance-testing container not found');\n }\n\n execSync(`docker cp ${filepath} ${containerId}:/tmp`);\n\n const newPath = path.join('/tmp', path.basename(filepath));\n\n fs.copyFileSync(filepath, newPath);\n\n return newPath;\n } else {\n return filepath;\n }\n};\n\n/**\n * A convenience method to defer an expectation\n */\nexport const wait = <T>(expectation: () => Promise<T> | T, timeout = 10000, interval = 50): Promise<T> => {\n const startTime = Date.now();\n return new Promise((resolve, reject) => {\n const rejectOrRerun = (error: unknown) => {\n if (Date.now() - startTime >= timeout) {\n reject(error);\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n setTimeout(runExpectation, interval);\n };\n const runExpectation = () => {\n try {\n Promise.resolve(expectation())\n .then((r) => resolve(r))\n .catch(rejectOrRerun);\n } catch (error) {\n rejectOrRerun(error);\n }\n };\n setTimeout(runExpectation, 0);\n });\n};\n"],"names":["execSync","require","getGlobalBrowser","global","browser","getGlobalPage","page","isCi","process","argv","includes","env","CI","isUsingDockerizedChromium","URL","wsEndpoint","port","serverHostName","platform","projectConfig","_pkg$acceptanceTests","JSON","parse","fs","readFileSync","path","join","findRoot","cwd","acceptanceTests","server","_ref","ciServer","devServer","serverPort","calledToMatchImageSnapshotOutsideDocker","expect","extend","toMatchImageSnapshot","configureToMatchImageSnapshot","failureThreshold","failureThresholdType","customSnapshotIdentifier","_ref2","defaultIdentifier","message","pass","afterEach","error","Error","stack","split","waitForPaintEnd","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","element","_temp","_ref4","_ref4$fullPage","fullPage","captureBeyondViewport","MAX_WAIT","STEP_TIME","t0","buf1","buf2","wrap","_context","prev","next","Date","now","screenshot","normalizeSreenshotOptions","sent","Promise","r","setTimeout","compare","stop","_x","_x2","apply","arguments","_temp2","_ref5$captureBeyondVi","_ref5","_extends","_objectWithoutPropertiesLoose","_excluded","scrollIntoView","el","evaluate","e","block","getPageApi","api","Object","create","type","_ref6","_callee2","elementHandle","text","options","_context2","abrupt","_x3","_x4","_x5","click","_ref7","_callee3","_context3","_x6","_x7","select","_ref8","_callee4","_len","values","_key","_args4","_context4","length","Array","_x8","_ref9","_callee5","_context5","skipNetworkWait","waitForNetworkIdle","_x9","clear","_ref10","_callee6","_context6","clickCount","press","_x10","setGeolocation","position","window","navigator","geolocation","getCurrentPosition","callback","coords","needsRequestInterception","requestHandlers","requestInterceptor","req","handler","_requestHandlers$find","find","_ref12","matcher","response","respond","interceptRequest","spy","jest","fn","push","openPage","_ref15","_callee7","_ref14","userAgent","isDarkMode","viewport","cookies","urlConfig","url","currentUserAgent","connectionError","_context7","_excluded2","undefined","_urlConfig$path","_urlConfig$port","_urlConfig$protocol","protocol","_urlConfig$hostname","hostname","bringToFront","setViewport","setCookie","setUserAgent","emulateMediaFeatures","name","value","evaluateOnNewDocument","style","document","createElement","innerHTML","addEventListener","head","appendChild","setRequestInterception","on","t1","captureStackTrace","waitForFunction","_x11","buildQueryMethods","_temp3","_ref16","boundQueries","_loop","_Object$entries$_i","_Object$entries","_i","queryName","queryFn","_callee12","doc","body","_len2","args","_key2","queryArgs","newElementHandle","_args12","_context12","getDocument","$","concat","startsWith","timeout","_ref18","_callee8","_context8","_x12","_ref19","_callee9","_context9","_x13","_ref20","_callee10","_context10","_x14","_x15","_callee11","_args11","_context11","entries","queries","screen","beforeEach","_callee13","_context13","jestPuppeteer","resetPage","_callee14","_context14","off","_ref13","baseUrl","method","mockImplementation","status","headers","Access-Control-Allow-Origin","Access-Control-Allow-Methods","Access-Control-Allow-Headers","spyOn","urlPath","substring","match","globToRegExp","spyResult","_spyResult$status","contentType","stringify","filepath","isHeadless","HEADLESS","usesDocker","dockerComposeFile","__dirname","containerId","toString","trim","newPath","basename","copyFileSync","expectation","interval","startTime","resolve","reject","rejectOrRerun","runExpectation","then"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acceptance-testing.cjs.production.min.js","sources":["../src/index.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs';\nimport findRoot from 'find-root';\nimport {getDocument, queries} from 'pptr-testing-library';\nimport {configureToMatchImageSnapshot} from 'jest-image-snapshot';\nimport globToRegExp from 'glob-to-regexp';\nconst execSync = require('child_process').execSync;\n\nimport type {\n Page,\n ElementHandle,\n ScreenshotOptions,\n Browser,\n ClickOptions,\n Viewport,\n GeolocationOptions,\n HTTPRequest,\n ResponseForRequest,\n} from 'puppeteer';\nimport type {getQueriesForElement} from 'pptr-testing-library';\n\ntype CustomScreenshotOptions = ScreenshotOptions & {\n skipNetworkWait?: boolean;\n};\n\nexport const getGlobalBrowser = (): Browser => (global as any).browser;\nexport const getGlobalPage = (): Page => (global as any).page;\n\nconst isCi = process.argv.includes('--ci') || process.env.CI;\nconst isUsingDockerizedChromium = isCi || new URL(getGlobalBrowser().wsEndpoint()).port === '9223';\n\nexport const serverHostName = ((): string => {\n if (isCi) {\n return 'localhost';\n }\n\n if (isUsingDockerizedChromium) {\n return process.platform === 'linux' ? '172.17.0.1' : 'host.docker.internal';\n }\n\n return 'localhost';\n})();\n\nconst rootDir = findRoot(process.cwd());\nconst pkg = JSON.parse(fs.readFileSync(path.join(rootDir, 'package.json'), 'utf-8'));\nconst projectConfig = pkg.acceptanceTests ?? {};\nconst server = (isCi ? projectConfig.ciServer : projectConfig.devServer) ?? projectConfig.server;\n\nexport const serverPort = server?.port;\n\nconst toMatchImageSnapshot = configureToMatchImageSnapshot({\n failureThreshold: 0,\n failureThresholdType: 'percent',\n customSnapshotIdentifier: ({defaultIdentifier}) => defaultIdentifier,\n});\n\nlet calledToMatchImageSnapshotOutsideDocker = false;\n\nconst localToMatchImageSnapshot = () => {\n calledToMatchImageSnapshotOutsideDocker = true;\n // let the expectation pass, then fail in afterEach. This way we allow developers to debug screenshot tests in local\n // but don't allow them to save screenshots taken outside the dockerized chromium\n return {\n message: () => '',\n pass: true,\n };\n};\n\nexpect.extend({\n toMatchImageSnapshot: isUsingDockerizedChromium ? toMatchImageSnapshot : localToMatchImageSnapshot,\n});\n\nafterEach(() => {\n if (calledToMatchImageSnapshotOutsideDocker) {\n const error = new Error(\n `Calling .toMatchImageSnapshot() is not allowed outside dockerized browser. Please, run your screenshot test in headless mode.`\n );\n error.stack = (error.stack || '').split('\\n')[0];\n throw error;\n }\n});\n\ntype WaitForPaintEndOptions = {\n fullPage?: boolean;\n captureBeyondViewport?: boolean;\n};\n\nconst waitForPaintEnd = async (\n element: ElementHandle | Page,\n {fullPage = true, captureBeyondViewport}: WaitForPaintEndOptions = {}\n) => {\n const MAX_WAIT = 15000;\n const STEP_TIME = 250;\n const t0 = Date.now();\n\n let buf1 = (await element.screenshot(\n normalizeSreenshotOptions({fullPage, captureBeyondViewport})\n )) as Buffer;\n await new Promise((r) => setTimeout(r, STEP_TIME));\n let buf2 = (await element.screenshot(\n normalizeSreenshotOptions({fullPage, captureBeyondViewport})\n )) as Buffer;\n\n // buffers are different if compare != 0\n while (buf1.compare(buf2)) {\n if (Date.now() - t0 > MAX_WAIT) {\n throw Error('Paint end timeout');\n }\n buf1 = buf2;\n await new Promise((r) => setTimeout(r, STEP_TIME));\n buf2 = (await element.screenshot(\n normalizeSreenshotOptions({fullPage, captureBeyondViewport})\n )) as Buffer;\n }\n};\n\nexport interface PageApi extends Omit<Page, 'click' | 'type' | 'select'> {\n clear: (selector: ElementHandle) => Promise<void>;\n // These are overridden:\n type: (selector: ElementHandle, text: string, options?: {delay: number}) => Promise<void>;\n click: (selector: ElementHandle, options?: ClickOptions) => Promise<void>;\n select: (selector: ElementHandle, ...values: string[]) => Promise<string[]>;\n screenshot: (options?: CustomScreenshotOptions) => Promise<Buffer | string | void>;\n}\n\nconst normalizeSreenshotOptions = ({captureBeyondViewport = false, ...options}: ScreenshotOptions = {}) => {\n // Puppeter default for captureBeyondViewport is true, but we think false is a better default.\n // When this is true, the fixed elements (like fixed footers) are relative to the original page\n // viewport, not to the full page, so those elements look weird in fullPage screenshots.\n return {...options, captureBeyondViewport};\n};\n\n// Puppeteer already calls scrollIntoViewIfNeeded before clicking an element. But it doesn't work in all situations\n// For example, when there is a fixed footer in the page and the element to click is under it, the browser won't scroll\n// because the element is already in the viewport (the ifNeeded part is important here). By forcing the scroll to the\n// center, we manage to fix these edge cases.\nconst scrollIntoView = (el: ElementHandle) => el.evaluate((e) => e.scrollIntoView({block: 'center'}));\n\nexport const getPageApi = (page: Page): PageApi => {\n const api: PageApi = Object.create(page);\n\n api.type = async (elementHandle, text, options) => {\n await scrollIntoView(elementHandle);\n return elementHandle.type(text, options);\n };\n api.click = async (elementHandle, options) => {\n await scrollIntoView(elementHandle);\n return elementHandle.click(options);\n };\n api.select = async (elementHandle, ...values) => {\n await scrollIntoView(elementHandle);\n return elementHandle.select(...values);\n };\n\n api.screenshot = async (options?: CustomScreenshotOptions) => {\n if (!options?.skipNetworkWait) {\n await page.waitForNetworkIdle();\n }\n await waitForPaintEnd(page, options);\n return page.screenshot(normalizeSreenshotOptions(options));\n };\n\n api.clear = async (elementHandle) => {\n await elementHandle.click({clickCount: 3});\n await elementHandle.press('Delete');\n };\n\n // For some reason, puppeteer browserContext.overridePermissions doesn't work with newer chrome versions.\n // This workaround polyfills the browser geolocation api to return the mocked position\n api.setGeolocation = (position: GeolocationOptions) =>\n page.evaluate((position) => {\n window.navigator.geolocation.getCurrentPosition = (callback) => {\n // @ts-ignore\n callback({\n coords: position,\n });\n };\n }, position as any);\n\n return api;\n};\n\nlet needsRequestInterception = false;\ntype RequestMatcherFn = (req: HTTPRequest) => boolean;\nlet requestHandlers: Array<{\n matcher: RequestMatcherFn;\n handler: jest.Mock<any, any>;\n}> = [];\n\nconst requestInterceptor = (req: HTTPRequest) => {\n const {handler} = requestHandlers.find(({matcher}) => matcher(req)) ?? {handler: null};\n if (!handler) {\n req.continue();\n return;\n }\n const response = handler(req);\n req.respond(response);\n};\n\nexport const interceptRequest = (\n matcher: RequestMatcherFn\n): jest.Mock<Partial<ResponseForRequest>, [HTTPRequest]> => {\n needsRequestInterception = true;\n const spy = jest.fn();\n requestHandlers.push({matcher, handler: spy});\n return spy;\n};\n\ntype ApiEndpointMock = {\n spyOn(path: string, method?: string): jest.Mock<unknown, [HTTPRequest]>;\n};\n\nexport const createApiEndpointMock = ({baseUrl}: {baseUrl: string}): ApiEndpointMock => {\n interceptRequest((req) => req.method() === 'OPTIONS' && req.url().startsWith(baseUrl)).mockImplementation(\n () => ({\n status: 204,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'POST,PATCH,PUT,GET,OPTIONS',\n 'Access-Control-Allow-Headers': '*',\n },\n })\n );\n\n return {\n spyOn(path: string, method: string = 'GET') {\n const matcher = (req: HTTPRequest) => {\n const url = req.url();\n const urlPath = url.substring(baseUrl.length);\n return (\n req.method() === method && url.startsWith(baseUrl) && !!urlPath.match(globToRegExp(path))\n );\n };\n\n const spy = jest.fn();\n\n interceptRequest(matcher).mockImplementation((req) => {\n const spyResult = spy(req);\n const status = spyResult.status ?? 200;\n const resBody = spyResult.body || spyResult;\n return {\n status,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n },\n contentType: 'application/json',\n body: JSON.stringify(resBody),\n };\n });\n\n return spy;\n },\n };\n};\n\ntype CookieConfig = {\n name: string;\n value: string;\n url?: string;\n domain?: string;\n path?: string;\n secure?: boolean;\n httpOnly?: boolean;\n sameSite?: 'Strict' | 'Lax' | 'None';\n expires?: number;\n priority?: 'Low' | 'Medium' | 'High';\n sameParty?: boolean;\n sourceScheme?: 'Unset' | 'NonSecure' | 'Secure';\n sourcePort?: number;\n};\n\ninterface OpenPageCommonConfig {\n userAgent?: string;\n viewport?: Viewport;\n isDarkMode?: boolean;\n cookies?: Array<CookieConfig>;\n}\n\ninterface OpenPageUrlConfig extends OpenPageCommonConfig {\n url: string;\n}\n\ninterface OpenPagePathConfig extends OpenPageCommonConfig {\n url?: undefined;\n\n path?: string;\n port?: number;\n protocol?: string;\n hostname?: string;\n}\n\ntype OpenPageConfig = OpenPageUrlConfig | OpenPagePathConfig;\n\nexport const openPage = async ({\n userAgent,\n isDarkMode,\n viewport,\n cookies,\n ...urlConfig\n}: OpenPageConfig): Promise<PageApi> => {\n const url = ((): string => {\n if (urlConfig.url !== undefined) {\n return urlConfig.url;\n }\n\n const {path = '/', port = serverPort, protocol = 'http', hostname = serverHostName} = urlConfig;\n\n if (!port) {\n const error = new Error(\n 'You must specify a port. You can specify it when calling openPage() or by configuring a dev and ci server in the acceptanceTests config in your package.json'\n );\n // Error.captureStackTrace(error, openPage);\n throw error;\n }\n\n return `${protocol}://${hostname}:${port}${path}`;\n })();\n\n const currentUserAgent = userAgent || (await getGlobalBrowser().userAgent());\n const page = getGlobalPage();\n\n await page.bringToFront();\n if (viewport) {\n await page.setViewport(viewport);\n }\n if (cookies) {\n await page.setCookie(...cookies);\n }\n await page.setUserAgent(`${currentUserAgent} acceptance-test`);\n await page.emulateMediaFeatures([{name: 'prefers-color-scheme', value: isDarkMode ? 'dark' : 'light'}]);\n\n // A set of styles to make screenshot tests more reliable.\n await page.evaluateOnNewDocument(() => {\n const style = document.createElement('style');\n style.innerHTML = `\n *, *:after, *:before {\n transition-delay: 0s !important;\n transition-duration: 0s !important;\n animation-delay: -0.0001s !important;\n animation-duration: 0s !important;\n animation-play-state: paused !important;\n caret-color: transparent !important;\n font-variant-ligatures: none !important;\n }\n *::-webkit-scrollbar {\n display: none !important;\n width: 0 !important;\n height: 0 !important;\n }\n `;\n window.addEventListener('DOMContentLoaded', () => {\n document.head.appendChild(style);\n });\n });\n\n if (needsRequestInterception) {\n await page.setRequestInterception(true);\n page.on('request', requestInterceptor);\n }\n\n try {\n await page.goto(url);\n } catch (e) {\n if ((e as Error).message.includes('net::ERR_CONNECTION_REFUSED')) {\n const connectionError = new Error(`Could not connect to ${url}. Is the server running?`);\n Error.captureStackTrace(connectionError, openPage);\n throw connectionError;\n } else {\n throw e;\n }\n }\n await page.waitForFunction('document.fonts.status === \"loaded\"');\n\n return getPageApi(page);\n};\n\nconst buildQueryMethods = ({page, element}: {page?: Page; element?: ElementHandle} = {}): ReturnType<\n typeof getQueriesForElement\n> => {\n const boundQueries: any = {};\n for (const [queryName, queryFn] of Object.entries(queries)) {\n boundQueries[queryName] = async (...args: any) => {\n const doc = await getDocument(page ?? getGlobalPage());\n const body = await doc.$('body');\n const queryArgs = [...args];\n if (queryName.startsWith('findBy')) {\n if (queryArgs.length === 1) {\n queryArgs.push(undefined);\n }\n queryArgs.push({timeout: 10000});\n }\n const elementHandle: ElementHandle = await queryFn(element ?? body, ...queryArgs);\n\n const newElementHandle = Object.create(elementHandle);\n\n newElementHandle.screenshot = async (options: CustomScreenshotOptions) => {\n if (!options?.skipNetworkWait) {\n await (page ?? getGlobalPage()).waitForNetworkIdle();\n }\n await waitForPaintEnd(elementHandle, {...options, fullPage: false});\n return elementHandle.screenshot(normalizeSreenshotOptions(options));\n };\n\n newElementHandle.click = async (options?: ClickOptions) => {\n await scrollIntoView(elementHandle);\n return elementHandle.click(options);\n };\n\n newElementHandle.type = async (text: string, options?: {delay: number}) => {\n await scrollIntoView(elementHandle);\n return elementHandle.type(text, options);\n };\n\n newElementHandle.select = async (...values: Array<string>) => {\n await scrollIntoView(elementHandle);\n return elementHandle.select(...values);\n };\n\n return newElementHandle;\n };\n }\n return boundQueries;\n};\n\nexport const getScreen = (page: Page) => buildQueryMethods({page});\n\nexport const screen = buildQueryMethods();\n\nexport const within = (element: ElementHandle) => buildQueryMethods({element});\n\nexport type {ElementHandle, Viewport} from 'puppeteer';\n\nbeforeEach(async () => {\n await getGlobalPage().setRequestInterception(false);\n // by resetting the page we clean up all the evaluateOnNewDocument calls, which are persistent between documents\n await (global as any).jestPuppeteer.resetPage();\n});\n\nafterEach(async () => {\n try {\n const page = getGlobalPage();\n requestHandlers = [];\n needsRequestInterception = false;\n page.off('request', requestInterceptor);\n\n // clear tab, this way we clear the DOM and stop js execution or pending requests\n await page.goto('about:blank');\n } catch (e) {\n // ignore, at this point page might be destroyed\n }\n});\n\n/**\n * Returns a new path to the file that can be used by chromium in acceptance tests\n *\n * To be able to use `element.uploadFile()` in a dockerized chromium, the file must exist in the\n * host and the docker, and both sides must use the same path.\n *\n * To workaround this bug or limitation, this function prepares the file by copying it to /tmp in\n * the host and the container.\n */\nexport const prepareFile = (filepath: string): string => {\n const isLocal = !isCi;\n const isHeadless = !!process.env.HEADLESS;\n const usesDocker = isLocal && isHeadless;\n\n const dockerComposeFile = path.join(__dirname, '..', 'docker-compose.yaml');\n\n if (usesDocker) {\n const containerId = execSync(`docker-compose -f ${dockerComposeFile} ps -q`).toString().trim();\n\n if (!containerId) {\n throw Error('acceptance-testing container not found');\n }\n\n execSync(`docker cp ${filepath} ${containerId}:/tmp`);\n\n const newPath = path.join('/tmp', path.basename(filepath));\n\n fs.copyFileSync(filepath, newPath);\n\n return newPath;\n } else {\n return filepath;\n }\n};\n\n/**\n * A convenience method to defer an expectation\n */\nexport const wait = <T>(expectation: () => Promise<T> | T, timeout = 10000, interval = 50): Promise<T> => {\n const startTime = Date.now();\n const startStack = new Error().stack;\n\n return new Promise((resolve, reject) => {\n const rejectOrRerun = (error: unknown) => {\n if (Date.now() - startTime >= timeout) {\n if (error instanceof Error) {\n if (error.message === 'Element not removed') {\n error.stack = startStack;\n }\n }\n reject(error);\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n setTimeout(runExpectation, interval);\n };\n const runExpectation = () => {\n try {\n Promise.resolve(expectation())\n .then((r) => resolve(r))\n .catch(rejectOrRerun);\n } catch (error) {\n rejectOrRerun(error);\n }\n };\n setTimeout(runExpectation, 0);\n });\n};\n\nexport const waitForElementToBeRemoved = (\n element: ElementHandle<Element>,\n timeout = 10000,\n interval = 100\n): Promise<void> => {\n const startStack = new Error().stack;\n\n const wait = async () => {\n const t0 = Date.now();\n while (Date.now() - t0 < timeout) {\n // boundingBox returns null when the element is not in the DOM\n const box = await element.boundingBox();\n if (!box) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n throw new Error('Element not removed');\n };\n\n return wait().catch((error) => {\n if (error.message === 'Element not removed') {\n error.stack = startStack;\n }\n throw error;\n });\n};\n"],"names":["execSync","require","getGlobalBrowser","global","browser","getGlobalPage","page","isCi","process","argv","includes","env","CI","isUsingDockerizedChromium","URL","wsEndpoint","port","serverHostName","platform","projectConfig","_pkg$acceptanceTests","JSON","parse","fs","readFileSync","path","join","findRoot","cwd","acceptanceTests","server","_ref","ciServer","devServer","serverPort","calledToMatchImageSnapshotOutsideDocker","expect","extend","toMatchImageSnapshot","configureToMatchImageSnapshot","failureThreshold","failureThresholdType","customSnapshotIdentifier","_ref2","defaultIdentifier","message","pass","afterEach","error","Error","stack","split","waitForPaintEnd","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","element","_temp","_ref4","_ref4$fullPage","fullPage","captureBeyondViewport","MAX_WAIT","STEP_TIME","t0","buf1","buf2","wrap","_context","prev","next","Date","now","screenshot","normalizeSreenshotOptions","sent","Promise","r","setTimeout","compare","stop","_x","_x2","apply","arguments","_temp2","_ref5$captureBeyondVi","_ref5","_extends","_objectWithoutPropertiesLoose","_excluded","scrollIntoView","el","evaluate","e","block","getPageApi","api","Object","create","type","_ref6","_callee2","elementHandle","text","options","_context2","abrupt","_x3","_x4","_x5","click","_ref7","_callee3","_context3","_x6","_x7","select","_ref8","_callee4","_len","values","_key","_args4","_context4","length","Array","_x8","_ref9","_callee5","_context5","skipNetworkWait","waitForNetworkIdle","_x9","clear","_ref10","_callee6","_context6","clickCount","press","_x10","setGeolocation","position","window","navigator","geolocation","getCurrentPosition","callback","coords","needsRequestInterception","requestHandlers","requestInterceptor","req","handler","_requestHandlers$find","find","_ref12","matcher","response","respond","interceptRequest","spy","jest","fn","push","openPage","_ref15","_callee7","_ref14","userAgent","isDarkMode","viewport","cookies","urlConfig","url","currentUserAgent","connectionError","_context7","_excluded2","undefined","_urlConfig$path","_urlConfig$port","_urlConfig$protocol","protocol","_urlConfig$hostname","hostname","bringToFront","setViewport","setCookie","setUserAgent","emulateMediaFeatures","name","value","evaluateOnNewDocument","style","document","createElement","innerHTML","addEventListener","head","appendChild","setRequestInterception","on","t1","captureStackTrace","waitForFunction","_x11","buildQueryMethods","_temp3","_ref16","boundQueries","_loop","_Object$entries$_i","_Object$entries","_i","queryName","queryFn","_callee12","doc","body","_len2","args","_key2","queryArgs","newElementHandle","_args12","_context12","getDocument","$","concat","startsWith","timeout","_ref18","_callee8","_context8","_x12","_ref19","_callee9","_context9","_x13","_ref20","_callee10","_context10","_x14","_x15","_callee11","_args11","_context11","entries","queries","screen","beforeEach","_callee13","_context13","jestPuppeteer","resetPage","_callee14","_context14","off","_ref13","baseUrl","method","mockImplementation","status","headers","Access-Control-Allow-Origin","Access-Control-Allow-Methods","Access-Control-Allow-Headers","spyOn","urlPath","substring","match","globToRegExp","spyResult","_spyResult$status","contentType","stringify","filepath","isHeadless","HEADLESS","usesDocker","dockerComposeFile","__dirname","containerId","toString","trim","newPath","basename","copyFileSync","expectation","interval","startTime","startStack","resolve","reject","rejectOrRerun","runExpectation","then","_ref24","_callee15","_context15","boundingBox","wait"],"mappings":"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"}
|
|
@@ -1050,9 +1050,15 @@ var wait = function wait(expectation, timeout, interval) {
|
|
|
1050
1050
|
interval = 50;
|
|
1051
1051
|
}
|
|
1052
1052
|
var startTime = Date.now();
|
|
1053
|
+
var startStack = new Error().stack;
|
|
1053
1054
|
return new Promise(function (resolve, reject) {
|
|
1054
1055
|
var rejectOrRerun = function rejectOrRerun(error) {
|
|
1055
1056
|
if (Date.now() - startTime >= timeout) {
|
|
1057
|
+
if (error instanceof Error) {
|
|
1058
|
+
if (error.message === 'Element not removed') {
|
|
1059
|
+
error.stack = startStack;
|
|
1060
|
+
}
|
|
1061
|
+
}
|
|
1056
1062
|
reject(error);
|
|
1057
1063
|
return;
|
|
1058
1064
|
}
|
|
@@ -1071,6 +1077,62 @@ var wait = function wait(expectation, timeout, interval) {
|
|
|
1071
1077
|
setTimeout(runExpectation, 0);
|
|
1072
1078
|
});
|
|
1073
1079
|
};
|
|
1080
|
+
var waitForElementToBeRemoved = function waitForElementToBeRemoved(element, timeout, interval) {
|
|
1081
|
+
if (timeout === void 0) {
|
|
1082
|
+
timeout = 10000;
|
|
1083
|
+
}
|
|
1084
|
+
if (interval === void 0) {
|
|
1085
|
+
interval = 100;
|
|
1086
|
+
}
|
|
1087
|
+
var startStack = new Error().stack;
|
|
1088
|
+
var wait = /*#__PURE__*/function () {
|
|
1089
|
+
var _ref24 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {
|
|
1090
|
+
var t0, box;
|
|
1091
|
+
return _regeneratorRuntime().wrap(function _callee15$(_context15) {
|
|
1092
|
+
while (1) switch (_context15.prev = _context15.next) {
|
|
1093
|
+
case 0:
|
|
1094
|
+
t0 = Date.now();
|
|
1095
|
+
case 1:
|
|
1096
|
+
if (!(Date.now() - t0 < timeout)) {
|
|
1097
|
+
_context15.next = 11;
|
|
1098
|
+
break;
|
|
1099
|
+
}
|
|
1100
|
+
_context15.next = 4;
|
|
1101
|
+
return element.boundingBox();
|
|
1102
|
+
case 4:
|
|
1103
|
+
box = _context15.sent;
|
|
1104
|
+
if (box) {
|
|
1105
|
+
_context15.next = 7;
|
|
1106
|
+
break;
|
|
1107
|
+
}
|
|
1108
|
+
return _context15.abrupt("return");
|
|
1109
|
+
case 7:
|
|
1110
|
+
_context15.next = 9;
|
|
1111
|
+
return new Promise(function (resolve) {
|
|
1112
|
+
return setTimeout(resolve, interval);
|
|
1113
|
+
});
|
|
1114
|
+
case 9:
|
|
1115
|
+
_context15.next = 1;
|
|
1116
|
+
break;
|
|
1117
|
+
case 11:
|
|
1118
|
+
throw new Error('Element not removed');
|
|
1119
|
+
case 12:
|
|
1120
|
+
case "end":
|
|
1121
|
+
return _context15.stop();
|
|
1122
|
+
}
|
|
1123
|
+
}, _callee15);
|
|
1124
|
+
}));
|
|
1125
|
+
return function wait() {
|
|
1126
|
+
return _ref24.apply(this, arguments);
|
|
1127
|
+
};
|
|
1128
|
+
}();
|
|
1129
|
+
return wait()["catch"](function (error) {
|
|
1130
|
+
if (error.message === 'Element not removed') {
|
|
1131
|
+
error.stack = startStack;
|
|
1132
|
+
}
|
|
1133
|
+
throw error;
|
|
1134
|
+
});
|
|
1135
|
+
};
|
|
1074
1136
|
|
|
1075
|
-
export { createApiEndpointMock, getGlobalBrowser, getGlobalPage, getPageApi, getScreen, interceptRequest, openPage, prepareFile, screen, serverHostName, serverPort, wait, within };
|
|
1137
|
+
export { createApiEndpointMock, getGlobalBrowser, getGlobalPage, getPageApi, getScreen, interceptRequest, openPage, prepareFile, screen, serverHostName, serverPort, wait, waitForElementToBeRemoved, within };
|
|
1076
1138
|
//# sourceMappingURL=acceptance-testing.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acceptance-testing.esm.js","sources":["../src/index.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs';\nimport findRoot from 'find-root';\nimport {getDocument, queries} from 'pptr-testing-library';\nimport {configureToMatchImageSnapshot} from 'jest-image-snapshot';\nimport globToRegExp from 'glob-to-regexp';\nconst execSync = require('child_process').execSync;\n\nimport type {\n Page,\n ElementHandle,\n ScreenshotOptions,\n Browser,\n ClickOptions,\n Viewport,\n GeolocationOptions,\n HTTPRequest,\n ResponseForRequest,\n} from 'puppeteer';\nimport type {getQueriesForElement} from 'pptr-testing-library';\n\ntype CustomScreenshotOptions = ScreenshotOptions & {\n skipNetworkWait?: boolean;\n};\n\nexport const getGlobalBrowser = (): Browser => (global as any).browser;\nexport const getGlobalPage = (): Page => (global as any).page;\n\nconst isCi = process.argv.includes('--ci') || process.env.CI;\nconst isUsingDockerizedChromium = isCi || new URL(getGlobalBrowser().wsEndpoint()).port === '9223';\n\nexport const serverHostName = ((): string => {\n if (isCi) {\n return 'localhost';\n }\n\n if (isUsingDockerizedChromium) {\n return process.platform === 'linux' ? '172.17.0.1' : 'host.docker.internal';\n }\n\n return 'localhost';\n})();\n\nconst rootDir = findRoot(process.cwd());\nconst pkg = JSON.parse(fs.readFileSync(path.join(rootDir, 'package.json'), 'utf-8'));\nconst projectConfig = pkg.acceptanceTests ?? {};\nconst server = (isCi ? projectConfig.ciServer : projectConfig.devServer) ?? projectConfig.server;\n\nexport const serverPort = server?.port;\n\nconst toMatchImageSnapshot = configureToMatchImageSnapshot({\n failureThreshold: 0,\n failureThresholdType: 'percent',\n customSnapshotIdentifier: ({defaultIdentifier}) => defaultIdentifier,\n});\n\nlet calledToMatchImageSnapshotOutsideDocker = false;\n\nconst localToMatchImageSnapshot = () => {\n calledToMatchImageSnapshotOutsideDocker = true;\n // let the expectation pass, then fail in afterEach. This way we allow developers to debug screenshot tests in local\n // but don't allow them to save screenshots taken outside the dockerized chromium\n return {\n message: () => '',\n pass: true,\n };\n};\n\nexpect.extend({\n toMatchImageSnapshot: isUsingDockerizedChromium ? toMatchImageSnapshot : localToMatchImageSnapshot,\n});\n\nafterEach(() => {\n if (calledToMatchImageSnapshotOutsideDocker) {\n const error = new Error(\n `Calling .toMatchImageSnapshot() is not allowed outside dockerized browser. Please, run your screenshot test in headless mode.`\n );\n error.stack = (error.stack || '').split('\\n')[0];\n throw error;\n }\n});\n\ntype WaitForPaintEndOptions = {\n fullPage?: boolean;\n captureBeyondViewport?: boolean;\n};\n\nconst waitForPaintEnd = async (\n element: ElementHandle | Page,\n {fullPage = true, captureBeyondViewport}: WaitForPaintEndOptions = {}\n) => {\n const MAX_WAIT = 15000;\n const STEP_TIME = 250;\n const t0 = Date.now();\n\n let buf1 = (await element.screenshot(\n normalizeSreenshotOptions({fullPage, captureBeyondViewport})\n )) as Buffer;\n await new Promise((r) => setTimeout(r, STEP_TIME));\n let buf2 = (await element.screenshot(\n normalizeSreenshotOptions({fullPage, captureBeyondViewport})\n )) as Buffer;\n\n // buffers are different if compare != 0\n while (buf1.compare(buf2)) {\n if (Date.now() - t0 > MAX_WAIT) {\n throw Error('Paint end timeout');\n }\n buf1 = buf2;\n await new Promise((r) => setTimeout(r, STEP_TIME));\n buf2 = (await element.screenshot(\n normalizeSreenshotOptions({fullPage, captureBeyondViewport})\n )) as Buffer;\n }\n};\n\nexport interface PageApi extends Omit<Page, 'click' | 'type' | 'select'> {\n clear: (selector: ElementHandle) => Promise<void>;\n // These are overridden:\n type: (selector: ElementHandle, text: string, options?: {delay: number}) => Promise<void>;\n click: (selector: ElementHandle, options?: ClickOptions) => Promise<void>;\n select: (selector: ElementHandle, ...values: string[]) => Promise<string[]>;\n screenshot: (options?: CustomScreenshotOptions) => Promise<Buffer | string | void>;\n}\n\nconst normalizeSreenshotOptions = ({captureBeyondViewport = false, ...options}: ScreenshotOptions = {}) => {\n // Puppeter default for captureBeyondViewport is true, but we think false is a better default.\n // When this is true, the fixed elements (like fixed footers) are relative to the original page\n // viewport, not to the full page, so those elements look weird in fullPage screenshots.\n return {...options, captureBeyondViewport};\n};\n\n// Puppeteer already calls scrollIntoViewIfNeeded before clicking an element. But it doesn't work in all situations\n// For example, when there is a fixed footer in the page and the element to click is under it, the browser won't scroll\n// because the element is already in the viewport (the ifNeeded part is important here). By forcing the scroll to the\n// center, we manage to fix these edge cases.\nconst scrollIntoView = (el: ElementHandle) => el.evaluate((e) => e.scrollIntoView({block: 'center'}));\n\nexport const getPageApi = (page: Page): PageApi => {\n const api: PageApi = Object.create(page);\n\n api.type = async (elementHandle, text, options) => {\n await scrollIntoView(elementHandle);\n return elementHandle.type(text, options);\n };\n api.click = async (elementHandle, options) => {\n await scrollIntoView(elementHandle);\n return elementHandle.click(options);\n };\n api.select = async (elementHandle, ...values) => {\n await scrollIntoView(elementHandle);\n return elementHandle.select(...values);\n };\n\n api.screenshot = async (options?: CustomScreenshotOptions) => {\n if (!options?.skipNetworkWait) {\n await page.waitForNetworkIdle();\n }\n await waitForPaintEnd(page, options);\n return page.screenshot(normalizeSreenshotOptions(options));\n };\n\n api.clear = async (elementHandle) => {\n await elementHandle.click({clickCount: 3});\n await elementHandle.press('Delete');\n };\n\n // For some reason, puppeteer browserContext.overridePermissions doesn't work with newer chrome versions.\n // This workaround polyfills the browser geolocation api to return the mocked position\n api.setGeolocation = (position: GeolocationOptions) =>\n page.evaluate((position) => {\n window.navigator.geolocation.getCurrentPosition = (callback) => {\n // @ts-ignore\n callback({\n coords: position,\n });\n };\n }, position as any);\n\n return api;\n};\n\nlet needsRequestInterception = false;\ntype RequestMatcherFn = (req: HTTPRequest) => boolean;\nlet requestHandlers: Array<{\n matcher: RequestMatcherFn;\n handler: jest.Mock<any, any>;\n}> = [];\n\nconst requestInterceptor = (req: HTTPRequest) => {\n const {handler} = requestHandlers.find(({matcher}) => matcher(req)) ?? {handler: null};\n if (!handler) {\n req.continue();\n return;\n }\n const response = handler(req);\n req.respond(response);\n};\n\nexport const interceptRequest = (\n matcher: RequestMatcherFn\n): jest.Mock<Partial<ResponseForRequest>, [HTTPRequest]> => {\n needsRequestInterception = true;\n const spy = jest.fn();\n requestHandlers.push({matcher, handler: spy});\n return spy;\n};\n\ntype ApiEndpointMock = {\n spyOn(path: string, method?: string): jest.Mock<unknown, [HTTPRequest]>;\n};\n\nexport const createApiEndpointMock = ({baseUrl}: {baseUrl: string}): ApiEndpointMock => {\n interceptRequest((req) => req.method() === 'OPTIONS' && req.url().startsWith(baseUrl)).mockImplementation(\n () => ({\n status: 204,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'POST,PATCH,PUT,GET,OPTIONS',\n 'Access-Control-Allow-Headers': '*',\n },\n })\n );\n\n return {\n spyOn(path: string, method: string = 'GET') {\n const matcher = (req: HTTPRequest) => {\n const url = req.url();\n const urlPath = url.substring(baseUrl.length);\n return (\n req.method() === method && url.startsWith(baseUrl) && !!urlPath.match(globToRegExp(path))\n );\n };\n\n const spy = jest.fn();\n\n interceptRequest(matcher).mockImplementation((req) => {\n const spyResult = spy(req);\n const status = spyResult.status ?? 200;\n const resBody = spyResult.body || spyResult;\n return {\n status,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n },\n contentType: 'application/json',\n body: JSON.stringify(resBody),\n };\n });\n\n return spy;\n },\n };\n};\n\ntype CookieConfig = {\n name: string;\n value: string;\n url?: string;\n domain?: string;\n path?: string;\n secure?: boolean;\n httpOnly?: boolean;\n sameSite?: 'Strict' | 'Lax' | 'None';\n expires?: number;\n priority?: 'Low' | 'Medium' | 'High';\n sameParty?: boolean;\n sourceScheme?: 'Unset' | 'NonSecure' | 'Secure';\n sourcePort?: number;\n};\n\ninterface OpenPageCommonConfig {\n userAgent?: string;\n viewport?: Viewport;\n isDarkMode?: boolean;\n cookies?: Array<CookieConfig>;\n}\n\ninterface OpenPageUrlConfig extends OpenPageCommonConfig {\n url: string;\n}\n\ninterface OpenPagePathConfig extends OpenPageCommonConfig {\n url?: undefined;\n\n path?: string;\n port?: number;\n protocol?: string;\n hostname?: string;\n}\n\ntype OpenPageConfig = OpenPageUrlConfig | OpenPagePathConfig;\n\nexport const openPage = async ({\n userAgent,\n isDarkMode,\n viewport,\n cookies,\n ...urlConfig\n}: OpenPageConfig): Promise<PageApi> => {\n const url = ((): string => {\n if (urlConfig.url !== undefined) {\n return urlConfig.url;\n }\n\n const {path = '/', port = serverPort, protocol = 'http', hostname = serverHostName} = urlConfig;\n\n if (!port) {\n const error = new Error(\n 'You must specify a port. You can specify it when calling openPage() or by configuring a dev and ci server in the acceptanceTests config in your package.json'\n );\n // Error.captureStackTrace(error, openPage);\n throw error;\n }\n\n return `${protocol}://${hostname}:${port}${path}`;\n })();\n\n const currentUserAgent = userAgent || (await getGlobalBrowser().userAgent());\n const page = getGlobalPage();\n\n await page.bringToFront();\n if (viewport) {\n await page.setViewport(viewport);\n }\n if (cookies) {\n await page.setCookie(...cookies);\n }\n await page.setUserAgent(`${currentUserAgent} acceptance-test`);\n await page.emulateMediaFeatures([{name: 'prefers-color-scheme', value: isDarkMode ? 'dark' : 'light'}]);\n\n // A set of styles to make screenshot tests more reliable.\n await page.evaluateOnNewDocument(() => {\n const style = document.createElement('style');\n style.innerHTML = `\n *, *:after, *:before {\n transition-delay: 0s !important;\n transition-duration: 0s !important;\n animation-delay: -0.0001s !important;\n animation-duration: 0s !important;\n animation-play-state: paused !important;\n caret-color: transparent !important;\n font-variant-ligatures: none !important;\n }\n *::-webkit-scrollbar {\n display: none !important;\n width: 0 !important;\n height: 0 !important;\n }\n `;\n window.addEventListener('DOMContentLoaded', () => {\n document.head.appendChild(style);\n });\n });\n\n if (needsRequestInterception) {\n await page.setRequestInterception(true);\n page.on('request', requestInterceptor);\n }\n\n try {\n await page.goto(url);\n } catch (e) {\n if ((e as Error).message.includes('net::ERR_CONNECTION_REFUSED')) {\n const connectionError = new Error(`Could not connect to ${url}. Is the server running?`);\n Error.captureStackTrace(connectionError, openPage);\n throw connectionError;\n } else {\n throw e;\n }\n }\n await page.waitForFunction('document.fonts.status === \"loaded\"');\n\n return getPageApi(page);\n};\n\nconst buildQueryMethods = ({page, element}: {page?: Page; element?: ElementHandle} = {}): ReturnType<\n typeof getQueriesForElement\n> => {\n const boundQueries: any = {};\n for (const [queryName, queryFn] of Object.entries(queries)) {\n boundQueries[queryName] = async (...args: any) => {\n const doc = await getDocument(page ?? getGlobalPage());\n const body = await doc.$('body');\n const queryArgs = [...args];\n if (queryName.startsWith('findBy')) {\n if (queryArgs.length === 1) {\n queryArgs.push(undefined);\n }\n queryArgs.push({timeout: 10000});\n }\n const elementHandle: ElementHandle = await queryFn(element ?? body, ...queryArgs);\n\n const newElementHandle = Object.create(elementHandle);\n\n newElementHandle.screenshot = async (options: CustomScreenshotOptions) => {\n if (!options?.skipNetworkWait) {\n await (page ?? getGlobalPage()).waitForNetworkIdle();\n }\n await waitForPaintEnd(elementHandle, {...options, fullPage: false});\n return elementHandle.screenshot(normalizeSreenshotOptions(options));\n };\n\n newElementHandle.click = async (options?: ClickOptions) => {\n await scrollIntoView(elementHandle);\n return elementHandle.click(options);\n };\n\n newElementHandle.type = async (text: string, options?: {delay: number}) => {\n await scrollIntoView(elementHandle);\n return elementHandle.type(text, options);\n };\n\n newElementHandle.select = async (...values: Array<string>) => {\n await scrollIntoView(elementHandle);\n return elementHandle.select(...values);\n };\n\n return newElementHandle;\n };\n }\n return boundQueries;\n};\n\nexport const getScreen = (page: Page) => buildQueryMethods({page});\n\nexport const screen = buildQueryMethods();\n\nexport const within = (element: ElementHandle) => buildQueryMethods({element});\n\nexport type {ElementHandle, Viewport} from 'puppeteer';\n\nbeforeEach(async () => {\n await getGlobalPage().setRequestInterception(false);\n // by resetting the page we clean up all the evaluateOnNewDocument calls, which are persistent between documents\n await (global as any).jestPuppeteer.resetPage();\n});\n\nafterEach(async () => {\n try {\n const page = getGlobalPage();\n requestHandlers = [];\n needsRequestInterception = false;\n page.off('request', requestInterceptor);\n\n // clear tab, this way we clear the DOM and stop js execution or pending requests\n await page.goto('about:blank');\n } catch (e) {\n // ignore, at this point page might be destroyed\n }\n});\n\n/**\n * Returns a new path to the file that can be used by chromium in acceptance tests\n *\n * To be able to use `element.uploadFile()` in a dockerized chromium, the file must exist in the\n * host and the docker, and both sides must use the same path.\n *\n * To workaround this bug or limitation, this function prepares the file by copying it to /tmp in\n * the host and the container.\n */\nexport const prepareFile = (filepath: string): string => {\n const isLocal = !isCi;\n const isHeadless = !!process.env.HEADLESS;\n const usesDocker = isLocal && isHeadless;\n\n const dockerComposeFile = path.join(__dirname, '..', 'docker-compose.yaml');\n\n if (usesDocker) {\n const containerId = execSync(`docker-compose -f ${dockerComposeFile} ps -q`).toString().trim();\n\n if (!containerId) {\n throw Error('acceptance-testing container not found');\n }\n\n execSync(`docker cp ${filepath} ${containerId}:/tmp`);\n\n const newPath = path.join('/tmp', path.basename(filepath));\n\n fs.copyFileSync(filepath, newPath);\n\n return newPath;\n } else {\n return filepath;\n }\n};\n\n/**\n * A convenience method to defer an expectation\n */\nexport const wait = <T>(expectation: () => Promise<T> | T, timeout = 10000, interval = 50): Promise<T> => {\n const startTime = Date.now();\n return new Promise((resolve, reject) => {\n const rejectOrRerun = (error: unknown) => {\n if (Date.now() - startTime >= timeout) {\n reject(error);\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n setTimeout(runExpectation, interval);\n };\n const runExpectation = () => {\n try {\n Promise.resolve(expectation())\n .then((r) => resolve(r))\n .catch(rejectOrRerun);\n } catch (error) {\n rejectOrRerun(error);\n }\n };\n setTimeout(runExpectation, 0);\n });\n};\n"],"names":["execSync","require","getGlobalBrowser","global","browser","getGlobalPage","page","isCi","process","argv","includes","env","CI","isUsingDockerizedChromium","URL","wsEndpoint","port","serverHostName","platform","rootDir","findRoot","cwd","pkg","JSON","parse","fs","readFileSync","path","join","projectConfig","_pkg$acceptanceTests","acceptanceTests","server","_ref","ciServer","devServer","serverPort","toMatchImageSnapshot","configureToMatchImageSnapshot","failureThreshold","failureThresholdType","customSnapshotIdentifier","_ref2","defaultIdentifier","calledToMatchImageSnapshotOutsideDocker","localToMatchImageSnapshot","message","pass","expect","extend","afterEach","error","Error","stack","split","waitForPaintEnd","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","element","_temp","_ref4","_ref4$fullPage","fullPage","captureBeyondViewport","MAX_WAIT","STEP_TIME","t0","buf1","buf2","wrap","_callee$","_context","prev","next","Date","now","screenshot","normalizeSreenshotOptions","sent","Promise","r","setTimeout","compare","stop","_x","_x2","apply","arguments","_temp2","_ref5$captureBeyondVi","_ref5","options","_objectWithoutPropertiesLoose","_excluded","_extends","scrollIntoView","el","evaluate","e","block","getPageApi","api","Object","create","type","_ref6","_callee2","elementHandle","text","_callee2$","_context2","abrupt","_x3","_x4","_x5","click","_ref7","_callee3","_callee3$","_context3","_x6","_x7","select","_ref8","_callee4","_len","values","_key","_args4","_callee4$","_context4","length","Array","_x8","_ref9","_callee5","_callee5$","_context5","skipNetworkWait","waitForNetworkIdle","_x9","clear","_ref10","_callee6","_callee6$","_context6","clickCount","press","_x10","setGeolocation","position","window","navigator","geolocation","getCurrentPosition","callback","coords","needsRequestInterception","requestHandlers","requestInterceptor","req","_ref11","_requestHandlers$find","find","_ref12","matcher","handler","response","respond","interceptRequest","spy","jest","fn","push","createApiEndpointMock","_ref13","baseUrl","method","url","startsWith","mockImplementation","status","headers","spyOn","urlPath","substring","match","globToRegExp","spyResult","_spyResult$status","resBody","body","contentType","stringify","openPage","_ref15","_callee7","_ref14","userAgent","isDarkMode","viewport","cookies","urlConfig","currentUserAgent","connectionError","_callee7$","_context7","_excluded2","undefined","_urlConfig$path","_urlConfig$port","_urlConfig$protocol","protocol","_urlConfig$hostname","hostname","bringToFront","setViewport","setCookie","setUserAgent","emulateMediaFeatures","name","value","evaluateOnNewDocument","style","document","createElement","innerHTML","addEventListener","head","appendChild","setRequestInterception","on","t1","captureStackTrace","waitForFunction","_x11","buildQueryMethods","_temp3","_ref16","boundQueries","_loop","_Object$entries$_i","_Object$entries","_i","queryName","queryFn","_callee12","doc","_len2","args","_key2","queryArgs","newElementHandle","_args12","_callee12$","_context12","getDocument","$","concat","timeout","_ref18","_callee8","_callee8$","_context8","_x12","_ref19","_callee9","_callee9$","_context9","_x13","_ref20","_callee10","_callee10$","_context10","_x14","_x15","_callee11","_args11","_callee11$","_context11","entries","queries","getScreen","screen","within","beforeEach","_callee13","_callee13$","_context13","jestPuppeteer","resetPage","_callee14","_callee14$","_context14","off","prepareFile","filepath","isLocal","isHeadless","HEADLESS","usesDocker","dockerComposeFile","__dirname","containerId","toString","trim","newPath","basename","copyFileSync","wait","expectation","interval","startTime","resolve","reject","rejectOrRerun","runExpectation","then"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acceptance-testing.esm.js","sources":["../src/index.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs';\nimport findRoot from 'find-root';\nimport {getDocument, queries} from 'pptr-testing-library';\nimport {configureToMatchImageSnapshot} from 'jest-image-snapshot';\nimport globToRegExp from 'glob-to-regexp';\nconst execSync = require('child_process').execSync;\n\nimport type {\n Page,\n ElementHandle,\n ScreenshotOptions,\n Browser,\n ClickOptions,\n Viewport,\n GeolocationOptions,\n HTTPRequest,\n ResponseForRequest,\n} from 'puppeteer';\nimport type {getQueriesForElement} from 'pptr-testing-library';\n\ntype CustomScreenshotOptions = ScreenshotOptions & {\n skipNetworkWait?: boolean;\n};\n\nexport const getGlobalBrowser = (): Browser => (global as any).browser;\nexport const getGlobalPage = (): Page => (global as any).page;\n\nconst isCi = process.argv.includes('--ci') || process.env.CI;\nconst isUsingDockerizedChromium = isCi || new URL(getGlobalBrowser().wsEndpoint()).port === '9223';\n\nexport const serverHostName = ((): string => {\n if (isCi) {\n return 'localhost';\n }\n\n if (isUsingDockerizedChromium) {\n return process.platform === 'linux' ? '172.17.0.1' : 'host.docker.internal';\n }\n\n return 'localhost';\n})();\n\nconst rootDir = findRoot(process.cwd());\nconst pkg = JSON.parse(fs.readFileSync(path.join(rootDir, 'package.json'), 'utf-8'));\nconst projectConfig = pkg.acceptanceTests ?? {};\nconst server = (isCi ? projectConfig.ciServer : projectConfig.devServer) ?? projectConfig.server;\n\nexport const serverPort = server?.port;\n\nconst toMatchImageSnapshot = configureToMatchImageSnapshot({\n failureThreshold: 0,\n failureThresholdType: 'percent',\n customSnapshotIdentifier: ({defaultIdentifier}) => defaultIdentifier,\n});\n\nlet calledToMatchImageSnapshotOutsideDocker = false;\n\nconst localToMatchImageSnapshot = () => {\n calledToMatchImageSnapshotOutsideDocker = true;\n // let the expectation pass, then fail in afterEach. This way we allow developers to debug screenshot tests in local\n // but don't allow them to save screenshots taken outside the dockerized chromium\n return {\n message: () => '',\n pass: true,\n };\n};\n\nexpect.extend({\n toMatchImageSnapshot: isUsingDockerizedChromium ? toMatchImageSnapshot : localToMatchImageSnapshot,\n});\n\nafterEach(() => {\n if (calledToMatchImageSnapshotOutsideDocker) {\n const error = new Error(\n `Calling .toMatchImageSnapshot() is not allowed outside dockerized browser. Please, run your screenshot test in headless mode.`\n );\n error.stack = (error.stack || '').split('\\n')[0];\n throw error;\n }\n});\n\ntype WaitForPaintEndOptions = {\n fullPage?: boolean;\n captureBeyondViewport?: boolean;\n};\n\nconst waitForPaintEnd = async (\n element: ElementHandle | Page,\n {fullPage = true, captureBeyondViewport}: WaitForPaintEndOptions = {}\n) => {\n const MAX_WAIT = 15000;\n const STEP_TIME = 250;\n const t0 = Date.now();\n\n let buf1 = (await element.screenshot(\n normalizeSreenshotOptions({fullPage, captureBeyondViewport})\n )) as Buffer;\n await new Promise((r) => setTimeout(r, STEP_TIME));\n let buf2 = (await element.screenshot(\n normalizeSreenshotOptions({fullPage, captureBeyondViewport})\n )) as Buffer;\n\n // buffers are different if compare != 0\n while (buf1.compare(buf2)) {\n if (Date.now() - t0 > MAX_WAIT) {\n throw Error('Paint end timeout');\n }\n buf1 = buf2;\n await new Promise((r) => setTimeout(r, STEP_TIME));\n buf2 = (await element.screenshot(\n normalizeSreenshotOptions({fullPage, captureBeyondViewport})\n )) as Buffer;\n }\n};\n\nexport interface PageApi extends Omit<Page, 'click' | 'type' | 'select'> {\n clear: (selector: ElementHandle) => Promise<void>;\n // These are overridden:\n type: (selector: ElementHandle, text: string, options?: {delay: number}) => Promise<void>;\n click: (selector: ElementHandle, options?: ClickOptions) => Promise<void>;\n select: (selector: ElementHandle, ...values: string[]) => Promise<string[]>;\n screenshot: (options?: CustomScreenshotOptions) => Promise<Buffer | string | void>;\n}\n\nconst normalizeSreenshotOptions = ({captureBeyondViewport = false, ...options}: ScreenshotOptions = {}) => {\n // Puppeter default for captureBeyondViewport is true, but we think false is a better default.\n // When this is true, the fixed elements (like fixed footers) are relative to the original page\n // viewport, not to the full page, so those elements look weird in fullPage screenshots.\n return {...options, captureBeyondViewport};\n};\n\n// Puppeteer already calls scrollIntoViewIfNeeded before clicking an element. But it doesn't work in all situations\n// For example, when there is a fixed footer in the page and the element to click is under it, the browser won't scroll\n// because the element is already in the viewport (the ifNeeded part is important here). By forcing the scroll to the\n// center, we manage to fix these edge cases.\nconst scrollIntoView = (el: ElementHandle) => el.evaluate((e) => e.scrollIntoView({block: 'center'}));\n\nexport const getPageApi = (page: Page): PageApi => {\n const api: PageApi = Object.create(page);\n\n api.type = async (elementHandle, text, options) => {\n await scrollIntoView(elementHandle);\n return elementHandle.type(text, options);\n };\n api.click = async (elementHandle, options) => {\n await scrollIntoView(elementHandle);\n return elementHandle.click(options);\n };\n api.select = async (elementHandle, ...values) => {\n await scrollIntoView(elementHandle);\n return elementHandle.select(...values);\n };\n\n api.screenshot = async (options?: CustomScreenshotOptions) => {\n if (!options?.skipNetworkWait) {\n await page.waitForNetworkIdle();\n }\n await waitForPaintEnd(page, options);\n return page.screenshot(normalizeSreenshotOptions(options));\n };\n\n api.clear = async (elementHandle) => {\n await elementHandle.click({clickCount: 3});\n await elementHandle.press('Delete');\n };\n\n // For some reason, puppeteer browserContext.overridePermissions doesn't work with newer chrome versions.\n // This workaround polyfills the browser geolocation api to return the mocked position\n api.setGeolocation = (position: GeolocationOptions) =>\n page.evaluate((position) => {\n window.navigator.geolocation.getCurrentPosition = (callback) => {\n // @ts-ignore\n callback({\n coords: position,\n });\n };\n }, position as any);\n\n return api;\n};\n\nlet needsRequestInterception = false;\ntype RequestMatcherFn = (req: HTTPRequest) => boolean;\nlet requestHandlers: Array<{\n matcher: RequestMatcherFn;\n handler: jest.Mock<any, any>;\n}> = [];\n\nconst requestInterceptor = (req: HTTPRequest) => {\n const {handler} = requestHandlers.find(({matcher}) => matcher(req)) ?? {handler: null};\n if (!handler) {\n req.continue();\n return;\n }\n const response = handler(req);\n req.respond(response);\n};\n\nexport const interceptRequest = (\n matcher: RequestMatcherFn\n): jest.Mock<Partial<ResponseForRequest>, [HTTPRequest]> => {\n needsRequestInterception = true;\n const spy = jest.fn();\n requestHandlers.push({matcher, handler: spy});\n return spy;\n};\n\ntype ApiEndpointMock = {\n spyOn(path: string, method?: string): jest.Mock<unknown, [HTTPRequest]>;\n};\n\nexport const createApiEndpointMock = ({baseUrl}: {baseUrl: string}): ApiEndpointMock => {\n interceptRequest((req) => req.method() === 'OPTIONS' && req.url().startsWith(baseUrl)).mockImplementation(\n () => ({\n status: 204,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'POST,PATCH,PUT,GET,OPTIONS',\n 'Access-Control-Allow-Headers': '*',\n },\n })\n );\n\n return {\n spyOn(path: string, method: string = 'GET') {\n const matcher = (req: HTTPRequest) => {\n const url = req.url();\n const urlPath = url.substring(baseUrl.length);\n return (\n req.method() === method && url.startsWith(baseUrl) && !!urlPath.match(globToRegExp(path))\n );\n };\n\n const spy = jest.fn();\n\n interceptRequest(matcher).mockImplementation((req) => {\n const spyResult = spy(req);\n const status = spyResult.status ?? 200;\n const resBody = spyResult.body || spyResult;\n return {\n status,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n },\n contentType: 'application/json',\n body: JSON.stringify(resBody),\n };\n });\n\n return spy;\n },\n };\n};\n\ntype CookieConfig = {\n name: string;\n value: string;\n url?: string;\n domain?: string;\n path?: string;\n secure?: boolean;\n httpOnly?: boolean;\n sameSite?: 'Strict' | 'Lax' | 'None';\n expires?: number;\n priority?: 'Low' | 'Medium' | 'High';\n sameParty?: boolean;\n sourceScheme?: 'Unset' | 'NonSecure' | 'Secure';\n sourcePort?: number;\n};\n\ninterface OpenPageCommonConfig {\n userAgent?: string;\n viewport?: Viewport;\n isDarkMode?: boolean;\n cookies?: Array<CookieConfig>;\n}\n\ninterface OpenPageUrlConfig extends OpenPageCommonConfig {\n url: string;\n}\n\ninterface OpenPagePathConfig extends OpenPageCommonConfig {\n url?: undefined;\n\n path?: string;\n port?: number;\n protocol?: string;\n hostname?: string;\n}\n\ntype OpenPageConfig = OpenPageUrlConfig | OpenPagePathConfig;\n\nexport const openPage = async ({\n userAgent,\n isDarkMode,\n viewport,\n cookies,\n ...urlConfig\n}: OpenPageConfig): Promise<PageApi> => {\n const url = ((): string => {\n if (urlConfig.url !== undefined) {\n return urlConfig.url;\n }\n\n const {path = '/', port = serverPort, protocol = 'http', hostname = serverHostName} = urlConfig;\n\n if (!port) {\n const error = new Error(\n 'You must specify a port. You can specify it when calling openPage() or by configuring a dev and ci server in the acceptanceTests config in your package.json'\n );\n // Error.captureStackTrace(error, openPage);\n throw error;\n }\n\n return `${protocol}://${hostname}:${port}${path}`;\n })();\n\n const currentUserAgent = userAgent || (await getGlobalBrowser().userAgent());\n const page = getGlobalPage();\n\n await page.bringToFront();\n if (viewport) {\n await page.setViewport(viewport);\n }\n if (cookies) {\n await page.setCookie(...cookies);\n }\n await page.setUserAgent(`${currentUserAgent} acceptance-test`);\n await page.emulateMediaFeatures([{name: 'prefers-color-scheme', value: isDarkMode ? 'dark' : 'light'}]);\n\n // A set of styles to make screenshot tests more reliable.\n await page.evaluateOnNewDocument(() => {\n const style = document.createElement('style');\n style.innerHTML = `\n *, *:after, *:before {\n transition-delay: 0s !important;\n transition-duration: 0s !important;\n animation-delay: -0.0001s !important;\n animation-duration: 0s !important;\n animation-play-state: paused !important;\n caret-color: transparent !important;\n font-variant-ligatures: none !important;\n }\n *::-webkit-scrollbar {\n display: none !important;\n width: 0 !important;\n height: 0 !important;\n }\n `;\n window.addEventListener('DOMContentLoaded', () => {\n document.head.appendChild(style);\n });\n });\n\n if (needsRequestInterception) {\n await page.setRequestInterception(true);\n page.on('request', requestInterceptor);\n }\n\n try {\n await page.goto(url);\n } catch (e) {\n if ((e as Error).message.includes('net::ERR_CONNECTION_REFUSED')) {\n const connectionError = new Error(`Could not connect to ${url}. Is the server running?`);\n Error.captureStackTrace(connectionError, openPage);\n throw connectionError;\n } else {\n throw e;\n }\n }\n await page.waitForFunction('document.fonts.status === \"loaded\"');\n\n return getPageApi(page);\n};\n\nconst buildQueryMethods = ({page, element}: {page?: Page; element?: ElementHandle} = {}): ReturnType<\n typeof getQueriesForElement\n> => {\n const boundQueries: any = {};\n for (const [queryName, queryFn] of Object.entries(queries)) {\n boundQueries[queryName] = async (...args: any) => {\n const doc = await getDocument(page ?? getGlobalPage());\n const body = await doc.$('body');\n const queryArgs = [...args];\n if (queryName.startsWith('findBy')) {\n if (queryArgs.length === 1) {\n queryArgs.push(undefined);\n }\n queryArgs.push({timeout: 10000});\n }\n const elementHandle: ElementHandle = await queryFn(element ?? body, ...queryArgs);\n\n const newElementHandle = Object.create(elementHandle);\n\n newElementHandle.screenshot = async (options: CustomScreenshotOptions) => {\n if (!options?.skipNetworkWait) {\n await (page ?? getGlobalPage()).waitForNetworkIdle();\n }\n await waitForPaintEnd(elementHandle, {...options, fullPage: false});\n return elementHandle.screenshot(normalizeSreenshotOptions(options));\n };\n\n newElementHandle.click = async (options?: ClickOptions) => {\n await scrollIntoView(elementHandle);\n return elementHandle.click(options);\n };\n\n newElementHandle.type = async (text: string, options?: {delay: number}) => {\n await scrollIntoView(elementHandle);\n return elementHandle.type(text, options);\n };\n\n newElementHandle.select = async (...values: Array<string>) => {\n await scrollIntoView(elementHandle);\n return elementHandle.select(...values);\n };\n\n return newElementHandle;\n };\n }\n return boundQueries;\n};\n\nexport const getScreen = (page: Page) => buildQueryMethods({page});\n\nexport const screen = buildQueryMethods();\n\nexport const within = (element: ElementHandle) => buildQueryMethods({element});\n\nexport type {ElementHandle, Viewport} from 'puppeteer';\n\nbeforeEach(async () => {\n await getGlobalPage().setRequestInterception(false);\n // by resetting the page we clean up all the evaluateOnNewDocument calls, which are persistent between documents\n await (global as any).jestPuppeteer.resetPage();\n});\n\nafterEach(async () => {\n try {\n const page = getGlobalPage();\n requestHandlers = [];\n needsRequestInterception = false;\n page.off('request', requestInterceptor);\n\n // clear tab, this way we clear the DOM and stop js execution or pending requests\n await page.goto('about:blank');\n } catch (e) {\n // ignore, at this point page might be destroyed\n }\n});\n\n/**\n * Returns a new path to the file that can be used by chromium in acceptance tests\n *\n * To be able to use `element.uploadFile()` in a dockerized chromium, the file must exist in the\n * host and the docker, and both sides must use the same path.\n *\n * To workaround this bug or limitation, this function prepares the file by copying it to /tmp in\n * the host and the container.\n */\nexport const prepareFile = (filepath: string): string => {\n const isLocal = !isCi;\n const isHeadless = !!process.env.HEADLESS;\n const usesDocker = isLocal && isHeadless;\n\n const dockerComposeFile = path.join(__dirname, '..', 'docker-compose.yaml');\n\n if (usesDocker) {\n const containerId = execSync(`docker-compose -f ${dockerComposeFile} ps -q`).toString().trim();\n\n if (!containerId) {\n throw Error('acceptance-testing container not found');\n }\n\n execSync(`docker cp ${filepath} ${containerId}:/tmp`);\n\n const newPath = path.join('/tmp', path.basename(filepath));\n\n fs.copyFileSync(filepath, newPath);\n\n return newPath;\n } else {\n return filepath;\n }\n};\n\n/**\n * A convenience method to defer an expectation\n */\nexport const wait = <T>(expectation: () => Promise<T> | T, timeout = 10000, interval = 50): Promise<T> => {\n const startTime = Date.now();\n const startStack = new Error().stack;\n\n return new Promise((resolve, reject) => {\n const rejectOrRerun = (error: unknown) => {\n if (Date.now() - startTime >= timeout) {\n if (error instanceof Error) {\n if (error.message === 'Element not removed') {\n error.stack = startStack;\n }\n }\n reject(error);\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n setTimeout(runExpectation, interval);\n };\n const runExpectation = () => {\n try {\n Promise.resolve(expectation())\n .then((r) => resolve(r))\n .catch(rejectOrRerun);\n } catch (error) {\n rejectOrRerun(error);\n }\n };\n setTimeout(runExpectation, 0);\n });\n};\n\nexport const waitForElementToBeRemoved = (\n element: ElementHandle<Element>,\n timeout = 10000,\n interval = 100\n): Promise<void> => {\n const startStack = new Error().stack;\n\n const wait = async () => {\n const t0 = Date.now();\n while (Date.now() - t0 < timeout) {\n // boundingBox returns null when the element is not in the DOM\n const box = await element.boundingBox();\n if (!box) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n throw new Error('Element not removed');\n };\n\n return wait().catch((error) => {\n if (error.message === 'Element not removed') {\n error.stack = startStack;\n }\n throw error;\n });\n};\n"],"names":["execSync","require","getGlobalBrowser","global","browser","getGlobalPage","page","isCi","process","argv","includes","env","CI","isUsingDockerizedChromium","URL","wsEndpoint","port","serverHostName","platform","rootDir","findRoot","cwd","pkg","JSON","parse","fs","readFileSync","path","join","projectConfig","_pkg$acceptanceTests","acceptanceTests","server","_ref","ciServer","devServer","serverPort","toMatchImageSnapshot","configureToMatchImageSnapshot","failureThreshold","failureThresholdType","customSnapshotIdentifier","_ref2","defaultIdentifier","calledToMatchImageSnapshotOutsideDocker","localToMatchImageSnapshot","message","pass","expect","extend","afterEach","error","Error","stack","split","waitForPaintEnd","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","element","_temp","_ref4","_ref4$fullPage","fullPage","captureBeyondViewport","MAX_WAIT","STEP_TIME","t0","buf1","buf2","wrap","_callee$","_context","prev","next","Date","now","screenshot","normalizeSreenshotOptions","sent","Promise","r","setTimeout","compare","stop","_x","_x2","apply","arguments","_temp2","_ref5$captureBeyondVi","_ref5","options","_objectWithoutPropertiesLoose","_excluded","_extends","scrollIntoView","el","evaluate","e","block","getPageApi","api","Object","create","type","_ref6","_callee2","elementHandle","text","_callee2$","_context2","abrupt","_x3","_x4","_x5","click","_ref7","_callee3","_callee3$","_context3","_x6","_x7","select","_ref8","_callee4","_len","values","_key","_args4","_callee4$","_context4","length","Array","_x8","_ref9","_callee5","_callee5$","_context5","skipNetworkWait","waitForNetworkIdle","_x9","clear","_ref10","_callee6","_callee6$","_context6","clickCount","press","_x10","setGeolocation","position","window","navigator","geolocation","getCurrentPosition","callback","coords","needsRequestInterception","requestHandlers","requestInterceptor","req","_ref11","_requestHandlers$find","find","_ref12","matcher","handler","response","respond","interceptRequest","spy","jest","fn","push","createApiEndpointMock","_ref13","baseUrl","method","url","startsWith","mockImplementation","status","headers","spyOn","urlPath","substring","match","globToRegExp","spyResult","_spyResult$status","resBody","body","contentType","stringify","openPage","_ref15","_callee7","_ref14","userAgent","isDarkMode","viewport","cookies","urlConfig","currentUserAgent","connectionError","_callee7$","_context7","_excluded2","undefined","_urlConfig$path","_urlConfig$port","_urlConfig$protocol","protocol","_urlConfig$hostname","hostname","bringToFront","setViewport","setCookie","setUserAgent","emulateMediaFeatures","name","value","evaluateOnNewDocument","style","document","createElement","innerHTML","addEventListener","head","appendChild","setRequestInterception","on","t1","captureStackTrace","waitForFunction","_x11","buildQueryMethods","_temp3","_ref16","boundQueries","_loop","_Object$entries$_i","_Object$entries","_i","queryName","queryFn","_callee12","doc","_len2","args","_key2","queryArgs","newElementHandle","_args12","_callee12$","_context12","getDocument","$","concat","timeout","_ref18","_callee8","_callee8$","_context8","_x12","_ref19","_callee9","_callee9$","_context9","_x13","_ref20","_callee10","_callee10$","_context10","_x14","_x15","_callee11","_args11","_callee11$","_context11","entries","queries","getScreen","screen","within","beforeEach","_callee13","_callee13$","_context13","jestPuppeteer","resetPage","_callee14","_callee14$","_context14","off","prepareFile","filepath","isLocal","isHeadless","HEADLESS","usesDocker","dockerComposeFile","__dirname","containerId","toString","trim","newPath","basename","copyFileSync","wait","expectation","interval","startTime","startStack","resolve","reject","rejectOrRerun","runExpectation","then","waitForElementToBeRemoved","_ref24","_callee15","box","_callee15$","_context15","boundingBox"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -78,3 +78,4 @@ export declare const prepareFile: (filepath: string) => string;
|
|
|
78
78
|
* A convenience method to defer an expectation
|
|
79
79
|
*/
|
|
80
80
|
export declare const wait: <T>(expectation: () => T | Promise<T>, timeout?: number, interval?: number) => Promise<T>;
|
|
81
|
+
export declare const waitForElementToBeRemoved: (element: ElementHandle<Element>, timeout?: number, interval?: number) => Promise<void>;
|