@healflow/playwright 0.1.0

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.
Files changed (49) hide show
  1. package/dist/api-client.d.ts +9 -0
  2. package/dist/api-client.d.ts.map +1 -0
  3. package/dist/api-client.js +74 -0
  4. package/dist/api-client.js.map +1 -0
  5. package/dist/artifacts.d.ts +10 -0
  6. package/dist/artifacts.d.ts.map +1 -0
  7. package/dist/artifacts.js +37 -0
  8. package/dist/artifacts.js.map +1 -0
  9. package/dist/auto.d.ts +9 -0
  10. package/dist/auto.d.ts.map +1 -0
  11. package/dist/auto.js +51 -0
  12. package/dist/auto.js.map +1 -0
  13. package/dist/client-info.d.ts +7 -0
  14. package/dist/client-info.d.ts.map +1 -0
  15. package/dist/client-info.js +30 -0
  16. package/dist/client-info.js.map +1 -0
  17. package/dist/heal-store.d.ts +9 -0
  18. package/dist/heal-store.d.ts.map +1 -0
  19. package/dist/heal-store.js +105 -0
  20. package/dist/heal-store.js.map +1 -0
  21. package/dist/index.d.ts +27 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +706 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/list-reporter.d.ts +31 -0
  26. package/dist/list-reporter.d.ts.map +1 -0
  27. package/dist/list-reporter.js +23 -0
  28. package/dist/list-reporter.js.map +1 -0
  29. package/dist/register.d.ts +4 -0
  30. package/dist/register.d.ts.map +1 -0
  31. package/dist/register.js +9 -0
  32. package/dist/register.js.map +1 -0
  33. package/dist/report-html.d.ts +7 -0
  34. package/dist/report-html.d.ts.map +1 -0
  35. package/dist/report-html.js +862 -0
  36. package/dist/report-html.js.map +1 -0
  37. package/dist/reporter.d.ts +34 -0
  38. package/dist/reporter.d.ts.map +1 -0
  39. package/dist/reporter.js +160 -0
  40. package/dist/reporter.js.map +1 -0
  41. package/dist/setup-global.d.ts +2 -0
  42. package/dist/setup-global.d.ts.map +1 -0
  43. package/dist/setup-global.js +10 -0
  44. package/dist/setup-global.js.map +1 -0
  45. package/dist/terminal.d.ts +16 -0
  46. package/dist/terminal.d.ts.map +1 -0
  47. package/dist/terminal.js +158 -0
  48. package/dist/terminal.js.map +1 -0
  49. package/package.json +53 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-html.js","sourceRoot":"","sources":["../src/report-html.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { FullConfig, FullResult, Reporter, Suite, TestCase, TestResult } from '@playwright/test/reporter';
