flakelab 0.1.0 → 0.1.2
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 +225 -38
- package/dist/analysis/blob-report.d.ts +15 -0
- package/dist/analysis/blob-report.js +137 -0
- package/dist/analysis/blob-report.js.map +1 -0
- package/dist/analysis/cli.d.ts +7 -0
- package/dist/analysis/cli.js +28 -0
- package/dist/analysis/cli.js.map +1 -0
- package/dist/analysis/schema.d.ts +175 -0
- package/dist/analysis/schema.js +34 -0
- package/dist/analysis/schema.js.map +1 -0
- package/dist/analysis/zip-archive.d.ts +6 -0
- package/dist/analysis/zip-archive.js +193 -0
- package/dist/analysis/zip-archive.js.map +1 -0
- package/dist/artifacts/paths.d.ts +3 -0
- package/dist/artifacts/paths.js +34 -0
- package/dist/artifacts/paths.js.map +1 -0
- package/dist/artifacts/retention.d.ts +1 -0
- package/dist/artifacts/retention.js +80 -0
- package/dist/artifacts/retention.js.map +1 -0
- package/dist/bisect/engine.js +0 -1
- package/dist/bisect/engine.js.map +1 -1
- package/dist/bisect/schema.d.ts +5 -6
- package/dist/bisect/schema.js +1 -2
- package/dist/bisect/schema.js.map +1 -1
- package/dist/bisect/solari-evaluator.js +9 -1
- package/dist/bisect/solari-evaluator.js.map +1 -1
- package/dist/ci/job-summary.d.ts +2 -0
- package/dist/ci/job-summary.js +120 -2
- package/dist/ci/job-summary.js.map +1 -1
- package/dist/ci/select-command.js +1 -1
- package/dist/ci/select-command.js.map +1 -1
- package/dist/ci/summary-command.js +12 -7
- package/dist/ci/summary-command.js.map +1 -1
- package/dist/cli-arguments.d.ts +44 -0
- package/dist/cli-arguments.js +356 -0
- package/dist/cli-arguments.js.map +1 -0
- package/dist/cli-command-help.d.ts +11 -0
- package/dist/cli-command-help.js +211 -0
- package/dist/cli-command-help.js.map +1 -0
- package/dist/cli-help.d.ts +5 -2
- package/dist/cli-help.js +122 -45
- package/dist/cli-help.js.map +1 -1
- package/dist/cli-option-definitions.d.ts +202 -0
- package/dist/cli-option-definitions.js +59 -0
- package/dist/cli-option-definitions.js.map +1 -0
- package/dist/cli.js +100 -100
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze-summary.d.ts +5 -0
- package/dist/commands/analyze-summary.js +89 -0
- package/dist/commands/analyze-summary.js.map +1 -0
- package/dist/commands/analyze.d.ts +6 -0
- package/dist/commands/analyze.js +128 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/bisect.d.ts +2 -2
- package/dist/commands/bisect.js +32 -3
- package/dist/commands/bisect.js.map +1 -1
- package/dist/commands/diagnose.d.ts +3 -2
- package/dist/commands/diagnose.js +355 -23
- package/dist/commands/diagnose.js.map +1 -1
- package/dist/commands/discover.d.ts +18 -2
- package/dist/commands/discover.js +215 -25
- package/dist/commands/discover.js.map +1 -1
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.js +66 -25
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/investigate.d.ts +3 -2
- package/dist/commands/investigate.js +22 -3
- package/dist/commands/investigate.js.map +1 -1
- package/dist/commands/options.d.ts +123 -16
- package/dist/commands/options.js +24 -2
- package/dist/commands/options.js.map +1 -1
- package/dist/commands/prove.d.ts +2 -2
- package/dist/commands/prove.js +38 -1
- package/dist/commands/prove.js.map +1 -1
- package/dist/commands/repair.d.ts +8 -2
- package/dist/commands/repair.js +32 -9
- package/dist/commands/repair.js.map +1 -1
- package/dist/commands/replay.d.ts +2 -2
- package/dist/commands/replay.js +15 -2
- package/dist/commands/replay.js.map +1 -1
- package/dist/commands/report.d.ts +2 -2
- package/dist/commands/report.js +35 -10
- package/dist/commands/report.js.map +1 -1
- package/dist/commands/scan-summary.d.ts +7 -0
- package/dist/commands/scan-summary.js +175 -0
- package/dist/commands/scan-summary.js.map +1 -0
- package/dist/commands/scan.d.ts +9 -12
- package/dist/commands/scan.js +66 -62
- package/dist/commands/scan.js.map +1 -1
- package/dist/core/plan.js +1 -1
- package/dist/core/plan.js.map +1 -1
- package/dist/diagnosis/checkpoint.d.ts +6 -0
- package/dist/diagnosis/checkpoint.js +46 -0
- package/dist/diagnosis/checkpoint.js.map +1 -0
- package/dist/diagnosis/cli.d.ts +7 -0
- package/dist/diagnosis/cli.js +84 -0
- package/dist/diagnosis/cli.js.map +1 -0
- package/dist/diagnosis/recommendation.d.ts +13 -0
- package/dist/diagnosis/recommendation.js +95 -0
- package/dist/diagnosis/recommendation.js.map +1 -0
- package/dist/diagnosis/run-state.d.ts +52 -0
- package/dist/diagnosis/run-state.js +173 -0
- package/dist/diagnosis/run-state.js.map +1 -0
- package/dist/diagnosis/schema.d.ts +207 -0
- package/dist/diagnosis/schema.js +108 -0
- package/dist/diagnosis/schema.js.map +1 -0
- package/dist/diagnosis/solari-handoff.d.ts +9 -0
- package/dist/diagnosis/solari-handoff.js +40 -0
- package/dist/diagnosis/solari-handoff.js.map +1 -0
- package/dist/diagnosis/summary.d.ts +3 -0
- package/dist/diagnosis/summary.js +115 -0
- package/dist/diagnosis/summary.js.map +1 -0
- package/dist/discovery/auth-cookie.d.ts +19 -0
- package/dist/discovery/auth-cookie.js +26 -0
- package/dist/discovery/auth-cookie.js.map +1 -0
- package/dist/discovery/evaluate.d.ts +35 -2
- package/dist/discovery/evaluate.js +136 -30
- package/dist/discovery/evaluate.js.map +1 -1
- package/dist/discovery/event-loop.d.ts +25 -0
- package/dist/discovery/event-loop.js +84 -0
- package/dist/discovery/event-loop.js.map +1 -0
- package/dist/discovery/minimize.d.ts +61 -1
- package/dist/discovery/minimize.js +179 -7
- package/dist/discovery/minimize.js.map +1 -1
- package/dist/discovery/resource-loading.d.ts +25 -0
- package/dist/discovery/resource-loading.js +84 -0
- package/dist/discovery/resource-loading.js.map +1 -0
- package/dist/discovery/runner-environment.d.ts +26 -0
- package/dist/discovery/runner-environment.js +68 -0
- package/dist/discovery/runner-environment.js.map +1 -0
- package/dist/discovery/startup-event.d.ts +25 -0
- package/dist/discovery/startup-event.js +84 -0
- package/dist/discovery/startup-event.js.map +1 -0
- package/dist/discovery/storage-state.d.ts +26 -0
- package/dist/discovery/storage-state.js +86 -0
- package/dist/discovery/storage-state.js.map +1 -0
- package/dist/discovery/temporal-environment.d.ts +31 -0
- package/dist/discovery/temporal-environment.js +43 -0
- package/dist/discovery/temporal-environment.js.map +1 -0
- package/dist/discovery/visual-environment.d.ts +28 -0
- package/dist/discovery/visual-environment.js +42 -0
- package/dist/discovery/visual-environment.js.map +1 -0
- package/dist/domain/schema.d.ts +840 -20
- package/dist/domain/schema.js +216 -6
- package/dist/domain/schema.js.map +1 -1
- package/dist/faults/browser-context.d.ts +16 -0
- package/dist/faults/browser-context.js +60 -0
- package/dist/faults/browser-context.js.map +1 -0
- package/dist/faults/cookie-header.d.ts +5 -0
- package/dist/faults/cookie-header.js +25 -0
- package/dist/faults/cookie-header.js.map +1 -0
- package/dist/faults/document-bootstrap.d.ts +5 -0
- package/dist/faults/document-bootstrap.js +141 -0
- package/dist/faults/document-bootstrap.js.map +1 -0
- package/dist/faults/install.d.ts +1 -1
- package/dist/faults/install.js +199 -6
- package/dist/faults/install.js.map +1 -1
- package/dist/faults/pattern.d.ts +1 -0
- package/dist/faults/pattern.js +24 -0
- package/dist/faults/pattern.js.map +1 -0
- package/dist/investigator/agent.js +39 -17
- package/dist/investigator/agent.js.map +1 -1
- package/dist/investigator/ledger.d.ts +1 -1
- package/dist/investigator/ledger.js +2 -2
- package/dist/investigator/ledger.js.map +1 -1
- package/dist/investigator/safe-source.d.ts +1 -0
- package/dist/investigator/safe-source.js +12 -3
- package/dist/investigator/safe-source.js.map +1 -1
- package/dist/investigator/schema.d.ts +293 -2
- package/dist/investigator/schema.js +100 -2
- package/dist/investigator/schema.js.map +1 -1
- package/dist/proof/cli.d.ts +7 -0
- package/dist/proof/cli.js +108 -0
- package/dist/proof/cli.js.map +1 -0
- package/dist/proof/preflight.d.ts +4 -0
- package/dist/proof/preflight.js +9 -0
- package/dist/proof/preflight.js.map +1 -0
- package/dist/repair/generator.d.ts +12 -1
- package/dist/repair/generator.js +30 -6
- package/dist/repair/generator.js.map +1 -1
- package/dist/repair/remote-proof-runner.js +6 -10
- package/dist/repair/remote-proof-runner.js.map +1 -1
- package/dist/repair/schema.d.ts +77 -2
- package/dist/repair/schema.js +23 -2
- package/dist/repair/schema.js.map +1 -1
- package/dist/repair/solari-validator.d.ts +2 -0
- package/dist/repair/solari-validator.js +4 -6
- package/dist/repair/solari-validator.js.map +1 -1
- package/dist/repair/summary.d.ts +10 -0
- package/dist/repair/summary.js +58 -0
- package/dist/repair/summary.js.map +1 -0
- package/dist/repair/validator.d.ts +1 -0
- package/dist/repair/validator.js +53 -12
- package/dist/repair/validator.js.map +1 -1
- package/dist/report/bundle.js +16 -37
- package/dist/report/bundle.js.map +1 -1
- package/dist/report/model.js +131 -12
- package/dist/report/model.js.map +1 -1
- package/dist/report/open.d.ts +9 -0
- package/dist/report/open.js +23 -0
- package/dist/report/open.js.map +1 -1
- package/dist/report/report-client.css +2 -0
- package/dist/report/report-client.js +58 -0
- package/dist/report/schema.d.ts +115 -5
- package/dist/report/schema.js +24 -5
- package/dist/report/schema.js.map +1 -1
- package/dist/reproducer/schema.d.ts +89 -4
- package/dist/reproducer/schema.js +3 -4
- package/dist/reproducer/schema.js.map +1 -1
- package/dist/runner/execution-fault.d.ts +10 -0
- package/dist/runner/execution-fault.js +24 -0
- package/dist/runner/execution-fault.js.map +1 -0
- package/dist/runner/fault-proxy.d.ts +7 -0
- package/dist/runner/fault-proxy.js +366 -0
- package/dist/runner/fault-proxy.js.map +1 -0
- package/dist/runner/local.js +2 -2
- package/dist/runner/local.js.map +1 -1
- package/dist/runner/native-scan.d.ts +25 -0
- package/dist/runner/native-scan.js +306 -0
- package/dist/runner/native-scan.js.map +1 -0
- package/dist/runner/playwright-executor.d.ts +3 -0
- package/dist/runner/playwright-executor.js +125 -66
- package/dist/runner/playwright-executor.js.map +1 -1
- package/dist/runner/process-tree.d.ts +7 -0
- package/dist/runner/process-tree.js +62 -0
- package/dist/runner/process-tree.js.map +1 -0
- package/dist/runner/project-bridge.d.ts +7 -0
- package/dist/runner/project-bridge.js +83 -0
- package/dist/runner/project-bridge.js.map +1 -0
- package/dist/runner/trial-reporter.d.ts +7 -0
- package/dist/runner/trial-reporter.js +47 -0
- package/dist/runner/trial-reporter.js.map +1 -0
- package/dist/scan/failure-clusters.d.ts +24 -0
- package/dist/scan/failure-clusters.js +74 -0
- package/dist/scan/failure-clusters.js.map +1 -0
- package/dist/scan/schema.d.ts +170 -0
- package/dist/scan/schema.js +71 -0
- package/dist/scan/schema.js.map +1 -0
- package/dist/solari/executor.d.ts +5 -1
- package/dist/solari/executor.js +25 -17
- package/dist/solari/executor.js.map +1 -1
- package/dist/solari/run-demo.d.ts +13 -1
- package/dist/solari/run-demo.js +35 -16
- package/dist/solari/run-demo.js.map +1 -1
- package/dist/solari/usage.d.ts +8 -2
- package/dist/solari/usage.js +14 -4
- package/dist/solari/usage.js.map +1 -1
- package/dist/ui/boundary.d.ts +17 -0
- package/dist/ui/boundary.js +18 -0
- package/dist/ui/boundary.js.map +1 -0
- package/dist/ui/console.d.ts +4 -0
- package/dist/ui/console.js +11 -0
- package/dist/ui/console.js.map +1 -0
- package/dist/ui/document.d.ts +40 -0
- package/dist/ui/document.js +120 -0
- package/dist/ui/document.js.map +1 -0
- package/dist/ui/format.d.ts +8 -0
- package/dist/ui/format.js +32 -0
- package/dist/ui/format.js.map +1 -0
- package/dist/ui/progress.d.ts +17 -1
- package/dist/ui/progress.js +51 -8
- package/dist/ui/progress.js.map +1 -1
- package/dist/ui/status.d.ts +7 -0
- package/dist/ui/status.js +36 -0
- package/dist/ui/status.js.map +1 -0
- package/dist/ui/style.d.ts +8 -0
- package/dist/ui/style.js +22 -0
- package/dist/ui/style.js.map +1 -0
- package/dist/ui/text.d.ts +17 -0
- package/dist/ui/text.js +123 -0
- package/dist/ui/text.js.map +1 -0
- package/dist/ui/theme.d.ts +23 -0
- package/dist/ui/theme.js +77 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/ui/trial-progress.d.ts +13 -0
- package/dist/ui/trial-progress.js +42 -0
- package/dist/ui/trial-progress.js.map +1 -0
- package/package.json +14 -19
- package/dist/faults/network-delay.d.ts +0 -5
- package/dist/faults/network-delay.js +0 -34
- package/dist/faults/network-delay.js.map +0 -1
- package/dist/faults/request-failure.d.ts +0 -5
- package/dist/faults/request-failure.js +0 -24
- package/dist/faults/request-failure.js.map +0 -1
- package/dist/playwright.d.ts +0 -3
- package/dist/playwright.js +0 -21
- package/dist/playwright.js.map +0 -1
- package/dist/report/browser-entry.d.ts +0 -2
- package/dist/report/browser-entry.js +0 -15
- package/dist/report/browser-entry.js.map +0 -1
- package/dist/report/components/artifacts.d.ts +0 -4
- package/dist/report/components/artifacts.js +0 -6
- package/dist/report/components/artifacts.js.map +0 -1
- package/dist/report/components/experiments.d.ts +0 -4
- package/dist/report/components/experiments.js +0 -7
- package/dist/report/components/experiments.js.map +0 -1
- package/dist/report/components/hypotheses.d.ts +0 -4
- package/dist/report/components/hypotheses.js +0 -26
- package/dist/report/components/hypotheses.js.map +0 -1
- package/dist/report/components/indicators.d.ts +0 -32
- package/dist/report/components/indicators.js +0 -42
- package/dist/report/components/indicators.js.map +0 -1
- package/dist/report/components/layout.d.ts +0 -29
- package/dist/report/components/layout.js +0 -20
- package/dist/report/components/layout.js.map +0 -1
- package/dist/report/components/proof.d.ts +0 -4
- package/dist/report/components/proof.js +0 -34
- package/dist/report/components/proof.js.map +0 -1
- package/dist/report/components/reproduction.d.ts +0 -4
- package/dist/report/components/reproduction.js +0 -19
- package/dist/report/components/reproduction.js.map +0 -1
- package/dist/report/components/summary.d.ts +0 -4
- package/dist/report/components/summary.js +0 -12
- package/dist/report/components/summary.js.map +0 -1
- package/dist/report/components/verdict.d.ts +0 -4
- package/dist/report/components/verdict.js +0 -27
- package/dist/report/components/verdict.js.map +0 -1
- package/dist/report/report-app.d.ts +0 -6
- package/dist/report/report-app.js +0 -16
- package/dist/report/report-app.js.map +0 -1
- package/dist/report/report-details.css +0 -182
- package/dist/report/report.css +0 -404
package/dist/cli-help.js
CHANGED
|
@@ -1,47 +1,124 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { commandHelpText } from "./cli-command-help.js";
|
|
3
|
+
import { labelColumn, TerminalDocument } from "./ui/document.js";
|
|
4
|
+
import { PLAIN_THEME } from "./ui/theme.js";
|
|
5
|
+
function packageVersion() {
|
|
6
|
+
const manifest = readFileSync(new URL("../package.json", import.meta.url), "utf8");
|
|
7
|
+
const match = /"version"\s*:\s*"([^"]+)"/u.exec(manifest);
|
|
8
|
+
if (!match?.[1]) {
|
|
9
|
+
throw new Error("FlakeLab package version is missing");
|
|
10
|
+
}
|
|
11
|
+
return match[1];
|
|
12
|
+
}
|
|
13
|
+
export const VERSION = packageVersion();
|
|
14
|
+
const DOCUMENTATION = "https://github.com/Astraque-Softwares/solari-cookbook/tree/main/projects/flakelab";
|
|
15
|
+
const COMMAND_GROUPS = [
|
|
16
|
+
{
|
|
17
|
+
rows: [
|
|
18
|
+
{ label: "scan <target>", value: "Run a bounded stability scan" },
|
|
19
|
+
{
|
|
20
|
+
label: "analyze <blob-report>",
|
|
21
|
+
value: "Triage an existing Playwright blob report",
|
|
22
|
+
},
|
|
23
|
+
{ label: "doctor", value: "Check local readiness and credential safety" },
|
|
24
|
+
],
|
|
25
|
+
title: "Observe",
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
rows: [
|
|
29
|
+
{
|
|
30
|
+
label: "diagnose [test]",
|
|
31
|
+
value: "Explain evidence and run the next bounded step",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
label: "discover <test>",
|
|
35
|
+
value: "Minimize a reproducible causal fault",
|
|
36
|
+
},
|
|
37
|
+
{ label: "replay <reproducer>", value: "Verify a saved reproducer" },
|
|
38
|
+
{
|
|
39
|
+
label: "resume <diagnose.json>",
|
|
40
|
+
value: "Continue a checkpointed diagnosis",
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
title: "Reproduce",
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
rows: [
|
|
47
|
+
{
|
|
48
|
+
label: "investigate <test>",
|
|
49
|
+
value: "Run the bounded Groq investigator",
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
label: "repair <investigation>",
|
|
53
|
+
value: "Prove a candidate repair in Solari",
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
label: "prove <test>",
|
|
57
|
+
value: "Run discover, investigate, repair, and report",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
label: "report <investigation>",
|
|
61
|
+
value: "Build the portable evidence report",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
label: "bisect --good <rev>",
|
|
65
|
+
value: "Locate the introducing commit in Solari",
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
title: "Explain and prove",
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
const WORKFLOWS = [
|
|
72
|
+
{
|
|
73
|
+
label: "Measure stability",
|
|
74
|
+
value: "flakelab tests/checkout.spec.ts --runs 20",
|
|
75
|
+
},
|
|
76
|
+
{ label: "Triage CI evidence", value: "flakelab analyze ./blob-report" },
|
|
77
|
+
{
|
|
78
|
+
label: "Find a trigger",
|
|
79
|
+
value: "flakelab diagnose tests/checkout.spec.ts --discover",
|
|
80
|
+
},
|
|
81
|
+
{ label: "Prove a fix", value: "flakelab prove tests/checkout.spec.ts" },
|
|
82
|
+
];
|
|
83
|
+
const EXIT_CODES = [
|
|
84
|
+
{ label: "0", value: "No failure observed" },
|
|
85
|
+
{
|
|
86
|
+
label: "1",
|
|
87
|
+
value: "Mixed outcomes, failure in every run, or command error",
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
label: "2",
|
|
91
|
+
value: "Inconclusive scan caused by test or Playwright infrastructure",
|
|
92
|
+
},
|
|
93
|
+
];
|
|
94
|
+
const CREDENTIALS = [
|
|
95
|
+
{ label: "GROQ_API_KEY", value: "investigate, repair, prove" },
|
|
96
|
+
{ label: "SOLARI_API_KEY", value: "repair, bisect, publish, prove" },
|
|
97
|
+
];
|
|
98
|
+
function appendCommands(document) {
|
|
99
|
+
const column = labelColumn(COMMAND_GROUPS.flatMap((group) => group.rows));
|
|
100
|
+
for (const group of COMMAND_GROUPS) {
|
|
101
|
+
document.section(group.title).rows(group.rows, column);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
export function mainHelpText(theme = PLAIN_THEME) {
|
|
105
|
+
const document = new TerminalDocument(theme);
|
|
106
|
+
document.banner(`FlakeLab ${VERSION} - find and prove flaky Playwright tests`);
|
|
107
|
+
document.section("Usage");
|
|
108
|
+
document.command("flakelab <target> [scan options]");
|
|
109
|
+
document.command("flakelab <command> [command options]");
|
|
110
|
+
appendCommands(document);
|
|
111
|
+
document.section("Common workflows").rows(WORKFLOWS);
|
|
112
|
+
document.section("Exit codes").rows(EXIT_CODES);
|
|
113
|
+
document.section("Credentials").rows(CREDENTIALS);
|
|
114
|
+
document.note("Missing keys are requested through hidden, run-once terminal prompts and are never" +
|
|
115
|
+
" passed to Playwright test processes.");
|
|
116
|
+
document.section("More");
|
|
117
|
+
document.command("flakelab <command> --help");
|
|
118
|
+
document.note(DOCUMENTATION);
|
|
119
|
+
return `${document.render()}\n`;
|
|
120
|
+
}
|
|
121
|
+
export function helpText(topic, theme = PLAIN_THEME) {
|
|
122
|
+
return topic ? commandHelpText(topic, theme) : mainHelpText(theme);
|
|
46
123
|
}
|
|
47
124
|
//# sourceMappingURL=cli-help.js.map
|
package/dist/cli-help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-help.js","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"cli-help.js","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
export declare const CLI_OPTION_DEFINITIONS: {
|
|
2
|
+
readonly animationRate: {
|
|
3
|
+
readonly type: "string";
|
|
4
|
+
readonly default: "5";
|
|
5
|
+
};
|
|
6
|
+
readonly artifacts: {
|
|
7
|
+
readonly type: "string";
|
|
8
|
+
readonly default: ".flakelab/runs";
|
|
9
|
+
};
|
|
10
|
+
readonly bad: {
|
|
11
|
+
readonly type: "string";
|
|
12
|
+
readonly default: "HEAD";
|
|
13
|
+
};
|
|
14
|
+
readonly bisectParallelism: {
|
|
15
|
+
readonly type: "string";
|
|
16
|
+
readonly default: "2";
|
|
17
|
+
};
|
|
18
|
+
readonly bisectReport: {
|
|
19
|
+
readonly type: "string";
|
|
20
|
+
readonly default: "flakelab.bisect.json";
|
|
21
|
+
};
|
|
22
|
+
readonly concurrency: {
|
|
23
|
+
readonly type: "string";
|
|
24
|
+
readonly default: "1";
|
|
25
|
+
};
|
|
26
|
+
readonly clockOffsetMs: {
|
|
27
|
+
readonly type: "string";
|
|
28
|
+
readonly default: "3600000";
|
|
29
|
+
};
|
|
30
|
+
readonly cookieName: {
|
|
31
|
+
readonly type: "string";
|
|
32
|
+
};
|
|
33
|
+
readonly fault: {
|
|
34
|
+
readonly type: "string";
|
|
35
|
+
readonly default: "network-delay";
|
|
36
|
+
};
|
|
37
|
+
readonly html: {
|
|
38
|
+
readonly type: "string";
|
|
39
|
+
readonly default: "flakelab.report.html";
|
|
40
|
+
};
|
|
41
|
+
readonly json: {
|
|
42
|
+
readonly type: "boolean";
|
|
43
|
+
readonly default: false;
|
|
44
|
+
};
|
|
45
|
+
readonly jumpAfterMs: {
|
|
46
|
+
readonly type: "string";
|
|
47
|
+
readonly default: "0";
|
|
48
|
+
};
|
|
49
|
+
readonly locale: {
|
|
50
|
+
readonly type: "string";
|
|
51
|
+
readonly default: "fr-FR";
|
|
52
|
+
};
|
|
53
|
+
readonly maxCost: {
|
|
54
|
+
readonly type: "string";
|
|
55
|
+
readonly default: "0.25";
|
|
56
|
+
};
|
|
57
|
+
readonly maxCopies: {
|
|
58
|
+
readonly type: "string";
|
|
59
|
+
readonly default: "4";
|
|
60
|
+
};
|
|
61
|
+
readonly maxDelay: {
|
|
62
|
+
readonly type: "string";
|
|
63
|
+
readonly default: "250";
|
|
64
|
+
};
|
|
65
|
+
readonly discoveryMaxSeconds: {
|
|
66
|
+
readonly type: "string";
|
|
67
|
+
readonly default: "300";
|
|
68
|
+
};
|
|
69
|
+
readonly maxDuplicateBytes: {
|
|
70
|
+
readonly type: "string";
|
|
71
|
+
readonly default: "1024";
|
|
72
|
+
};
|
|
73
|
+
readonly maxHoldMs: {
|
|
74
|
+
readonly type: "string";
|
|
75
|
+
readonly default: "250";
|
|
76
|
+
};
|
|
77
|
+
readonly maxRemoveBytes: {
|
|
78
|
+
readonly type: "string";
|
|
79
|
+
readonly default: "1024";
|
|
80
|
+
};
|
|
81
|
+
readonly maxStallMs: {
|
|
82
|
+
readonly type: "string";
|
|
83
|
+
readonly default: "500";
|
|
84
|
+
};
|
|
85
|
+
readonly maxExperiments: {
|
|
86
|
+
readonly type: "string";
|
|
87
|
+
readonly default: "3";
|
|
88
|
+
};
|
|
89
|
+
readonly maxSeconds: {
|
|
90
|
+
readonly type: "string";
|
|
91
|
+
readonly default: "90";
|
|
92
|
+
};
|
|
93
|
+
readonly maxSteps: {
|
|
94
|
+
readonly type: "string";
|
|
95
|
+
readonly default: "3";
|
|
96
|
+
};
|
|
97
|
+
readonly maxTrials: {
|
|
98
|
+
readonly type: "string";
|
|
99
|
+
readonly default: "12";
|
|
100
|
+
};
|
|
101
|
+
readonly maxWorkers: {
|
|
102
|
+
readonly type: "string";
|
|
103
|
+
readonly default: "4";
|
|
104
|
+
};
|
|
105
|
+
readonly minRate: {
|
|
106
|
+
readonly type: "string";
|
|
107
|
+
readonly default: "0.7";
|
|
108
|
+
};
|
|
109
|
+
readonly model: {
|
|
110
|
+
readonly type: "string";
|
|
111
|
+
readonly default: "qwen/qwen3.8-27b";
|
|
112
|
+
};
|
|
113
|
+
readonly open: {
|
|
114
|
+
readonly type: "boolean";
|
|
115
|
+
readonly default: false;
|
|
116
|
+
};
|
|
117
|
+
readonly output: {
|
|
118
|
+
readonly type: "string";
|
|
119
|
+
readonly default: "flakelab.repro.yaml";
|
|
120
|
+
};
|
|
121
|
+
readonly patch: {
|
|
122
|
+
readonly type: "string";
|
|
123
|
+
readonly default: "candidate.diff";
|
|
124
|
+
};
|
|
125
|
+
readonly pattern: {
|
|
126
|
+
readonly type: "string";
|
|
127
|
+
readonly default: "**/api/checkout";
|
|
128
|
+
};
|
|
129
|
+
readonly proof: {
|
|
130
|
+
readonly type: "string";
|
|
131
|
+
readonly default: "flakelab.proof.json";
|
|
132
|
+
};
|
|
133
|
+
readonly promptCredentials: {
|
|
134
|
+
readonly type: "boolean";
|
|
135
|
+
readonly default: false;
|
|
136
|
+
};
|
|
137
|
+
readonly publish: {
|
|
138
|
+
readonly type: "boolean";
|
|
139
|
+
readonly default: false;
|
|
140
|
+
};
|
|
141
|
+
readonly report: {
|
|
142
|
+
readonly type: "string";
|
|
143
|
+
readonly default: "flakelab.investigation.json";
|
|
144
|
+
};
|
|
145
|
+
readonly reproducer: {
|
|
146
|
+
readonly type: "string";
|
|
147
|
+
readonly default: "flakelab.repro.yaml";
|
|
148
|
+
};
|
|
149
|
+
readonly resourceType: {
|
|
150
|
+
readonly type: "string";
|
|
151
|
+
readonly default: "script";
|
|
152
|
+
};
|
|
153
|
+
readonly runs: {
|
|
154
|
+
readonly type: "string";
|
|
155
|
+
readonly default: "4";
|
|
156
|
+
};
|
|
157
|
+
readonly seed: {
|
|
158
|
+
readonly type: "string";
|
|
159
|
+
readonly default: "1";
|
|
160
|
+
};
|
|
161
|
+
readonly source: {
|
|
162
|
+
readonly type: "string";
|
|
163
|
+
readonly multiple: true;
|
|
164
|
+
readonly default: string[];
|
|
165
|
+
};
|
|
166
|
+
readonly startupEvent: {
|
|
167
|
+
readonly type: "string";
|
|
168
|
+
readonly default: "dom-content-loaded";
|
|
169
|
+
};
|
|
170
|
+
readonly storage: {
|
|
171
|
+
readonly type: "string";
|
|
172
|
+
readonly default: "local-storage";
|
|
173
|
+
};
|
|
174
|
+
readonly storageKey: {
|
|
175
|
+
readonly type: "string";
|
|
176
|
+
};
|
|
177
|
+
readonly timezone: {
|
|
178
|
+
readonly type: "string";
|
|
179
|
+
readonly default: "America/New_York";
|
|
180
|
+
};
|
|
181
|
+
readonly stallAfterMs: {
|
|
182
|
+
readonly type: "string";
|
|
183
|
+
readonly default: "0";
|
|
184
|
+
};
|
|
185
|
+
readonly trials: {
|
|
186
|
+
readonly type: "string";
|
|
187
|
+
readonly default: "4";
|
|
188
|
+
};
|
|
189
|
+
readonly verbose: {
|
|
190
|
+
readonly type: "boolean";
|
|
191
|
+
readonly default: false;
|
|
192
|
+
};
|
|
193
|
+
readonly viewportHeight: {
|
|
194
|
+
readonly type: "string";
|
|
195
|
+
readonly default: "667";
|
|
196
|
+
};
|
|
197
|
+
readonly viewportWidth: {
|
|
198
|
+
readonly type: "string";
|
|
199
|
+
readonly default: "375";
|
|
200
|
+
};
|
|
201
|
+
};
|
|
202
|
+
export declare function requiredOption<T>(value: T | undefined, name: string): T;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export const CLI_OPTION_DEFINITIONS = {
|
|
2
|
+
animationRate: { type: "string", default: "5" },
|
|
3
|
+
artifacts: { type: "string", default: ".flakelab/runs" },
|
|
4
|
+
bad: { type: "string", default: "HEAD" },
|
|
5
|
+
bisectParallelism: { type: "string", default: "2" },
|
|
6
|
+
bisectReport: { type: "string", default: "flakelab.bisect.json" },
|
|
7
|
+
concurrency: { type: "string", default: "1" },
|
|
8
|
+
clockOffsetMs: { type: "string", default: "3600000" },
|
|
9
|
+
cookieName: { type: "string" },
|
|
10
|
+
fault: { type: "string", default: "network-delay" },
|
|
11
|
+
html: { type: "string", default: "flakelab.report.html" },
|
|
12
|
+
json: { type: "boolean", default: false },
|
|
13
|
+
jumpAfterMs: { type: "string", default: "0" },
|
|
14
|
+
locale: { type: "string", default: "fr-FR" },
|
|
15
|
+
maxCost: { type: "string", default: "0.25" },
|
|
16
|
+
maxCopies: { type: "string", default: "4" },
|
|
17
|
+
maxDelay: { type: "string", default: "250" },
|
|
18
|
+
discoveryMaxSeconds: { type: "string", default: "300" },
|
|
19
|
+
maxDuplicateBytes: { type: "string", default: "1024" },
|
|
20
|
+
maxHoldMs: { type: "string", default: "250" },
|
|
21
|
+
maxRemoveBytes: { type: "string", default: "1024" },
|
|
22
|
+
maxStallMs: { type: "string", default: "500" },
|
|
23
|
+
maxExperiments: { type: "string", default: "3" },
|
|
24
|
+
maxSeconds: { type: "string", default: "90" },
|
|
25
|
+
maxSteps: { type: "string", default: "3" },
|
|
26
|
+
maxTrials: { type: "string", default: "12" },
|
|
27
|
+
maxWorkers: { type: "string", default: "4" },
|
|
28
|
+
minRate: { type: "string", default: "0.7" },
|
|
29
|
+
model: { type: "string", default: "qwen/qwen3.8-27b" },
|
|
30
|
+
open: { type: "boolean", default: false },
|
|
31
|
+
output: { type: "string", default: "flakelab.repro.yaml" },
|
|
32
|
+
patch: { type: "string", default: "candidate.diff" },
|
|
33
|
+
pattern: { type: "string", default: "**/api/checkout" },
|
|
34
|
+
proof: { type: "string", default: "flakelab.proof.json" },
|
|
35
|
+
promptCredentials: { type: "boolean", default: false },
|
|
36
|
+
publish: { type: "boolean", default: false },
|
|
37
|
+
report: { type: "string", default: "flakelab.investigation.json" },
|
|
38
|
+
reproducer: { type: "string", default: "flakelab.repro.yaml" },
|
|
39
|
+
resourceType: { type: "string", default: "script" },
|
|
40
|
+
runs: { type: "string", default: "4" },
|
|
41
|
+
seed: { type: "string", default: "1" },
|
|
42
|
+
source: { type: "string", multiple: true, default: [] },
|
|
43
|
+
startupEvent: { type: "string", default: "dom-content-loaded" },
|
|
44
|
+
storage: { type: "string", default: "local-storage" },
|
|
45
|
+
storageKey: { type: "string" },
|
|
46
|
+
timezone: { type: "string", default: "America/New_York" },
|
|
47
|
+
stallAfterMs: { type: "string", default: "0" },
|
|
48
|
+
trials: { type: "string", default: "4" },
|
|
49
|
+
verbose: { type: "boolean", default: false },
|
|
50
|
+
viewportHeight: { type: "string", default: "667" },
|
|
51
|
+
viewportWidth: { type: "string", default: "375" },
|
|
52
|
+
};
|
|
53
|
+
export function requiredOption(value, name) {
|
|
54
|
+
if (value === undefined) {
|
|
55
|
+
throw new Error(`Internal CLI default is missing for --${name}`);
|
|
56
|
+
}
|
|
57
|
+
return value;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=cli-option-definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-option-definitions.js","sourceRoot":"","sources":["../src/cli-option-definitions.ts"],"names":[],"mappings":"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"}
|