pw-core 1.3.0 → 1.3.1
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 -0
- package/dist/cli.js +145 -421
- package/dist/codegen/action-formatter.d.ts +19 -0
- package/dist/codegen/action-formatter.js +160 -0
- package/dist/codegen/action-processor.d.ts +23 -0
- package/dist/codegen/action-processor.js +112 -0
- package/dist/codegen/floating-panel/client.d.ts +14 -1
- package/dist/codegen/floating-panel/client.js +20 -25
- package/dist/codegen/floating-panel/manager.js +16 -22
- package/dist/codegen/generator/action.validator.d.ts +2 -1
- package/dist/codegen/generator/action.validator.js +2 -1
- package/dist/codegen/generator/candidate-scorer.d.ts +7 -0
- package/dist/codegen/generator/candidate-scorer.js +206 -0
- package/dist/codegen/generator/dom-scanner.d.ts +39 -0
- package/dist/codegen/generator/dom-scanner.js +429 -0
- package/dist/codegen/generator/id-stability.d.ts +6 -0
- package/dist/codegen/generator/id-stability.js +38 -0
- package/dist/codegen/generator/index.d.ts +8 -10
- package/dist/codegen/generator/index.js +23 -678
- package/dist/codegen/generator/key-builder.d.ts +13 -0
- package/dist/codegen/generator/key-builder.js +32 -0
- package/dist/codegen/hover-tracker/client.d.ts +5 -0
- package/dist/codegen/hover-tracker/client.js +14 -15
- package/dist/codegen/hover-tracker/manager.js +2 -6
- package/dist/codegen/index.d.ts +9 -32
- package/dist/codegen/index.js +9 -1128
- package/dist/codegen/key-utils.d.ts +16 -0
- package/dist/codegen/key-utils.js +29 -1
- package/dist/codegen/project-finder.d.ts +29 -0
- package/dist/codegen/project-finder.js +283 -0
- package/dist/codegen/registry-matcher.d.ts +27 -0
- package/dist/codegen/registry-matcher.js +254 -0
- package/dist/codegen/registry-store.d.ts +52 -0
- package/dist/codegen/registry-store.js +652 -0
- package/dist/codegen/selector-parser.d.ts +16 -0
- package/dist/codegen/selector-parser.js +121 -0
- package/dist/codegen/types.d.ts +18 -1
- package/dist/codegen/uniqueness.d.ts +3 -0
- package/dist/codegen/uniqueness.js +15 -0
- package/dist/component/table.d.ts +2 -2
- package/dist/component/table.js +7 -6
- package/dist/index.d.ts +3 -0
- package/dist/index.js +19 -0
- package/dist/page/actions/locator-actions.d.ts +6 -10
- package/dist/page/actions/locator-actions.js +24 -23
- package/dist/page/assertions/verify-chain.d.ts +11 -13
- package/dist/page/assertions/verify-chain.js +26 -7
- package/dist/page/assertions/verify-helpers.d.ts +5 -15
- package/dist/page/config.d.ts +25 -25
- package/dist/page/locators/dynamic-locator-resolver.js +22 -9
- package/dist/page/locators/resolver.d.ts +17 -11
- package/dist/page/locators/resolver.js +84 -78
- package/dist/page/registry.d.ts +35 -35
- package/dist/page/registry.js +86 -82
- package/dist/page/typed-page.d.ts +1 -0
- package/dist/page/typed-page.js +22 -12
- package/dist/page/types/proxy-methods.d.ts +11 -19
- package/dist/page/types/validation.d.ts +1 -1
- package/dist/page/utils/formatter.d.ts +3 -3
- package/dist/page/utils/formatter.js +5 -2
- package/package.json +6 -3
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isStableId = isStableId;
|
|
4
|
+
/**
|
|
5
|
+
* Checks whether an HTML element's ID attribute is stable and non-generated.
|
|
6
|
+
* Filters out framework auto-generated IDs (React, MUI, HeadlessUI, Ember, Angular),
|
|
7
|
+
* UUIDs, hashes, and purely numeric IDs.
|
|
8
|
+
*/
|
|
9
|
+
function isStableId(id) {
|
|
10
|
+
if (!id)
|
|
11
|
+
return false;
|
|
12
|
+
const lower = id.toLowerCase();
|
|
13
|
+
// React/MUI/HeadlessUI/Ember auto-generated patterns
|
|
14
|
+
if (lower.startsWith(':r') && /\d/.test(lower))
|
|
15
|
+
return false;
|
|
16
|
+
if (lower.startsWith('mui-'))
|
|
17
|
+
return false;
|
|
18
|
+
if (lower.startsWith('headlessui-'))
|
|
19
|
+
return false;
|
|
20
|
+
if (lower.startsWith('ember-'))
|
|
21
|
+
return false;
|
|
22
|
+
if (lower.startsWith('ng-'))
|
|
23
|
+
return false;
|
|
24
|
+
// UUID pattern
|
|
25
|
+
const uuidRegex = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i;
|
|
26
|
+
if (uuidRegex.test(lower))
|
|
27
|
+
return false;
|
|
28
|
+
// Long hex hashes or random looking alpha-numeric (e.g. f4c2d91, 8d72b3ef)
|
|
29
|
+
const hexHashRegex = /^[0-9a-f]{7,8}$/i;
|
|
30
|
+
if (hexHashRegex.test(lower))
|
|
31
|
+
return false;
|
|
32
|
+
// Purely numeric or ends with a long random number (e.g. button-12847291)
|
|
33
|
+
if (/^\d+$/.test(lower))
|
|
34
|
+
return false;
|
|
35
|
+
if (/\d{5,}$/.test(lower))
|
|
36
|
+
return false;
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
+
import type { Page } from '@playwright/test';
|
|
1
2
|
import { LocatorCandidate } from '../types';
|
|
2
|
-
export
|
|
3
|
-
export
|
|
3
|
+
export { isStableId } from './id-stability';
|
|
4
|
+
export { generateKeyFromText, generateKeyFromCandidate } from './key-builder';
|
|
5
|
+
export { validateAndSelectLocator } from './locator.validator';
|
|
6
|
+
export { normalizeActionName } from './action.validator';
|
|
4
7
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
8
|
+
* Evaluates the element at `selector` inside the page, scans candidate locators across the DOM tree,
|
|
9
|
+
* scores and ranks them based on priority, stability, semantics, and uniqueness, and returns the best candidate.
|
|
7
10
|
*/
|
|
8
|
-
export declare function
|
|
9
|
-
strategy: string;
|
|
10
|
-
selector: string;
|
|
11
|
-
valueToScore?: string;
|
|
12
|
-
}, role?: string): string;
|
|
13
|
-
export declare function generateSmartLocator(page: any, selector: string): Promise<LocatorCandidate | null>;
|
|
11
|
+
export declare function generateSmartLocator(page: Page, selector: string): Promise<LocatorCandidate | null>;
|