@empiricalrun/playwright-utils 0.26.14 → 0.26.15
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/CHANGELOG.md +16 -0
- package/dist/overlay-tests/cache.spec.d.ts +2 -0
- package/dist/overlay-tests/cache.spec.d.ts.map +1 -0
- package/dist/overlay-tests/cache.spec.js +63 -0
- package/dist/overlay-tests/click.spec.js +2 -1
- package/dist/test/scripts/pw-locator-patch/dismiss-overlays/cache.d.ts +2 -0
- package/dist/test/scripts/pw-locator-patch/dismiss-overlays/cache.d.ts.map +1 -1
- package/dist/test/scripts/pw-locator-patch/dismiss-overlays/cache.js +22 -6
- package/dist/test/scripts/pw-locator-patch/highlight/click.d.ts.map +1 -1
- package/dist/test/scripts/pw-locator-patch/highlight/click.js +5 -0
- package/dist/test/scripts/pw-locator-patch/highlight/hover.d.ts.map +1 -1
- package/dist/test/scripts/pw-locator-patch/highlight/hover.js +5 -0
- package/package.json +3 -3
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @empiricalrun/playwright-utils
|
|
2
2
|
|
|
3
|
+
## 0.26.15
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- a6b5997: test: add failing test for overlay dismiss triggering recursively
|
|
8
|
+
- 0b8379b: fix: ensure cached overlay dismissal does not run recursively
|
|
9
|
+
- Updated dependencies [c491cdd]
|
|
10
|
+
- Updated dependencies [f926e40]
|
|
11
|
+
- Updated dependencies [55c7913]
|
|
12
|
+
- Updated dependencies [2f1ee31]
|
|
13
|
+
- Updated dependencies [0fea8f1]
|
|
14
|
+
- Updated dependencies [115a023]
|
|
15
|
+
- Updated dependencies [6c7740b]
|
|
16
|
+
- @empiricalrun/test-gen@0.63.0
|
|
17
|
+
- @empiricalrun/llm@0.17.1
|
|
18
|
+
|
|
3
19
|
## 0.26.14
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.spec.d.ts","sourceRoot":"","sources":["../../src/overlay-tests/cache.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const fs_1 = __importDefault(require("fs"));
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const test_1 = require("../test");
|
|
9
|
+
const cache_1 = require("../test/scripts/pw-locator-patch/dismiss-overlays/cache");
|
|
10
|
+
const fixtures_1 = require("./fixtures");
|
|
11
|
+
const useCache = (data) => {
|
|
12
|
+
const cacheValue = {
|
|
13
|
+
version: "2025-03-06",
|
|
14
|
+
data,
|
|
15
|
+
};
|
|
16
|
+
// Ensure the directory exists
|
|
17
|
+
const dir = path_1.default.dirname(cache_1.CACHE_FILE);
|
|
18
|
+
if (!fs_1.default.existsSync(dir)) {
|
|
19
|
+
fs_1.default.mkdirSync(dir, { recursive: true });
|
|
20
|
+
}
|
|
21
|
+
fs_1.default.writeFileSync(cache_1.CACHE_FILE, JSON.stringify(cacheValue, null, 2), "utf8");
|
|
22
|
+
};
|
|
23
|
+
const deleteCache = () => {
|
|
24
|
+
if (fs_1.default.existsSync(cache_1.CACHE_FILE))
|
|
25
|
+
fs_1.default.unlinkSync(cache_1.CACHE_FILE);
|
|
26
|
+
};
|
|
27
|
+
fixtures_1.test.beforeEach(async ({ page }) => {
|
|
28
|
+
(0, test_1.injectLocatorHighlightScripts)(page, fixtures_1.test);
|
|
29
|
+
});
|
|
30
|
+
fixtures_1.test.afterEach(() => {
|
|
31
|
+
deleteCache();
|
|
32
|
+
});
|
|
33
|
+
(0, fixtures_1.test)("overlay dismiss should not trigger recursively when executing from cache", async ({ page, server, }) => {
|
|
34
|
+
// Set up cache with a bad value: click on "Target" to dimiss the glass pane
|
|
35
|
+
useCache([
|
|
36
|
+
{
|
|
37
|
+
element: { dom: '<div class="glass-pane">', textContent: "" },
|
|
38
|
+
code: `await page.getByRole('button', { name: 'Target' }).click();\n`,
|
|
39
|
+
},
|
|
40
|
+
]);
|
|
41
|
+
await page.goto(`${server.baseURL}/glass-pane.html`);
|
|
42
|
+
let error;
|
|
43
|
+
let startTime = Date.now();
|
|
44
|
+
// Overwriting API key to ensure we don't call OpenAI
|
|
45
|
+
const originalApiKey = process.env.OPENAI_API_KEY;
|
|
46
|
+
process.env.OPENAI_API_KEY = undefined;
|
|
47
|
+
try {
|
|
48
|
+
// Target element click will trigger the cache - which will invoke another
|
|
49
|
+
// click to the same element (recursive overlay dismissal)
|
|
50
|
+
await page.getByRole("button", { name: "Target" }).click();
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
error = e;
|
|
54
|
+
}
|
|
55
|
+
process.env.OPENAI_API_KEY = originalApiKey;
|
|
56
|
+
const duration = Date.now() - startTime;
|
|
57
|
+
(0, fixtures_1.expect)(error).toBeDefined();
|
|
58
|
+
(0, fixtures_1.expect)(error.message).toContain('<div class="glass-pane"></div> intercepts pointer events');
|
|
59
|
+
// Expect total time to be action > timeout * 2 (original + dismiss)
|
|
60
|
+
(0, fixtures_1.expect)(duration).toBeGreaterThan(10_000);
|
|
61
|
+
// + some buffer for failing API call
|
|
62
|
+
(0, fixtures_1.expect)(duration).toBeLessThan(14_999);
|
|
63
|
+
});
|
|
@@ -40,7 +40,8 @@ fixtures_1.test.beforeEach(async ({ page }) => {
|
|
|
40
40
|
await (0, fixtures_1.expect)(page.getByText("This is a toast message")).not.toBeVisible();
|
|
41
41
|
await (0, fixtures_1.expect)(page.getByRole("button", { name: "Close" })).toBeVisible();
|
|
42
42
|
});
|
|
43
|
-
|
|
43
|
+
// Test is flaky - skipping it
|
|
44
|
+
fixtures_1.test.skip("should fallback when the overlay cannot be dismissed", async ({ page, server, }) => {
|
|
44
45
|
await page.goto(`${server.baseURL}/no-overlay.html`);
|
|
45
46
|
let error;
|
|
46
47
|
try {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Page } from "@playwright/test";
|
|
2
|
+
export declare const CACHE_FILE: string;
|
|
2
3
|
export declare function setCodeToCache({ dom, text, code, }: {
|
|
3
4
|
dom: string | undefined;
|
|
4
5
|
text: string | undefined;
|
|
@@ -11,4 +12,5 @@ export declare function executeFromCache({ page, dom, text, }: {
|
|
|
11
12
|
}): Promise<{
|
|
12
13
|
success: boolean;
|
|
13
14
|
}>;
|
|
15
|
+
export declare function addOverlayOption(code: string): string;
|
|
14
16
|
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../../src/test/scripts/pw-locator-patch/dismiss-overlays/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../../src/test/scripts/pw-locator-patch/dismiss-overlays/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAM7C,eAAO,MAAM,UAAU,QAItB,CAAC;AAOF,wBAAsB,cAAc,CAAC,EACnC,GAAG,EACH,IAAI,EACJ,IAAI,GACL,EAAE;IACD,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACd,iBAkCA;AAED,wBAAsB,gBAAgB,CAAC,EACrC,IAAI,EACJ,GAAG,EACH,IAAI,GACL,EAAE;IACD,IAAI,EAAE,IAAI,CAAC;IACX,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAmChC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,UAc5C"}
|
|
@@ -3,11 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CACHE_FILE = void 0;
|
|
6
7
|
exports.setCodeToCache = setCodeToCache;
|
|
7
8
|
exports.executeFromCache = executeFromCache;
|
|
9
|
+
exports.addOverlayOption = addOverlayOption;
|
|
8
10
|
const fs_1 = __importDefault(require("fs"));
|
|
9
11
|
const path_1 = __importDefault(require("path"));
|
|
10
|
-
|
|
12
|
+
exports.CACHE_FILE = path_1.default.join(process.cwd(), ".empiricalrun", `overlay-cache.json`);
|
|
11
13
|
function normalizeString(str) {
|
|
12
14
|
// Replace all whitespace sequences with a single space
|
|
13
15
|
return str.replace(/\s+/g, " ").trim();
|
|
@@ -33,7 +35,7 @@ async function setCodeToCache({ dom, text, code, }) {
|
|
|
33
35
|
data: [],
|
|
34
36
|
};
|
|
35
37
|
try {
|
|
36
|
-
cache = JSON.parse(fs_1.default.readFileSync(CACHE_FILE, "utf8"));
|
|
38
|
+
cache = JSON.parse(fs_1.default.readFileSync(exports.CACHE_FILE, "utf8"));
|
|
37
39
|
cache.data.push(obj);
|
|
38
40
|
}
|
|
39
41
|
catch (err) {
|
|
@@ -42,11 +44,11 @@ async function setCodeToCache({ dom, text, code, }) {
|
|
|
42
44
|
data: [obj],
|
|
43
45
|
};
|
|
44
46
|
}
|
|
45
|
-
const dir = path_1.default.dirname(CACHE_FILE);
|
|
47
|
+
const dir = path_1.default.dirname(exports.CACHE_FILE);
|
|
46
48
|
if (!fs_1.default.existsSync(dir)) {
|
|
47
49
|
fs_1.default.mkdirSync(dir, { recursive: true });
|
|
48
50
|
}
|
|
49
|
-
fs_1.default.writeFileSync(CACHE_FILE, JSON.stringify(cache, null, 2));
|
|
51
|
+
fs_1.default.writeFileSync(exports.CACHE_FILE, JSON.stringify(cache, null, 2));
|
|
50
52
|
}
|
|
51
53
|
async function executeFromCache({ page, dom, text, }) {
|
|
52
54
|
if (!dom && !text) {
|
|
@@ -54,7 +56,7 @@ async function executeFromCache({ page, dom, text, }) {
|
|
|
54
56
|
return { success: false };
|
|
55
57
|
}
|
|
56
58
|
try {
|
|
57
|
-
const cache = JSON.parse(fs_1.default.readFileSync(CACHE_FILE, "utf8"));
|
|
59
|
+
const cache = JSON.parse(fs_1.default.readFileSync(exports.CACHE_FILE, "utf8"));
|
|
58
60
|
const match = cache.data.find((c) => {
|
|
59
61
|
return (c.element.dom === (dom || "") &&
|
|
60
62
|
c.element.textContent === normalizeString(text || ""));
|
|
@@ -66,7 +68,8 @@ async function executeFromCache({ page, dom, text, }) {
|
|
|
66
68
|
console.log(`Executing from cache: "${match.code}" for element: ${dom}`);
|
|
67
69
|
// Ref: https://davidwalsh.name/async-function-class
|
|
68
70
|
const AsyncFunction = Object.getPrototypeOf(async function () { }).constructor;
|
|
69
|
-
const
|
|
71
|
+
const codeToExecute = addOverlayOption(match.code);
|
|
72
|
+
const exec = new AsyncFunction("page", codeToExecute);
|
|
70
73
|
await exec(page);
|
|
71
74
|
return { success: true };
|
|
72
75
|
}
|
|
@@ -79,3 +82,16 @@ async function executeFromCache({ page, dom, text, }) {
|
|
|
79
82
|
return { success: false };
|
|
80
83
|
}
|
|
81
84
|
}
|
|
85
|
+
function addOverlayOption(code) {
|
|
86
|
+
return code.replace(/\.(click|hover)(\s*\(\s*)(\{[^}]*\})?(\s*\))(;)?/g, (match, action, openParen, options, closeParen, semicolon) => {
|
|
87
|
+
if (options) {
|
|
88
|
+
// If options exist, add isExecutingForOverlayDismiss to them
|
|
89
|
+
const optionsObj = options.replace(/\s*}\s*$/, "");
|
|
90
|
+
return `.${action}${openParen}${optionsObj}, isExecutingForOverlayDismiss: true }${closeParen}${semicolon || ""}`;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
// If no options, add them with isExecutingForOverlayDismiss
|
|
94
|
+
return `.${action}${openParen}{ isExecutingForOverlayDismiss: true }${closeParen}${semicolon || ""}`;
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"click.d.ts","sourceRoot":"","sources":["../../../../../src/test/scripts/pw-locator-patch/highlight/click.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAQrC,wBAAgB,UAAU,CACxB,YAAY,EAAE,QAAQ,GAAG;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,EAC/C,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"click.d.ts","sourceRoot":"","sources":["../../../../../src/test/scripts/pw-locator-patch/highlight/click.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAQrC,wBAAgB,UAAU,CACxB,YAAY,EAAE,QAAQ,GAAG;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,EAC/C,MAAM,EAAE,MAAM,QA2Df"}
|
|
@@ -33,6 +33,11 @@ function patchClick(LocatorClass, testFn) {
|
|
|
33
33
|
// Overwrite the stack trace to show the original click (remove patch)
|
|
34
34
|
Error.captureStackTrace(originalError, LocatorClass.prototype.click);
|
|
35
35
|
}
|
|
36
|
+
if (options?.isExecutingForOverlayDismiss) {
|
|
37
|
+
// While executing dismiss code from cache, we attach this custom option
|
|
38
|
+
// which ensures that the overlay dismissal will not trigger recursively
|
|
39
|
+
throw originalError;
|
|
40
|
+
}
|
|
36
41
|
if (!(0, dismiss_overlays_1.isErrorSupported)(originalError.message)) {
|
|
37
42
|
// TODO: Playwright actionability checks have precedence: if an overlay blocks a
|
|
38
43
|
// disabled button, the error will not show interception -- it will focus on "not enabled".
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hover.d.ts","sourceRoot":"","sources":["../../../../../src/test/scripts/pw-locator-patch/highlight/hover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAOrC,wBAAgB,UAAU,CACxB,YAAY,EAAE,QAAQ,GAAG;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,EAC/C,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"hover.d.ts","sourceRoot":"","sources":["../../../../../src/test/scripts/pw-locator-patch/highlight/hover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAOrC,wBAAgB,UAAU,CACxB,YAAY,EAAE,QAAQ,GAAG;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,EAC/C,MAAM,EAAE,MAAM,QAoDf"}
|
|
@@ -31,6 +31,11 @@ function patchHover(LocatorClass, testFn) {
|
|
|
31
31
|
if (originalError instanceof Error) {
|
|
32
32
|
Error.captureStackTrace(originalError, LocatorClass.prototype.hover);
|
|
33
33
|
}
|
|
34
|
+
if (options?.isExecutingForOverlayDismiss) {
|
|
35
|
+
// While executing dismiss code from cache, we attach this custom option
|
|
36
|
+
// which ensures that the overlay dismissal will not trigger recursively
|
|
37
|
+
throw originalError;
|
|
38
|
+
}
|
|
34
39
|
if (!(0, dismiss_overlays_1.isErrorSupported)(originalError.message)) {
|
|
35
40
|
throw originalError;
|
|
36
41
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@empiricalrun/playwright-utils",
|
|
3
|
-
"version": "0.26.
|
|
3
|
+
"version": "0.26.15",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"registry": "https://registry.npmjs.org/",
|
|
6
6
|
"access": "public"
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
"mailosaur": "^8.6.1",
|
|
39
39
|
"puppeteer-extra-plugin-recaptcha": "^3.6.8",
|
|
40
40
|
"rimraf": "^6.0.1",
|
|
41
|
-
"@empiricalrun/llm": "^0.17.
|
|
41
|
+
"@empiricalrun/llm": "^0.17.1",
|
|
42
42
|
"@empiricalrun/r2-uploader": "^0.3.9",
|
|
43
|
-
"@empiricalrun/test-gen": "^0.
|
|
43
|
+
"@empiricalrun/test-gen": "^0.63.0"
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|
|
46
46
|
"dev": "tsc --build --watch",
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["./src/config.ts","./src/email.ts","./src/index.ts","./src/logger.ts","./src/playwright-extensions.ts","./src/auth/index.ts","./src/auth/types.ts","./src/captcha/index.ts","./src/captcha/vision.ts","./src/devices/types.ts","./src/overlay-tests/click.spec.ts","./src/overlay-tests/fixtures.ts","./src/overlay-tests/patch.spec.ts","./src/reporter/base.ts","./src/reporter/custom.ts","./src/reporter/queue.ts","./src/reporter/reporterV2.ts","./src/reporter/types.ts","./src/reporter/uploader.ts","./src/reporter/util.ts","./src/reporter/third_party/html-reporter-types.ts","./src/test/constants.ts","./src/test/expect.ts","./src/test/index.ts","./src/test/types.ts","./src/test/scripts/agent-capabilities.ts","./src/test/scripts/index.ts","./src/test/scripts/locator-highlights.ts","./src/test/scripts/locator-vision.ts","./src/test/scripts/mouse-pointer.ts","./src/test/scripts/types.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/cache.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/index.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/prompt.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/types.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/utils.ts","./src/test/scripts/pw-locator-patch/highlight/click.ts","./src/test/scripts/pw-locator-patch/highlight/expect.ts","./src/test/scripts/pw-locator-patch/highlight/hover.ts","./src/test/scripts/pw-locator-patch/highlight/inner-text.ts","./src/test/scripts/pw-locator-patch/highlight/input-value.ts","./src/test/scripts/pw-locator-patch/highlight/is-checked.ts","./src/test/scripts/pw-locator-patch/highlight/is-disabled.ts","./src/test/scripts/pw-locator-patch/highlight/is-editable.ts","./src/test/scripts/pw-locator-patch/highlight/text-content.ts","./src/test/scripts/pw-locator-patch/utils/index.ts","./src/test/scripts/pw-locator-patch/vision/query.ts"],"version":"5.8.3"}
|
|
1
|
+
{"root":["./src/config.ts","./src/email.ts","./src/index.ts","./src/logger.ts","./src/playwright-extensions.ts","./src/auth/index.ts","./src/auth/types.ts","./src/captcha/index.ts","./src/captcha/vision.ts","./src/devices/types.ts","./src/overlay-tests/cache.spec.ts","./src/overlay-tests/click.spec.ts","./src/overlay-tests/fixtures.ts","./src/overlay-tests/patch.spec.ts","./src/reporter/base.ts","./src/reporter/custom.ts","./src/reporter/queue.ts","./src/reporter/reporterV2.ts","./src/reporter/types.ts","./src/reporter/uploader.ts","./src/reporter/util.ts","./src/reporter/third_party/html-reporter-types.ts","./src/test/constants.ts","./src/test/expect.ts","./src/test/index.ts","./src/test/types.ts","./src/test/scripts/agent-capabilities.ts","./src/test/scripts/index.ts","./src/test/scripts/locator-highlights.ts","./src/test/scripts/locator-vision.ts","./src/test/scripts/mouse-pointer.ts","./src/test/scripts/types.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/cache.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/index.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/prompt.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/types.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/utils.ts","./src/test/scripts/pw-locator-patch/highlight/click.ts","./src/test/scripts/pw-locator-patch/highlight/expect.ts","./src/test/scripts/pw-locator-patch/highlight/hover.ts","./src/test/scripts/pw-locator-patch/highlight/inner-text.ts","./src/test/scripts/pw-locator-patch/highlight/input-value.ts","./src/test/scripts/pw-locator-patch/highlight/is-checked.ts","./src/test/scripts/pw-locator-patch/highlight/is-disabled.ts","./src/test/scripts/pw-locator-patch/highlight/is-editable.ts","./src/test/scripts/pw-locator-patch/highlight/text-content.ts","./src/test/scripts/pw-locator-patch/utils/index.ts","./src/test/scripts/pw-locator-patch/vision/query.ts"],"version":"5.8.3"}
|