@smartbit4all/playwright-qa 0.1.4 → 0.1.6
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 +37 -6
- 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/index.d.ts +1 -1
- package/dist/screenshot/index.d.ts.map +1 -1
- package/dist/screenshot/index.js +3 -1
- package/dist/screenshot/index.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
|
|
|
@@ -180,11 +180,42 @@ await navigateInTree(page, ['Dokumentumok', 'Tender']);
|
|
|
180
180
|
await navigateInTree(page, ['Dokumentumok', 'Bejövő email'], 'Új mappa');
|
|
181
181
|
|
|
182
182
|
// Open context menu only (for screenshots) — pass true, then close with Escape
|
|
183
|
-
await navigateInTree(page, ['Dokumentumok', 'Bejövő
|
|
183
|
+
await navigateInTree(page, ['Dokumentumok', 'Bejövő e-mail'], true);
|
|
184
184
|
await screenshot(page, 'context-menu-open');
|
|
185
|
+
|
|
186
|
+
// Full page screenshot with a menu item highlighted
|
|
187
|
+
await screenshotHighlight(page, 'context-menu-highlight',
|
|
188
|
+
'.mat-mdc-menu-panel button.mat-mdc-menu-item:has-text("Új mappa")');
|
|
189
|
+
|
|
190
|
+
// Only the popup menu with a menu item highlighted
|
|
191
|
+
await screenshotRegionHighlight(page, 'context-menu-region',
|
|
192
|
+
'.mat-mdc-menu-panel',
|
|
193
|
+
'.mat-mdc-menu-panel button.mat-mdc-menu-item:has-text("Új mappa")');
|
|
194
|
+
|
|
185
195
|
await page.keyboard.press('Escape');
|
|
186
196
|
```
|
|
187
197
|
|
|
198
|
+
### Dialog
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
import { topDialog, clickInDialog } from '@smartbit4all/playwright-qa/steps';
|
|
202
|
+
|
|
203
|
+
// Get the topmost open dialog (Angular Material or PrimeNG)
|
|
204
|
+
const dialog = topDialog(page);
|
|
205
|
+
|
|
206
|
+
// Click a button inside the topmost dialog — useful when multiple dialogs are stacked
|
|
207
|
+
await clickInDialog(page, 'Mentés');
|
|
208
|
+
|
|
209
|
+
// Example: dialog-in-dialog workflow
|
|
210
|
+
await clickInDialog(page, 'Akció beállítás'); // opens second dialog on top
|
|
211
|
+
await screenshot(page, 'second-dialog');
|
|
212
|
+
await clickInDialog(page, 'Mentés'); // clicks Mentés in the TOP dialog
|
|
213
|
+
// first dialog is still open
|
|
214
|
+
await clickInDialog(page, 'Bezárás'); // closes first dialog
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
When multiple dialogs are open, `topDialog` always targets the last (topmost) one. This prevents accidentally clicking buttons in a background dialog.
|
|
218
|
+
|
|
188
219
|
### Utilities
|
|
189
220
|
|
|
190
221
|
```typescript
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,8CA4BC;AAED,4CAOC;AAED,sDA2BC;AAED,kDAEC;AAED,oDAEC;AAED,gDAMC;AAED,sCAEC;AAED,wDAEC;AAED,oDAEC;AAED,4CAKC;AAED,gDAEC;AAtHD,uCAAyB;AACzB,2CAA6B;AAE7B,IAAI,aAAa,GAAkB,IAAI,CAAC;AACxC,IAAI,cAAc,GAAkB,IAAI,CAAC;AACzC,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAC1B,IAAI,eAAe,GAAuC,IAAI,CAAC;AAE/D,SAAS,eAAe,CAAC,IAAU;IACjC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,SAAgB,iBAAiB,CAAC,UAAkB,eAAe;IACjE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAElD,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAErD,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;YACD,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,aAAa,GAAG,MAAM,CAAC;IACvB,cAAc,GAAG,YAAY,CAAC;IAC9B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,gBAAgB;IAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,mJAAmJ,CACpJ,CAAC;IACJ,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAgB,qBAAqB,CAAC,IAAY,EAAE,YAAqB;IACvE,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAElC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAG,CAAC;IAEhC,IAAI,UAAU,EAAE,CAAC;QACf,iBAAiB,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1D,QAAQ,GAAG,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC;QACnC,IAAI,eAAe,EAAE,CAAC;YACpB,eAAe,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IACnC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhE,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,IAAI,YAAY;QAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9C,IAAI,OAAO;QAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEpC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IACnC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,mBAAmB;IACjC,OAAO,aAAa,KAAK,IAAI,CAAC;AAChC,CAAC;AAED,SAAgB,oBAAoB;IAClC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAgB,kBAAkB;IAChC,aAAa,GAAG,IAAI,CAAC;IACrB,cAAc,GAAG,IAAI,CAAC;IACtB,UAAU,GAAG,KAAK,CAAC;IACnB,iBAAiB,GAAG,CAAC,CAAC;IACtB,eAAe,GAAG,IAAI,CAAC;AACzB,CAAC;AAED,SAAgB,aAAa,CAAC,OAAgB;IAC5C,UAAU,GAAG,OAAO,CAAC;AACvB,CAAC;AAED,SAAgB,sBAAsB;IACpC,iBAAiB,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAAa;IAChD,iBAAiB,GAAG,KAAK,CAAC;AAC5B,CAAC;AAED,SAAgB,gBAAgB,CAAC,GAAW,EAAE,OAAgB;IAC5D,aAAa,GAAG,GAAG,CAAC;IACpB,IAAI,OAAO,EAAE,CAAC;QACZ,cAAc,GAAG,OAAO,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAgB,kBAAkB,CAAC,QAA4C;IAC7E,eAAe,GAAG,QAAQ,CAAC;AAC7B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Page } from '@playwright/test';
|
|
2
|
-
export { initScreenshotDir, resetScreenshotDir, setScreenshotDir, isScreenshotEnabled, getScreenshotBaseDir, setAutoPrefix, resetScreenshotCounter } from './directory';
|
|
2
|
+
export { initScreenshotDir, resetScreenshotDir, setScreenshotDir, isScreenshotEnabled, getScreenshotBaseDir, setAutoPrefix, resetScreenshotCounter, setScreenshotCounter, setOnCounterChange } from './directory';
|
|
3
3
|
export interface ScreenshotOptions {
|
|
4
4
|
fullPage?: boolean;
|
|
5
5
|
subdirectory?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/screenshot/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAK7C,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/screenshot/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAK7C,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,iBAAiB,EAAE,MAAM,EACzB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWxB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB;AAED,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,MAAM,EACzB,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;
|
|
@@ -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,2CAA8D;AAC9D,sCAA8C;AAE9C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/screenshot/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED