pw-sanitizer 0.1.0 → 0.1.3
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 +20 -17
- package/dist/cli.d.ts +24 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +17 -4
- package/dist/cli.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +9 -17
- package/dist/config/loader.js.map +1 -1
- package/dist/config/types.d.ts +11 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/processors/html-report.d.ts.map +1 -1
- package/dist/processors/html-report.js +67 -24
- package/dist/processors/html-report.js.map +1 -1
- package/dist/processors/screenshot.d.ts +14 -14
- package/dist/processors/screenshot.d.ts.map +1 -1
- package/dist/processors/screenshot.js +56 -22
- package/dist/processors/screenshot.js.map +1 -1
- package/dist/processors/trace-file.d.ts +6 -2
- package/dist/processors/trace-file.d.ts.map +1 -1
- package/dist/processors/trace-file.js +89 -8
- package/dist/processors/trace-file.js.map +1 -1
- package/dist/remove/detector.d.ts.map +1 -1
- package/dist/remove/detector.js +6 -3
- package/dist/remove/detector.js.map +1 -1
- package/dist/remove/remover.d.ts +21 -6
- package/dist/remove/remover.d.ts.map +1 -1
- package/dist/remove/remover.js +40 -13
- package/dist/remove/remover.js.map +1 -1
- package/dist/remove/timestamp-repair.js +44 -8
- package/dist/remove/timestamp-repair.js.map +1 -1
- package/dist/teardown.d.ts +1 -1
- package/dist/teardown.js +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -34,7 +34,7 @@ It also lets you delete repetitive or internal steps (e.g. health-check pings, i
|
|
|
34
34
|
## Installation
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
|
-
npm install --save-dev
|
|
37
|
+
npm install --save-dev pw-sanitizer
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
Screenshot redaction inside trace files requires the optional `sharp` dependency:
|
|
@@ -51,7 +51,7 @@ npm install --save-dev sharp
|
|
|
51
51
|
|
|
52
52
|
```ts
|
|
53
53
|
// playwright-sanitizer.config.ts
|
|
54
|
-
import type { SanitizerConfig } from '
|
|
54
|
+
import type { SanitizerConfig } from 'pw-sanitizer';
|
|
55
55
|
|
|
56
56
|
const config: SanitizerConfig = {
|
|
57
57
|
redact: {
|
|
@@ -85,7 +85,7 @@ export default config;
|
|
|
85
85
|
### 2. Run the CLI
|
|
86
86
|
|
|
87
87
|
```bash
|
|
88
|
-
npx
|
|
88
|
+
npx pw-sanitizer
|
|
89
89
|
```
|
|
90
90
|
|
|
91
91
|
Sanitized files are written to `./sanitized-report` by default. Originals are untouched.
|
|
@@ -106,8 +106,11 @@ Config is auto-discovered in this priority order:
|
|
|
106
106
|
|
|
107
107
|
### Full config reference
|
|
108
108
|
|
|
109
|
+
> [!NOTE]
|
|
110
|
+
> TypeScript configuration files (`.ts`) are supported natively by default using `jiti`. No separate runner or transpilation step is required.
|
|
111
|
+
|
|
109
112
|
```ts
|
|
110
|
-
import type { SanitizerConfig } from '
|
|
113
|
+
import type { SanitizerConfig } from 'pw-sanitizer';
|
|
111
114
|
|
|
112
115
|
const config: SanitizerConfig = {
|
|
113
116
|
redact: {
|
|
@@ -203,7 +206,7 @@ For large teams, keep patterns and rules in dedicated files so they can be versi
|
|
|
203
206
|
|
|
204
207
|
```ts
|
|
205
208
|
// secrets/patterns.ts
|
|
206
|
-
import type { RedactPattern } from '
|
|
209
|
+
import type { RedactPattern } from 'pw-sanitizer';
|
|
207
210
|
|
|
208
211
|
const patterns: RedactPattern[] = [
|
|
209
212
|
{ id: 'auth-header', key: 'authorization', severity: 'critical' },
|
|
@@ -235,7 +238,7 @@ JSON files are also supported. Note that RegExp is not available in JSON — str
|
|
|
235
238
|
## CLI reference
|
|
236
239
|
|
|
237
240
|
```
|
|
238
|
-
Usage:
|
|
241
|
+
Usage: pw-sanitizer [options]
|
|
239
242
|
|
|
240
243
|
Options:
|
|
241
244
|
-c, --config <path> Path to config file
|
|
@@ -258,22 +261,22 @@ Options:
|
|
|
258
261
|
|
|
259
262
|
```bash
|
|
260
263
|
# Auto-discover config and run with defaults
|
|
261
|
-
npx
|
|
264
|
+
npx pw-sanitizer
|
|
262
265
|
|
|
263
266
|
# Use a specific config file
|
|
264
|
-
npx
|
|
267
|
+
npx pw-sanitizer --config ./ci/sanitizer.config.ts
|
|
265
268
|
|
|
266
269
|
# Overwrite originals (ensure files are version-controlled)
|
|
267
|
-
npx
|
|
270
|
+
npx pw-sanitizer --in-place
|
|
268
271
|
|
|
269
272
|
# Preview without writing any files
|
|
270
|
-
npx
|
|
273
|
+
npx pw-sanitizer --dry-run --log-level verbose
|
|
271
274
|
|
|
272
275
|
# Point to non-default directories
|
|
273
|
-
npx
|
|
276
|
+
npx pw-sanitizer --report ./reports --traces ./artifacts/traces --output ./sanitized
|
|
274
277
|
|
|
275
278
|
# Write a machine-readable summary for CI artifact ingestion
|
|
276
|
-
npx
|
|
279
|
+
npx pw-sanitizer --summary-output ./sanitization-summary.json
|
|
277
280
|
```
|
|
278
281
|
|
|
279
282
|
---
|
|
@@ -287,7 +290,7 @@ Register the sanitizer as a Playwright `globalTeardown` and it runs automaticall
|
|
|
287
290
|
import { defineConfig } from '@playwright/test';
|
|
288
291
|
|
|
289
292
|
export default defineConfig({
|
|
290
|
-
globalTeardown: require.resolve('
|
|
293
|
+
globalTeardown: require.resolve('pw-sanitizer/teardown'),
|
|
291
294
|
// ...rest of your config
|
|
292
295
|
});
|
|
293
296
|
```
|
|
@@ -301,10 +304,10 @@ If you prefer a single config file, add a `sanitizer` key directly to your Playw
|
|
|
301
304
|
```ts
|
|
302
305
|
// playwright.config.ts
|
|
303
306
|
import { defineConfig } from '@playwright/test';
|
|
304
|
-
import type { SanitizerConfig } from '
|
|
307
|
+
import type { SanitizerConfig } from 'pw-sanitizer';
|
|
305
308
|
|
|
306
309
|
export default defineConfig({
|
|
307
|
-
globalTeardown: require.resolve('
|
|
310
|
+
globalTeardown: require.resolve('pw-sanitizer/teardown'),
|
|
308
311
|
|
|
309
312
|
sanitizer: {
|
|
310
313
|
redact: {
|
|
@@ -322,7 +325,7 @@ export default defineConfig({
|
|
|
322
325
|
## Programmatic API
|
|
323
326
|
|
|
324
327
|
```ts
|
|
325
|
-
import { sanitize, redactReport, redactTrace } from '
|
|
328
|
+
import { sanitize, redactReport, redactTrace } from 'pw-sanitizer';
|
|
326
329
|
|
|
327
330
|
// Process all reports and traces using auto-discovered config
|
|
328
331
|
const results = await sanitize();
|
|
@@ -399,7 +402,7 @@ The `minConsecutiveOccurrences` safety guard prevents accidentally removing a st
|
|
|
399
402
|
run: npx playwright test
|
|
400
403
|
|
|
401
404
|
- name: Sanitize Playwright artifacts
|
|
402
|
-
run: npx
|
|
405
|
+
run: npx pw-sanitizer --summary-output sanitization-summary.json
|
|
403
406
|
|
|
404
407
|
- name: Upload sanitized report
|
|
405
408
|
uses: actions/upload-artifact@v4
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,3 +1,26 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
import type { SanitizerConfig } from './config/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Exported for unit testing. Merges parsed CLI flag values into a {@link SanitizerConfig} object.
|
|
5
|
+
*
|
|
6
|
+
* CLI flags always take the highest priority — they overwrite any values
|
|
7
|
+
* that were loaded from a config file. Sections are created on-demand
|
|
8
|
+
* (e.g. `config.output` is initialised to `{}` if not already present).
|
|
9
|
+
*
|
|
10
|
+
* Flag → config field mapping:
|
|
11
|
+
* - `--report` → `output.reportDir`
|
|
12
|
+
* - `--no-traces` → `output.processTraces = false`
|
|
13
|
+
* - `--no-reports` → `output.processReports = false`
|
|
14
|
+
* - `--output` → `output.dir` + `output.mode = 'copy'`
|
|
15
|
+
* - `--in-place` → `output.mode = 'in-place'`
|
|
16
|
+
* - `--patterns` → `redact.patternFiles`
|
|
17
|
+
* - `--placeholder` → `redact.placeholder`
|
|
18
|
+
* - `--dry-run` → `remove.dryRun = true`
|
|
19
|
+
* - `--log-level` → `reporting.logLevel`
|
|
20
|
+
* - `--summary-output` → `reporting.summaryFile`
|
|
21
|
+
*
|
|
22
|
+
* @param config - The config object to mutate (loaded from file or empty).
|
|
23
|
+
* @param opts - Raw parsed options from Commander.js (`program.opts()`).
|
|
24
|
+
*/
|
|
25
|
+
export declare function applyCliOverrides(config: SanitizerConfig, opts: Record<string, unknown>): void;
|
|
3
26
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAuEzD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,IAAI,CAgDN"}
|
package/dist/cli.js
CHANGED
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
3
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.applyCliOverrides = applyCliOverrides;
|
|
4
8
|
const commander_1 = require("commander");
|
|
5
9
|
const loader_js_1 = require("./config/loader.js");
|
|
6
10
|
const index_js_1 = require("./index.js");
|
|
11
|
+
// resolveJsonModule: true in tsconfig.json enables this JSON import.
|
|
12
|
+
// TypeScript will type `version` as `string` from the package.json schema.
|
|
13
|
+
const package_json_1 = __importDefault(require("../package.json"));
|
|
7
14
|
const program = new commander_1.Command();
|
|
8
15
|
program
|
|
9
|
-
.name('
|
|
16
|
+
.name('pw-sanitizer')
|
|
10
17
|
.description('Post-process Playwright HTML reports and trace files to redact secrets and remove noisy steps')
|
|
11
|
-
.version(
|
|
18
|
+
.version(package_json_1.default.version)
|
|
12
19
|
.option('-c, --config <path>', 'Path to config file')
|
|
13
20
|
.option('-r, --report <path>', 'HTML report directory', './playwright-report')
|
|
14
21
|
.option('-t, --traces <path>', 'Trace directory', './test-results')
|
|
@@ -41,7 +48,7 @@ program.action(async (opts) => {
|
|
|
41
48
|
}
|
|
42
49
|
});
|
|
43
50
|
/**
|
|
44
|
-
* Merges parsed CLI flag values into a {@link SanitizerConfig} object.
|
|
51
|
+
* Exported for unit testing. Merges parsed CLI flag values into a {@link SanitizerConfig} object.
|
|
45
52
|
*
|
|
46
53
|
* CLI flags always take the highest priority — they overwrite any values
|
|
47
54
|
* that were loaded from a config file. Sections are created on-demand
|
|
@@ -109,5 +116,11 @@ function applyCliOverrides(config, opts) {
|
|
|
109
116
|
config.reporting.summaryFile = opts['summaryOutput'];
|
|
110
117
|
}
|
|
111
118
|
}
|
|
112
|
-
|
|
119
|
+
// Only parse when this file is the Node.js entry-point, not when it is imported
|
|
120
|
+
// by a test or another module. The CJS `require.main === module` idiom is the
|
|
121
|
+
// standard pattern for this in CommonJS (which is what `module: Node16` compiles
|
|
122
|
+
// to when package.json has no `"type": "module"` field).
|
|
123
|
+
if (require.main === module) {
|
|
124
|
+
program.parse();
|
|
125
|
+
}
|
|
113
126
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAkFlD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA6B9E"}
|
package/dist/config/loader.js
CHANGED
|
@@ -32,10 +32,14 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
35
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
39
|
exports.loadConfig = loadConfig;
|
|
37
40
|
const fs = __importStar(require("node:fs"));
|
|
38
41
|
const path = __importStar(require("node:path"));
|
|
42
|
+
const jiti_1 = __importDefault(require("jiti"));
|
|
39
43
|
const logger_js_1 = require("../logger.js");
|
|
40
44
|
/**
|
|
41
45
|
* Ordered list of config file names that are auto-discovered in the current
|
|
@@ -67,26 +71,13 @@ async function loadConfigFromFile(filePath) {
|
|
|
67
71
|
const content = fs.readFileSync(absolutePath, 'utf-8');
|
|
68
72
|
return JSON.parse(content);
|
|
69
73
|
}
|
|
70
|
-
// .ts or .js
|
|
74
|
+
// Use jiti to transpile and load .ts or .js config files natively
|
|
71
75
|
try {
|
|
72
|
-
const
|
|
76
|
+
const jiti = (0, jiti_1.default)(__filename);
|
|
77
|
+
const module = jiti(absolutePath);
|
|
73
78
|
return (module.default ?? module);
|
|
74
79
|
}
|
|
75
80
|
catch (err) {
|
|
76
|
-
// If .ts failed, try .js sibling
|
|
77
|
-
if (ext === '.ts') {
|
|
78
|
-
const jsSibling = absolutePath.replace(/\.ts$/, '.js');
|
|
79
|
-
if (fs.existsSync(jsSibling)) {
|
|
80
|
-
try {
|
|
81
|
-
const module = await import(jsSibling);
|
|
82
|
-
return (module.default ?? module);
|
|
83
|
-
}
|
|
84
|
-
catch {
|
|
85
|
-
return logger_js_1.logger.fatal(`Failed to load config from both ${absolutePath} and ${jsSibling}. ` +
|
|
86
|
-
`Ensure tsx or ts-node is available, or provide a .js config file.`);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
81
|
return logger_js_1.logger.fatal(`Failed to load config from ${absolutePath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
91
82
|
}
|
|
92
83
|
}
|
|
@@ -106,7 +97,8 @@ async function loadFromPlaywrightConfig(cwd) {
|
|
|
106
97
|
const fullPath = path.resolve(cwd, name);
|
|
107
98
|
if (fs.existsSync(fullPath)) {
|
|
108
99
|
try {
|
|
109
|
-
const
|
|
100
|
+
const jiti = (0, jiti_1.default)(__filename);
|
|
101
|
+
const module = jiti(fullPath);
|
|
110
102
|
const config = module.default ?? module;
|
|
111
103
|
if (config && typeof config === 'object' && 'sanitizer' in config) {
|
|
112
104
|
return config.sanitizer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
package/dist/config/types.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @example
|
|
8
8
|
* ```ts
|
|
9
9
|
* // playwright-sanitizer.config.ts
|
|
10
|
-
* import type { SanitizerConfig } from '
|
|
10
|
+
* import type { SanitizerConfig } from 'pw-sanitizer';
|
|
11
11
|
*
|
|
12
12
|
* const config: SanitizerConfig = {
|
|
13
13
|
* redact: {
|
|
@@ -365,6 +365,11 @@ export interface RemovalSet {
|
|
|
365
365
|
indices: Set<number>;
|
|
366
366
|
/** Detailed list of every match (one entry per step per rule). */
|
|
367
367
|
matches: StepMatch[];
|
|
368
|
+
/**
|
|
369
|
+
* Safety-guard warning messages emitted when a rule's
|
|
370
|
+
* `minConsecutiveOccurrences` threshold was not met.
|
|
371
|
+
*/
|
|
372
|
+
safetyGuardWarnings: string[];
|
|
368
373
|
}
|
|
369
374
|
/**
|
|
370
375
|
* Processing result for a single file (HTML report or trace `.zip`).
|
|
@@ -382,6 +387,11 @@ export interface ProcessResult {
|
|
|
382
387
|
redactionMatches: RedactionMatch[];
|
|
383
388
|
/** Detailed list of every step-removal match. */
|
|
384
389
|
removalMatches: StepMatch[];
|
|
390
|
+
/**
|
|
391
|
+
* Safety-guard warning messages collected while processing this file.
|
|
392
|
+
* Populated when a rule's `minConsecutiveOccurrences` threshold was not met.
|
|
393
|
+
*/
|
|
394
|
+
safetyGuardWarnings: string[];
|
|
385
395
|
}
|
|
386
396
|
/**
|
|
387
397
|
* Aggregated statistics produced after processing all files.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export { loadRuleFile } from './remove/rule-loader.js';
|
|
|
10
10
|
*
|
|
11
11
|
* Typical usage — run after a Playwright test suite from your own script:
|
|
12
12
|
* ```ts
|
|
13
|
-
* import { sanitize } from '
|
|
13
|
+
* import { sanitize } from 'pw-sanitizer';
|
|
14
14
|
*
|
|
15
15
|
* await sanitize({
|
|
16
16
|
* redact: { patterns: [{ id: 'token', key: 'authorization' }] },
|
|
@@ -39,7 +39,7 @@ export declare function sanitize(configOverride?: SanitizerConfig): Promise<Proc
|
|
|
39
39
|
*
|
|
40
40
|
* @example
|
|
41
41
|
* ```ts
|
|
42
|
-
* import { redactReport } from '
|
|
42
|
+
* import { redactReport } from 'pw-sanitizer';
|
|
43
43
|
*
|
|
44
44
|
* const result = await redactReport('./playwright-report/index.html', {
|
|
45
45
|
* redact: { patterns: [{ id: 'auth', key: 'authorization' }] },
|
|
@@ -61,7 +61,7 @@ export declare function redactReport(reportPath: string, config: SanitizerConfig
|
|
|
61
61
|
*
|
|
62
62
|
* @example
|
|
63
63
|
* ```ts
|
|
64
|
-
* import { redactTrace } from '
|
|
64
|
+
* import { redactTrace } from 'pw-sanitizer';
|
|
65
65
|
*
|
|
66
66
|
* const result = await redactTrace('./test-results/my-test/trace.zip', {
|
|
67
67
|
* redact: { patterns: [{ id: 'cookie', key: /^cookie$/i }] },
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAexE,YAAY,EACV,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,aAAa,EACb,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,UAAU,EACV,SAAS,EACT,UAAU,GACX,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,QAAQ,CAC5B,cAAc,CAAC,EAAE,eAAe,GAC/B,OAAO,CAAC,aAAa,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAexE,YAAY,EACV,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,aAAa,EACb,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,UAAU,EACV,SAAS,EACT,UAAU,GACX,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,QAAQ,CAC5B,cAAc,CAAC,EAAE,eAAe,GAC/B,OAAO,CAAC,aAAa,EAAE,CAAC,CA+E1B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,aAAa,CAAC,CAiBxB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,aAAa,CAAC,CAiBxB"}
|
package/dist/index.js
CHANGED
|
@@ -60,7 +60,7 @@ Object.defineProperty(exports, "loadRuleFile", { enumerable: true, get: function
|
|
|
60
60
|
*
|
|
61
61
|
* Typical usage — run after a Playwright test suite from your own script:
|
|
62
62
|
* ```ts
|
|
63
|
-
* import { sanitize } from '
|
|
63
|
+
* import { sanitize } from 'pw-sanitizer';
|
|
64
64
|
*
|
|
65
65
|
* await sanitize({
|
|
66
66
|
* redact: { patterns: [{ id: 'token', key: 'authorization' }] },
|
|
@@ -113,7 +113,8 @@ async function sanitize(configOverride) {
|
|
|
113
113
|
// Summary
|
|
114
114
|
const showSummary = config.reporting?.summary !== false;
|
|
115
115
|
if (showSummary || config.reporting?.summaryFile) {
|
|
116
|
-
const
|
|
116
|
+
const allSafetyWarnings = results.flatMap((r) => r.safetyGuardWarnings);
|
|
117
|
+
const summary = (0, reporter_js_1.generateSummary)(results, config, patterns.length, rules.length, allSafetyWarnings);
|
|
117
118
|
if (showSummary) {
|
|
118
119
|
(0, reporter_js_1.printSummary)(summary);
|
|
119
120
|
}
|
|
@@ -135,7 +136,7 @@ async function sanitize(configOverride) {
|
|
|
135
136
|
*
|
|
136
137
|
* @example
|
|
137
138
|
* ```ts
|
|
138
|
-
* import { redactReport } from '
|
|
139
|
+
* import { redactReport } from 'pw-sanitizer';
|
|
139
140
|
*
|
|
140
141
|
* const result = await redactReport('./playwright-report/index.html', {
|
|
141
142
|
* redact: { patterns: [{ id: 'auth', key: 'authorization' }] },
|
|
@@ -167,7 +168,7 @@ async function redactReport(reportPath, config) {
|
|
|
167
168
|
*
|
|
168
169
|
* @example
|
|
169
170
|
* ```ts
|
|
170
|
-
* import { redactTrace } from '
|
|
171
|
+
* import { redactTrace } from 'pw-sanitizer';
|
|
171
172
|
*
|
|
172
173
|
* const result = await redactTrace('./test-results/my-test/trace.zip', {
|
|
173
174
|
* redact: { patterns: [{ id: 'cookie', key: /^cookie$/i }] },
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA,4BAiFC;AAuBD,oCAoBC;AAuBD,kCAoBC;AAvOD,gDAAkC;AAClC,yCAA0D;AAE1D,kDAAgD;AAChD,wDAAuD;AACvD,sEAAoE;AACpE,gEAA8D;AAC9D,gEAAgE;AAChE,8DAA8D;AAC9D,+CAIuB;AACvB,2CAAsD;AAsBtD,oBAAoB;AACpB,gEAA6D;AAApD,oHAAA,eAAe,OAAA;AACxB,0DAAuD;AAA9C,8GAAA,YAAY,OAAA;AAErB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACI,KAAK,UAAU,QAAQ,CAC5B,cAAgC;IAEhC,MAAM,MAAM,GAAG,cAAc,IAAI,CAAC,MAAM,IAAA,sBAAU,GAAE,CAAC,CAAC;IAEtD,IAAA,2BAAe,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,IAAA,6BAAc,EAAC,MAAM,CAAC,CAAC;IAEvB,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;QACvC,kBAAM,CAAC,IAAI,CACT,2EAA2E,CAC5E,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM;QAC5B,CAAC,CAAC,MAAM,IAAA,0CAAoB,EAAC,MAAM,CAAC,MAAM,CAAC;QAC3C,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM;QACzB,CAAC,CAAC,MAAM,IAAA,oCAAiB,EAAC,MAAM,CAAC,MAAM,CAAC;QACxC,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,OAAO,GAAoB,EAAE,CAAC;IAEpC,uBAAuB;IACvB,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,KAAK,KAAK,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI,qBAAqB,CAAC;QACpE,MAAM,WAAW,GAAG,MAAM,IAAA,oBAAS,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAE5D,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,IAAA,4BAAiB,EAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,IAAA,kCAAiB,EACpC,IAAI,EACJ,UAAU,EACV,MAAM,EACN,QAAQ,EACR,KAAK,CACN,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,IAAI,MAAM,CAAC,MAAM,EAAE,aAAa,KAAK,KAAK,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,gBAAgB,CAAC;QAC7D,MAAM,UAAU,GAAG,MAAM,IAAA,oBAAS,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEzD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,IAAA,4BAAiB,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAgB,EACnC,IAAI,EACJ,UAAU,EACV,MAAM,EACN,QAAQ,EACR,KAAK,CACN,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,UAAU;IACV,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,EAAE,OAAO,KAAK,KAAK,CAAC;IACxD,IAAI,WAAW,IAAI,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;QACjD,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,IAAA,6BAAe,EAC7B,OAAO,EACP,MAAM,EACN,QAAQ,CAAC,MAAM,EACf,KAAK,CAAC,MAAM,EACZ,iBAAiB,CAClB,CAAC;QAEF,IAAI,WAAW,EAAE,CAAC;YAChB,IAAA,0BAAY,EAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;YAClC,IAAA,8BAAgB,EAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACI,KAAK,UAAU,YAAY,CAChC,UAAkB,EAClB,MAAuB;IAEvB,IAAA,2BAAe,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAElC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM;QAC5B,CAAC,CAAC,MAAM,IAAA,0CAAoB,EAAC,MAAM,CAAC,MAAM,CAAC;QAC3C,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM;QACzB,CAAC,CAAC,MAAM,IAAA,oCAAiB,EAAC,MAAM,CAAC,MAAM,CAAC;QACxC,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,UAAU,GAAG,IAAA,4BAAiB,EAClC,UAAU,EACV,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EACxB,MAAM,CACP,CAAC;IAEF,OAAO,IAAA,kCAAiB,EAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACI,KAAK,UAAU,WAAW,CAC/B,SAAiB,EACjB,MAAuB;IAEvB,IAAA,2BAAe,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAElC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM;QAC5B,CAAC,CAAC,MAAM,IAAA,0CAAoB,EAAC,MAAM,CAAC,MAAM,CAAC;QAC3C,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM;QACzB,CAAC,CAAC,MAAM,IAAA,oCAAiB,EAAC,MAAM,CAAC,MAAM,CAAC;QACxC,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,UAAU,GAAG,IAAA,4BAAiB,EAClC,SAAS,EACT,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EACvB,MAAM,CACP,CAAC;IAEF,OAAO,IAAA,gCAAgB,EAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-report.d.ts","sourceRoot":"","sources":["../../src/processors/html-report.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,UAAU,EACV,aAAa,EAEd,MAAM,oBAAoB,CAAC;AAoB5B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,EAAE,EACzB,KAAK,EAAE,UAAU,EAAE,GAClB,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"html-report.d.ts","sourceRoot":"","sources":["../../src/processors/html-report.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,UAAU,EACV,aAAa,EAEd,MAAM,oBAAoB,CAAC;AAoB5B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,EAAE,EACzB,KAAK,EAAE,UAAU,EAAE,GAClB,OAAO,CAAC,aAAa,CAAC,CAwHxB"}
|
|
@@ -83,6 +83,7 @@ async function processHtmlReport(inputPath, outputPath, config, patterns, rules)
|
|
|
83
83
|
timestampRepairs: 0,
|
|
84
84
|
redactionMatches: [],
|
|
85
85
|
removalMatches: [],
|
|
86
|
+
safetyGuardWarnings: [],
|
|
86
87
|
};
|
|
87
88
|
const html = fs.readFileSync(inputPath, 'utf-8');
|
|
88
89
|
const match = REPORT_DATA_REGEX.exec(html);
|
|
@@ -117,6 +118,8 @@ async function processHtmlReport(inputPath, outputPath, config, patterns, rules)
|
|
|
117
118
|
const events = extractEventsFromReport(reportData);
|
|
118
119
|
if (events.length > 0) {
|
|
119
120
|
const removalSet = (0, detector_js_1.findStepsToRemove)(events, rules);
|
|
121
|
+
// Always propagate safety warnings regardless of whether removal runs
|
|
122
|
+
result.safetyGuardWarnings.push(...removalSet.safetyGuardWarnings);
|
|
120
123
|
if (removalSet.indices.size > 0) {
|
|
121
124
|
if (config.remove.dryRun) {
|
|
122
125
|
logger_js_1.logger.info(`[DRY RUN] Would remove ${removalSet.indices.size} steps from ${inputPath}`);
|
|
@@ -128,13 +131,29 @@ async function processHtmlReport(inputPath, outputPath, config, patterns, rules)
|
|
|
128
131
|
result.stepsRemoved = removalSet.indices.size;
|
|
129
132
|
}
|
|
130
133
|
else {
|
|
131
|
-
const
|
|
132
|
-
|
|
134
|
+
const orphanStrategy = config.remove.orphanStrategy ?? 'remove-children';
|
|
135
|
+
// Remove steps — orphanStrategy controls whether matched parents or only
|
|
136
|
+
// their children are dropped from the flat events array.
|
|
137
|
+
const cleaned = (0, remover_js_1.removeSteps)(events, removalSet, orphanStrategy);
|
|
133
138
|
const strategy = config.remove.timestampStrategy ?? 'absorb-into-prev';
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
139
|
+
// Determine which events were actually removed (set-difference by identity).
|
|
140
|
+
// For remove-children: matched events + their descendants.
|
|
141
|
+
// For keep-shell: only the children (matched events are kept).
|
|
142
|
+
const cleanedSet = new Set(cleaned);
|
|
143
|
+
const actuallyRemovedEvents = events.filter((e) => !cleanedSet.has(e));
|
|
144
|
+
const repaired = (0, timestamp_repair_js_1.repairTimestamps)(cleaned, actuallyRemovedEvents, strategy);
|
|
145
|
+
// Build callId → repaired event for tree timestamp updates
|
|
146
|
+
const repairedByCallId = new Map();
|
|
147
|
+
for (const e of repaired) {
|
|
148
|
+
if (e.callId)
|
|
149
|
+
repairedByCallId.set(e.callId, e);
|
|
150
|
+
}
|
|
151
|
+
// For the tree traversal: in keep-shell mode the matched parent objects
|
|
152
|
+
// stay in the tree — only their children are filtered out.
|
|
153
|
+
const treeEventsToRemove = new Set(actuallyRemovedEvents);
|
|
154
|
+
replaceEventsInReport(reportData, treeEventsToRemove, repairedByCallId);
|
|
155
|
+
result.stepsRemoved = actuallyRemovedEvents.length;
|
|
156
|
+
result.timestampRepairs = actuallyRemovedEvents.length;
|
|
138
157
|
result.removalMatches = removalSet.matches;
|
|
139
158
|
modified = true;
|
|
140
159
|
}
|
|
@@ -194,27 +213,51 @@ function extractEventsFromReport(data) {
|
|
|
194
213
|
return events;
|
|
195
214
|
}
|
|
196
215
|
/**
|
|
197
|
-
*
|
|
216
|
+
* Rebuilds the nested step/action arrays in the HTML report tree after removal.
|
|
198
217
|
*
|
|
199
|
-
*
|
|
200
|
-
*
|
|
201
|
-
*
|
|
218
|
+
* Because {@link extractEventsFromReport} returns object **references** that
|
|
219
|
+
* live inside the report tree, `eventsToRemove` can be used as an identity
|
|
220
|
+
* set to filter matching objects directly from the tree's `steps` / `actions`
|
|
221
|
+
* arrays without a separate re-serialisation step.
|
|
202
222
|
*
|
|
203
|
-
*
|
|
204
|
-
*
|
|
205
|
-
* this is tracked as a future enhancement.
|
|
223
|
+
* Additionally, repaired timestamps (computed from the flat event array) are
|
|
224
|
+
* applied back to tree nodes that carry a `callId` field.
|
|
206
225
|
*
|
|
207
|
-
* @param
|
|
208
|
-
* @param
|
|
226
|
+
* @param data - The parsed `window.__pw_report_data__` object.
|
|
227
|
+
* @param eventsToRemove - Set of original event objects to exclude from step arrays.
|
|
228
|
+
* @param repairedByCallId - Map of `callId` → repaired event used to update timestamps.
|
|
209
229
|
*/
|
|
210
|
-
function replaceEventsInReport(
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
230
|
+
function replaceEventsInReport(data, eventsToRemove, repairedByCallId) {
|
|
231
|
+
function traverse(node) {
|
|
232
|
+
if (!node || typeof node !== 'object' || Array.isArray(node))
|
|
233
|
+
return;
|
|
234
|
+
const obj = node;
|
|
235
|
+
// Apply repaired timestamps to this node when it has a known callId
|
|
236
|
+
if (typeof obj['callId'] === 'string') {
|
|
237
|
+
const repaired = repairedByCallId.get(obj['callId']);
|
|
238
|
+
if (repaired) {
|
|
239
|
+
obj['startTime'] = repaired.startTime;
|
|
240
|
+
obj['endTime'] = repaired.endTime;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Filter removed events from step/action arrays and recurse into survivors
|
|
244
|
+
for (const key of ['steps', 'actions']) {
|
|
245
|
+
if (Array.isArray(obj[key])) {
|
|
246
|
+
obj[key] = obj[key].filter((item) => !(item !== null && typeof item === 'object' && eventsToRemove.has(item)));
|
|
247
|
+
for (const item of obj[key]) {
|
|
248
|
+
traverse(item);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
// Recurse into structural containers (not filtered)
|
|
253
|
+
for (const key of ['suites', 'tests', 'results', 'attachments']) {
|
|
254
|
+
if (Array.isArray(obj[key])) {
|
|
255
|
+
for (const item of obj[key]) {
|
|
256
|
+
traverse(item);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
traverse(data);
|
|
219
262
|
}
|
|
220
263
|
//# sourceMappingURL=html-report.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-report.js","sourceRoot":"","sources":["../../src/processors/html-report.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDA,
|
|
1
|
+
{"version":3,"file":"html-report.js","sourceRoot":"","sources":["../../src/processors/html-report.ts"],"names":[],"mappings":"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"}
|