playwright-e2e-mcp 0.4.1 → 0.5.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 (59) hide show
  1. package/README.md +215 -43
  2. package/dist/cli/init.js +3 -2
  3. package/dist/cli/init.js.map +1 -1
  4. package/dist/http.d.ts +6 -1
  5. package/dist/http.js +13 -3
  6. package/dist/http.js.map +1 -1
  7. package/dist/oauth.d.ts +34 -0
  8. package/dist/oauth.js +346 -0
  9. package/dist/oauth.js.map +1 -0
  10. package/dist/server.d.ts +2 -2
  11. package/dist/server.js +31 -4
  12. package/dist/server.js.map +1 -1
  13. package/dist/tools/analyze-history.d.ts +12 -1
  14. package/dist/tools/analyze-history.js +89 -5
  15. package/dist/tools/analyze-history.js.map +1 -1
  16. package/dist/tools/audit-accessibility.d.ts +85 -0
  17. package/dist/tools/audit-accessibility.js +4 -1
  18. package/dist/tools/audit-accessibility.js.map +1 -1
  19. package/dist/tools/audit-performance.d.ts +333 -0
  20. package/dist/tools/audit-performance.js +377 -0
  21. package/dist/tools/audit-performance.js.map +1 -0
  22. package/dist/tools/compare-visual-state.d.ts +84 -0
  23. package/dist/tools/generate-e2e-test.d.ts +90 -0
  24. package/dist/tools/generate-e2e-test.js +223 -34
  25. package/dist/tools/generate-e2e-test.js.map +1 -1
  26. package/dist/tools/get-failure.js +2 -1
  27. package/dist/tools/get-failure.js.map +1 -1
  28. package/dist/tools/inspect-page.d.ts +94 -0
  29. package/dist/tools/inspect-page.js +42 -5
  30. package/dist/tools/inspect-page.js.map +1 -1
  31. package/dist/tools/load-report.d.ts +48 -0
  32. package/dist/tools/load-report.js +167 -0
  33. package/dist/tools/load-report.js.map +1 -0
  34. package/dist/tools/probe-script.d.ts +7 -0
  35. package/dist/tools/probe-script.js +256 -7
  36. package/dist/tools/probe-script.js.map +1 -1
  37. package/dist/tools/shared.d.ts +137 -2
  38. package/dist/tools/shared.js +155 -8
  39. package/dist/tools/shared.js.map +1 -1
  40. package/dist/tools/suggest-fix.d.ts +35 -1
  41. package/dist/tools/suggest-fix.js +197 -17
  42. package/dist/tools/suggest-fix.js.map +1 -1
  43. package/dist/tools/validate-selector.d.ts +84 -0
  44. package/dist/tools/validate-selector.js +7 -1
  45. package/dist/tools/validate-selector.js.map +1 -1
  46. package/dist/types/index.d.ts +28 -0
  47. package/dist/utils/project-detector.d.ts +7 -0
  48. package/dist/utils/project-detector.js +11 -0
  49. package/dist/utils/project-detector.js.map +1 -1
  50. package/dist/utils/report-parser.d.ts +28 -3
  51. package/dist/utils/report-parser.js +77 -11
  52. package/dist/utils/report-parser.js.map +1 -1
  53. package/dist/utils/run-history.d.ts +66 -3
  54. package/dist/utils/run-history.js +149 -3
  55. package/dist/utils/run-history.js.map +1 -1
  56. package/package.json +5 -3
  57. package/skill/playwright-e2e-mcp/SKILL.md +71 -15
  58. package/skill/playwright-e2e-mcp/references/setup.md +1 -1
  59. package/skill/playwright-e2e-mcp/references/tools.md +67 -6
