@pretorian-worx/runclaudia-cli 0.15.0 → 0.17.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.
- package/dist/index.js +79 -1
- package/dist/index.js.map +1 -1
- package/dist/pr.d.ts +40 -0
- package/dist/pr.js +258 -0
- package/dist/pr.js.map +1 -0
- package/dist/reporters.d.ts +7 -0
- package/dist/reporters.js +51 -21
- package/dist/reporters.js.map +1 -1
- package/dist/slack-format.d.ts +45 -0
- package/dist/slack-format.js +159 -0
- package/dist/slack-format.js.map +1 -0
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -11,6 +11,7 @@ import { formatJson, formatMarkdown } from "./format.js";
|
|
|
11
11
|
import { loadConfig } from "./config.js";
|
|
12
12
|
import { aggregateRatings, formatRatings } from "./ratings.js";
|
|
13
13
|
import { dispatchReporters } from "./reporters.js";
|
|
14
|
+
import { openDraftPr } from "./pr.js";
|
|
14
15
|
const planCmd = defineCommand({
|
|
15
16
|
meta: { name: "plan", description: "Produce a diff-aware test plan" },
|
|
16
17
|
args: {
|
|
@@ -231,10 +232,23 @@ const runCmd = defineCommand({
|
|
|
231
232
|
}
|
|
232
233
|
// Resolve the SHA we just verified so reporters can find the originating PR.
|
|
233
234
|
const headSha = resolveSha(rootDir, args.head);
|
|
235
|
+
const passed = report ? report.failed === 0 : exitCode === 0;
|
|
234
236
|
await dispatchReporters({
|
|
235
237
|
markdown,
|
|
236
238
|
headSha,
|
|
237
|
-
passed
|
|
239
|
+
passed,
|
|
240
|
+
slack: {
|
|
241
|
+
passed,
|
|
242
|
+
target: args.target,
|
|
243
|
+
selectedSpecCount: selection.selected.length,
|
|
244
|
+
selectedTestCount: selection.selectedTestCount,
|
|
245
|
+
passedCount: report?.passed ?? 0,
|
|
246
|
+
failedCount: report?.failed ?? 0,
|
|
247
|
+
skippedCount: report?.skipped,
|
|
248
|
+
flakyCount: report?.flaky,
|
|
249
|
+
durationMs: report?.durationMs,
|
|
250
|
+
failedTests: report?.failedTests,
|
|
251
|
+
},
|
|
238
252
|
}, {
|
|
239
253
|
slackWebhook: args["slack-webhook"],
|
|
240
254
|
disableStepSummary: Boolean(args["no-step-summary"]),
|
|
@@ -278,6 +292,14 @@ const generateCmd = defineCommand({
|
|
|
278
292
|
run: { type: "boolean", description: "After generating, execute each draft against --target via npx playwright test" },
|
|
279
293
|
target: { type: "string", description: "Deployed URL to run generated specs against (required with --run)" },
|
|
280
294
|
"playwright-config": { type: "string", description: "Path to Playwright config file (only used with --run)" },
|
|
295
|
+
pr: {
|
|
296
|
+
type: "boolean",
|
|
297
|
+
description: "After --run, move drafts that PASSED into the team's spec directory and open a draft PR via gh. Requires --run. Uses a deterministic branch (claudia/specs-<sha>) so re-runs update the same PR.",
|
|
298
|
+
},
|
|
299
|
+
"pr-dry-run": {
|
|
300
|
+
type: "boolean",
|
|
301
|
+
description: "Prepare the PR (move files, choose branch) but don't push or call gh.",
|
|
302
|
+
},
|
|
281
303
|
json: { type: "boolean", description: "Emit JSON summary instead of markdown" },
|
|
282
304
|
},
|
|
283
305
|
async run({ args }) {
|
|
@@ -285,6 +307,10 @@ const generateCmd = defineCommand({
|
|
|
285
307
|
process.stderr.write("claudia: --run requires --target <url>\n");
|
|
286
308
|
process.exit(2);
|
|
287
309
|
}
|
|
310
|
+
if (args.pr && !args.run) {
|
|
311
|
+
process.stderr.write("claudia: --pr requires --run (so we know which drafts passed)\n");
|
|
312
|
+
process.exit(2);
|
|
313
|
+
}
|
|
288
314
|
const rootDir = resolve(args.cwd ?? process.cwd());
|
|
289
315
|
let result;
|
|
290
316
|
try {
|
|
@@ -317,8 +343,60 @@ const generateCmd = defineCommand({
|
|
|
317
343
|
else {
|
|
318
344
|
process.stdout.write(formatGenerationMarkdown(result, { base: args.base, head: args.head }) + "\n");
|
|
319
345
|
}
|
|
346
|
+
// Phase B.3: optionally open a draft PR for drafts that passed.
|
|
347
|
+
if (args.pr) {
|
|
348
|
+
const map = loadOrBuildMap({ rootDir });
|
|
349
|
+
const headSha = resolveSha(rootDir, args.head);
|
|
350
|
+
const prResult = openDraftPr({
|
|
351
|
+
rootDir,
|
|
352
|
+
generation: result,
|
|
353
|
+
map,
|
|
354
|
+
headSha,
|
|
355
|
+
dryRun: Boolean(args["pr-dry-run"]),
|
|
356
|
+
});
|
|
357
|
+
process.stdout.write("\n");
|
|
358
|
+
process.stdout.write(formatPrResultMarkdown(prResult) + "\n");
|
|
359
|
+
}
|
|
320
360
|
},
|
|
321
361
|
});
|
|
362
|
+
function formatPrResultMarkdown(r) {
|
|
363
|
+
const lines = ["## claudia — draft PR"];
|
|
364
|
+
switch (r.status) {
|
|
365
|
+
case "no-passing-drafts":
|
|
366
|
+
lines.push("");
|
|
367
|
+
lines.push("**No PR opened** — no drafts passed against prod.");
|
|
368
|
+
break;
|
|
369
|
+
case "dry-run":
|
|
370
|
+
lines.push("");
|
|
371
|
+
lines.push(`**Dry run.** Would have opened a PR for ${r.movedFiles.length} spec(s) on branch \`${r.branchName}\`.`);
|
|
372
|
+
lines.push("");
|
|
373
|
+
lines.push("Files prepared:");
|
|
374
|
+
for (const f of r.movedFiles)
|
|
375
|
+
lines.push(`- \`${f}\``);
|
|
376
|
+
break;
|
|
377
|
+
case "skipped":
|
|
378
|
+
lines.push("");
|
|
379
|
+
lines.push(`**PR not opened** — see notes below.`);
|
|
380
|
+
break;
|
|
381
|
+
case "opened":
|
|
382
|
+
lines.push("");
|
|
383
|
+
lines.push(`**✅ Draft PR opened:** ${r.prUrl}`);
|
|
384
|
+
lines.push("");
|
|
385
|
+
lines.push(`Branch: \`${r.branchName}\``);
|
|
386
|
+
lines.push("");
|
|
387
|
+
lines.push(`Files moved into the team's spec directory:`);
|
|
388
|
+
for (const f of r.movedFiles)
|
|
389
|
+
lines.push(`- \`${f}\``);
|
|
390
|
+
break;
|
|
391
|
+
}
|
|
392
|
+
if (r.notes.length > 0) {
|
|
393
|
+
lines.push("");
|
|
394
|
+
lines.push("### Notes");
|
|
395
|
+
for (const n of r.notes)
|
|
396
|
+
lines.push(`- ${n}`);
|
|
397
|
+
}
|
|
398
|
+
return lines.join("\n");
|
|
399
|
+
}
|
|
322
400
|
/**
|
|
323
401
|
* Execute a single generated spec via `npx playwright test <file>` against the
|
|
324
402
|
* given target URL. Returns the post-run outcome. Reuses the same JSON-reporter
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/pr.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { AppMap, GenerationResult } from "@pretorian-worx/runclaudia-core";
|
|
2
|
+
export interface OpenPrOptions {
|
|
3
|
+
rootDir: string;
|
|
4
|
+
/** Generation result. We only PR specs whose runOutcome.status === "passed". */
|
|
5
|
+
generation: GenerationResult;
|
|
6
|
+
/** Map of the indexed repo, used to pick the team's existing spec directory. */
|
|
7
|
+
map: AppMap;
|
|
8
|
+
/** SHA the deploy verified — used in branch name and PR body. */
|
|
9
|
+
headSha: string;
|
|
10
|
+
/** Override the target spec directory; otherwise inferred from map.specs. */
|
|
11
|
+
targetDir?: string;
|
|
12
|
+
/** Override the upstream branch name; otherwise `claudia/specs-<head7>`. */
|
|
13
|
+
branchName?: string;
|
|
14
|
+
/** Dry-run mode: prepare files + print the commands but don't push or open the PR. */
|
|
15
|
+
dryRun?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface PrResult {
|
|
18
|
+
status: "no-passing-drafts" | "opened" | "dry-run" | "skipped";
|
|
19
|
+
/** Files (relative to rootDir) that were moved into the team's spec dir. */
|
|
20
|
+
movedFiles: string[];
|
|
21
|
+
branchName?: string;
|
|
22
|
+
prUrl?: string;
|
|
23
|
+
/** Whatever stderr-worthy message we want to surface to the user. */
|
|
24
|
+
notes: string[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Phase B.3: take the passing drafts from a generation run, move them into the
|
|
28
|
+
* team's spec directory, push a branch, and open a draft PR.
|
|
29
|
+
*
|
|
30
|
+
* Intentionally conservative:
|
|
31
|
+
* - Only acts on drafts whose runOutcome.status === "passed".
|
|
32
|
+
* - Only moves files we wrote in this run (the GeneratedSpec.filePath entries).
|
|
33
|
+
* - Uses a deterministic branch name so re-runs on the same SHA update the
|
|
34
|
+
* same branch (force-with-lease, not force).
|
|
35
|
+
* - Stages ONLY the new spec files, not whatever else is dirty in the tree.
|
|
36
|
+
*/
|
|
37
|
+
export declare function openDraftPr(opts: OpenPrOptions): PrResult;
|
|
38
|
+
export declare function detectSpecDir(map: AppMap): string;
|
|
39
|
+
/** Local helper to read a file relative to rootDir (used in some tests). */
|
|
40
|
+
export declare function readGeneratedSpec(rootDir: string, rel: string): string;
|
package/dist/pr.js
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
import { mkdirSync, readFileSync, renameSync, rmSync, writeFileSync, } from "node:fs";
|
|
3
|
+
import { dirname, join, resolve } from "node:path";
|
|
4
|
+
/**
|
|
5
|
+
* Phase B.3: take the passing drafts from a generation run, move them into the
|
|
6
|
+
* team's spec directory, push a branch, and open a draft PR.
|
|
7
|
+
*
|
|
8
|
+
* Intentionally conservative:
|
|
9
|
+
* - Only acts on drafts whose runOutcome.status === "passed".
|
|
10
|
+
* - Only moves files we wrote in this run (the GeneratedSpec.filePath entries).
|
|
11
|
+
* - Uses a deterministic branch name so re-runs on the same SHA update the
|
|
12
|
+
* same branch (force-with-lease, not force).
|
|
13
|
+
* - Stages ONLY the new spec files, not whatever else is dirty in the tree.
|
|
14
|
+
*/
|
|
15
|
+
export function openDraftPr(opts) {
|
|
16
|
+
const passing = opts.generation.generated.filter((s) => s.runOutcome?.status === "passed");
|
|
17
|
+
if (passing.length === 0) {
|
|
18
|
+
return {
|
|
19
|
+
status: "no-passing-drafts",
|
|
20
|
+
movedFiles: [],
|
|
21
|
+
notes: ["No drafts passed against prod — nothing to PR."],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
const rootDir = resolve(opts.rootDir);
|
|
25
|
+
const notes = [];
|
|
26
|
+
const targetDir = opts.targetDir ?? detectSpecDir(opts.map);
|
|
27
|
+
mkdirSync(join(rootDir, targetDir), { recursive: true });
|
|
28
|
+
const branchName = opts.branchName ?? `claudia/specs-${opts.headSha.slice(0, 7)}`;
|
|
29
|
+
const movedFiles = [];
|
|
30
|
+
// Move passing drafts from .claudia/generated/ into the team's spec dir.
|
|
31
|
+
// Files have already been syntax-checked by Playwright (they ran) so this is
|
|
32
|
+
// just a copy + delete. Use rename for atomicity within the same filesystem.
|
|
33
|
+
for (const spec of passing) {
|
|
34
|
+
const filename = spec.filePath.split("/").pop();
|
|
35
|
+
const targetRel = join(targetDir, filename);
|
|
36
|
+
const targetAbs = join(rootDir, targetRel);
|
|
37
|
+
renameSync(spec.filePath, targetAbs);
|
|
38
|
+
movedFiles.push(targetRel);
|
|
39
|
+
}
|
|
40
|
+
if (opts.dryRun) {
|
|
41
|
+
return {
|
|
42
|
+
status: "dry-run",
|
|
43
|
+
movedFiles,
|
|
44
|
+
branchName,
|
|
45
|
+
notes: [
|
|
46
|
+
`Would create branch '${branchName}'`,
|
|
47
|
+
`Would commit ${movedFiles.length} file(s) and push`,
|
|
48
|
+
`Would open a draft PR via gh`,
|
|
49
|
+
],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// Detect default branch for the PR base. Falls back to "main" if anything
|
|
53
|
+
// about the remote lookup fails.
|
|
54
|
+
let baseBranch = "main";
|
|
55
|
+
try {
|
|
56
|
+
const head = git(["remote", "show", "origin"], rootDir);
|
|
57
|
+
const match = head.match(/HEAD branch: (\S+)/);
|
|
58
|
+
if (match)
|
|
59
|
+
baseBranch = match[1];
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
notes.push("Could not detect default branch from origin; defaulting to 'main'.");
|
|
63
|
+
}
|
|
64
|
+
// Branch creation: prefer creating from origin/<base> so the PR diff is
|
|
65
|
+
// strictly the new test files, not the whole deploy diff. If the local
|
|
66
|
+
// branch already exists (re-run case), reset it to origin/<base> first.
|
|
67
|
+
try {
|
|
68
|
+
git(["fetch", "origin", baseBranch, "--quiet"], rootDir);
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
notes.push(`git fetch failed: ${msg(err)} — branch will be cut from local HEAD.`);
|
|
72
|
+
}
|
|
73
|
+
const branchExistsLocally = (() => {
|
|
74
|
+
try {
|
|
75
|
+
git(["rev-parse", "--verify", `refs/heads/${branchName}`], rootDir);
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
})();
|
|
82
|
+
if (branchExistsLocally) {
|
|
83
|
+
git(["checkout", "-B", branchName, `origin/${baseBranch}`], rootDir);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
git(["checkout", "-b", branchName, `origin/${baseBranch}`], rootDir);
|
|
87
|
+
}
|
|
88
|
+
for (const rel of movedFiles) {
|
|
89
|
+
git(["add", rel], rootDir);
|
|
90
|
+
}
|
|
91
|
+
const commitMsg = `test: claudia-generated specs for ${opts.headSha.slice(0, 7)}\n\n${movedFiles
|
|
92
|
+
.map((f) => `- ${f}`)
|
|
93
|
+
.join("\n")}\n\nGenerated specs all passed against the deployed production URL\nbefore this PR was opened.`;
|
|
94
|
+
try {
|
|
95
|
+
git(["commit", "--message", commitMsg], rootDir);
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
// Most common cause: the move left the tree identical to what's already on
|
|
99
|
+
// origin/<base> (e.g. the workflow re-ran and the previous run already
|
|
100
|
+
// landed). Surface clearly rather than crash.
|
|
101
|
+
notes.push(`git commit failed: ${msg(err)}. Nothing new to commit — skipping.`);
|
|
102
|
+
return { status: "skipped", movedFiles, branchName, notes };
|
|
103
|
+
}
|
|
104
|
+
try {
|
|
105
|
+
git(["push", "--force-with-lease", "origin", branchName, "--quiet"], rootDir);
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
notes.push(`git push failed: ${msg(err)}`);
|
|
109
|
+
return { status: "skipped", movedFiles, branchName, notes };
|
|
110
|
+
}
|
|
111
|
+
// Open or update the PR via gh. We make it a draft so the team always
|
|
112
|
+
// reviews before merging — claudia is not authoritative on test quality.
|
|
113
|
+
const body = buildPrBody(passing, opts.headSha, movedFiles);
|
|
114
|
+
let prUrl;
|
|
115
|
+
try {
|
|
116
|
+
prUrl = ghCreateOrUpdatePr({
|
|
117
|
+
rootDir,
|
|
118
|
+
branchName,
|
|
119
|
+
base: baseBranch,
|
|
120
|
+
title: `test: claudia-generated specs for ${opts.headSha.slice(0, 7)}`,
|
|
121
|
+
body,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
notes.push(`gh pr create/edit failed: ${msg(err)}`);
|
|
126
|
+
return { status: "skipped", movedFiles, branchName, notes };
|
|
127
|
+
}
|
|
128
|
+
return { status: "opened", movedFiles, branchName, prUrl, notes };
|
|
129
|
+
}
|
|
130
|
+
export function detectSpecDir(map) {
|
|
131
|
+
const counts = new Map();
|
|
132
|
+
for (const s of map.specs ?? []) {
|
|
133
|
+
const dir = dirname(s.file);
|
|
134
|
+
if (!dir || dir === ".")
|
|
135
|
+
continue;
|
|
136
|
+
counts.set(dir, (counts.get(dir) ?? 0) + 1);
|
|
137
|
+
}
|
|
138
|
+
if (counts.size === 0)
|
|
139
|
+
return "e2e";
|
|
140
|
+
// Highest count wins; tie-break by lexicographic order for determinism.
|
|
141
|
+
const sorted = [...counts.entries()].sort((a, b) => (b[1] - a[1]) || a[0].localeCompare(b[0]));
|
|
142
|
+
return sorted[0][0];
|
|
143
|
+
}
|
|
144
|
+
function buildPrBody(passing, headSha, movedFiles) {
|
|
145
|
+
const lines = [];
|
|
146
|
+
lines.push(`Automated test coverage for the flows changed in \`${headSha.slice(0, 7)}\`. Every spec in this PR:`);
|
|
147
|
+
lines.push("");
|
|
148
|
+
lines.push("- was drafted by claudia from the team's existing spec style");
|
|
149
|
+
lines.push("- was executed against the deployed production URL");
|
|
150
|
+
lines.push("- **passed** before this PR was opened");
|
|
151
|
+
lines.push("");
|
|
152
|
+
lines.push("Treat this as a starting point: review, refactor to use your usual helpers if you prefer (claudia generates self-contained specs), and merge when happy.");
|
|
153
|
+
lines.push("");
|
|
154
|
+
lines.push("## Drafted specs");
|
|
155
|
+
for (let i = 0; i < passing.length; i++) {
|
|
156
|
+
const spec = passing[i];
|
|
157
|
+
const movedTo = movedFiles[i];
|
|
158
|
+
lines.push("");
|
|
159
|
+
lines.push(`### \`${movedTo}\` — covers \`${spec.flow}\``);
|
|
160
|
+
lines.push("");
|
|
161
|
+
lines.push(spec.reasoning);
|
|
162
|
+
if (spec.runOutcome?.status === "passed") {
|
|
163
|
+
lines.push("");
|
|
164
|
+
lines.push(`Run time: ${(spec.runOutcome.durationMs / 1000).toFixed(1)}s against prod.`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
lines.push("");
|
|
168
|
+
lines.push("---");
|
|
169
|
+
lines.push("");
|
|
170
|
+
lines.push(`<sub>Generated by [claudia](https://github.com/pretorian-worx/runclaudia). If a draft looks wrong, delete it — claudia will re-draft on the next deploy that touches the same uncovered route.</sub>`);
|
|
171
|
+
return lines.join("\n");
|
|
172
|
+
}
|
|
173
|
+
function ghCreateOrUpdatePr(args) {
|
|
174
|
+
const repo = detectRepo(args.rootDir);
|
|
175
|
+
if (!repo)
|
|
176
|
+
throw new Error("Could not detect GitHub repo from origin remote");
|
|
177
|
+
// Check if a PR already exists for this branch (re-run case).
|
|
178
|
+
let existingUrl = "";
|
|
179
|
+
try {
|
|
180
|
+
existingUrl = execGh(["pr", "list", "-R", repo, "--head", args.branchName, "--state", "open", "--json", "url", "--jq", "[.[] | .url] | first"], args.rootDir).trim();
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
// gh failures here are usually "no PRs found" rendered as empty — treat as none.
|
|
184
|
+
}
|
|
185
|
+
if (existingUrl && existingUrl !== "null") {
|
|
186
|
+
// Update the body on the existing PR.
|
|
187
|
+
const tmp = join(args.rootDir, ".claudia", "pr-body.tmp.md");
|
|
188
|
+
mkdirSync(dirname(tmp), { recursive: true });
|
|
189
|
+
writeFileSync(tmp, args.body, "utf8");
|
|
190
|
+
try {
|
|
191
|
+
execGh(["pr", "edit", existingUrl, "--body-file", tmp], args.rootDir);
|
|
192
|
+
}
|
|
193
|
+
finally {
|
|
194
|
+
try {
|
|
195
|
+
rmSync(tmp);
|
|
196
|
+
}
|
|
197
|
+
catch { /* best effort */ }
|
|
198
|
+
}
|
|
199
|
+
return existingUrl;
|
|
200
|
+
}
|
|
201
|
+
// Create a new draft PR.
|
|
202
|
+
const tmp = join(args.rootDir, ".claudia", "pr-body.tmp.md");
|
|
203
|
+
mkdirSync(dirname(tmp), { recursive: true });
|
|
204
|
+
writeFileSync(tmp, args.body, "utf8");
|
|
205
|
+
try {
|
|
206
|
+
const out = execGh([
|
|
207
|
+
"pr",
|
|
208
|
+
"create",
|
|
209
|
+
"-R",
|
|
210
|
+
repo,
|
|
211
|
+
"--draft",
|
|
212
|
+
"--base",
|
|
213
|
+
args.base,
|
|
214
|
+
"--head",
|
|
215
|
+
args.branchName,
|
|
216
|
+
"--title",
|
|
217
|
+
args.title,
|
|
218
|
+
"--body-file",
|
|
219
|
+
tmp,
|
|
220
|
+
], args.rootDir);
|
|
221
|
+
// gh prints the PR URL on its own line.
|
|
222
|
+
const url = out.split("\n").map((s) => s.trim()).find((s) => s.startsWith("https://"));
|
|
223
|
+
return url ?? out.trim();
|
|
224
|
+
}
|
|
225
|
+
finally {
|
|
226
|
+
try {
|
|
227
|
+
rmSync(tmp);
|
|
228
|
+
}
|
|
229
|
+
catch { /* best effort */ }
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
function detectRepo(rootDir) {
|
|
233
|
+
try {
|
|
234
|
+
const out = execFileSync("gh", ["repo", "view", "--json", "nameWithOwner", "--jq", ".nameWithOwner"], {
|
|
235
|
+
cwd: rootDir,
|
|
236
|
+
encoding: "utf8",
|
|
237
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
238
|
+
});
|
|
239
|
+
return out.trim() || null;
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
function git(args, cwd) {
|
|
246
|
+
return execFileSync("git", args, { cwd, encoding: "utf8", maxBuffer: 16 * 1024 * 1024 });
|
|
247
|
+
}
|
|
248
|
+
function execGh(args, cwd) {
|
|
249
|
+
return execFileSync("gh", args, { cwd, encoding: "utf8", maxBuffer: 16 * 1024 * 1024 });
|
|
250
|
+
}
|
|
251
|
+
function msg(err) {
|
|
252
|
+
return err instanceof Error ? err.message : String(err);
|
|
253
|
+
}
|
|
254
|
+
/** Local helper to read a file relative to rootDir (used in some tests). */
|
|
255
|
+
export function readGeneratedSpec(rootDir, rel) {
|
|
256
|
+
return readFileSync(join(rootDir, rel), "utf8");
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=pr.js.map
|
package/dist/pr.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr.js","sourceRoot":"","sources":["../src/pr.ts"],"names":[],"mappings":"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"}
|
package/dist/reporters.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type SlackPayloadInput } from "./slack-format.js";
|
|
1
2
|
export interface ReportContext {
|
|
2
3
|
/** Pre-rendered markdown summary of the verification run. */
|
|
3
4
|
markdown: string;
|
|
@@ -7,6 +8,12 @@ export interface ReportContext {
|
|
|
7
8
|
passed: boolean;
|
|
8
9
|
/** Repo identifier "owner/name". Auto-detected from GITHUB_REPOSITORY when not set. */
|
|
9
10
|
repo?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Structured run data used to build the Slack Block Kit payload. When
|
|
13
|
+
* omitted, Slack receives a plain-markdown text post (legacy behavior).
|
|
14
|
+
* Step-summary + PR back-comment continue to use {@link markdown} unchanged.
|
|
15
|
+
*/
|
|
16
|
+
slack?: Omit<SlackPayloadInput, "repo" | "headSha" | "prUrl" | "commitUrl" | "runUrl" | "branch">;
|
|
10
17
|
}
|
|
11
18
|
export interface ReporterOptions {
|
|
12
19
|
slackWebhook?: string;
|
package/dist/reporters.js
CHANGED
|
@@ -1,11 +1,32 @@
|
|
|
1
1
|
import { appendFileSync } from "node:fs";
|
|
2
2
|
import { execFileSync } from "node:child_process";
|
|
3
|
+
import { buildSlackPayload } from "./slack-format.js";
|
|
3
4
|
const STICKY_MARKER = "<!-- claudia:verify -->";
|
|
4
5
|
export async function dispatchReporters(ctx, opts = {}) {
|
|
6
|
+
// Look up the PR once and share it between the PR-comment sink (needs the
|
|
7
|
+
// number) and the Slack sink (wants a "View PR" button URL). Avoids two
|
|
8
|
+
// `gh api` round-trips and keeps the two sinks consistent on which PR they
|
|
9
|
+
// think this SHA belongs to.
|
|
10
|
+
const repo = ctx.repo ?? process.env.GITHUB_REPOSITORY;
|
|
11
|
+
const slackEnabled = Boolean(opts.slackWebhook ?? process.env.CLAUDIA_SLACK_WEBHOOK);
|
|
12
|
+
const prCommentEnabled = !opts.disablePrComment;
|
|
13
|
+
// Only look up the PR if at least one sink will use it. Avoids a `gh api`
|
|
14
|
+
// call (and the test surface that goes with it) when the user has fully
|
|
15
|
+
// opted out of PR-touching reporters.
|
|
16
|
+
let prNumber = null;
|
|
17
|
+
if (repo && ctx.headSha && (prCommentEnabled || slackEnabled)) {
|
|
18
|
+
try {
|
|
19
|
+
prNumber = findPullRequestForSha(repo, ctx.headSha);
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
warn("pr-lookup", err);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const prUrl = repo && prNumber ? `${process.env.GITHUB_SERVER_URL || "https://github.com"}/${repo}/pull/${prNumber}` : undefined;
|
|
5
26
|
await Promise.allSettled([
|
|
6
27
|
writeStepSummary(ctx, opts),
|
|
7
|
-
backCommentOnMergedPr(ctx, opts),
|
|
8
|
-
postToSlack(ctx, opts),
|
|
28
|
+
backCommentOnMergedPr(ctx, opts, repo, prNumber),
|
|
29
|
+
postToSlack(ctx, opts, prUrl),
|
|
9
30
|
]);
|
|
10
31
|
}
|
|
11
32
|
// ---------- 1. $GITHUB_STEP_SUMMARY ----------
|
|
@@ -23,23 +44,10 @@ async function writeStepSummary(ctx, opts) {
|
|
|
23
44
|
}
|
|
24
45
|
}
|
|
25
46
|
// ---------- 2. PR back-comment ----------
|
|
26
|
-
async function backCommentOnMergedPr(ctx, opts) {
|
|
47
|
+
async function backCommentOnMergedPr(ctx, opts, repo, prNumber) {
|
|
27
48
|
if (opts.disablePrComment)
|
|
28
49
|
return;
|
|
29
|
-
|
|
30
|
-
if (!repo)
|
|
31
|
-
return;
|
|
32
|
-
if (!ctx.headSha)
|
|
33
|
-
return;
|
|
34
|
-
let prNumber;
|
|
35
|
-
try {
|
|
36
|
-
prNumber = findPullRequestForSha(repo, ctx.headSha);
|
|
37
|
-
}
|
|
38
|
-
catch (err) {
|
|
39
|
-
warn("pr-lookup", err);
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
if (!prNumber)
|
|
50
|
+
if (!repo || !prNumber)
|
|
43
51
|
return;
|
|
44
52
|
const body = `${STICKY_MARKER}\n${ctx.markdown}`;
|
|
45
53
|
try {
|
|
@@ -99,14 +107,22 @@ function upsertStickyComment(repo, prNumber, body) {
|
|
|
99
107
|
}
|
|
100
108
|
}
|
|
101
109
|
// ---------- 3. Slack ----------
|
|
102
|
-
async function postToSlack(ctx, opts) {
|
|
110
|
+
async function postToSlack(ctx, opts, prUrl) {
|
|
103
111
|
const url = opts.slackWebhook ?? process.env.CLAUDIA_SLACK_WEBHOOK;
|
|
104
112
|
if (!url)
|
|
105
113
|
return;
|
|
106
114
|
try {
|
|
107
|
-
const payload =
|
|
108
|
-
|
|
109
|
-
|
|
115
|
+
const payload = ctx.slack
|
|
116
|
+
? buildSlackPayload({
|
|
117
|
+
...ctx.slack,
|
|
118
|
+
repo: ctx.repo ?? process.env.GITHUB_REPOSITORY,
|
|
119
|
+
headSha: ctx.headSha,
|
|
120
|
+
commitUrl: commitUrlFor(ctx.repo ?? process.env.GITHUB_REPOSITORY, ctx.headSha),
|
|
121
|
+
runUrl: githubActionsRunUrl(),
|
|
122
|
+
branch: process.env.GITHUB_REF_NAME || undefined,
|
|
123
|
+
prUrl,
|
|
124
|
+
})
|
|
125
|
+
: { text: ctx.markdown };
|
|
110
126
|
const res = await fetch(url, {
|
|
111
127
|
method: "POST",
|
|
112
128
|
headers: { "Content-Type": "application/json" },
|
|
@@ -120,6 +136,20 @@ async function postToSlack(ctx, opts) {
|
|
|
120
136
|
warn("slack", err);
|
|
121
137
|
}
|
|
122
138
|
}
|
|
139
|
+
function commitUrlFor(repo, sha) {
|
|
140
|
+
if (!repo || !sha)
|
|
141
|
+
return undefined;
|
|
142
|
+
const server = process.env.GITHUB_SERVER_URL || "https://github.com";
|
|
143
|
+
return `${server}/${repo}/commit/${sha}`;
|
|
144
|
+
}
|
|
145
|
+
function githubActionsRunUrl() {
|
|
146
|
+
const server = process.env.GITHUB_SERVER_URL;
|
|
147
|
+
const repo = process.env.GITHUB_REPOSITORY;
|
|
148
|
+
const runId = process.env.GITHUB_RUN_ID;
|
|
149
|
+
if (!server || !repo || !runId)
|
|
150
|
+
return undefined;
|
|
151
|
+
return `${server}/${repo}/actions/runs/${runId}`;
|
|
152
|
+
}
|
|
123
153
|
function warn(label, err) {
|
|
124
154
|
const msg = err instanceof Error ? err.message : String(err);
|
|
125
155
|
process.stderr.write(`claudia: reporter[${label}] failed: ${msg}\n`);
|
package/dist/reporters.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporters.js","sourceRoot":"","sources":["../src/reporters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"reporters.js","sourceRoot":"","sources":["../src/reporters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack Block Kit payload builder for the post-deploy verification report.
|
|
3
|
+
*
|
|
4
|
+
* Pure function: takes structured run data, returns a payload object suitable
|
|
5
|
+
* for POSTing to an incoming-webhook URL. The `text` field is a plain-text
|
|
6
|
+
* fallback used by Slack for notifications and clients that don't render
|
|
7
|
+
* blocks; `blocks` is the structured rendering.
|
|
8
|
+
*
|
|
9
|
+
* Targeted at the "deploy-verified" Slack message from ROADMAP.md §Mission
|
|
10
|
+
* Complete — verdict header, repo/target context line, counts, failure
|
|
11
|
+
* snippets, and links back to the workflow run + PR.
|
|
12
|
+
*/
|
|
13
|
+
export interface SlackFailedTest {
|
|
14
|
+
file: string;
|
|
15
|
+
title: string;
|
|
16
|
+
error: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SlackPayloadInput {
|
|
19
|
+
passed: boolean;
|
|
20
|
+
repo?: string;
|
|
21
|
+
target?: string;
|
|
22
|
+
headSha?: string;
|
|
23
|
+
branch?: string;
|
|
24
|
+
selectedSpecCount?: number;
|
|
25
|
+
selectedTestCount?: number;
|
|
26
|
+
generatedSpecCount?: number;
|
|
27
|
+
passedCount: number;
|
|
28
|
+
failedCount: number;
|
|
29
|
+
skippedCount?: number;
|
|
30
|
+
flakyCount?: number;
|
|
31
|
+
durationMs?: number;
|
|
32
|
+
failedTests?: SlackFailedTest[];
|
|
33
|
+
runUrl?: string;
|
|
34
|
+
prUrl?: string;
|
|
35
|
+
commitUrl?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface SlackBlock {
|
|
38
|
+
type: string;
|
|
39
|
+
[key: string]: unknown;
|
|
40
|
+
}
|
|
41
|
+
export interface SlackPayload {
|
|
42
|
+
text: string;
|
|
43
|
+
blocks: SlackBlock[];
|
|
44
|
+
}
|
|
45
|
+
export declare function buildSlackPayload(input: SlackPayloadInput): SlackPayload;
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack Block Kit payload builder for the post-deploy verification report.
|
|
3
|
+
*
|
|
4
|
+
* Pure function: takes structured run data, returns a payload object suitable
|
|
5
|
+
* for POSTing to an incoming-webhook URL. The `text` field is a plain-text
|
|
6
|
+
* fallback used by Slack for notifications and clients that don't render
|
|
7
|
+
* blocks; `blocks` is the structured rendering.
|
|
8
|
+
*
|
|
9
|
+
* Targeted at the "deploy-verified" Slack message from ROADMAP.md §Mission
|
|
10
|
+
* Complete — verdict header, repo/target context line, counts, failure
|
|
11
|
+
* snippets, and links back to the workflow run + PR.
|
|
12
|
+
*/
|
|
13
|
+
const MAX_FAILURE_BLOCKS = 3;
|
|
14
|
+
const MAX_ERROR_CHARS = 240;
|
|
15
|
+
export function buildSlackPayload(input) {
|
|
16
|
+
const emoji = input.passed ? ":white_check_mark:" : ":x:";
|
|
17
|
+
const verdictWord = input.passed ? "deploy-verified" : "deploy-failed";
|
|
18
|
+
const title = `${emoji} claudia: ${verdictWord}`;
|
|
19
|
+
const blocks = [
|
|
20
|
+
{
|
|
21
|
+
type: "header",
|
|
22
|
+
text: { type: "plain_text", text: title, emoji: true },
|
|
23
|
+
},
|
|
24
|
+
];
|
|
25
|
+
const contextParts = buildContextParts(input);
|
|
26
|
+
if (contextParts.length > 0) {
|
|
27
|
+
blocks.push({
|
|
28
|
+
type: "context",
|
|
29
|
+
elements: [{ type: "mrkdwn", text: contextParts.join(" · ") }],
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
blocks.push({
|
|
33
|
+
type: "section",
|
|
34
|
+
fields: [
|
|
35
|
+
{
|
|
36
|
+
type: "mrkdwn",
|
|
37
|
+
text: `*Flows tested*\n${formatFlowsTested(input)}`,
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
type: "mrkdwn",
|
|
41
|
+
text: `*Result*\n${formatResultLine(input)}`,
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
});
|
|
45
|
+
const failureBlocks = buildFailureBlocks(input.failedTests);
|
|
46
|
+
if (failureBlocks.length > 0) {
|
|
47
|
+
blocks.push({ type: "divider" });
|
|
48
|
+
blocks.push(...failureBlocks);
|
|
49
|
+
}
|
|
50
|
+
const actions = buildActionElements(input);
|
|
51
|
+
if (actions.length > 0) {
|
|
52
|
+
blocks.push({ type: "actions", elements: actions });
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
text: buildFallbackText(input, title),
|
|
56
|
+
blocks,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function buildContextParts(input) {
|
|
60
|
+
const parts = [];
|
|
61
|
+
if (input.repo)
|
|
62
|
+
parts.push(`*${input.repo}*`);
|
|
63
|
+
if (input.target)
|
|
64
|
+
parts.push(`<${input.target}|${stripScheme(input.target)}>`);
|
|
65
|
+
if (input.headSha) {
|
|
66
|
+
const short = input.headSha.slice(0, 7);
|
|
67
|
+
parts.push(input.commitUrl ? `<${input.commitUrl}|\`${short}\`>` : `\`${short}\``);
|
|
68
|
+
}
|
|
69
|
+
if (input.branch)
|
|
70
|
+
parts.push(`branch \`${input.branch}\``);
|
|
71
|
+
return parts;
|
|
72
|
+
}
|
|
73
|
+
function formatFlowsTested(input) {
|
|
74
|
+
const totalRun = input.passedCount + input.failedCount;
|
|
75
|
+
const detail = [];
|
|
76
|
+
if (input.selectedSpecCount !== undefined && input.selectedSpecCount > 0) {
|
|
77
|
+
const tests = input.selectedTestCount ?? 0;
|
|
78
|
+
detail.push(`${input.selectedSpecCount} spec${pl(input.selectedSpecCount)} from suite${tests ? ` (${tests} test${pl(tests)})` : ""}`);
|
|
79
|
+
}
|
|
80
|
+
if (input.generatedSpecCount !== undefined && input.generatedSpecCount > 0) {
|
|
81
|
+
detail.push(`${input.generatedSpecCount} generated`);
|
|
82
|
+
}
|
|
83
|
+
const detailStr = detail.length > 0 ? ` — ${detail.join(", ")}` : "";
|
|
84
|
+
return `${totalRun}${detailStr}`;
|
|
85
|
+
}
|
|
86
|
+
function formatResultLine(input) {
|
|
87
|
+
const parts = [];
|
|
88
|
+
parts.push(`${input.passedCount} passed`);
|
|
89
|
+
parts.push(`${input.failedCount} failed`);
|
|
90
|
+
if (input.flakyCount)
|
|
91
|
+
parts.push(`${input.flakyCount} flaky`);
|
|
92
|
+
if (input.skippedCount)
|
|
93
|
+
parts.push(`${input.skippedCount} skipped`);
|
|
94
|
+
if (input.durationMs && input.durationMs > 0) {
|
|
95
|
+
parts.push(`${(input.durationMs / 1000).toFixed(1)}s`);
|
|
96
|
+
}
|
|
97
|
+
return parts.join(" · ");
|
|
98
|
+
}
|
|
99
|
+
function buildFailureBlocks(failed) {
|
|
100
|
+
if (!failed || failed.length === 0)
|
|
101
|
+
return [];
|
|
102
|
+
const shown = failed.slice(0, MAX_FAILURE_BLOCKS);
|
|
103
|
+
const remaining = failed.length - shown.length;
|
|
104
|
+
const blocks = shown.map((f) => ({
|
|
105
|
+
type: "section",
|
|
106
|
+
text: {
|
|
107
|
+
type: "mrkdwn",
|
|
108
|
+
text: `*${escapeMrkdwn(f.title)}*\n\`${escapeMrkdwn(f.file)}\`\n\`\`\`${truncate(f.error, MAX_ERROR_CHARS)}\`\`\``,
|
|
109
|
+
},
|
|
110
|
+
}));
|
|
111
|
+
if (remaining > 0) {
|
|
112
|
+
blocks.push({
|
|
113
|
+
type: "context",
|
|
114
|
+
elements: [
|
|
115
|
+
{ type: "mrkdwn", text: `…and ${remaining} more failure${pl(remaining)} — see the workflow run for the full report.` },
|
|
116
|
+
],
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
return blocks;
|
|
120
|
+
}
|
|
121
|
+
function buildActionElements(input) {
|
|
122
|
+
const out = [];
|
|
123
|
+
if (input.runUrl) {
|
|
124
|
+
out.push({
|
|
125
|
+
type: "button",
|
|
126
|
+
text: { type: "plain_text", text: "View run", emoji: false },
|
|
127
|
+
url: input.runUrl,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
if (input.prUrl) {
|
|
131
|
+
out.push({
|
|
132
|
+
type: "button",
|
|
133
|
+
text: { type: "plain_text", text: "View PR", emoji: false },
|
|
134
|
+
url: input.prUrl,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
return out;
|
|
138
|
+
}
|
|
139
|
+
function buildFallbackText(input, title) {
|
|
140
|
+
const counts = `${input.passedCount} passed, ${input.failedCount} failed`;
|
|
141
|
+
const where = input.repo ? ` — ${input.repo}` : "";
|
|
142
|
+
return `${title}${where}: ${counts}`;
|
|
143
|
+
}
|
|
144
|
+
function stripScheme(url) {
|
|
145
|
+
return url.replace(/^https?:\/\//, "").replace(/\/$/, "");
|
|
146
|
+
}
|
|
147
|
+
function pl(n) {
|
|
148
|
+
return n === 1 ? "" : "s";
|
|
149
|
+
}
|
|
150
|
+
function truncate(s, n) {
|
|
151
|
+
const flat = s.replace(/```/g, "ʼʼʼ").trim();
|
|
152
|
+
if (flat.length <= n)
|
|
153
|
+
return flat;
|
|
154
|
+
return flat.slice(0, n - 1) + "…";
|
|
155
|
+
}
|
|
156
|
+
function escapeMrkdwn(s) {
|
|
157
|
+
return s.replace(/[<>&]/g, (c) => ({ "<": "<", ">": ">", "&": "&" }[c] ?? c));
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=slack-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-format.js","sourceRoot":"","sources":["../src/slack-format.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pretorian-worx/runclaudia-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Diff-aware post-deploy test agent CLI — picks a relevant Playwright subset for a diff and runs it against the deployed prod artifact, with reporting to GitHub Actions, the merged PR, and Slack.",
|
|
6
6
|
"keywords": [
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"citty": "^0.1.6",
|
|
41
|
-
"@pretorian-worx/runclaudia-core": "^0.
|
|
41
|
+
"@pretorian-worx/runclaudia-core": "^0.17.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/node": "^22.0.0",
|