@ivorycanvas/qamap 0.3.2 → 0.3.4
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/CHANGELOG.md +56 -0
- package/README.md +44 -578
- package/dist/agent-init.d.ts +16 -0
- package/dist/agent-init.js +110 -0
- package/dist/agent-init.js.map +1 -0
- package/dist/cli.js +17 -1
- package/dist/cli.js.map +1 -1
- package/dist/context.d.ts +1 -0
- package/dist/context.js +4 -0
- package/dist/context.js.map +1 -1
- package/dist/domain-language.js +121 -12
- package/dist/domain-language.js.map +1 -1
- package/dist/e2e.d.ts +4 -0
- package/dist/e2e.js +424 -85
- package/dist/e2e.js.map +1 -1
- package/dist/fixture-insight.d.ts +8 -0
- package/dist/fixture-insight.js +193 -0
- package/dist/fixture-insight.js.map +1 -0
- package/dist/fs.js +11 -0
- package/dist/fs.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +5 -0
- package/dist/manifest.js +478 -54
- package/dist/manifest.js.map +1 -1
- package/dist/qa.d.ts +4 -0
- package/dist/qa.js +177 -14
- package/dist/qa.js.map +1 -1
- package/dist/terminal.d.ts +2 -0
- package/dist/terminal.js +51 -0
- package/dist/terminal.js.map +1 -0
- package/dist/test-plan.js +56 -6
- package/dist/test-plan.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/adoption.md +62 -0
- package/docs/agent-format.md +52 -0
- package/docs/agent-skill.md +17 -1
- package/docs/benchmarking.md +60 -20
- package/docs/commands.md +242 -0
- package/docs/configuration.md +11 -0
- package/docs/e2e-output-examples.md +8 -4
- package/docs/guardrails.md +64 -0
- package/docs/manifest.md +3 -3
- package/docs/quickstart-demo.md +1 -1
- package/docs/release-validation.md +31 -4
- package/docs/releasing.md +13 -10
- package/docs/roadmap.md +9 -14
- package/package.json +4 -3
- package/schema/qamap-agent.schema.json +171 -0
- package/skills/qamap-pr-qa/SKILL.md +2 -1
package/dist/qa.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import { generateE2eDraft } from "./e2e.js";
|
|
2
|
+
import { formatDraftReadinessStage, generateE2eDraft } from "./e2e.js";
|
|
3
3
|
import { TOOL_NAME, VERSION } from "./version.js";
|
|
4
4
|
export async function generateQaDraft(rootInput, options = {}) {
|
|
5
5
|
const root = path.resolve(rootInput);
|
|
@@ -56,15 +56,27 @@ export function formatAgentQaDraft(result) {
|
|
|
56
56
|
manifest: result.manifestPath ?? null,
|
|
57
57
|
readiness: { score: result.readiness.score, level: result.readiness.level },
|
|
58
58
|
testSuite: { present: result.testSuite.hasTestSuite, files: result.testSuite.testFileCount },
|
|
59
|
-
firstDraftCommand: result.testSuite.hasTestSuite
|
|
59
|
+
firstDraftCommand: !result.testSuite.hasTestSuite && needsGeneratedDraft(result)
|
|
60
|
+
? firstDraftCreateCommand(result)
|
|
61
|
+
: undefined,
|
|
60
62
|
flows: result.flows.slice(0, agentListLimit).map((flow) => ({
|
|
61
63
|
title: truncateForAgent(flow.title, 80),
|
|
62
64
|
source: flow.source,
|
|
63
65
|
draft: flow.draftPath,
|
|
64
66
|
runnable: flow.runnableStatus,
|
|
67
|
+
verificationMode: flow.verificationMode,
|
|
65
68
|
entry: flow.entrypointHints[0],
|
|
69
|
+
changedFiles: flow.changedFiles.slice(0, 4),
|
|
70
|
+
reviewQuestion: flow.userJourney?.reviewQuestion
|
|
71
|
+
? truncateForAgent(flow.userJourney.reviewQuestion, 180)
|
|
72
|
+
: undefined,
|
|
73
|
+
successSignal: flow.userJourney?.successSignal
|
|
74
|
+
? truncateForAgent(flow.userJourney.successSignal)
|
|
75
|
+
: undefined,
|
|
66
76
|
steps: flow.draftSteps.slice(0, agentListLimit).map((step) => truncateForAgent(step)),
|
|
67
77
|
selectors: flow.selectorHints.slice(0, 5).map((selector) => truncateForAgent(selector, 100)),
|
|
78
|
+
existingEvidence: flow.existingEvidencePaths.length > 0 ? flow.existingEvidencePaths.slice(0, 4) : undefined,
|
|
79
|
+
evidence: flow.why.slice(0, 2).map((reason) => truncateForAgent(reason)),
|
|
68
80
|
})),
|
|
69
81
|
requiredEvidence,
|
|
70
82
|
recommendedEvidenceCount: result.missingEvidence.filter((item) => item.priority === "recommended").length,
|
|
@@ -80,6 +92,44 @@ export function formatMarkdownQaDraft(result) {
|
|
|
80
92
|
lines.push("");
|
|
81
93
|
lines.push("> Local-first PR QA skill output. No cloud. No LLM token. Manifest is optional, not required for first use.");
|
|
82
94
|
lines.push("");
|
|
95
|
+
lines.push("## At a Glance");
|
|
96
|
+
lines.push("");
|
|
97
|
+
if (result.flows.length === 0) {
|
|
98
|
+
lines.push("- Affected behavior: no changed flow candidate was generated from this diff.");
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
const flowTitles = result.flows.slice(0, 3).map((flow) => escapeMarkdownInline(flow.title)).join(", ");
|
|
102
|
+
const moreFlows = result.flows.length > 3 ? ` and ${result.flows.length - 3} more` : "";
|
|
103
|
+
lines.push(`- Affected behavior: ${flowTitles}${moreFlows}`);
|
|
104
|
+
const primaryFlow = result.flows[0];
|
|
105
|
+
if (primaryFlow.userJourney?.reviewQuestion) {
|
|
106
|
+
lines.push(`- Verify before merge: ${escapeMarkdownInline(primaryFlow.userJourney.reviewQuestion)}`);
|
|
107
|
+
}
|
|
108
|
+
const evidence = atAGlanceEvidence(primaryFlow);
|
|
109
|
+
if (evidence.length > 0) {
|
|
110
|
+
lines.push(`- Evidence found: ${evidence.map(escapeMarkdownInline).join("; ")}`);
|
|
111
|
+
}
|
|
112
|
+
if (primaryFlow.existingEvidencePaths.length > 0) {
|
|
113
|
+
lines.push(`- Existing test evidence: ${primaryFlow.existingEvidencePaths.slice(0, 3).map((file) => `\`${escapeMarkdownInline(file)}\``).join(", ")}`);
|
|
114
|
+
}
|
|
115
|
+
else if (primaryFlow.verificationMode) {
|
|
116
|
+
lines.push(`- Verification mode: ${formatVerificationMode(primaryFlow.verificationMode)}; no new product-journey E2E draft is proposed.`);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
lines.push(`- Proposed draft: \`${escapeMarkdownInline(primaryFlow.draftPath)}\` (${formatRunnableStatus(primaryFlow.runnableStatus)})`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
lines.push(`- Next command: \`${escapeMarkdownInline(nextStepCommand(result))}\``);
|
|
123
|
+
const blocking = result.missingEvidence.filter((item) => item.priority === "required").slice(0, 2);
|
|
124
|
+
if (blocking.length === 0) {
|
|
125
|
+
lines.push("- Missing before trust: no required evidence gap detected; review the draft and run the validation command.");
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
for (const [index, item] of blocking.entries()) {
|
|
129
|
+
lines.push(`- Missing before trust${blocking.length > 1 ? ` ${index + 1}` : ""}: ${escapeMarkdownInline(item.title)} — ${escapeMarkdownInline(item.detail)}`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
lines.push("");
|
|
83
133
|
lines.push("## Summary");
|
|
84
134
|
lines.push("");
|
|
85
135
|
lines.push(`- Root: \`${escapeMarkdownInline(result.root)}\``);
|
|
@@ -88,10 +138,10 @@ export function formatMarkdownQaDraft(result) {
|
|
|
88
138
|
lines.push(`- Project: ${formatProjectType(result.project)}`);
|
|
89
139
|
lines.push(`- Recommended runner: ${formatRunnerName(result.runner)}`);
|
|
90
140
|
lines.push(`- Manifest: ${result.manifestPath ? `\`${escapeMarkdownInline(result.manifestPath)}\`` : "not found; using repo signals and PR diff only"}`);
|
|
91
|
-
lines.push(`-
|
|
141
|
+
lines.push(`- Stage: ${formatDraftReadinessStage(result.readiness)}`);
|
|
92
142
|
lines.push(`- Draft flows: ${result.flows.length}`);
|
|
93
143
|
lines.push("");
|
|
94
|
-
if (!result.testSuite.hasTestSuite) {
|
|
144
|
+
if (!result.testSuite.hasTestSuite && needsGeneratedDraft(result)) {
|
|
95
145
|
lines.push("## First E2E Draft Bootstrap");
|
|
96
146
|
lines.push("");
|
|
97
147
|
lines.push(`QAMap did not find committed test files for this target. The next step is to create the first runnable starter draft, not to stop at a checklist.`);
|
|
@@ -143,7 +193,15 @@ export function formatMarkdownQaDraft(result) {
|
|
|
143
193
|
lines.push("### Suggested E2E / QA Draft");
|
|
144
194
|
lines.push("");
|
|
145
195
|
for (const flow of result.flows) {
|
|
146
|
-
|
|
196
|
+
if (flow.existingEvidencePaths.length > 0) {
|
|
197
|
+
lines.push(`- Run existing test evidence: ${flow.existingEvidencePaths.slice(0, 4).map((file) => `\`${escapeMarkdownInline(file)}\``).join(", ")}`);
|
|
198
|
+
}
|
|
199
|
+
else if (flow.verificationMode) {
|
|
200
|
+
lines.push(`- Run ${formatVerificationMode(flow.verificationMode)} with the suggested repository validation command; no new product-journey E2E draft is proposed.`);
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
lines.push(`- \`${escapeMarkdownInline(flow.draftPath)}\`: ${formatRunnableStatus(flow.runnableStatus)}`);
|
|
204
|
+
}
|
|
147
205
|
const routeHint = flow.entrypointHints.find((hint) => hint.startsWith("route:"));
|
|
148
206
|
if (routeHint) {
|
|
149
207
|
lines.push(` - Entrypoint: ${escapeMarkdownInline(routeHint)}`);
|
|
@@ -166,9 +224,12 @@ export function formatMarkdownQaDraft(result) {
|
|
|
166
224
|
lines.push("- No required evidence gap was detected in the generated QA draft. Still run the project validation command before merge.");
|
|
167
225
|
}
|
|
168
226
|
else {
|
|
169
|
-
for (const item of result.missingEvidence.slice(0,
|
|
227
|
+
for (const item of result.missingEvidence.slice(0, 6)) {
|
|
170
228
|
lines.push(`- [${item.priority}] ${item.kind}: ${escapeMarkdownInline(item.title)} - ${escapeMarkdownInline(item.detail)} (${escapeMarkdownInline(item.flowTitle)})`);
|
|
171
229
|
}
|
|
230
|
+
if (result.missingEvidence.length > 6) {
|
|
231
|
+
lines.push(`- ... ${result.missingEvidence.length - 6} more lower-priority items (see \`--format json\` for the full list)`);
|
|
232
|
+
}
|
|
172
233
|
}
|
|
173
234
|
lines.push("");
|
|
174
235
|
lines.push("### PR Checklist");
|
|
@@ -185,6 +246,26 @@ export function formatMarkdownQaDraft(result) {
|
|
|
185
246
|
lines.push("");
|
|
186
247
|
return lines.join("\n");
|
|
187
248
|
}
|
|
249
|
+
function nextStepCommand(result) {
|
|
250
|
+
if (!result.testSuite.hasTestSuite && needsGeneratedDraft(result)) {
|
|
251
|
+
return firstDraftCreateCommand(result);
|
|
252
|
+
}
|
|
253
|
+
const validationCommand = result.suggestedCommands[0];
|
|
254
|
+
if (validationCommand) {
|
|
255
|
+
return validationCommand;
|
|
256
|
+
}
|
|
257
|
+
const draftPath = result.flows[0]?.draftPath;
|
|
258
|
+
return draftPath ? `review ${draftPath}` : "qamap e2e draft . --dry-run";
|
|
259
|
+
}
|
|
260
|
+
function atAGlanceEvidence(flow) {
|
|
261
|
+
const stableSelector = flow.selectorHints.find((selector) => /^(?:web-test-id|test-id|input-web-test-id|input-test-id|accessibility-label|role-button):/i.test(selector)) ?? flow.selectorHints[0];
|
|
262
|
+
const evidence = [
|
|
263
|
+
flow.changedFiles[0] ? `changed file ${flow.changedFiles[0]}` : undefined,
|
|
264
|
+
flow.entrypointHints[0],
|
|
265
|
+
stableSelector,
|
|
266
|
+
].filter((value) => Boolean(value));
|
|
267
|
+
return uniqueStrings(evidence).slice(0, 3);
|
|
268
|
+
}
|
|
188
269
|
function firstDraftCreateCommand(result) {
|
|
189
270
|
if (result.runnerSetup.setupCommand) {
|
|
190
271
|
return result.runnerSetup.setupCommand;
|
|
@@ -192,6 +273,7 @@ function firstDraftCreateCommand(result) {
|
|
|
192
273
|
return `qamap e2e draft . --base ${result.base} --head ${result.head}`;
|
|
193
274
|
}
|
|
194
275
|
function qaFlowFromDraftFile(file) {
|
|
276
|
+
const verificationMode = verificationModeForTitle(file.flowTitle);
|
|
195
277
|
return {
|
|
196
278
|
title: file.flowTitle,
|
|
197
279
|
source: formatDraftSource(file.source),
|
|
@@ -204,12 +286,27 @@ function qaFlowFromDraftFile(file) {
|
|
|
204
286
|
coverageTargets: file.coverageTargets ?? [],
|
|
205
287
|
entrypointHints: file.entrypointHints ?? [],
|
|
206
288
|
selectorHints: file.selectorHints ?? [],
|
|
289
|
+
existingEvidencePaths: isChangedTestEvidenceTitle(file.flowTitle) ? (file.changedFiles ?? []) : [],
|
|
290
|
+
verificationMode,
|
|
207
291
|
setupHints: file.setupHints ?? [],
|
|
208
292
|
manifestUpdatePath: file.manifestUpdatePath,
|
|
209
293
|
why: buildFlowReasons(file),
|
|
210
294
|
};
|
|
211
295
|
}
|
|
212
296
|
function buildFlowReasons(file) {
|
|
297
|
+
const verificationMode = verificationModeForTitle(file.flowTitle);
|
|
298
|
+
if (verificationMode === "existing-test-evidence") {
|
|
299
|
+
return ["Changed test files are existing QA evidence; run them instead of generating a duplicate draft."];
|
|
300
|
+
}
|
|
301
|
+
if (verificationMode === "configuration") {
|
|
302
|
+
return ["Only build or runtime configuration changed; verify affected variants instead of inventing a product journey."];
|
|
303
|
+
}
|
|
304
|
+
if (verificationMode === "documentation") {
|
|
305
|
+
return ["Documentation changed without a runtime product surface; validate the documented contract against repository behavior."];
|
|
306
|
+
}
|
|
307
|
+
if (verificationMode === "generated-artifact") {
|
|
308
|
+
return ["Generated output changed; reproduce and validate the artifact instead of inventing a product journey."];
|
|
309
|
+
}
|
|
213
310
|
return [
|
|
214
311
|
file.promotionReason,
|
|
215
312
|
file.primaryEntrypoint ? `Primary entrypoint inferred as ${file.primaryEntrypoint}.` : undefined,
|
|
@@ -223,7 +320,11 @@ function buildMissingEvidence(files) {
|
|
|
223
320
|
for (const item of file.actionItems ?? []) {
|
|
224
321
|
evidence.push(missingEvidenceFromAction(file, item));
|
|
225
322
|
}
|
|
323
|
+
const actionText = normalizeEvidenceText((file.actionItems ?? []).map((item) => `${item.title} ${item.detail}`).join(" "));
|
|
226
324
|
for (const blocker of file.executionBlockers ?? []) {
|
|
325
|
+
if (actionTextCoversBlocker(actionText, blocker)) {
|
|
326
|
+
continue;
|
|
327
|
+
}
|
|
227
328
|
evidence.push({
|
|
228
329
|
flowTitle: file.flowTitle,
|
|
229
330
|
priority: "required",
|
|
@@ -233,7 +334,24 @@ function buildMissingEvidence(files) {
|
|
|
233
334
|
});
|
|
234
335
|
}
|
|
235
336
|
}
|
|
236
|
-
|
|
337
|
+
const unique = uniqueMissingEvidence(evidence);
|
|
338
|
+
const required = unique.filter((item) => item.priority === "required");
|
|
339
|
+
const recommended = unique.filter((item) => item.priority !== "required");
|
|
340
|
+
return [...required, ...recommended].slice(0, 12);
|
|
341
|
+
}
|
|
342
|
+
function normalizeEvidenceText(value) {
|
|
343
|
+
return value.toLowerCase().replace(/[^a-z0-9\uAC00-\uD7A3 ]+/g, " ").replace(/\s+/g, " ").trim();
|
|
344
|
+
}
|
|
345
|
+
function actionTextCoversBlocker(actionText, blocker) {
|
|
346
|
+
if (!actionText) {
|
|
347
|
+
return false;
|
|
348
|
+
}
|
|
349
|
+
const blockerTokens = normalizeEvidenceText(blocker).split(" ").filter((token) => token.length > 3);
|
|
350
|
+
if (blockerTokens.length === 0) {
|
|
351
|
+
return false;
|
|
352
|
+
}
|
|
353
|
+
const covered = blockerTokens.filter((token) => actionText.includes(token)).length;
|
|
354
|
+
return covered / blockerTokens.length >= 0.7;
|
|
237
355
|
}
|
|
238
356
|
function missingEvidenceFromAction(file, item) {
|
|
239
357
|
return {
|
|
@@ -257,9 +375,13 @@ function uniqueMissingEvidence(items) {
|
|
|
257
375
|
}
|
|
258
376
|
function buildPrChecklist(draft, flows, missingEvidence) {
|
|
259
377
|
const checklist = [
|
|
260
|
-
flows.length
|
|
261
|
-
? `
|
|
262
|
-
:
|
|
378
|
+
flows[0]?.existingEvidencePaths.length
|
|
379
|
+
? `Run the changed test evidence: ${flows[0].existingEvidencePaths.slice(0, 4).join(", ")}.`
|
|
380
|
+
: flows[0]?.verificationMode
|
|
381
|
+
? `Run ${formatVerificationMode(flows[0].verificationMode)} with ${draft.plan.suggestedCommands[0] ?? "the nearest repository validation command"}.`
|
|
382
|
+
: flows.length > 0
|
|
383
|
+
? `Review the generated draft path: ${flows.map((flow) => flow.draftPath).slice(0, 3).join(", ")}.`
|
|
384
|
+
: "Run QAMap again after adding branch or working tree changes.",
|
|
263
385
|
flows[0]?.userJourney?.reviewQuestion
|
|
264
386
|
? `Answer the reviewer question: ${flows[0].userJourney.reviewQuestion}`
|
|
265
387
|
: "Name the user-visible behavior or contract this PR can break.",
|
|
@@ -273,7 +395,7 @@ function buildPrChecklist(draft, flows, missingEvidence) {
|
|
|
273
395
|
if (validationCommand) {
|
|
274
396
|
checklist.push(`Run local validation: ${validationCommand}`);
|
|
275
397
|
}
|
|
276
|
-
if (!draft.plan.verificationManifestPath) {
|
|
398
|
+
if (!draft.plan.verificationManifestPath && flows.some((flow) => !flow.verificationMode)) {
|
|
277
399
|
checklist.push("If this recommendation is useful, run `qamap manifest init .` later and review the generated manifest as team QA memory.");
|
|
278
400
|
}
|
|
279
401
|
return uniqueStrings(checklist).slice(0, 8);
|
|
@@ -282,12 +404,53 @@ function buildAgentHandoff(draft, flows, missingEvidence) {
|
|
|
282
404
|
const handoff = [
|
|
283
405
|
"Use this as a local PR QA skill result, not as proof that browser or device QA already passed.",
|
|
284
406
|
draft.dryRun ? "No files were written because this command previews QA work only." : undefined,
|
|
285
|
-
flows
|
|
286
|
-
|
|
287
|
-
|
|
407
|
+
flows[0]?.existingEvidencePaths.length
|
|
408
|
+
? `Run the changed test evidence (${flows[0].existingEvidencePaths.slice(0, 3).join(", ")}) and record the result before handoff.`
|
|
409
|
+
: flows[0]?.verificationMode
|
|
410
|
+
? `Run ${formatVerificationMode(flows[0].verificationMode)} and record the command and result before handoff; do not invent a product-journey E2E for this diff alone.`
|
|
411
|
+
: flows.length > 0
|
|
412
|
+
? `Start from ${flows[0].draftPath} and close required evidence before treating it as regression coverage.`
|
|
413
|
+
: undefined,
|
|
414
|
+
missingEvidence.length > 0 ? "Close required evidence gaps before treating this QA draft as merge proof." : undefined,
|
|
415
|
+
flows.some((flow) => !flow.verificationMode)
|
|
416
|
+
? "A wrong flow recommendation should become a manifest correction, so future PRs improve without another prompt."
|
|
417
|
+
: undefined,
|
|
288
418
|
].filter((value) => Boolean(value));
|
|
289
419
|
return uniqueStrings(handoff);
|
|
290
420
|
}
|
|
421
|
+
function isChangedTestEvidenceTitle(title) {
|
|
422
|
+
return /^Changed test evidence verification checklist$/i.test(title.trim());
|
|
423
|
+
}
|
|
424
|
+
function verificationModeForTitle(title) {
|
|
425
|
+
if (isChangedTestEvidenceTitle(title)) {
|
|
426
|
+
return "existing-test-evidence";
|
|
427
|
+
}
|
|
428
|
+
if (/\bconfiguration verification\b/i.test(title)) {
|
|
429
|
+
return "configuration";
|
|
430
|
+
}
|
|
431
|
+
if (/\bdocumentation verification\b/i.test(title)) {
|
|
432
|
+
return "documentation";
|
|
433
|
+
}
|
|
434
|
+
if (/\bgenerated artifact verification\b/i.test(title)) {
|
|
435
|
+
return "generated-artifact";
|
|
436
|
+
}
|
|
437
|
+
return undefined;
|
|
438
|
+
}
|
|
439
|
+
function needsGeneratedDraft(result) {
|
|
440
|
+
return result.flows.some((flow) => !flow.verificationMode);
|
|
441
|
+
}
|
|
442
|
+
function formatVerificationMode(mode) {
|
|
443
|
+
if (mode === "existing-test-evidence") {
|
|
444
|
+
return "the changed test evidence";
|
|
445
|
+
}
|
|
446
|
+
if (mode === "configuration") {
|
|
447
|
+
return "build and configuration verification";
|
|
448
|
+
}
|
|
449
|
+
if (mode === "documentation") {
|
|
450
|
+
return "documentation contract verification";
|
|
451
|
+
}
|
|
452
|
+
return "generated artifact verification";
|
|
453
|
+
}
|
|
291
454
|
function fallbackDraftSteps(flow) {
|
|
292
455
|
if (!flow.userJourney) {
|
|
293
456
|
return ["Review the changed files and create the smallest QA path that proves the changed behavior."];
|
package/dist/qa.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qa.js","sourceRoot":"","sources":["../src/qa.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"qa.js","sourceRoot":"","sources":["../src/qa.ts"],"names":[],"mappings":"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"}
|
package/dist/terminal.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// Terminal presentation for human-facing reports. Colors are additive sugar:
|
|
2
|
+
// they are applied only when writing to an interactive terminal, so files,
|
|
3
|
+
// pipes, CI logs, and machine formats always receive the plain text.
|
|
4
|
+
const RESET = "[0m";
|
|
5
|
+
const BOLD = "[1m";
|
|
6
|
+
const DIM = "[2m";
|
|
7
|
+
const RED = "[31m";
|
|
8
|
+
const GREEN = "[32m";
|
|
9
|
+
const YELLOW = "[33m";
|
|
10
|
+
const CYAN = "[36m";
|
|
11
|
+
export function shouldColorize(stream = process.stdout) {
|
|
12
|
+
if (process.env.NO_COLOR !== undefined && process.env.NO_COLOR !== "") {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
if (process.env.FORCE_COLOR !== undefined && process.env.FORCE_COLOR !== "" && process.env.FORCE_COLOR !== "0") {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
return Boolean(stream.isTTY);
|
|
19
|
+
}
|
|
20
|
+
export function colorizeReport(text) {
|
|
21
|
+
// Machine formats pass through untouched.
|
|
22
|
+
const head = text.trimStart();
|
|
23
|
+
if (head.startsWith("{") || head.startsWith("[")) {
|
|
24
|
+
return text;
|
|
25
|
+
}
|
|
26
|
+
return text
|
|
27
|
+
.split("\n")
|
|
28
|
+
.map((line) => colorizeLine(line))
|
|
29
|
+
.join("\n");
|
|
30
|
+
}
|
|
31
|
+
function colorizeLine(line) {
|
|
32
|
+
if (/^#{1,3} /.test(line)) {
|
|
33
|
+
return `${BOLD}${CYAN}${line}${RESET}`;
|
|
34
|
+
}
|
|
35
|
+
if (line.startsWith("> ")) {
|
|
36
|
+
return `${DIM}${line}${RESET}`;
|
|
37
|
+
}
|
|
38
|
+
let output = line;
|
|
39
|
+
output = output.replace(/^(- (?:Affected|Do next|Blocking(?: \d+)?|Base|Head|Project|Recommended runner|Manifest|Stage|Draft flows)):/, `${BOLD}$1${RESET}:`);
|
|
40
|
+
output = output.replace(/\[(required|missing|error)\]/g, `${RED}[$1]${RESET}`);
|
|
41
|
+
output = output.replace(/\[(recommended|warning|skipped)\]/g, `${YELLOW}[$1]${RESET}`);
|
|
42
|
+
output = output.replace(/\[(covered|ready|created|updated|pass)\]/g, `${GREEN}[$1]${RESET}`);
|
|
43
|
+
output = output.replace(/\b(Readiness|runnable|self-check|Status|status)(\[0m)?: (blocked|failed|fail|missing)\b/g, `$1$2: ${RED}$3${RESET}`);
|
|
44
|
+
output = output.replace(/\b(Readiness|runnable|self-check|Status|status)(\[0m)?: (needs-work|near-runnable|review-only|warning|proposed)\b/g, `$1$2: ${YELLOW}$3${RESET}`);
|
|
45
|
+
output = output.replace(/\b(Readiness|runnable|self-check|Status|status)(\[0m)?: (ready|runnable-candidate|pass|passed|created|applied)\b/g, `$1$2: ${GREEN}$3${RESET}`);
|
|
46
|
+
output = output.replace(/\b(Stage)(\[0m)?: (setup needed|draft in progress|almost runnable)\b/g, `$1$2: ${YELLOW}$3${RESET}`);
|
|
47
|
+
output = output.replace(/\b(Stage)(\[0m)?: (ready to run)\b/g, `$1$2: ${GREEN}$3${RESET}`);
|
|
48
|
+
output = output.replace(/`([^`\n]+)`/g, `${CYAN}$1${RESET}`);
|
|
49
|
+
return output;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=terminal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"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"}
|
package/dist/test-plan.js
CHANGED
|
@@ -19,7 +19,8 @@ export async function generateTestPlan(rootInput, options = {}) {
|
|
|
19
19
|
const changedFiles = scopeChangedFiles(await getChangedFiles(gitRoot, base, head, includeWorkingTree), relativeRoot);
|
|
20
20
|
const suggestedCommands = uniqueCommands([
|
|
21
21
|
...normalizeValidationCommands(options.validationCommands),
|
|
22
|
-
...(
|
|
22
|
+
...commandsForChangedTestEvidence(changedFiles),
|
|
23
|
+
...(await discoverSuggestedCommands(root, workspaceRoot, changedFiles)),
|
|
23
24
|
]);
|
|
24
25
|
const items = buildPlanItems(changedFiles);
|
|
25
26
|
return {
|
|
@@ -242,9 +243,9 @@ function buildTestCoverageItem(files) {
|
|
|
242
243
|
],
|
|
243
244
|
};
|
|
244
245
|
}
|
|
245
|
-
async function discoverSuggestedCommands(root, workspaceRoot) {
|
|
246
|
+
async function discoverSuggestedCommands(root, workspaceRoot, changedFiles) {
|
|
246
247
|
const commandGroups = await Promise.all([
|
|
247
|
-
discoverJavaScriptCommands(root, workspaceRoot),
|
|
248
|
+
discoverJavaScriptCommands(root, workspaceRoot, changedFiles),
|
|
248
249
|
discoverPythonCommands(root),
|
|
249
250
|
discoverGoCommands(root),
|
|
250
251
|
discoverRustCommands(root),
|
|
@@ -252,7 +253,7 @@ async function discoverSuggestedCommands(root, workspaceRoot) {
|
|
|
252
253
|
]);
|
|
253
254
|
return uniqueCommands(commandGroups.flat());
|
|
254
255
|
}
|
|
255
|
-
async function discoverJavaScriptCommands(root, workspaceRoot) {
|
|
256
|
+
async function discoverJavaScriptCommands(root, workspaceRoot, changedFiles) {
|
|
256
257
|
const packageJsonPath = path.join(root, "package.json");
|
|
257
258
|
let parsed;
|
|
258
259
|
try {
|
|
@@ -262,11 +263,53 @@ async function discoverJavaScriptCommands(root, workspaceRoot) {
|
|
|
262
263
|
return [];
|
|
263
264
|
}
|
|
264
265
|
const packageManager = await detectPackageManager(root, parsed.packageManager, workspaceRoot);
|
|
265
|
-
const
|
|
266
|
+
const platformBuildScripts = discoverPlatformBuildScripts(parsed.scripts ?? {}, changedFiles.map((file) => file.path));
|
|
267
|
+
const preferredScripts = uniqueCommands([
|
|
268
|
+
...platformBuildScripts,
|
|
269
|
+
"test",
|
|
270
|
+
"typecheck",
|
|
271
|
+
"lint",
|
|
272
|
+
"build",
|
|
273
|
+
"test:e2e",
|
|
274
|
+
"e2e",
|
|
275
|
+
]);
|
|
266
276
|
return preferredScripts
|
|
267
277
|
.filter((script) => isUsableScript(parsed.scripts?.[script]))
|
|
268
278
|
.map((script) => (script === "test" ? `${packageManager} test` : `${packageManager} run ${script}`));
|
|
269
279
|
}
|
|
280
|
+
function discoverPlatformBuildScripts(scripts, changedFiles) {
|
|
281
|
+
const names = Object.keys(scripts).filter((name) => isUsableScript(scripts[name]));
|
|
282
|
+
const androidChanged = changedFiles.some((file) => /(?:^|\/)android(?:\/|$)|AndroidManifest|\.gradle(?:\.kts)?$/i.test(file));
|
|
283
|
+
const iosChanged = changedFiles.some((file) => /(?:^|\/)ios(?:\/|$)|Info\.plist$|\.xcodeproj(?:\/|$)|\.xcworkspace(?:\/|$)/i.test(file));
|
|
284
|
+
const selected = [];
|
|
285
|
+
if (androidChanged) {
|
|
286
|
+
const androidScript = preferredPlatformScript(names, /(?:^|:)(?:android|apk|aab)(?::|$)/i);
|
|
287
|
+
if (androidScript) {
|
|
288
|
+
selected.push(androidScript);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
if (iosChanged) {
|
|
292
|
+
const iosScript = preferredPlatformScript(names, /(?:^|:)(?:ios|archive)(?::|$)/i);
|
|
293
|
+
if (iosScript) {
|
|
294
|
+
selected.push(iosScript);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
return uniqueCommands(selected);
|
|
298
|
+
}
|
|
299
|
+
function preferredPlatformScript(names, pattern) {
|
|
300
|
+
return names
|
|
301
|
+
.filter((name) => pattern.test(name))
|
|
302
|
+
.sort((left, right) => platformScriptRank(left) - platformScriptRank(right) || left.localeCompare(right))[0];
|
|
303
|
+
}
|
|
304
|
+
function platformScriptRank(name) {
|
|
305
|
+
if (/^build(?::|$)/i.test(name)) {
|
|
306
|
+
return 0;
|
|
307
|
+
}
|
|
308
|
+
if (/(?:^|:)clean(?:$|:)/i.test(name)) {
|
|
309
|
+
return 1;
|
|
310
|
+
}
|
|
311
|
+
return 2;
|
|
312
|
+
}
|
|
270
313
|
async function discoverPythonCommands(root) {
|
|
271
314
|
const pyproject = await readTextIfExists(path.join(root, "pyproject.toml"));
|
|
272
315
|
const hasPythonMarker = Boolean(pyproject) ||
|
|
@@ -414,6 +457,12 @@ function withRunner(runner, command) {
|
|
|
414
457
|
function uniqueCommands(commands) {
|
|
415
458
|
return commands.filter((command, index) => commands.indexOf(command) === index);
|
|
416
459
|
}
|
|
460
|
+
function commandsForChangedTestEvidence(files) {
|
|
461
|
+
if (files.some((file) => /(?:^|\/)\.maestro\/[^/]+\.ya?ml$/i.test(file.path))) {
|
|
462
|
+
return ["maestro test .maestro"];
|
|
463
|
+
}
|
|
464
|
+
return [];
|
|
465
|
+
}
|
|
417
466
|
function normalizeValidationCommands(commands) {
|
|
418
467
|
return (commands ?? []).map((command) => command.trim()).filter(Boolean);
|
|
419
468
|
}
|
|
@@ -423,7 +472,8 @@ function isTestLikeFile(filePath) {
|
|
|
423
472
|
/(?:^|\/)test_[^/]+\.py$/i.test(filePath) ||
|
|
424
473
|
/(?:^|\/)[^/]+_test\.(?:py|go)$/i.test(filePath) ||
|
|
425
474
|
/(?:^|\/)[^/]+(?:Test|Tests|Spec)\.(?:java|kt|cs|swift)$/i.test(filePath) ||
|
|
426
|
-
/(?:^|\/)[^/]+_(?:test|spec)\.rs$/i.test(filePath)
|
|
475
|
+
/(?:^|\/)[^/]+_(?:test|spec)\.rs$/i.test(filePath) ||
|
|
476
|
+
/(?:^|\/)\.maestro\/[^/]+\.ya?ml$/i.test(filePath));
|
|
427
477
|
}
|
|
428
478
|
async function exists(filePath) {
|
|
429
479
|
try {
|