2
+ export interface HealFlowReporterOptions {
3
+ apiUrl?: string;
4
+ organizationId?: string;
5
+ repositoryId?: string;
6
+ autoHeal?: boolean;
7
+ reportOnly?: boolean;
8
+ printSteps?: boolean;
9
+ }
10
+ /** Custom reporter — list output + HealFlow terminal UX + local artifacts */
11
+ declare class HealFlowReporter implements Reporter {
12
+ private options;
13
+ private listReporter;
14
+ private passed;
15
+ private failed;
16
+ private failures;
17
+ constructor(options?: HealFlowReporterOptions);
18
+ version(): 'v2';
19
+ onConfigure(config: FullConfig): void;
20
+ onBegin(configOrSuite: FullConfig | Suite, maybeSuite?: Suite): void;
21
+ onTestBegin(test: TestCase, result: TestResult): void;
22
+ onStdOut(chunk: string | Buffer, test?: TestCase, result?: TestResult): void;
23
+ onStdErr(chunk: string | Buffer, test?: TestCase, result?: TestResult): void;
24
+ onStepBegin(test: TestCase, result: TestResult, step: TestResult['steps'][number]): void;
25
+ onStepEnd(test: TestCase, result: TestResult, step: TestResult['steps'][number]): void;
26
+ onTestEnd(test: TestCase, result: TestResult): void;
27
+ onError(error: NonNullable<TestResult['error']>): void;
28
+ onEnd(result: FullResult): Promise<void>;
29
+ private syncToCloud;
30
+ printsToStdio(): boolean;
31
+ }
32
+ export default HealFlowReporter;
33
+ export declare function healflowReporter(options?: HealFlowReporterOptions): [string, HealFlowReporterOptions];
34
+ //# sourceMappingURL=reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,UAAU,EACX,MAAM,2BAA2B,CAAC;AAYnC,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AASD,6EAA6E;AAC7E,cAAM,gBAAiB,YAAW,QAAQ;IACxC,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAQR;gBAEI,OAAO,GAAE,uBAA4B;IAKjD,OAAO,IAAI,IAAI;IAIf,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAIrC,OAAO,CAAC,aAAa,EAAE,UAAU,GAAG,KAAK,EAAE,UAAU,CAAC,EAAE,KAAK,GAAG,IAAI;IASpE,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAIrD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI;IAI5E,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI;IAI5E,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI;IAIxF,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI;IAItF,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IA2BnD,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;IAIhD,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YA6ChC,WAAW;IA+CzB,aAAa,IAAI,OAAO;CAGzB;AAED,eAAe,gBAAgB,CAAC;AAEhC,wBAAgB,gBAAgB,CAC9B,OAAO,CAAC,EAAE,uBAAuB,GAChC,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAEnC"}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.healflowReporter = healflowReporter;
4
+ const config_1 = require("@healflow/shared/config");
5
+ const artifacts_js_1 = require("./artifacts.js");
6
+ const client_info_js_1 = require("./client-info.js");
7
+ const heal_store_js_1 = require("./heal-store.js");
8
+ const list_reporter_js_1 = require("./list-reporter.js");
9
+ const terminal_js_1 = require("./terminal.js");
10
+ const FAILURE_STATUSES = new Set(['failed', 'timedOut', 'interrupted']);
11
+ function isFinalAttempt(test, result) {
12
+ if (result.status === 'passed' || result.status === 'skipped')
13
+ return true;
14
+ return result.retry >= test.retries;
15
+ }
16
+ /** Custom reporter — list output + HealFlow terminal UX + local artifacts */
17
+ class HealFlowReporter {
18
+ options;
19
+ listReporter;
20
+ passed = 0;
21
+ failed = 0;
22
+ failures = [];
23
+ constructor(options = {}) {
24
+ this.options = options;
25
+ this.listReporter = (0, list_reporter_js_1.createListReporter)({ printSteps: options.printSteps });
26
+ }
27
+ version() {
28
+ return 'v2';
29
+ }
30
+ onConfigure(config) {
31
+ this.listReporter.onConfigure(config);
32
+ }
33
+ onBegin(configOrSuite, maybeSuite) {
34
+ const suite = maybeSuite ?? configOrSuite;
35
+ (0, heal_store_js_1.startHealRun)();
36
+ this.passed = 0;
37
+ this.failed = 0;
38
+ this.failures = [];
39
+ this.listReporter.onBegin(suite);
40
+ }
41
+ onTestBegin(test, result) {
42
+ this.listReporter.onTestBegin?.(test, result);
43
+ }
44
+ onStdOut(chunk, test, result) {
45
+ this.listReporter.onStdOut?.(chunk, test, result);
46
+ }
47
+ onStdErr(chunk, test, result) {
48
+ this.listReporter.onStdErr?.(chunk, test, result);
49
+ }
50
+ onStepBegin(test, result, step) {
51
+ this.listReporter.onStepBegin?.(test, result, step);
52
+ }
53
+ onStepEnd(test, result, step) {
54
+ this.listReporter.onStepEnd?.(test, result, step);
55
+ }
56
+ onTestEnd(test, result) {
57
+ this.listReporter.onTestEnd?.(test, result);
58
+ if (!isFinalAttempt(test, result))
59
+ return;
60
+ if (result.status === 'passed') {
61
+ this.passed += 1;
62
+ return;
63
+ }
64
+ if (!FAILURE_STATUSES.has(result.status))
65
+ return;
66
+ this.failed += 1;
67
+ this.failures.push({
68
+ testFile: test.location.file,
69
+ testTitle: test.title,
70
+ errorMessage: result.error?.message ?? 'Unknown error',
71
+ errorStack: result.error?.stack,
72
+ durationMs: result.duration,
73
+ retry: result.retry,
74
+ projectName: test.parent.project()?.name ?? 'default',
75
+ });
76
+ const config = (0, config_1.loadHealFlowConfig)();
77
+ (0, terminal_js_1.logFailureDetail)(result.error?.message, config);
78
+ }
79
+ onError(error) {
80
+ this.listReporter.onError?.(error);
81
+ }
82
+ async onEnd(result) {
83
+ const config = (0, config_1.loadHealFlowConfig)();
84
+ const heals = (0, heal_store_js_1.getRuntimeHeals)();
85
+ const fixes = (0, heal_store_js_1.getFixProposals)();
86
+ const healCount = heals.length;
87
+ const fixCount = fixes.length;
88
+ const artifacts = (0, artifacts_js_1.writeHealFlowArtifacts)({
89
+ config,
90
+ status: result.status,
91
+ failureCount: this.failures.length,
92
+ passedCount: this.passed,
93
+ durationMs: result.duration,
94
+ });
95
+ (0, list_reporter_js_1.applyCustomRunSummary)(this.listReporter, (0, terminal_js_1.formatRunSummary)({
96
+ passed: this.passed,
97
+ failed: this.failed,
98
+ healed: healCount,
99
+ durationMs: result.duration,
100
+ }));
101
+ await this.listReporter.onEnd?.(result);
102
+ if (config.output !== 'quiet') {
103
+ console.log((0, terminal_js_1.formatReportFooter)(healCount, fixCount));
104
+ }
105
+ const backend = config.backend;
106
+ const apiUrl = this.options.apiUrl ?? backend?.url ?? process.env.HEALFLOW_API_URL;
107
+ const organizationId = this.options.organizationId ?? backend?.organizationId ?? process.env.HEALFLOW_ORG_ID;
108
+ const repositoryId = this.options.repositoryId ?? backend?.repositoryId ?? process.env.HEALFLOW_REPO_ID;
109
+ if (!apiUrl || !organizationId || !repositoryId) {
110
+ return;
111
+ }
112
+ await this.syncToCloud(apiUrl, organizationId, repositoryId, artifacts, backend?.token);
113
+ }
114
+ async syncToCloud(apiUrl, organizationId, repositoryId, artifacts, token) {
115
+ const base = apiUrl.replace(/\/$/, '');
116
+ const headers = { 'Content-Type': 'application/json' };
117
+ if (token)
118
+ headers.Authorization = `Bearer ${token}`;
119
+ try {
120
+ const client = (0, client_info_js_1.getHealFlowClientInfo)();
121
+ if (this.failures.length > 0) {
122
+ await fetch(`${base}/api/v1/ingestion/failures/batch`, {
123
+ method: 'POST',
124
+ headers,
125
+ body: JSON.stringify({
126
+ organizationId,
127
+ repositoryId,
128
+ client,
129
+ failures: this.failures,
130
+ summary: { failureCount: this.failures.length },
131
+ }),
132
+ });
133
+ }
134
+ await fetch(`${base}/api/v1/ingestion/run-artifacts`, {
135
+ method: 'POST',
136
+ headers,
137
+ body: JSON.stringify({
138
+ organizationId,
139
+ repositoryId,
140
+ client,
141
+ run: artifacts,
142
+ }),
143
+ });
144
+ if ((0, config_1.loadHealFlowConfig)().output !== 'quiet') {
145
+ console.log(`[HealFlow] Synced run to ${base}`);
146
+ }
147
+ }
148
+ catch {
149
+ console.warn('[HealFlow] Failed to sync to cloud (local .healflow/ artifacts saved)');
150
+ }
151
+ }
152
+ printsToStdio() {
153
+ return true;
154
+ }
155
+ }
156
+ exports.default = HealFlowReporter;
157
+ function healflowReporter(options) {
158
+ return ['@healflow/playwright/reporter', options ?? {}];
159
+ }
160
+ //# sourceMappingURL=reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export default function globalSetup(): Promise<void>;
2
+ //# sourceMappingURL=setup-global.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-global.d.ts","sourceRoot":"","sources":["../src/setup-global.ts"],"names":[],"mappings":"AAGA,wBAA8B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAGzD"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = globalSetup;
4
+ const heal_store_js_1 = require("./heal-store.js");
5
+ const register_js_1 = require("./register.js");
6
+ async function globalSetup() {
7
+ (0, register_js_1.registerHealFlow)();
8
+ (0, heal_store_js_1.startHealRun)();
9
+ }
10
+ //# sourceMappingURL=setup-global.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-global.js","sourceRoot":"","sources":["../src/setup-global.ts"],"names":[],"mappings":";;AAGA,8BAGC;AAND,mDAA+C;AAC/C,+CAAiD;AAElC,KAAK,UAAU,WAAW;IACvC,IAAA,8BAAgB,GAAE,CAAC;IACnB,IAAA,4BAAY,GAAE,CAAC;AACjB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { HealFlowConfig, RuntimeHealRecord } from '@healflow/shared';
2
+ export declare function formatHealDescription(record: RuntimeHealRecord): string;
3
+ export declare function formatHealLine(record: RuntimeHealRecord): string;
4
+ export declare function formatFailureDetail(errorMessage: string | undefined): string | null;
5
+ export declare function formatRunSummary(options: {
6
+ passed: number;
7
+ failed: number;
8
+ healed: number;
9
+ durationMs: number;
10
+ }): string;
11
+ export declare function formatReportFooter(healCount: number, fixCount: number): string;
12
+ /** @deprecated Use formatHealLine — kept for callers that expect a multi-line banner. */
13
+ export declare function formatHealBanner(record: RuntimeHealRecord, config: HealFlowConfig): string;
14
+ export declare function logHeal(record: RuntimeHealRecord, config: HealFlowConfig): void;
15
+ export declare function logFailureDetail(errorMessage: string | undefined, config: HealFlowConfig): void;
16
+ //# sourceMappingURL=terminal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AA4C1E,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAoCvE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAKhE;AAWD,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CA0BnF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,MAAM,CAWT;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW9E;AAED,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CAG1F;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAG/E;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAM/F"}
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatHealDescription = formatHealDescription;
4
+ exports.formatHealLine = formatHealLine;
5
+ exports.formatFailureDetail = formatFailureDetail;
6
+ exports.formatRunSummary = formatRunSummary;
7
+ exports.formatReportFooter = formatReportFooter;
8
+ exports.formatHealBanner = formatHealBanner;
9
+ exports.logHeal = logHeal;
10
+ exports.logFailureDetail = logFailureDetail;
11
+ const shared_1 = require("@healflow/shared");
12
+ const ANSI = {
13
+ reset: '\x1b[0m',
14
+ green: '\x1b[32m',
15
+ dim: '\x1b[2m',
16
+ red: '\x1b[31m',
17
+ };
18
+ const BOX_WIDTH = 44;
19
+ function useColor() {
20
+ return (process.stdout.isTTY === true && process.env.NO_COLOR !== '1' && process.env.FORCE_COLOR !== '0');
21
+ }
22
+ function green(text) {
23
+ return useColor() ? `${ANSI.green}${text}${ANSI.reset}` : text;
24
+ }
25
+ function dim(text) {
26
+ return useColor() ? `${ANSI.dim}${text}${ANSI.reset}` : text;
27
+ }
28
+ function categoryLabel(category) {
29
+ switch (category) {
30
+ case shared_1.FailureCategory.SHADOW_DOM:
31
+ return 'SHADOW_DOM';
32
+ case shared_1.FailureCategory.SESSION:
33
+ return 'AUTH';
34
+ default:
35
+ return category;
36
+ }
37
+ }
38
+ function simplifySelectorValue(value) {
39
+ const testIdMatch = value.match(/data-testid\*?="([^"]+)"/);
40
+ if (testIdMatch?.[1])
41
+ return testIdMatch[1];
42
+ if (!value.includes('[') && !value.includes('(') && !value.includes(' '))
43
+ return value;
44
+ return value;
45
+ }
46
+ function formatHealDescription(record) {
47
+ switch (record.category) {
48
+ case shared_1.FailureCategory.SELECTOR:
49
+ if (record.oldValue && record.newValue) {
50
+ return `Selector rename — ${record.oldValue} → ${simplifySelectorValue(record.newValue)}`;
51
+ }
52
+ return 'Selector rename — locator updated';
53
+ case shared_1.FailureCategory.OVERLAY:
54
+ return 'Blocking overlay — dismissed banner, retried click';
55
+ case shared_1.FailureCategory.TIMING:
56
+ return 'Wait timeout — element appeared after retry';
57
+ case shared_1.FailureCategory.IFRAME:
58
+ return record.newValue
59
+ ? `Iframe context — switched to ${record.newValue}`
60
+ : 'Iframe context — frame ready, retried action';
61
+ case shared_1.FailureCategory.SHADOW_DOM:
62
+ return record.newValue
63
+ ? `Shadow DOM — pierced ${record.newValue}`
64
+ : 'Shadow DOM — pierced closed root, retried';
65
+ case shared_1.FailureCategory.AUTH:
66
+ case shared_1.FailureCategory.SESSION:
67
+ return record.newValue
68
+ ? `Auth session — restored from ${record.newValue}`
69
+ : 'Auth session — redirect handled, retried';
70
+ case shared_1.FailureCategory.NETWORK:
71
+ return 'Network retry — waited for idle, retried';
72
+ default:
73
+ return record.rootCause;
74
+ }
75
+ }
76
+ function formatHealLine(record) {
77
+ const category = categoryLabel(record.category);
78
+ const description = formatHealDescription(record);
79
+ const confidence = record.confidence.toFixed(2);
80
+ return ` [HealFlow] ${category} • ${description} (${confidence})`;
81
+ }
82
+ function formatBox(title, contentLines, indent = 2) {
83
+ const pad = ' '.repeat(indent);
84
+ const topLabel = `─ ${title} `;
85
+ const top = `${pad}┌${topLabel}${'─'.repeat(Math.max(0, BOX_WIDTH - topLabel.length))}`;
86
+ const body = contentLines.map((line) => `${pad}│ ${line}`);
87
+ const bottom = `${pad}└${'─'.repeat(BOX_WIDTH)}`;
88
+ return [top, ...body, bottom].join('\n');
89
+ }
90
+ function formatFailureDetail(errorMessage) {
91
+ if (!errorMessage)
92
+ return null;
93
+ const lines = [];
94
+ const firstLine = errorMessage.split('\n')[0]?.trim();
95
+ if (firstLine) {
96
+ lines.push(`Error: ${firstLine.replace(/^Error:\s*/, '')}`);
97
+ }
98
+ const locatorMatch = errorMessage.match(/Locator:\s*(.+)/);
99
+ if (locatorMatch?.[1]) {
100
+ lines.push(`Locator: ${locatorMatch[1].trim()}`);
101
+ }
102
+ const expectedMatch = errorMessage.match(/Expected:\s*(.+)/);
103
+ const receivedMatch = errorMessage.match(/Received:\s*(.+)/);
104
+ if (expectedMatch?.[1] && receivedMatch?.[1]) {
105
+ lines.push(`Expected: ${expectedMatch[1].trim()} Received: ${receivedMatch[1].trim()}`);
106
+ }
107
+ else if (expectedMatch?.[1]) {
108
+ lines.push(`Expected: ${expectedMatch[1].trim()}`);
109
+ }
110
+ else if (receivedMatch?.[1]) {
111
+ lines.push(`Received: ${receivedMatch[1].trim()}`);
112
+ }
113
+ if (lines.length === 0)
114
+ return null;
115
+ return formatBox('FAILURE DETAIL', lines);
116
+ }
117
+ function formatRunSummary(options) {
118
+ const parts = [`${options.passed} passed`];
119
+ if (options.failed > 0) {
120
+ parts.push(`${options.failed} failed`);
121
+ }
122
+ else if (options.healed > 0) {
123
+ parts.push(`⚡ ${options.healed} healed`);
124
+ }
125
+ parts.push(`${(options.durationMs / 1000).toFixed(1)}s`);
126
+ return ` ${parts.join(' ')}`;
127
+ }
128
+ function formatReportFooter(healCount, fixCount) {
129
+ const base = `[HealFlow] Local report: .healflow/report.html — ${healCount} heal(s)`;
130
+ if (healCount === 0) {
131
+ return `${base} • all selectors up to date`;
132
+ }
133
+ let line = `${base} recorded`;
134
+ if (fixCount > 0) {
135
+ line += ' fix proposals saved to .healflow/fixes/';
136
+ }
137
+ return line;
138
+ }
139
+ /** @deprecated Use formatHealLine — kept for callers that expect a multi-line banner. */
140
+ function formatHealBanner(record, config) {
141
+ if (config.output === 'quiet')
142
+ return '';
143
+ return formatHealLine(record);
144
+ }
145
+ function logHeal(record, config) {
146
+ if (config.output === 'quiet')
147
+ return;
148
+ console.log(green(formatHealLine(record)));
149
+ }
150
+ function logFailureDetail(errorMessage, config) {
151
+ if (config.output === 'quiet')
152
+ return;
153
+ const box = formatFailureDetail(errorMessage);
154
+ if (box) {
155
+ console.log(dim(box));
156
+ }
157
+ }
158
+ //# sourceMappingURL=terminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@healflow/playwright",
3
+ "version": "0.1.0",
4
+ "description": "Runtime auto-healing Playwright plugin for HealFlow",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js",
11
+ "require": "./dist/index.js"
12
+ },
13
+ "./reporter": {
14
+ "types": "./dist/reporter.d.ts",
15
+ "import": "./dist/reporter.js",
16
+ "require": "./dist/reporter.js",
17
+ "default": "./dist/reporter.js"
18
+ },
19
+ "./auto": {
20
+ "types": "./dist/auto.d.ts",
21
+ "import": "./dist/auto.js",
22
+ "require": "./dist/auto.js",
23
+ "default": "./dist/auto.js"
24
+ },
25
+ "./setup-global": {
26
+ "types": "./dist/setup-global.d.ts",
27
+ "import": "./dist/setup-global.js",
28
+ "require": "./dist/setup-global.js",
29
+ "default": "./dist/setup-global.js"
30
+ }
31
+ },
32
+ "peerDependencies": {
33
+ "@playwright/test": ">=1.40.0"
34
+ },
35
+ "dependencies": {
36
+ "@healflow/classification": "^0.1.0",
37
+ "@healflow/shared": "^0.1.0"
38
+ },
39
+ "devDependencies": {
40
+ "@playwright/test": "1.58.2",
41
+ "typescript": "^5.7.2"
42
+ },
43
+ "files": [
44
+ "dist"
45
+ ],
46
+ "publishConfig": {
47
+ "access": "public"
48
+ },
49
+ "scripts": {
50
+ "build": "tsc -p tsconfig.json",
51
+ "typecheck": "tsc -p tsconfig.json --noEmit"
52
+ }
53
+ }