@@ -1 +1 @@
1
- {"version":3,"file":"project-detector.js","sourceRoot":"","sources":["../../src/utils/project-detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-detector.js","sourceRoot":"","sources":["../../src/utils/project-detector.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,18 @@
6
6
  * syntax error, full disk…) `diagnoseOutput` turns raw stdout/stderr
7
7
  * into an ErrorKind + actionable hint.
8
8
  */
9
- import type { DiscoveredTest, ErrorKind, FailureKind, ReportStats, TestFailure, TestOutcome, TestStatus } from '../types/index.js';
9
+ import type { DiscoveredTest, GitInfo, ErrorKind, FailureKind, PlaywrightJsonReport, ReportStats, TestFailure, TestOutcome, TestStatus } from '../types/index.js';
10
+ /**
11
+ * A report written on another machine (a CI job): its absolute paths point
12
+ * at that machine's checkout. They are rebased onto the local project
13
+ * root, and trace archives are also looked for in `traceDirs` (where the
14
+ * job's test-results artifact was unpacked).
15
+ */
16
+ export interface ForeignReportOptions {
17
+ traceDirs: string[];
18
+ }
19
+ /** The commit a report was produced from, when Playwright recorded it. */
20
+ export declare function reportGitInfo(report: PlaywrightJsonReport): GitInfo | undefined;
10
21
  export interface ParsedReport {
11
22
  stats: ReportStats | null;
12
23
  failures: TestFailure[];
@@ -19,6 +30,8 @@ export interface ParsedReport {
19
30
  projects: string[];
20
31
  configPath: string | null;
21
32
  parseError?: string;
33
+ /** Commit, branch and build link recorded in the report's metadata. */
34
+ git?: GitInfo;
22
35
  }
23
36
  export interface Diagnosis {
24
37
  errorKind: ErrorKind;
@@ -28,16 +41,28 @@ export interface Diagnosis {
28
41
  /** Remove ANSI color/control sequences from captured output. */
29
42
  export declare function stripAnsi(text: string): string;
30
43
  export declare function emptyStats(): ReportStats;
44
+ /**
45
+ * Where a CI trace landed locally: its rebased path, or the same path
46
+ * under one of the artifact folders (with or without its leading
47
+ * `test-results/`, since artifacts are often uploaded from inside it).
48
+ * Only existing files inside the project root count.
49
+ */
50
+ export declare function findForeignTrace(resolved: string, root: string, traceDirs: string[]): string | undefined;
31
51
  export declare function mapStatus(status?: string): TestStatus;
32
52
  /** Classify a failure from its message/stack plus normalized status. */
33
53
  export declare function classifyFailure(text: string, status: TestStatus): FailureKind;
34
54
  /** Parse a JSON report from a raw string. Never throws. */
35
- export declare function parseReportJson(raw: string, root?: string, maxFailures?: number): ParsedReport;
55
+ export declare function parseReportJson(raw: string, root?: string, maxFailures?: number, foreign?: ForeignReportOptions): ParsedReport;
56
+ /**
57
+ * For a foreign report, the CI checkout is the folder that held the config
58
+ * file; its absolute paths are mapped onto the local root.
59
+ */
60
+ export declare function foreignRebase(configFile: string | undefined, root: string, foreign: ForeignReportOptions | undefined): (p: string) => string;
36
61
  /**
37
62
  * Parse an already-deserialized Playwright JSON report into normalized
38
63
  * stats, failures, and a flat test listing.
39
64
  */
40
- export declare function parseReport(report: unknown, root?: string, maxFailures?: number): ParsedReport;
65
+ export declare function parseReport(report: unknown, root?: string, maxFailures?: number, foreign?: ForeignReportOptions): ParsedReport;
41
66
  /**
42
67
  * Best-effort extraction of a JSON object from mixed text (stdout that
43
68
  * interleaves logs with the JSON reporter output).
@@ -6,10 +6,27 @@
6
6
  * syntax error, full disk…) `diagnoseOutput` turns raw stdout/stderr
7
7
  * into an ErrorKind + actionable hint.
8
8
  */
9
- import { isAbsolutePath, isPathInside, normalizePath, relativeToRoot, resolvePath } from './path-utils.js';
9
+ import { existsSync } from 'node:fs';
10
+ import { isAbsolutePath, isPathInside, normalizePath, relativeToRoot, resolvePath, toNativePath } from './path-utils.js';
10
11
  /** Cap so one pathological run cannot produce a megabyte tool payload. */
11
12
  const MAX_FAILURES = 25;
12
13
  const ANSI_RE = /[\u001B\u009B][[\]()#;?]*(?:(?:(?:[a-zA-Z\d]*(?:;[-a-zA-Z\d/#&.:=?%@~_]*)*)?\u0007)|(?:(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PR-TZcf-nq-uy=><~]))/g;
14
+ /** The commit a report was produced from, when Playwright recorded it. */
15
+ export function reportGitInfo(report) {
16
+ const meta = report.config?.metadata;
17
+ if (!meta || typeof meta !== 'object')
18
+ return undefined;
19
+ const git = meta.gitCommit && typeof meta.gitCommit === 'object' ? meta.gitCommit : undefined;
20
+ const ci = meta.ci && typeof meta.ci === 'object' ? meta.ci : undefined;
21
+ const str = (v) => (typeof v === 'string' && v.trim() !== '' ? v.trim().slice(0, 200) : undefined);
22
+ const info = {
23
+ commit: str(git?.hash) ?? str(ci?.commitHash),
24
+ branch: str(git?.branch) ?? str(ci?.branch),
25
+ subject: str(git?.subject),
26
+ buildUrl: str(ci?.buildHref),
27
+ };
28
+ return Object.values(info).some((v) => v !== undefined) ? info : undefined;
29
+ }
13
30
  /** Remove ANSI color/control sequences from captured output. */
14
31
  export function stripAnsi(text) {
15
32
  return text.replace(ANSI_RE, '');
@@ -47,6 +64,26 @@ function flattenOutput(entries) {
47
64
  const joined = parts.join('\n').trim();
48
65
  return joined === '' ? undefined : joined;
49
66
  }
67
+ /**
68
+ * Where a CI trace landed locally: its rebased path, or the same path
69
+ * under one of the artifact folders (with or without its leading
70
+ * `test-results/`, since artifacts are often uploaded from inside it).
71
+ * Only existing files inside the project root count.
72
+ */
73
+ export function findForeignTrace(resolved, root, traceDirs) {
74
+ const candidates = [resolved];
75
+ const marker = resolved.lastIndexOf('/test-results/');
76
+ const tail = marker >= 0 ? resolved.slice(marker + 1) : resolved.split('/').slice(-2).join('/');
77
+ const inner = tail.startsWith('test-results/') ? tail.slice('test-results/'.length) : tail;
78
+ for (const dir of traceDirs) {
79
+ candidates.push(resolvePath(dir, tail), resolvePath(dir, inner));
80
+ }
81
+ for (const candidate of candidates) {
82
+ if (isPathInside(candidate, root) && existsSync(toNativePath(candidate)))
83
+ return candidate;
84
+ }
85
+ return undefined;
86
+ }
50
87
  /** Locate the trace.zip attachment for a failed attempt, if any. */
51
88
  function resolveTracePath(attachments, ctx) {
52
89
  for (const attachment of attachments ?? []) {
@@ -55,9 +92,15 @@ function resolveTracePath(attachments, ctx) {
55
92
  const isTrace = name === 'trace' || name.endsWith('.zip') || contentType.includes('zip') || contentType.includes('trace');
56
93
  if (!isTrace || !attachment.path)
57
94
  continue;
58
- const p = normalizePath(attachment.path);
95
+ const p = ctx.rebase(normalizePath(attachment.path));
59
96
  const base = ctx.rootDir ?? ctx.root;
60
97
  const resolved = isAbsolutePath(p) ? p : resolvePath(base, p);
98
+ if (ctx.foreign) {
99
+ const found = findForeignTrace(resolved, ctx.root, ctx.foreign.traceDirs);
100
+ if (found)
101
+ return found;
102
+ continue;
103
+ }
61
104
  // The report is project-controlled: only follow trace paths that stay
62
105
  // inside the project root, so get-failure cannot be pointed at other files.
63
106
  if (!isPathInside(resolved, ctx.root))
@@ -112,9 +155,10 @@ function normalizeSpecFile(file, ctx) {
112
155
  // get-failure's next steps, list-tests — needs paths relative to the
113
156
  // project root. Rebase: relative → resolve against rootDir, absolute →
114
157
  // keep; then relativize against the project root when it is inside.
115
- const absolute = isAbsolutePath(normalized)
116
- ? normalized
117
- : resolvePath(ctx.rootDir ?? ctx.root, normalized);
158
+ const rebased = ctx.rebase(normalized);
159
+ const absolute = isAbsolutePath(rebased)
160
+ ? rebased
161
+ : resolvePath(ctx.rootDir ?? ctx.root, rebased);
118
162
  if (isPathInside(absolute, ctx.root))
119
163
  return relativeToRoot(ctx.root, absolute);
120
164
  return normalized;
@@ -131,7 +175,9 @@ function walkSpec(spec, prefix, ctx) {
131
175
  return;
132
176
  }
133
177
  for (const testCase of cases) {
134
- const project = testCase.projectName;
178
+ // A config without named projects reports ""; treat it as no project,
179
+ // or re-running with --project= would be rejected.
180
+ const project = testCase.projectName || undefined;
135
181
  if (project)
136
182
  ctx.projectsSeen.add(project);
137
183
  const results = testCase.results ?? [];
@@ -211,7 +257,7 @@ function mergeStats(reported, computed) {
211
257
  /* Public API */
212
258
  /* ------------------------------------------------------------------ */
213
259
  /** Parse a JSON report from a raw string. Never throws. */
214
- export function parseReportJson(raw, root = '', maxFailures = MAX_FAILURES) {
260
+ export function parseReportJson(raw, root = '', maxFailures = MAX_FAILURES, foreign) {
215
261
  let parsed;
216
262
  try {
217
263
  parsed = JSON.parse(raw);
@@ -229,13 +275,28 @@ export function parseReportJson(raw, root = '', maxFailures = MAX_FAILURES) {
229
275
  parseError: `Playwright JSON report could not be parsed: ${err instanceof Error ? err.message : String(err)}`,
230
276
  };
231
277
  }
232
- return parseReport(parsed, root, maxFailures);
278
+ return parseReport(parsed, root, maxFailures, foreign);
279
+ }
280
+ /**
281
+ * For a foreign report, the CI checkout is the folder that held the config
282
+ * file; its absolute paths are mapped onto the local root.
283
+ */
284
+ export function foreignRebase(configFile, root, foreign) {
285
+ if (!foreign || typeof configFile !== 'string')
286
+ return (p) => p;
287
+ const config = normalizePath(configFile);
288
+ if (!isAbsolutePath(config) || isPathInside(config, root))
289
+ return (p) => p;
290
+ const ciRoot = config.slice(0, config.lastIndexOf('/'));
291
+ if (ciRoot === '')
292
+ return (p) => p;
293
+ return (p) => (p === ciRoot ? root : p.startsWith(`${ciRoot}/`) ? `${root}${p.slice(ciRoot.length)}` : p);
233
294
  }
234
295
  /**
235
296
  * Parse an already-deserialized Playwright JSON report into normalized
236
297
  * stats, failures, and a flat test listing.
237
298
  */
238
- export function parseReport(report, root = '', maxFailures = MAX_FAILURES) {
299
+ export function parseReport(report, root = '', maxFailures = MAX_FAILURES, foreign) {
239
300
  const base = {
240
301
  stats: null,
241
302
  failures: [],
@@ -256,9 +317,13 @@ export function parseReport(report, root = '', maxFailures = MAX_FAILURES) {
256
317
  if (!hasSuites && !hasErrors && !hasStats) {
257
318
  return { ...base, parseError: 'Playwright report contained no suites, errors, or stats.' };
258
319
  }
320
+ const localRoot = normalizePath(root || '.');
321
+ const rebase = foreignRebase(typed.config?.configFile, localRoot, foreign);
259
322
  const ctx = {
260
- root: normalizePath(root || '.'),
261
- rootDir: typeof typed.config?.rootDir === 'string' ? normalizePath(typed.config.rootDir) : null,
323
+ root: localRoot,
324
+ rootDir: typeof typed.config?.rootDir === 'string' ? rebase(normalizePath(typed.config.rootDir)) : null,
325
+ rebase,
326
+ foreign,
262
327
  records: [],
263
328
  totalDuration: 0,
264
329
  projectsSeen: new Set(),
@@ -369,6 +434,7 @@ export function parseReport(report, root = '', maxFailures = MAX_FAILURES) {
369
434
  specCount: totalTestCases,
370
435
  projects: [...ctx.projectsSeen],
371
436
  configPath,
437
+ git: reportGitInfo(typed),
372
438
  };
373
439
  }
374
440
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"report-parser.js","sourceRoot":"","sources":["../../src/utils/report-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE3G,0EAA0E;AAC1E,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,MAAM,OAAO,GAAG,4IAA4I,CAAC;AAsB7J,gEAAgE;AAChE,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,iEAAiE;AACjE,SAAS,aAAa,CAAC,OAA8B;IACnD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACvD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC5C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;YAC/D,MAAM,IAAI,GAAI,KAA4B,CAAC,IAAI,CAAC;YAChD,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,OAAO,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5C,CAAC;AAED,oEAAoE;AACpE,SAAS,gBAAgB,CACvB,WAAsF,EACtF,GAAgB;IAEhB,KAAK,MAAM,UAAU,IAAI,WAAW,IAAI,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,EAAE,CAAC;QACjD,MAAM,OAAO,GACX,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5G,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI;YAAE,SAAS;QAC3C,MAAM,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC;QACrC,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9D,sEAAsE;QACtE,4EAA4E;QAC5E,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAChD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAe;IACvC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,aAAa;YAChB,OAAO,QAAQ,CAAC;QAClB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,MAAkB;IAC9D,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,uEAAuE,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrG,IAAI,2EAA2E,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IACzG,IACE,+IAA+I,CAAC,IAAI,CAAC,CAAC,CAAC,EACvJ,CAAC;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,IACE,gJAAgJ,CAAC,IAAI,CAAC,CAAC,CAAC,EACxJ,CAAC;QACD,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IACD,IAAI,MAAM,KAAK,UAAU,IAAI,iEAAiE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACvG,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,yEAAyE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAgCD,SAAS,iBAAiB,CAAC,IAAwB,EAAE,GAAgB;IACnE,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACvC,kEAAkE;IAClE,kEAAkE;IAClE,qEAAqE;IACrE,uEAAuE;IACvE,oEAAoE;IACpE,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC;QACzC,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACrD,IAAI,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,QAAQ,CAAC,IAAgB,EAAE,MAAgB,EAAE,GAAgB;IACpE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IACrE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACnC,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAE/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC;QACrC,IAAI,OAAO;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;QACvC,IAAI,OAAoB,CAAC;QAEzB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACzC,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9C,MAAM,aAAa,GAAG,OAAO;qBAC1B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;qBACZ,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;gBACvF,IAAI,aAAa;oBAAE,MAAM,GAAG,OAAO,CAAC;YACtC,CAAC;YACD,OAAO,GAAG;gBACR,OAAO;gBACP,MAAM;gBACN,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACrC,UAAU,EAAE,IAAI,CAAC,QAAQ;gBACzB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;aACnC,CAAC;YACF,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;gBAAE,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC;QAC5E,CAAC;QACD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACvG,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAkB,EAAE,MAAgB,EAAE,GAAgB;IACvE,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IACvE,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IACrE,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE;QAAE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,YAAY,CAAC,OAAqB,EAAE,QAAgB;IAC3D,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;IAC3B,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC1B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;gBACvB,KAAK,QAAQ;oBACX,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;oBACpB,MAAM;gBACR,KAAK,OAAO;oBACV,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;oBACjB,MAAM;gBACR,KAAK,QAAQ,CAAC;gBACd,KAAK,UAAU;oBACb,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;oBACtB,MAAM;gBACR,KAAK,SAAS;oBACZ,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;oBACnB,MAAM;gBACR;oBACE,MAAM;YACV,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,QAA0C,EAAE,QAAqB;IACnF,MAAM,GAAG,GAAG,CAAC,KAAc,EAAE,QAAgB,EAAU,EAAE,CACvD,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;IACzE,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;QACpD,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;QAC1D,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;QAC3C,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;QACjD,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;KACrD,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,yEAAyE;AACzE,wEAAwE;AAExE,2DAA2D;AAC3D,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,IAAI,GAAG,EAAE,EAAE,WAAW,GAAG,YAAY;IAChF,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,EAAE;YACZ,iBAAiB,EAAE,KAAK;YACxB,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,+CAA+C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SAC9G,CAAC;IACJ,CAAC;IACD,OAAO,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAe,EAAE,IAAI,GAAG,EAAE,EAAE,WAAW,GAAG,YAAY;IAChF,MAAM,IAAI,GAAiB;QACzB,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,EAAE;QACZ,iBAAiB,EAAE,KAAK;QACxB,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,IAAI;KACjB,CAAC;IAEF,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,0CAA0C,EAAE,CAAC;IAC7E,CAAC;IAED,MAAM,KAAK,GAAG,MAA8B,CAAC;IAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;IACnE,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1C,OAAO,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,0DAA0D,EAAE,CAAC;IAC7F,CAAC;IAED,MAAM,GAAG,GAAgB;QACvB,IAAI,EAAE,aAAa,CAAC,IAAI,IAAI,GAAG,CAAC;QAChC,OAAO,EAAE,OAAO,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QAC/F,OAAO,EAAE,EAAE;QACX,aAAa,EAAE,CAAC;QAChB,YAAY,EAAE,IAAI,GAAG,EAAU;KAChC,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE;QAAE,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IAElE,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAEhD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,UAAU;QACzC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,IAAI;QACzD,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,OAAO,GAAwD,EAAE,CAAC;IACxE,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACjC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,KAAK,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC;QAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;QAC1B,MAAM,OAAO,GACX,SAAS,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YACpC,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;QAC9D,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,OAAO,KAAK,KAAK,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAClF,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YACnC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW;YACX,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO;YACP,KAAK;YACL,SAAS,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;YAChE,QAAQ,EAAE,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC;YACvC,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC;YACnC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC;YACrD,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACP,CAAC;IAED,IAAI,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC;IACrD,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,sEAAsE;IACtE,0BAA0B;IAC1B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7D,KAAK,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC;YAC7D,gBAAgB,IAAI,CAAC,CAAC;YACtB,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,0BAA0B,CAAC;YACnF,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,UAAU,IAAI,EAAE;gBACtB,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI;gBACxB,KAAK,EAAE,eAAe;gBACtB,MAAM,EAAE,QAAQ;gBAChB,WAAW,EAAE,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC;gBAC/C,OAAO;gBACP,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS;gBACtD,SAAS,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;gBAChE,QAAQ,EAAE,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC;gBACvC,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC;aACpC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAqB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QACnC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KACnE,CAAC,CAAC,CAAC;IAEJ,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;QACnD,IAAI,OAAO,EAAE,IAAI;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACjC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,KAAK,GAAgB;gBACzB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;gBACnC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,UAAU,EAAE,OAAO,CAAC,UAAU;aAC/B,CAAC;YACF,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC/F,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC/D,KAAK,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC;gBAC1E,KAAK,CAAC,WAAW,GAAG,eAAe,CAAC,GAAG,OAAO,KAAK,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9G,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QACxD,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEN,iBAAiB,GAAG,iBAAiB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC;IACnF,IAAI,gBAAgB,GAAG,CAAC;QAAE,KAAK,CAAC,UAAU,IAAI,gBAAgB,CAAC;IAE/D,OAAO;QACL,KAAK;QACL,QAAQ;QACR,iBAAiB;QACjB,KAAK;QACL,QAAQ;QACR,SAAS,EAAE,cAAc;QACzB,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC;QAC/B,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,OAAO,GAAG,GAAG,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACtB,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YACrC,QAAQ,IAAI,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;SAC1B,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnE,MAAM,IAAI,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE7F,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACpC,iGAAiG,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7G,CAAC;IACF,IAAI,SAAS;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,KAAK,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC;IAExD,IAAI,kEAAkE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO;YACL,SAAS,EAAE,WAAW;YACtB,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,4HAA4H;SACnI,CAAC;IACJ,CAAC;IAED,IACE,iIAAiI,CAAC,IAAI,CAAC,CAAC,CAAC,EACzI,CAAC;QACD,OAAO;YACL,SAAS,EAAE,eAAe;YAC1B,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,8FAA8F;SACrG,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,0DAA0D,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/E,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,OAAO;YACL,SAAS,EAAE,cAAc;YACzB,YAAY,EAAE,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE;YACxD,IAAI,EAAE,iHAAiH;SACxH,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9D,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO;YACL,SAAS,EAAE,cAAc;YACzB,YAAY,EAAE,qBAAqB,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/D,IAAI,EAAE,oHAAoH;SAC3H,CAAC;IACJ,CAAC;IAED,IACE,8JAA8J,CAAC,IAAI,CAAC,CAAC,CAAC,EACtK,CAAC;QACD,OAAO;YACL,SAAS,EAAE,oBAAoB;YAC/B,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,0OAA0O;SACjP,CAAC;IACJ,CAAC;IAED,IACE,4HAA4H,CAAC,IAAI,CAAC,CAAC,CAAC,EACpI,CAAC;QACD,OAAO;YACL,SAAS,EAAE,eAAe;YAC1B,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,gMAAgM;SACvM,CAAC;IACJ,CAAC;IAED,IAAI,iEAAiE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,OAAO;YACL,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,yJAAyJ;SAChK,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wEAAwE;AACxE,yEAAyE;AACzE,wEAAwE;AAExE,kEAAkE;AAClE,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,EAAE,GAAG,qCAAqC,CAAC;IACjD,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1C,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,OAAO,GACX,iJAAiJ,CAAC;AAEpJ;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,GAAG,GAA2C,EAAE,CAAC;IACvD,MAAM,KAAK,GAA6C,EAAE,CAAC;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;QAErD,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QACtB,IAAI,KAA6B,CAAC;QAClC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YACnD,IAAI,KAAK,KAAK,EAAE;gBAAE,SAAS;YAC3B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtD,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,qEAAqE;gBACrE,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvE,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAED,4DAA4D;QAC5D,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;gBACpE,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"report-parser.js","sourceRoot":"","sources":["../../src/utils/report-parser.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * The analysis functions are pure (exported for unit tests).
11
11
  */
12
- import type { FailureKind, RunTestResult, TestStatus } from '../types/index.js';
12
+ import type { FailureKind, GitInfo, RunTestResult, TestStatus } from '../types/index.js';
13
13
  export declare const HISTORY_DIR = ".playwright-e2e-mcp";
14
14
  export interface HistoryTest {
15
15
  file: string;
@@ -34,12 +34,28 @@ export interface HistoryEntry {
34
34
  skipped: number;
35
35
  } | null;
36
36
  tests: HistoryTest[];
37
+ /** The commit the run tested (0.5.0+); `dirty` when the checkout had local changes. */
38
+ commit?: string;
39
+ branch?: string;
40
+ subject?: string;
41
+ dirty?: boolean;
42
+ /** Where the result came from when it was not run here, e.g. a CI build link. */
43
+ buildUrl?: string;
37
44
  }
45
+ /** The checked-out commit of `root`, or nothing when it is not a git repository. */
46
+ export declare function localGitInfo(root: string): Promise<(GitInfo & {
47
+ dirty?: boolean;
48
+ }) | undefined>;
38
49
  export declare function historyEnabled(): boolean;
39
50
  export declare function historyPath(root: string): string;
40
- export declare function toHistoryEntry(result: RunTestResult, source: string, at?: Date): HistoryEntry;
51
+ export declare function toHistoryEntry(result: RunTestResult, source: string, at?: Date, gitInfo?: GitInfo & {
52
+ dirty?: boolean;
53
+ }): HistoryEntry;
41
54
  /** Append a run to the project's history (no-op when disabled or nothing ran). */
42
- export declare function recordRun(root: string, result: RunTestResult, source: string): Promise<boolean>;
55
+ export declare function recordRun(root: string, result: RunTestResult, source: string, options?: {
56
+ at?: Date;
57
+ git?: GitInfo;
58
+ }): Promise<boolean>;
43
59
  /** Parse history lines, skipping anything malformed. Oldest first. */
44
60
  export declare function parseHistory(text: string): HistoryEntry[];
45
61
  export declare function readHistory(root: string, lastRuns: number): Promise<HistoryEntry[]>;
@@ -101,3 +117,50 @@ export interface FailurePattern {
101
117
  }
102
118
  /** Group failures across runs by kind + normalized error, biggest first. */
103
119
  export declare function failurePatterns(entries: HistoryEntry[]): FailurePattern[];
120
+ export interface SlowTest {
121
+ key: string;
122
+ runs: number;
123
+ medianMs: number;
124
+ maxMs: number;
125
+ /** Median of the newest third of runs over the median of the rest (needs 6+ runs). */
126
+ slowdown?: number;
127
+ }
128
+ /** Tests by typical duration (passing runs only, so timeouts do not dominate), slowest first. */
129
+ export declare function slowTests(entries: HistoryEntry[]): SlowTest[];
130
+ export interface TrendDay {
131
+ day: string;
132
+ runs: number;
133
+ /** Test executions that day (one per test per run). */
134
+ executions: number;
135
+ failed: number;
136
+ flaky: number;
137
+ /** (failed + flaky) / executions */
138
+ unstableRate: number;
139
+ /** Distinct tests that failed or passed only on retry that day. */
140
+ unstableTests: number;
141
+ }
142
+ /** One row per UTC day: how many tests failed or flaked, oldest first. */
143
+ export declare function dailyTrend(entries: HistoryEntry[]): TrendDay[];
144
+ export interface BreakingCommit {
145
+ test: string;
146
+ /** Last commit on which the test passed before its current bad streak. */
147
+ lastGood?: {
148
+ commit?: string;
149
+ at: string;
150
+ };
151
+ /** First run of the current bad streak. */
152
+ firstBad: {
153
+ commit?: string;
154
+ subject?: string;
155
+ at: string;
156
+ status: TestStatus;
157
+ };
158
+ /** How the test has behaved since: 'failing' every run, or 'flaky' (back and forth). */
159
+ since: 'failing' | 'flaky';
160
+ }
161
+ /**
162
+ * For each test that is failing or flaky now, the commit where that began:
163
+ * the first bad run after its last passing streak (at least two passes in
164
+ * a row, so one lucky pass of a flaky test does not count as good).
165
+ */
166
+ export declare function breakingCommits(entries: HistoryEntry[]): BreakingCommit[];
@@ -9,6 +9,7 @@
9
9
  *
10
10
  * The analysis functions are pure (exported for unit tests).
11
11
  */
12
+ import { execFile } from 'node:child_process';
12
13
  import { appendFile, lstat, mkdir, readFile, writeFile } from 'node:fs/promises';
13
14
  import { PlaywrightMcpError } from '../types/index.js';
14
15
  import { assertRealPathInside, joinProjectPath, toNativePath, writeFileInsideRoot } from './path-utils.js';
@@ -16,6 +17,31 @@ export const HISTORY_DIR = '.playwright-e2e-mcp';
16
17
  const HISTORY_FILE = 'history.jsonl';
17
18
  const MAX_ENTRIES = 500;
18
19
  const MAX_TESTS_PER_ENTRY = 2_000;
20
+ function git(args, cwd) {
21
+ return new Promise((resolve) => {
22
+ execFile('git', args, { cwd, timeout: 3_000, windowsHide: true, maxBuffer: 1_000_000 }, (err, stdout) => {
23
+ resolve(err ? undefined : String(stdout).trim());
24
+ });
25
+ });
26
+ }
27
+ /** The checked-out commit of `root`, or nothing when it is not a git repository. */
28
+ export async function localGitInfo(root) {
29
+ const native = toNativePath(root);
30
+ const commit = await git(['rev-parse', 'HEAD'], native);
31
+ if (!commit || !/^[0-9a-f]{7,64}$/i.test(commit))
32
+ return undefined;
33
+ const [branch, subject, status] = await Promise.all([
34
+ git(['rev-parse', '--abbrev-ref', 'HEAD'], native),
35
+ git(['log', '-1', '--pretty=%s'], native),
36
+ git(['status', '--porcelain', '--untracked-files=no'], native),
37
+ ]);
38
+ return {
39
+ commit,
40
+ branch: branch && branch !== 'HEAD' ? branch : undefined,
41
+ subject: subject ? subject.slice(0, 200) : undefined,
42
+ dirty: status ? status.length > 0 : undefined,
43
+ };
44
+ }
19
45
  export function historyEnabled() {
20
46
  const flag = (process.env.PW_MCP_HISTORY ?? '').trim().toLowerCase();
21
47
  return !(flag === '0' || flag === 'false' || flag === 'off');
@@ -23,7 +49,7 @@ export function historyEnabled() {
23
49
  export function historyPath(root) {
24
50
  return joinProjectPath(root, HISTORY_DIR, HISTORY_FILE);
25
51
  }
26
- export function toHistoryEntry(result, source, at = new Date()) {
52
+ export function toHistoryEntry(result, source, at = new Date(), gitInfo) {
27
53
  const tests = (result.outcomes ?? []).slice(0, MAX_TESTS_PER_ENTRY).map((o) => {
28
54
  const test = { file: o.file, title: o.title, status: o.status };
29
55
  if (o.project)
@@ -47,14 +73,21 @@ export function toHistoryEntry(result, source, at = new Date()) {
47
73
  ? { passed: result.stats.expected, failed: result.stats.unexpected, flaky: result.stats.flaky, skipped: result.stats.skipped }
48
74
  : null,
49
75
  tests,
76
+ ...(gitInfo?.commit ? { commit: gitInfo.commit } : {}),
77
+ ...(gitInfo?.branch ? { branch: gitInfo.branch } : {}),
78
+ ...(gitInfo?.subject ? { subject: gitInfo.subject } : {}),
79
+ ...(gitInfo?.dirty ? { dirty: true } : {}),
80
+ ...(gitInfo?.buildUrl ? { buildUrl: gitInfo.buildUrl } : {}),
50
81
  };
51
82
  }
52
83
  /** Append a run to the project's history (no-op when disabled or nothing ran). */
53
- export async function recordRun(root, result, source) {
84
+ export async function recordRun(root, result, source, options = {}) {
54
85
  if (!historyEnabled())
55
86
  return false;
56
87
  if (!result.outcomes || result.outcomes.length === 0)
57
88
  return false;
89
+ // A run done here tested the working tree; an imported one says which commit it tested.
90
+ const gitInfo = options.git ?? (await localGitInfo(root).catch(() => undefined));
58
91
  const dir = joinProjectPath(root, HISTORY_DIR);
59
92
  await mkdir(toNativePath(dir), { recursive: true });
60
93
  // The folder could be a symlink planted in the project; keep writes inside.
@@ -68,7 +101,7 @@ export async function recordRun(root, result, source) {
68
101
  if (info?.isSymbolicLink()) {
69
102
  throw new PlaywrightMcpError('Refusing to write run history through a symlink', 'INVALID_PATH');
70
103
  }
71
- await appendFile(toNativePath(file), `${JSON.stringify(toHistoryEntry(result, source))}\n`, 'utf8');
104
+ await appendFile(toNativePath(file), `${JSON.stringify(toHistoryEntry(result, source, options.at, gitInfo))}\n`, 'utf8');
72
105
  // Trim now and then, not on every write.
73
106
  if (info && info.size > 4_000_000) {
74
107
  const lines = (await readFile(toNativePath(file), 'utf8')).split('\n').filter((line) => line.trim() !== '');
@@ -216,4 +249,117 @@ export function failurePatterns(entries) {
216
249
  }
217
250
  return [...map.values()].sort((a, b) => b.count - a.count || b.tests.length - a.tests.length);
218
251
  }
252
+ /* ------------------------------------------------------------------ */
253
+ /* Slow tests, trend, and the commit that broke a test */
254
+ /* ------------------------------------------------------------------ */
255
+ function median(values) {
256
+ const sorted = [...values].sort((a, b) => a - b);
257
+ const mid = Math.floor(sorted.length / 2);
258
+ return sorted.length % 2 === 1 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2;
259
+ }
260
+ /** Tests by typical duration (passing runs only, so timeouts do not dominate), slowest first. */
261
+ export function slowTests(entries) {
262
+ const map = new Map();
263
+ for (const entry of entries) {
264
+ for (const test of entry.tests) {
265
+ if (test.ms === undefined || (test.status !== 'passed' && test.status !== 'flaky'))
266
+ continue;
267
+ const key = testKey(test);
268
+ const list = map.get(key) ?? [];
269
+ list.push(test.ms);
270
+ map.set(key, list);
271
+ }
272
+ }
273
+ const out = [];
274
+ for (const [key, ms] of map) {
275
+ const item = { key, runs: ms.length, medianMs: Math.round(median(ms)), maxMs: Math.max(...ms) };
276
+ if (ms.length >= 6) {
277
+ const cut = Math.floor((ms.length * 2) / 3);
278
+ const before = median(ms.slice(0, cut));
279
+ if (before > 0)
280
+ item.slowdown = Math.round((median(ms.slice(cut)) / before) * 100) / 100;
281
+ }
282
+ out.push(item);
283
+ }
284
+ return out.sort((a, b) => b.medianMs - a.medianMs || a.key.localeCompare(b.key));
285
+ }
286
+ /** One row per UTC day: how many tests failed or flaked, oldest first. */
287
+ export function dailyTrend(entries) {
288
+ const days = new Map();
289
+ for (const entry of entries) {
290
+ const day = entry.at.slice(0, 10);
291
+ const slot = days.get(day) ?? { runs: 0, executions: 0, failed: 0, flaky: 0, tests: new Set() };
292
+ slot.runs += 1;
293
+ for (const test of entry.tests) {
294
+ if (test.status === 'skipped' || test.status === 'unknown')
295
+ continue;
296
+ slot.executions += 1;
297
+ if (FAILED.has(test.status))
298
+ slot.failed += 1;
299
+ if (test.status === 'flaky')
300
+ slot.flaky += 1;
301
+ if (test.status !== 'passed')
302
+ slot.tests.add(testKey(test));
303
+ }
304
+ days.set(day, slot);
305
+ }
306
+ return [...days.entries()]
307
+ .sort(([a], [b]) => a.localeCompare(b))
308
+ .map(([day, d]) => ({
309
+ day,
310
+ runs: d.runs,
311
+ executions: d.executions,
312
+ failed: d.failed,
313
+ flaky: d.flaky,
314
+ unstableRate: d.executions > 0 ? (d.failed + d.flaky) / d.executions : 0,
315
+ unstableTests: d.tests.size,
316
+ }));
317
+ }
318
+ /**
319
+ * For each test that is failing or flaky now, the commit where that began:
320
+ * the first bad run after its last passing streak (at least two passes in
321
+ * a row, so one lucky pass of a flaky test does not count as good).
322
+ */
323
+ export function breakingCommits(entries) {
324
+ const runs = new Map();
325
+ for (const entry of entries) {
326
+ for (const test of entry.tests) {
327
+ if (test.status === 'skipped' || test.status === 'unknown')
328
+ continue;
329
+ const key = testKey(test);
330
+ const list = runs.get(key) ?? [];
331
+ list.push({ status: test.status, entry });
332
+ runs.set(key, list);
333
+ }
334
+ }
335
+ const out = [];
336
+ for (const [test, list] of runs) {
337
+ if (!list.some((r) => r.status !== 'passed'))
338
+ continue;
339
+ // The newest stretch of two or more passes ends where the bad period starts.
340
+ let goodEnd = -1;
341
+ for (let i = list.length - 1; i >= 1; i -= 1) {
342
+ if (list[i].status === 'passed' && list[i - 1].status === 'passed') {
343
+ goodEnd = i;
344
+ break;
345
+ }
346
+ }
347
+ const firstBadIndex = list.findIndex((r, i) => i > goodEnd && r.status !== 'passed');
348
+ if (firstBadIndex < 0)
349
+ continue; // healthy again since its last bad run
350
+ const tail = list.slice(firstBadIndex);
351
+ const lastStatus = list[list.length - 1].status;
352
+ const allBad = tail.every((r) => FAILED.has(r.status));
353
+ if (lastStatus === 'passed' && tail.filter((r) => r.status !== 'passed').length < 2)
354
+ continue;
355
+ const bad = list[firstBadIndex];
356
+ out.push({
357
+ test,
358
+ lastGood: goodEnd >= 0 ? { commit: list[goodEnd].entry.commit, at: list[goodEnd].entry.at } : undefined,
359
+ firstBad: { commit: bad.entry.commit, subject: bad.entry.subject, at: bad.entry.at, status: bad.status },
360
+ since: allBad ? 'failing' : 'flaky',
361
+ });
362
+ }
363
+ return out.sort((a, b) => b.firstBad.at.localeCompare(a.firstBad.at) || a.test.localeCompare(b.test));
364
+ }
219
365
  //# sourceMappingURL=run-history.js.map