@smartbit4all/playwright-qa 0.1.5 → 0.1.7
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 +40 -11
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +40 -4
- package/dist/core/index.js.map +1 -1
- package/dist/screenshot/directory.d.ts +3 -1
- package/dist/screenshot/directory.d.ts.map +1 -1
- package/dist/screenshot/directory.js +17 -1
- package/dist/screenshot/directory.js.map +1 -1
- package/dist/screenshot/highlight.d.ts +4 -3
- package/dist/screenshot/highlight.d.ts.map +1 -1
- package/dist/screenshot/highlight.js +10 -4
- package/dist/screenshot/highlight.js.map +1 -1
- package/dist/screenshot/index.d.ts +5 -4
- package/dist/screenshot/index.d.ts.map +1 -1
- package/dist/screenshot/index.js +12 -10
- package/dist/screenshot/index.js.map +1 -1
- package/dist/steps/dialog.steps.d.ts +1 -1
- package/dist/steps/dialog.steps.d.ts.map +1 -1
- package/dist/steps/dialog.steps.js +3 -2
- package/dist/steps/dialog.steps.js.map +1 -1
- package/dist/steps/grid.steps.d.ts.map +1 -1
- package/dist/steps/grid.steps.js +3 -2
- package/dist/steps/grid.steps.js.map +1 -1
- package/dist/steps/index.d.ts +1 -0
- package/dist/steps/index.d.ts.map +1 -1
- package/dist/steps/index.js +5 -1
- package/dist/steps/index.js.map +1 -1
- package/dist/steps/locators.d.ts +16 -0
- package/dist/steps/locators.d.ts.map +1 -0
- package/dist/steps/locators.js +30 -0
- package/dist/steps/locators.js.map +1 -0
- package/dist/steps/navigation.steps.d.ts.map +1 -1
- package/dist/steps/navigation.steps.js +3 -2
- package/dist/steps/navigation.steps.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -38,21 +38,21 @@ Every TestSuite should call `initSuite()` in `beforeAll`. This single call reset
|
|
|
38
38
|
```typescript
|
|
39
39
|
import { initSuite } from '@smartbit4all/playwright-qa';
|
|
40
40
|
|
|
41
|
-
// With screenshots —
|
|
41
|
+
// With screenshots — each run creates a new timestamped subdirectory
|
|
42
42
|
initSuite({ screenshotDir: './screenshots' });
|
|
43
43
|
|
|
44
|
-
//
|
|
45
|
-
initSuite({ screenshotDir: './screenshots', cleanScreenshots:
|
|
44
|
+
// Clean previous run — deletes the last run's folder before creating a new one
|
|
45
|
+
initSuite({ screenshotDir: './screenshots', cleanScreenshots: true });
|
|
46
46
|
|
|
47
47
|
// Without screenshots — tests run normally, screenshot calls return null
|
|
48
48
|
initSuite();
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
By default, `
|
|
51
|
+
By default, each run creates a new timestamped subdirectory and the `latest` symlink always points to the most recent run. Set `cleanScreenshots: true` to delete all previous runs before starting — useful when disk space is limited or only the latest run matters.
|
|
52
52
|
|
|
53
53
|
When no `screenshotDir` is provided, all screenshot functions (`screenshot`, `screenshotHighlight`, `screenshotRegion`, `screenshotRegionHighlight`) become no-ops and return `null` instead of a file path. This means TestSteps that include screenshot calls work without modification — no conditional logic needed.
|
|
54
54
|
|
|
55
|
-
When multiple suites run in the same test execution with the same `screenshotDir`, the directory is created once and reused — all screenshots land in a single timestamped folder.
|
|
55
|
+
When multiple suites run in the same test execution with the same `screenshotDir`, the directory is created once and reused — all screenshots land in a single timestamped folder. This works even if a suite fails mid-run: the next suite picks up the same directory and continues the `autoPrefix` counter from where it left off (e.g., if the failed suite ended at `0005-`, the next suite starts at `0006-`). The framework tracks this via a `.current-run` marker file in the screenshot base directory.
|
|
56
56
|
|
|
57
57
|
## Viewport
|
|
58
58
|
|
|
@@ -90,18 +90,20 @@ await screenshot(page, 'page-name');
|
|
|
90
90
|
await screenshot(page, 'category/page-name'); // name path = subdirectory
|
|
91
91
|
await screenshot(page, 'page-name', { fullPage: true });
|
|
92
92
|
|
|
93
|
-
// Full page with highlighted element
|
|
93
|
+
// Full page with highlighted element — accepts CSS selector or Locator
|
|
94
94
|
await screenshotHighlight(page, 'name', '#selector');
|
|
95
95
|
await screenshotHighlight(page, 'name', '#selector', { style: 'subtle' });
|
|
96
|
+
await screenshotHighlight(page, 'name', findMenuItem(page, 'Új mappa')); // Locator
|
|
96
97
|
|
|
97
|
-
// Region screenshot (single element)
|
|
98
|
+
// Region screenshot (single element) — accepts CSS selector or Locator
|
|
98
99
|
await screenshotRegion(page, 'name', '#region-selector');
|
|
99
100
|
|
|
100
|
-
// Region with highlighted element inside
|
|
101
|
+
// Region with highlighted element inside — both accept CSS selector or Locator
|
|
101
102
|
await screenshotRegionHighlight(page, 'name', '#region', '#highlight');
|
|
103
|
+
await screenshotRegionHighlight(page, 'name', findPopupMenu(page), findMenuItem(page, 'Új mappa'));
|
|
102
104
|
```
|
|
103
105
|
|
|
104
|
-
All screenshot functions return `Promise<string | null>`. They return `null` when no screenshot directory has been configured (see [Suite Setup](#suite-setup)).
|
|
106
|
+
All screenshot functions return `Promise<string | null>`. They return `null` when no screenshot directory has been configured (see [Suite Setup](#suite-setup)). Highlight and region parameters accept both CSS selectors (string) and Playwright Locators.
|
|
105
107
|
|
|
106
108
|
### Datapool
|
|
107
109
|
|
|
@@ -177,10 +179,10 @@ await navigateInTree(page, ['Ügyek']);
|
|
|
177
179
|
await navigateInTree(page, ['Dokumentumok', 'Tender']);
|
|
178
180
|
|
|
179
181
|
// Open the last node's context menu (hamburger button) and click an action
|
|
180
|
-
await navigateInTree(page, ['Dokumentumok', 'Bejövő
|
|
182
|
+
await navigateInTree(page, ['Dokumentumok', 'Bejövő e-mail'], 'Új mappa');
|
|
181
183
|
|
|
182
184
|
// Open context menu only (for screenshots) — pass true, then close with Escape
|
|
183
|
-
await navigateInTree(page, ['Dokumentumok', 'Bejövő
|
|
185
|
+
await navigateInTree(page, ['Dokumentumok', 'Bejövő e-mail'], true);
|
|
184
186
|
await screenshot(page, 'context-menu-open');
|
|
185
187
|
await page.keyboard.press('Escape');
|
|
186
188
|
```
|
|
@@ -217,6 +219,33 @@ await waitForAngularIdle(page);
|
|
|
217
219
|
|
|
218
220
|
`waitForAngularIdle` is also available for project-specific steps that need the same wait pattern.
|
|
219
221
|
|
|
222
|
+
### Locators
|
|
223
|
+
|
|
224
|
+
```typescript
|
|
225
|
+
import { findButton, findPopupMenu, findMenuItem } from '@smartbit4all/playwright-qa/steps';
|
|
226
|
+
|
|
227
|
+
// Find a button by data-testid (preferred) or visible text (fallback)
|
|
228
|
+
await findButton(page, 'REFRESH').click(); // matches data-testid="REFRESH"
|
|
229
|
+
await findButton(page, 'Mentés').click(); // matches button text "Mentés"
|
|
230
|
+
|
|
231
|
+
// Works inside a container (e.g., dialog)
|
|
232
|
+
await findButton(topDialog(page), 'Mentés').click();
|
|
233
|
+
|
|
234
|
+
// Find the currently visible popup menu (Angular Material or PrimeNG)
|
|
235
|
+
const menu = findPopupMenu(page);
|
|
236
|
+
|
|
237
|
+
// Find a menu item by data-testid or text
|
|
238
|
+
await findMenuItem(page, 'Szerkesztés').click();
|
|
239
|
+
await findMenuItem(page, 'DELETE_ACTION').click(); // matches data-testid="DELETE_ACTION"
|
|
240
|
+
|
|
241
|
+
// Combine with screenshot functions for highlighting
|
|
242
|
+
await screenshotHighlight(page, 'menu-highlight', findMenuItem(page, 'Új mappa'));
|
|
243
|
+
await screenshotRegionHighlight(page, 'menu-region',
|
|
244
|
+
findPopupMenu(page), findMenuItem(page, 'Új mappa'));
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
All built-in steps (`clickInDialog`, `selectGridRow`, `navigateInTree`) use these locators internally, so they automatically support `data-testid` values alongside text matching.
|
|
248
|
+
|
|
220
249
|
## Developer Guide — Writing TestSteps
|
|
221
250
|
|
|
222
251
|
TestSteps are simple async functions that implement one atomic UI operation.
|
package/dist/core/index.d.ts
CHANGED
|
@@ -8,5 +8,12 @@ export interface InitSuiteOptions {
|
|
|
8
8
|
autoPrefix?: boolean;
|
|
9
9
|
cleanScreenshots?: boolean;
|
|
10
10
|
}
|
|
11
|
+
export interface RunMarker {
|
|
12
|
+
ppid: number;
|
|
13
|
+
runDir: string;
|
|
14
|
+
counter: number;
|
|
15
|
+
}
|
|
16
|
+
export declare function readRunMarker(baseDir: string): RunMarker | null;
|
|
17
|
+
export declare function writeRunMarker(baseDir: string, runDir: string, counter: number): void;
|
|
11
18
|
export declare function initSuite(options?: InitSuiteOptions): void;
|
|
12
19
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAID,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAQ/D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGrF;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAwC1D"}
|
package/dist/core/index.js
CHANGED
|
@@ -33,6 +33,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.readRunMarker = readRunMarker;
|
|
37
|
+
exports.writeRunMarker = writeRunMarker;
|
|
36
38
|
exports.initSuite = initSuite;
|
|
37
39
|
const fs = __importStar(require("fs"));
|
|
38
40
|
const config_1 = require("../config");
|
|
@@ -40,6 +42,22 @@ const datapool_1 = require("../datapool");
|
|
|
40
42
|
const path = __importStar(require("path"));
|
|
41
43
|
const screenshot_1 = require("../screenshot");
|
|
42
44
|
const seed_1 = require("../seed");
|
|
45
|
+
const MARKER_FILE = '.current-run';
|
|
46
|
+
function readRunMarker(baseDir) {
|
|
47
|
+
try {
|
|
48
|
+
const markerPath = path.join(baseDir, MARKER_FILE);
|
|
49
|
+
if (!fs.existsSync(markerPath))
|
|
50
|
+
return null;
|
|
51
|
+
return JSON.parse(fs.readFileSync(markerPath, 'utf-8'));
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function writeRunMarker(baseDir, runDir, counter) {
|
|
58
|
+
const marker = { ppid: process.ppid, runDir, counter };
|
|
59
|
+
fs.writeFileSync(path.join(baseDir, MARKER_FILE), JSON.stringify(marker));
|
|
60
|
+
}
|
|
43
61
|
function initSuite(options) {
|
|
44
62
|
(0, config_1.resetConfig)();
|
|
45
63
|
(0, datapool_1.resetDatapoolConfig)();
|
|
@@ -49,11 +67,20 @@ function initSuite(options) {
|
|
|
49
67
|
const resolvedDir = path.resolve(screenshotDir);
|
|
50
68
|
const alreadyInitialized = (0, screenshot_1.isScreenshotEnabled)() && (0, screenshot_1.getScreenshotBaseDir)() === resolvedDir;
|
|
51
69
|
if (!alreadyInitialized) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
70
|
+
// Check if another worker in this same test run already created the dir
|
|
71
|
+
const marker = readRunMarker(resolvedDir);
|
|
72
|
+
if (marker && marker.ppid === process.ppid && fs.existsSync(marker.runDir)) {
|
|
73
|
+
(0, screenshot_1.setScreenshotDir)(marker.runDir, resolvedDir);
|
|
74
|
+
(0, screenshot_1.setScreenshotCounter)(marker.counter);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
const clean = options?.cleanScreenshots ?? false;
|
|
78
|
+
if (clean && fs.existsSync(resolvedDir)) {
|
|
79
|
+
fs.rmSync(resolvedDir, { recursive: true });
|
|
80
|
+
}
|
|
81
|
+
const runDir = (0, screenshot_1.initScreenshotDir)(screenshotDir);
|
|
82
|
+
writeRunMarker(resolvedDir, runDir, 0);
|
|
55
83
|
}
|
|
56
|
-
(0, screenshot_1.initScreenshotDir)(screenshotDir);
|
|
57
84
|
}
|
|
58
85
|
}
|
|
59
86
|
else {
|
|
@@ -61,6 +88,15 @@ function initSuite(options) {
|
|
|
61
88
|
}
|
|
62
89
|
if (options?.autoPrefix) {
|
|
63
90
|
(0, screenshot_1.setAutoPrefix)(true);
|
|
91
|
+
const baseDir = (0, screenshot_1.getScreenshotBaseDir)();
|
|
92
|
+
if (baseDir) {
|
|
93
|
+
(0, screenshot_1.setOnCounterChange)((counter) => {
|
|
94
|
+
const marker = readRunMarker(baseDir);
|
|
95
|
+
if (marker) {
|
|
96
|
+
writeRunMarker(baseDir, marker.runDir, counter);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
64
100
|
}
|
|
65
101
|
}
|
|
66
102
|
//# sourceMappingURL=index.js.map
|
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,5 +6,7 @@ export declare function getScreenshotBaseDir(): string | null;
|
|
|
6
6
|
export declare function resetScreenshotDir(): void;
|
|
7
7
|
export declare function setAutoPrefix(enabled: boolean): void;
|
|
8
8
|
export declare function resetScreenshotCounter(): void;
|
|
9
|
-
export declare function
|
|
9
|
+
export declare function setScreenshotCounter(value: number): void;
|
|
10
|
+
export declare function setScreenshotDir(dir: string, baseDir?: string): void;
|
|
11
|
+
export declare function setOnCounterChange(callback: ((counter: number) => void) | null): void;
|
|
10
12
|
//# sourceMappingURL=directory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directory.d.ts","sourceRoot":"","sources":["../../src/screenshot/directory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"directory.d.ts","sourceRoot":"","sources":["../../src/screenshot/directory.ts"],"names":[],"mappings":"AAaA,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,MAAwB,GAAG,MAAM,CA4B3E;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAOzC;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CA2BjF;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAEpD;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAMzC;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEpD;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAExD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAKpE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAErF"}
|
|
@@ -41,13 +41,16 @@ exports.getScreenshotBaseDir = getScreenshotBaseDir;
|
|
|
41
41
|
exports.resetScreenshotDir = resetScreenshotDir;
|
|
42
42
|
exports.setAutoPrefix = setAutoPrefix;
|
|
43
43
|
exports.resetScreenshotCounter = resetScreenshotCounter;
|
|
44
|
+
exports.setScreenshotCounter = setScreenshotCounter;
|
|
44
45
|
exports.setScreenshotDir = setScreenshotDir;
|
|
46
|
+
exports.setOnCounterChange = setOnCounterChange;
|
|
45
47
|
const fs = __importStar(require("fs"));
|
|
46
48
|
const path = __importStar(require("path"));
|
|
47
49
|
let currentRunDir = null;
|
|
48
50
|
let currentBaseDir = null;
|
|
49
51
|
let autoPrefix = false;
|
|
50
52
|
let screenshotCounter = 0;
|
|
53
|
+
let onCounterChange = null;
|
|
51
54
|
function formatTimestamp(date) {
|
|
52
55
|
return date.toISOString().replace(/[:.]/g, '-').replace('Z', '');
|
|
53
56
|
}
|
|
@@ -93,6 +96,9 @@ function resolveScreenshotPath(name, subdirectory) {
|
|
|
93
96
|
screenshotCounter++;
|
|
94
97
|
const prefix = String(screenshotCounter).padStart(4, '0');
|
|
95
98
|
baseName = `${prefix}-${baseName}`;
|
|
99
|
+
if (onCounterChange) {
|
|
100
|
+
onCounterChange(screenshotCounter);
|
|
101
|
+
}
|
|
96
102
|
}
|
|
97
103
|
const fileName = baseName + '.png';
|
|
98
104
|
const nameDir = nameParts.length > 0 ? nameParts.join('/') : '';
|
|
@@ -116,6 +122,7 @@ function resetScreenshotDir() {
|
|
|
116
122
|
currentBaseDir = null;
|
|
117
123
|
autoPrefix = false;
|
|
118
124
|
screenshotCounter = 0;
|
|
125
|
+
onCounterChange = null;
|
|
119
126
|
}
|
|
120
127
|
function setAutoPrefix(enabled) {
|
|
121
128
|
autoPrefix = enabled;
|
|
@@ -123,7 +130,16 @@ function setAutoPrefix(enabled) {
|
|
|
123
130
|
function resetScreenshotCounter() {
|
|
124
131
|
screenshotCounter = 0;
|
|
125
132
|
}
|
|
126
|
-
function
|
|
133
|
+
function setScreenshotCounter(value) {
|
|
134
|
+
screenshotCounter = value;
|
|
135
|
+
}
|
|
136
|
+
function setScreenshotDir(dir, baseDir) {
|
|
127
137
|
currentRunDir = dir;
|
|
138
|
+
if (baseDir) {
|
|
139
|
+
currentBaseDir = baseDir;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
function setOnCounterChange(callback) {
|
|
143
|
+
onCounterChange = callback;
|
|
128
144
|
}
|
|
129
145
|
//# sourceMappingURL=directory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directory.js","sourceRoot":"","sources":["../../src/screenshot/directory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"directory.js","sourceRoot":"","sources":["../../src/screenshot/directory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type { Page } from '@playwright/test';
|
|
1
|
+
import type { Page, Locator } from '@playwright/test';
|
|
2
2
|
import { type HighlightStyle } from '../config';
|
|
3
|
+
export type SelectorOrLocator = string | Locator;
|
|
3
4
|
interface SavedStyle {
|
|
4
5
|
outline: string;
|
|
5
6
|
backgroundColor: string;
|
|
6
7
|
}
|
|
7
|
-
export declare function applyHighlight(page: Page,
|
|
8
|
-
export declare function removeHighlight(page: Page,
|
|
8
|
+
export declare function applyHighlight(page: Page, target: SelectorOrLocator, style?: HighlightStyle): Promise<SavedStyle>;
|
|
9
|
+
export declare function removeHighlight(page: Page, target: SelectorOrLocator, savedStyle: SavedStyle): Promise<void>;
|
|
9
10
|
export {};
|
|
10
11
|
//# sourceMappingURL=highlight.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"highlight.d.ts","sourceRoot":"","sources":["../../src/screenshot/highlight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"highlight.d.ts","sourceRoot":"","sources":["../../src/screenshot/highlight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAEnE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjD,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB;AASD,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,iBAAiB,EACzB,KAAK,CAAC,EAAE,cAAc,GACrB,OAAO,CAAC,UAAU,CAAC,CAuBrB;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,iBAAiB,EACzB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CAcf"}
|
|
@@ -3,9 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.applyHighlight = applyHighlight;
|
|
4
4
|
exports.removeHighlight = removeHighlight;
|
|
5
5
|
const config_1 = require("../config");
|
|
6
|
-
|
|
6
|
+
function resolveLocator(page, target) {
|
|
7
|
+
if (typeof target === 'string') {
|
|
8
|
+
return page.locator(target).first();
|
|
9
|
+
}
|
|
10
|
+
return target;
|
|
11
|
+
}
|
|
12
|
+
async function applyHighlight(page, target, style) {
|
|
7
13
|
const highlightStyle = style ?? (0, config_1.getHighlightStyle)('default');
|
|
8
|
-
const locator = page
|
|
14
|
+
const locator = resolveLocator(page, target);
|
|
9
15
|
await locator.waitFor({ state: 'visible' });
|
|
10
16
|
const savedStyle = await locator.evaluate((el, hl) => {
|
|
11
17
|
const htmlEl = el;
|
|
@@ -20,9 +26,9 @@ async function applyHighlight(page, selector, style) {
|
|
|
20
26
|
await page.evaluate(() => new Promise((resolve) => requestAnimationFrame(resolve)));
|
|
21
27
|
return savedStyle;
|
|
22
28
|
}
|
|
23
|
-
async function removeHighlight(page,
|
|
29
|
+
async function removeHighlight(page, target, savedStyle) {
|
|
24
30
|
try {
|
|
25
|
-
const locator = page
|
|
31
|
+
const locator = resolveLocator(page, target);
|
|
26
32
|
await locator.evaluate((el, saved) => {
|
|
27
33
|
const htmlEl = el;
|
|
28
34
|
htmlEl.style.outline = saved.outline;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"highlight.js","sourceRoot":"","sources":["../../src/screenshot/highlight.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"highlight.js","sourceRoot":"","sources":["../../src/screenshot/highlight.ts"],"names":[],"mappings":";;AAiBA,wCA2BC;AAED,0CAkBC;AA/DD,sCAAmE;AASnE,SAAS,cAAc,CAAC,IAAU,EAAE,MAAyB;IAC3D,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,IAAU,EACV,MAAyB,EACzB,KAAsB;IAEtB,MAAM,cAAc,GAAG,KAAK,IAAI,IAAA,0BAAiB,EAAC,SAAS,CAAC,CAAC;IAE7D,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,QAAQ,CACvC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACT,MAAM,MAAM,GAAG,EAAiB,CAAC;QACjC,MAAM,KAAK,GAAG;YACZ,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;YAC7B,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,eAAe;SAC9C,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC,eAAe,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC,EACD,cAAc,CACf,CAAC;IAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAEpF,OAAO,UAAU,CAAC;AACpB,CAAC;AAEM,KAAK,UAAU,eAAe,CACnC,IAAU,EACV,MAAyB,EACzB,UAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,OAAO,CAAC,QAAQ,CACpB,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;YACZ,MAAM,MAAM,GAAG,EAAiB,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QACvD,CAAC,EACD,UAAU,CACX,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,kEAAkE;IACpE,CAAC;AACH,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { Page } from '@playwright/test';
|
|
2
|
-
|
|
2
|
+
import { type SelectorOrLocator } from './highlight';
|
|
3
|
+
export { initScreenshotDir, resetScreenshotDir, setScreenshotDir, isScreenshotEnabled, getScreenshotBaseDir, setAutoPrefix, resetScreenshotCounter, setScreenshotCounter, setOnCounterChange } from './directory';
|
|
3
4
|
export interface ScreenshotOptions {
|
|
4
5
|
fullPage?: boolean;
|
|
5
6
|
subdirectory?: string;
|
|
6
7
|
style?: string;
|
|
7
8
|
}
|
|
8
9
|
export declare function screenshot(page: Page, name: string, options?: ScreenshotOptions): Promise<string | null>;
|
|
9
|
-
export declare function screenshotHighlight(page: Page, name: string,
|
|
10
|
-
export declare function screenshotRegion(page: Page, name: string,
|
|
11
|
-
export declare function screenshotRegionHighlight(page: Page, name: string,
|
|
10
|
+
export declare function screenshotHighlight(page: Page, name: string, highlight: SelectorOrLocator, options?: ScreenshotOptions): Promise<string | null>;
|
|
11
|
+
export declare function screenshotRegion(page: Page, name: string, region: SelectorOrLocator, options?: ScreenshotOptions): Promise<string | null>;
|
|
12
|
+
export declare function screenshotRegionHighlight(page: Page, name: string, region: SelectorOrLocator, highlight: SelectorOrLocator, options?: ScreenshotOptions): Promise<string | null>;
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/screenshot/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/screenshot/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAmC,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGtF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAElN,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMxB;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,iBAAiB,EAC5B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWxB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB;AAED,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAYxB"}
|
package/dist/screenshot/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resetScreenshotCounter = exports.setAutoPrefix = exports.getScreenshotBaseDir = exports.isScreenshotEnabled = exports.setScreenshotDir = exports.resetScreenshotDir = exports.initScreenshotDir = void 0;
|
|
3
|
+
exports.setOnCounterChange = exports.setScreenshotCounter = exports.resetScreenshotCounter = exports.setAutoPrefix = exports.getScreenshotBaseDir = exports.isScreenshotEnabled = exports.setScreenshotDir = exports.resetScreenshotDir = exports.initScreenshotDir = void 0;
|
|
4
4
|
exports.screenshot = screenshot;
|
|
5
5
|
exports.screenshotHighlight = screenshotHighlight;
|
|
6
6
|
exports.screenshotRegion = screenshotRegion;
|
|
@@ -16,6 +16,8 @@ Object.defineProperty(exports, "isScreenshotEnabled", { enumerable: true, get: f
|
|
|
16
16
|
Object.defineProperty(exports, "getScreenshotBaseDir", { enumerable: true, get: function () { return directory_2.getScreenshotBaseDir; } });
|
|
17
17
|
Object.defineProperty(exports, "setAutoPrefix", { enumerable: true, get: function () { return directory_2.setAutoPrefix; } });
|
|
18
18
|
Object.defineProperty(exports, "resetScreenshotCounter", { enumerable: true, get: function () { return directory_2.resetScreenshotCounter; } });
|
|
19
|
+
Object.defineProperty(exports, "setScreenshotCounter", { enumerable: true, get: function () { return directory_2.setScreenshotCounter; } });
|
|
20
|
+
Object.defineProperty(exports, "setOnCounterChange", { enumerable: true, get: function () { return directory_2.setOnCounterChange; } });
|
|
19
21
|
async function screenshot(page, name, options = {}) {
|
|
20
22
|
if (!(0, directory_1.isScreenshotEnabled)())
|
|
21
23
|
return null;
|
|
@@ -23,33 +25,33 @@ async function screenshot(page, name, options = {}) {
|
|
|
23
25
|
await page.screenshot({ path: filePath, fullPage: options.fullPage ?? false });
|
|
24
26
|
return filePath;
|
|
25
27
|
}
|
|
26
|
-
async function screenshotHighlight(page, name,
|
|
28
|
+
async function screenshotHighlight(page, name, highlight, options = {}) {
|
|
27
29
|
if (!(0, directory_1.isScreenshotEnabled)())
|
|
28
30
|
return null;
|
|
29
31
|
const style = options.style ? (0, config_1.getHighlightStyle)(options.style) : undefined;
|
|
30
|
-
const savedStyle = await (0, highlight_1.applyHighlight)(page,
|
|
32
|
+
const savedStyle = await (0, highlight_1.applyHighlight)(page, highlight, style);
|
|
31
33
|
const filePath = (0, directory_1.resolveScreenshotPath)(name, options.subdirectory);
|
|
32
34
|
await page.screenshot({ path: filePath, fullPage: options.fullPage ?? false });
|
|
33
|
-
await (0, highlight_1.removeHighlight)(page,
|
|
35
|
+
await (0, highlight_1.removeHighlight)(page, highlight, savedStyle);
|
|
34
36
|
return filePath;
|
|
35
37
|
}
|
|
36
|
-
async function screenshotRegion(page, name,
|
|
38
|
+
async function screenshotRegion(page, name, region, options = {}) {
|
|
37
39
|
if (!(0, directory_1.isScreenshotEnabled)())
|
|
38
40
|
return null;
|
|
39
41
|
const filePath = (0, directory_1.resolveScreenshotPath)(name, options.subdirectory);
|
|
40
|
-
const element = page.locator(
|
|
42
|
+
const element = typeof region === 'string' ? page.locator(region) : region;
|
|
41
43
|
await element.screenshot({ path: filePath });
|
|
42
44
|
return filePath;
|
|
43
45
|
}
|
|
44
|
-
async function screenshotRegionHighlight(page, name,
|
|
46
|
+
async function screenshotRegionHighlight(page, name, region, highlight, options = {}) {
|
|
45
47
|
if (!(0, directory_1.isScreenshotEnabled)())
|
|
46
48
|
return null;
|
|
47
49
|
const style = options.style ? (0, config_1.getHighlightStyle)(options.style) : undefined;
|
|
48
|
-
const savedStyle = await (0, highlight_1.applyHighlight)(page,
|
|
50
|
+
const savedStyle = await (0, highlight_1.applyHighlight)(page, highlight, style);
|
|
49
51
|
const filePath = (0, directory_1.resolveScreenshotPath)(name, options.subdirectory);
|
|
50
|
-
const element = page.locator(
|
|
52
|
+
const element = typeof region === 'string' ? page.locator(region) : region;
|
|
51
53
|
await element.screenshot({ path: filePath });
|
|
52
|
-
await (0, highlight_1.removeHighlight)(page,
|
|
54
|
+
await (0, highlight_1.removeHighlight)(page, highlight, savedStyle);
|
|
53
55
|
return filePath;
|
|
54
56
|
}
|
|
55
57
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/screenshot/index.ts"],"names":[],"mappings":";;;AAaA,gCAUC;AAED,kDAgBC;AAED,4CAYC;AAED,8DAkBC;AA1ED,2CAAyE;AACzE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/screenshot/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import type { Page, Locator } from '@playwright/test';
|
|
|
4
4
|
*/
|
|
5
5
|
export declare function topDialog(page: Page): Locator;
|
|
6
6
|
/**
|
|
7
|
-
* Clicks a button inside the topmost dialog by
|
|
7
|
+
* Clicks a button inside the topmost dialog by data-testid or visible text.
|
|
8
8
|
*/
|
|
9
9
|
export declare function clickInDialog(page: Page, buttonText: string): Promise<void>;
|
|
10
10
|
//# sourceMappingURL=dialog.steps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.steps.d.ts","sourceRoot":"","sources":["../../src/steps/dialog.steps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"dialog.steps.d.ts","sourceRoot":"","sources":["../../src/steps/dialog.steps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAMtD;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAE7C;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIjF"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.topDialog = topDialog;
|
|
4
4
|
exports.clickInDialog = clickInDialog;
|
|
5
5
|
const wait_1 = require("./wait");
|
|
6
|
+
const locators_1 = require("./locators");
|
|
6
7
|
const DIALOG_SELECTOR = 'mat-dialog-container, .p-dialog';
|
|
7
8
|
/**
|
|
8
9
|
* Returns the topmost (last) open dialog (Angular Material or PrimeNG).
|
|
@@ -11,11 +12,11 @@ function topDialog(page) {
|
|
|
11
12
|
return page.locator(DIALOG_SELECTOR).last();
|
|
12
13
|
}
|
|
13
14
|
/**
|
|
14
|
-
* Clicks a button inside the topmost dialog by
|
|
15
|
+
* Clicks a button inside the topmost dialog by data-testid or visible text.
|
|
15
16
|
*/
|
|
16
17
|
async function clickInDialog(page, buttonText) {
|
|
17
18
|
const dialog = topDialog(page);
|
|
18
|
-
await
|
|
19
|
+
await (0, locators_1.findButton)(dialog, buttonText).click();
|
|
19
20
|
await (0, wait_1.waitForAngularIdle)(page);
|
|
20
21
|
}
|
|
21
22
|
//# sourceMappingURL=dialog.steps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.steps.js","sourceRoot":"","sources":["../../src/steps/dialog.steps.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"dialog.steps.js","sourceRoot":"","sources":["../../src/steps/dialog.steps.ts"],"names":[],"mappings":";;AASA,8BAEC;AAKD,sCAIC;AAnBD,iCAA4C;AAC5C,yCAAwC;AAExC,MAAM,eAAe,GAAG,iCAAiC,CAAC;AAE1D;;GAEG;AACH,SAAgB,SAAS,CAAC,IAAU;IAClC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9C,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,aAAa,CAAC,IAAU,EAAE,UAAkB;IAChE,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,IAAA,qBAAU,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;IAC7C,MAAM,IAAA,yBAAkB,EAAC,IAAI,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.steps.d.ts","sourceRoot":"","sources":["../../src/steps/grid.steps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"grid.steps.d.ts","sourceRoot":"","sources":["../../src/steps/grid.steps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,kBAAkB,CAAC;AAKtD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAExD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,SAAS,EACjB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAYhG;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhE"}
|
package/dist/steps/grid.steps.js
CHANGED
|
@@ -6,6 +6,7 @@ exports.applyGridFilters = applyGridFilters;
|
|
|
6
6
|
exports.clearGridFilters = clearGridFilters;
|
|
7
7
|
const test_1 = require("@playwright/test");
|
|
8
8
|
const wait_1 = require("./wait");
|
|
9
|
+
const locators_1 = require("./locators");
|
|
9
10
|
/**
|
|
10
11
|
* Finds a row in the grid by content match (paginating if needed) and performs an action.
|
|
11
12
|
* Does NOT use the filter form — searches through the actual table rows.
|
|
@@ -22,7 +23,7 @@ async function selectGridRow(page, filter, action) {
|
|
|
22
23
|
}
|
|
23
24
|
else {
|
|
24
25
|
await row.locator('td.mat-column-my_menu button').click();
|
|
25
|
-
await
|
|
26
|
+
await (0, locators_1.findMenuItem)(page, action).click();
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
/**
|
|
@@ -42,7 +43,7 @@ async function filterAndSelectGridRow(page, filter, action) {
|
|
|
42
43
|
}
|
|
43
44
|
else {
|
|
44
45
|
await row.locator('td.mat-column-my_menu button').click();
|
|
45
|
-
await
|
|
46
|
+
await (0, locators_1.findMenuItem)(page, action).click();
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.steps.js","sourceRoot":"","sources":["../../src/steps/grid.steps.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"grid.steps.js","sourceRoot":"","sources":["../../src/steps/grid.steps.ts"],"names":[],"mappings":"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"}
|
package/dist/steps/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export { waitForAngularIdle } from './wait';
|
|
|
2
2
|
export { selectGridRow, filterAndSelectGridRow, applyGridFilters, clearGridFilters, type RowFilter, } from './grid.steps';
|
|
3
3
|
export { navigateToMain, navigateInTree, } from './navigation.steps';
|
|
4
4
|
export { topDialog, clickInDialog, } from './dialog.steps';
|
|
5
|
+
export { findButton, findPopupMenu, findMenuItem, } from './locators';
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/steps/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,SAAS,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,cAAc,EACd,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,SAAS,EACT,aAAa,GACd,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/steps/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,SAAS,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,cAAc,EACd,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,SAAS,EACT,aAAa,GACd,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,UAAU,EACV,aAAa,EACb,YAAY,GACb,MAAM,YAAY,CAAC"}
|
package/dist/steps/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.clickInDialog = exports.topDialog = exports.navigateInTree = exports.navigateToMain = exports.clearGridFilters = exports.applyGridFilters = exports.filterAndSelectGridRow = exports.selectGridRow = exports.waitForAngularIdle = void 0;
|
|
3
|
+
exports.findMenuItem = exports.findPopupMenu = exports.findButton = exports.clickInDialog = exports.topDialog = exports.navigateInTree = exports.navigateToMain = exports.clearGridFilters = exports.applyGridFilters = exports.filterAndSelectGridRow = exports.selectGridRow = exports.waitForAngularIdle = void 0;
|
|
4
4
|
var wait_1 = require("./wait");
|
|
5
5
|
Object.defineProperty(exports, "waitForAngularIdle", { enumerable: true, get: function () { return wait_1.waitForAngularIdle; } });
|
|
6
6
|
var grid_steps_1 = require("./grid.steps");
|
|
@@ -14,4 +14,8 @@ Object.defineProperty(exports, "navigateInTree", { enumerable: true, get: functi
|
|
|
14
14
|
var dialog_steps_1 = require("./dialog.steps");
|
|
15
15
|
Object.defineProperty(exports, "topDialog", { enumerable: true, get: function () { return dialog_steps_1.topDialog; } });
|
|
16
16
|
Object.defineProperty(exports, "clickInDialog", { enumerable: true, get: function () { return dialog_steps_1.clickInDialog; } });
|
|
17
|
+
var locators_1 = require("./locators");
|
|
18
|
+
Object.defineProperty(exports, "findButton", { enumerable: true, get: function () { return locators_1.findButton; } });
|
|
19
|
+
Object.defineProperty(exports, "findPopupMenu", { enumerable: true, get: function () { return locators_1.findPopupMenu; } });
|
|
20
|
+
Object.defineProperty(exports, "findMenuItem", { enumerable: true, get: function () { return locators_1.findMenuItem; } });
|
|
17
21
|
//# sourceMappingURL=index.js.map
|
package/dist/steps/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/steps/index.ts"],"names":[],"mappings":";;;AAAA,+BAA4C;AAAnC,0GAAA,kBAAkB,OAAA;AAE3B,2CAMsB;AALpB,2GAAA,aAAa,OAAA;AACb,oHAAA,sBAAsB,OAAA;AACtB,8GAAA,gBAAgB,OAAA;AAChB,8GAAA,gBAAgB,OAAA;AAIlB,uDAG4B;AAF1B,kHAAA,cAAc,OAAA;AACd,kHAAA,cAAc,OAAA;AAGhB,+CAGwB;AAFtB,yGAAA,SAAS,OAAA;AACT,6GAAA,aAAa,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/steps/index.ts"],"names":[],"mappings":";;;AAAA,+BAA4C;AAAnC,0GAAA,kBAAkB,OAAA;AAE3B,2CAMsB;AALpB,2GAAA,aAAa,OAAA;AACb,oHAAA,sBAAsB,OAAA;AACtB,8GAAA,gBAAgB,OAAA;AAChB,8GAAA,gBAAgB,OAAA;AAIlB,uDAG4B;AAF1B,kHAAA,cAAc,OAAA;AACd,kHAAA,cAAc,OAAA;AAGhB,+CAGwB;AAFtB,yGAAA,SAAS,OAAA;AACT,6GAAA,aAAa,OAAA;AAGf,uCAIoB;AAHlB,sGAAA,UAAU,OAAA;AACV,yGAAA,aAAa,OAAA;AACb,wGAAA,YAAY,OAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Locator, Page } from '@playwright/test';
|
|
2
|
+
/**
|
|
3
|
+
* Finds a button by data-testid first, falling back to visible text.
|
|
4
|
+
* Works with both data-testid values and button labels for backward compatibility.
|
|
5
|
+
*/
|
|
6
|
+
export declare function findButton(container: Locator | Page, text: string): Locator;
|
|
7
|
+
/**
|
|
8
|
+
* Finds the currently visible popup menu panel (Angular Material or PrimeNG).
|
|
9
|
+
*/
|
|
10
|
+
export declare function findPopupMenu(page: Page): Locator;
|
|
11
|
+
/**
|
|
12
|
+
* Finds a menu item by data-testid first, falling back to visible text.
|
|
13
|
+
* Supports Angular Material (.mat-mdc-menu-panel) and PrimeNG (.p-menu, .p-tieredmenu, .p-contextmenu) menus.
|
|
14
|
+
*/
|
|
15
|
+
export declare function findMenuItem(page: Page, text: string): Locator;
|
|
16
|
+
//# sourceMappingURL=locators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locators.d.ts","sourceRoot":"","sources":["../../src/steps/locators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAEjD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAM9D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findButton = findButton;
|
|
4
|
+
exports.findPopupMenu = findPopupMenu;
|
|
5
|
+
exports.findMenuItem = findMenuItem;
|
|
6
|
+
/**
|
|
7
|
+
* Finds a button by data-testid first, falling back to visible text.
|
|
8
|
+
* Works with both data-testid values and button labels for backward compatibility.
|
|
9
|
+
*/
|
|
10
|
+
function findButton(container, text) {
|
|
11
|
+
return container.locator(`button[data-testid="${text}"], button:has-text("${text}")`).first();
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Finds the currently visible popup menu panel (Angular Material or PrimeNG).
|
|
15
|
+
*/
|
|
16
|
+
function findPopupMenu(page) {
|
|
17
|
+
return page.locator('.mat-mdc-menu-panel, .p-menu-overlay, .p-tieredmenu-overlay, .p-contextmenu, .p-menu.p-component').last();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Finds a menu item by data-testid first, falling back to visible text.
|
|
21
|
+
* Supports Angular Material (.mat-mdc-menu-panel) and PrimeNG (.p-menu, .p-tieredmenu, .p-contextmenu) menus.
|
|
22
|
+
*/
|
|
23
|
+
function findMenuItem(page, text) {
|
|
24
|
+
const matByTestId = `.mat-mdc-menu-panel button.mat-mdc-menu-item[data-testid="${text}"]`;
|
|
25
|
+
const matByText = `.mat-mdc-menu-panel button.mat-mdc-menu-item:has-text("${text}")`;
|
|
26
|
+
const primeByTestId = `.p-menu-list [data-testid="${text}"], .p-menuitem [data-testid="${text}"]`;
|
|
27
|
+
const primeByText = `.p-menu-list .p-menuitem-link:has-text("${text}"), .p-menuitem-content:has-text("${text}")`;
|
|
28
|
+
return page.locator(`${matByTestId}, ${matByText}, ${primeByTestId}, ${primeByText}`).first();
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=locators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locators.js","sourceRoot":"","sources":["../../src/steps/locators.ts"],"names":[],"mappings":";;AAMA,gCAEC;AAKD,sCAEC;AAMD,oCAMC;AAzBD;;;GAGG;AACH,SAAgB,UAAU,CAAC,SAAyB,EAAE,IAAY;IAChE,OAAO,SAAS,CAAC,OAAO,CAAC,uBAAuB,IAAI,wBAAwB,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;AAChG,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,IAAU;IACtC,OAAO,IAAI,CAAC,OAAO,CAAC,kGAAkG,CAAC,CAAC,IAAI,EAAE,CAAC;AACjI,CAAC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,IAAU,EAAE,IAAY;IACnD,MAAM,WAAW,GAAG,6DAA6D,IAAI,IAAI,CAAC;IAC1F,MAAM,SAAS,GAAG,0DAA0D,IAAI,IAAI,CAAC;IACrF,MAAM,aAAa,GAAG,8BAA8B,IAAI,iCAAiC,IAAI,IAAI,CAAC;IAClG,MAAM,WAAW,GAAG,2CAA2C,IAAI,qCAAqC,IAAI,IAAI,CAAC;IACjH,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,WAAW,KAAK,SAAS,KAAK,aAAa,KAAK,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AAChG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.steps.d.ts","sourceRoot":"","sources":["../../src/steps/navigation.steps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"navigation.steps.d.ts","sourceRoot":"","sources":["../../src/steps/navigation.steps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAI7C,wBAAsB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAI9D;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BtG"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.navigateToMain = navigateToMain;
|
|
4
4
|
exports.navigateInTree = navigateInTree;
|
|
5
5
|
const wait_1 = require("./wait");
|
|
6
|
+
const locators_1 = require("./locators");
|
|
6
7
|
async function navigateToMain(page) {
|
|
7
8
|
await page.locator('div.logo').click();
|
|
8
9
|
await page.waitForURL('**/main/**');
|
|
@@ -44,7 +45,7 @@ async function navigatePrimeTreeNode(page, label, select, action) {
|
|
|
44
45
|
}
|
|
45
46
|
else if (action) {
|
|
46
47
|
await node.locator('.p-treenode-content button').click();
|
|
47
|
-
await
|
|
48
|
+
await (0, locators_1.findMenuItem)(page, action).click();
|
|
48
49
|
await (0, wait_1.waitForAngularIdle)(page);
|
|
49
50
|
}
|
|
50
51
|
else if (select) {
|
|
@@ -74,7 +75,7 @@ async function navigateMatTreeNode(page, label, select, action) {
|
|
|
74
75
|
}
|
|
75
76
|
else if (action) {
|
|
76
77
|
await node.locator('button').last().click();
|
|
77
|
-
await
|
|
78
|
+
await (0, locators_1.findMenuItem)(page, action).click();
|
|
78
79
|
await (0, wait_1.waitForAngularIdle)(page);
|
|
79
80
|
}
|
|
80
81
|
else if (select) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.steps.js","sourceRoot":"","sources":["../../src/steps/navigation.steps.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"navigation.steps.js","sourceRoot":"","sources":["../../src/steps/navigation.steps.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED