faf-taf-git 2.3.0 → 2.4.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/.github/dependabot.yml +10 -0
- package/.github/workflows/ci.yml +3 -3
- package/.github/workflows/claude-code-review.yml +9 -2
- package/.github/workflows/claude.yml +2 -2
- package/CHANGELOG.md +17 -1
- package/CLAUDE.md +3 -3
- package/README.md +92 -473
- package/action.yml +4 -1
- package/agent.fafa +53 -0
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.js +123 -5
- package/dist/index.js.map +1 -1
- package/dist/parsers/index.d.ts +1 -0
- package/dist/parsers/index.d.ts.map +1 -1
- package/dist/parsers/index.js +11 -5
- package/dist/parsers/index.js.map +1 -1
- package/dist/parsers/junit.d.ts +22 -0
- package/dist/parsers/junit.d.ts.map +1 -0
- package/dist/parsers/junit.js +104 -0
- package/dist/parsers/junit.js.map +1 -0
- package/package.json +4 -4
- package/project.faf +13 -1
- package/src/cli.ts +1 -1
- package/src/index.ts +1 -0
- package/src/parsers/index.ts +9 -4
- package/src/parsers/junit.ts +110 -0
- package/tests/junit-parser.test.ts +109 -0
package/agent.fafa
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
version: "1.0"
|
|
2
|
+
agent:
|
|
3
|
+
name: faf-taf-git
|
|
4
|
+
displayName: faf-taf-git
|
|
5
|
+
id: urn:air:faf.one:agent:faf-taf-git
|
|
6
|
+
version: 2.4.0
|
|
7
|
+
description: "A Test Receipt Printer for git: each CI run appends a receipt with the test counts and result to a .taf file kept in git."
|
|
8
|
+
homepage: https://faf.one
|
|
9
|
+
capabilities:
|
|
10
|
+
- name: Print a receipt
|
|
11
|
+
type: tool
|
|
12
|
+
description: Append one Test Receipt (timestamp, counts, result, trigger) to .taf on each CI run
|
|
13
|
+
tags:
|
|
14
|
+
- print a receipt
|
|
15
|
+
- name: Read test output
|
|
16
|
+
type: tool
|
|
17
|
+
description: Parse Jest, Vitest, Bun and WJTTC test output into passed, failed and total
|
|
18
|
+
tags:
|
|
19
|
+
- read test output
|
|
20
|
+
- name: Receipts branch
|
|
21
|
+
type: tool
|
|
22
|
+
description: Push receipts to a dedicated branch such as taf-receipts, created on the first run
|
|
23
|
+
tags:
|
|
24
|
+
- receipts branch
|
|
25
|
+
- name: Auto-commit
|
|
26
|
+
type: tool
|
|
27
|
+
description: Commit the .taf update from CI, with an optional custom message
|
|
28
|
+
tags:
|
|
29
|
+
- auto-commit
|
|
30
|
+
- name: Badge
|
|
31
|
+
type: tool
|
|
32
|
+
description: Generate an SVG badge from the latest receipt in .taf
|
|
33
|
+
tags:
|
|
34
|
+
- badge
|
|
35
|
+
- name: Action outputs
|
|
36
|
+
type: tool
|
|
37
|
+
description: Expose result, passed, failed, total and taf-updated to later workflow steps
|
|
38
|
+
tags:
|
|
39
|
+
- action outputs
|
|
40
|
+
endpoints:
|
|
41
|
+
- protocol: github-action
|
|
42
|
+
transport: http
|
|
43
|
+
location: Wolfe-Jam/faf-taf-git
|
|
44
|
+
metadata:
|
|
45
|
+
cards:
|
|
46
|
+
domain: faf.one
|
|
47
|
+
examples:
|
|
48
|
+
- How do I keep a record of my test results on every CI run?
|
|
49
|
+
- How do I add Test Receipts to a GitHub Actions workflow?
|
|
50
|
+
- How do I make a test badge from my .taf history?
|
|
51
|
+
packages:
|
|
52
|
+
- registryType: npm
|
|
53
|
+
identifier: faf-taf-git
|
package/dist/cli.js
CHANGED
|
@@ -226,7 +226,7 @@ async function main() {
|
|
|
226
226
|
}
|
|
227
227
|
// Show help
|
|
228
228
|
if (args.includes('--help') || args.includes('-h')) {
|
|
229
|
-
console.log(`\nfaf-taf-git - The Git-Native Receipt Printer\n\nUSAGE:\n npm test 2>&1 | tee test-output.txt\n npx faf-taf-git --file test-output.txt [OPTIONS]\n\n # WJTTC / pc-ai bar\n node tests/wjttc/run-wjttc.mjs 2>&1 | tee wjttc-out.txt\n npx faf-taf-git --file wjttc-out.txt\n\nCOMMANDS:\n badge Generate a shields.io-style SVG badge from .taf\n\nOPTIONS:\n --file <path> Path to test output file (required)\n --commit Auto-commit .taf changes to git\n --message <msg> Custom commit message\n --cwd <dir> Working directory (default: current)\n --verbose, -v Verbose output\n --help, -h Show this help\n\nPARSERS:\n Bun, WJTTC (pc-ai bar), Jest, Vitest\n\nEXAMPLES:\n npm test 2>&1 | tee test-output.txt\n npx faf-taf-git --file test-output.txt\n\n npx faf-taf-git --file test-output.txt --commit\n\n npx faf-taf-git badge --output badge.svg\n\nPLATFORM SUPPORT:\n Works in ANY CI/CD that runs Node.js:\n GitHub Actions, GitLab CI, Jenkins, CircleCI,\n Bitbucket Pipelines, Azure Pipelines, local dev\n\nLEARN MORE:\n https://github.com/Wolfe-Jam/faf-taf-git\n`);
|
|
229
|
+
console.log(`\nfaf-taf-git - The Git-Native Receipt Printer\n\nUSAGE:\n npm test 2>&1 | tee test-output.txt\n npx faf-taf-git --file test-output.txt [OPTIONS]\n\n # WJTTC / pc-ai bar\n node tests/wjttc/run-wjttc.mjs 2>&1 | tee wjttc-out.txt\n npx faf-taf-git --file wjttc-out.txt\n\nCOMMANDS:\n badge Generate a shields.io-style SVG badge from .taf\n\nOPTIONS:\n --file <path> Path to test output file (required)\n --commit Auto-commit .taf changes to git\n --message <msg> Custom commit message\n --cwd <dir> Working directory (default: current)\n --verbose, -v Verbose output\n --help, -h Show this help\n\nPARSERS:\n JUnit XML (pytest, cargo, Go, Java, .NET ...), Bun, WJTTC (pc-ai bar), Jest, Vitest\n\nEXAMPLES:\n npm test 2>&1 | tee test-output.txt\n npx faf-taf-git --file test-output.txt\n\n npx faf-taf-git --file test-output.txt --commit\n\n npx faf-taf-git badge --output badge.svg\n\nPLATFORM SUPPORT:\n Works in ANY CI/CD that runs Node.js:\n GitHub Actions, GitLab CI, Jenkins, CircleCI,\n Bitbucket Pipelines, Azure Pipelines, local dev\n\nLEARN MORE:\n https://github.com/Wolfe-Jam/faf-taf-git\n`);
|
|
230
230
|
process.exit(0);
|
|
231
231
|
}
|
|
232
232
|
const options = {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -33068,6 +33068,7 @@ async function run() {
|
|
|
33068
33068
|
core.setOutput('passed', testResults.passed.toString());
|
|
33069
33069
|
core.setOutput('failed', testResults.failed.toString());
|
|
33070
33070
|
core.setOutput('total', testResults.total.toString());
|
|
33071
|
+
core.setOutput('skipped', (testResults.skipped ?? 0).toString());
|
|
33071
33072
|
// If target-branch is set, save .taf seed and switch branches
|
|
33072
33073
|
let tafSeed = null;
|
|
33073
33074
|
const tafPath = path.join(cwd, '.taf');
|
|
@@ -33232,22 +33233,28 @@ function parseBunOutput(output) {
|
|
|
33232
33233
|
* Tries each framework parser in order until one succeeds.
|
|
33233
33234
|
*/
|
|
33234
33235
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
33235
|
-
exports.UNPARSEABLE_OUTPUT = exports.SUPPORTED_PARSERS = exports.parseWjttcOutput = void 0;
|
|
33236
|
+
exports.UNPARSEABLE_OUTPUT = exports.SUPPORTED_PARSERS = exports.parseWjttcOutput = exports.parseJunitOutput = void 0;
|
|
33236
33237
|
exports.parseTestOutput = parseTestOutput;
|
|
33237
33238
|
const bun_1 = __nccwpck_require__(1505);
|
|
33238
33239
|
const jest_1 = __nccwpck_require__(3416);
|
|
33240
|
+
const junit_1 = __nccwpck_require__(1916);
|
|
33239
33241
|
const vitest_1 = __nccwpck_require__(9839);
|
|
33240
33242
|
const wjttc_1 = __nccwpck_require__(8750);
|
|
33243
|
+
var junit_2 = __nccwpck_require__(1916);
|
|
33244
|
+
Object.defineProperty(exports, "parseJunitOutput", ({ enumerable: true, get: function () { return junit_2.parseJunitOutput; } }));
|
|
33241
33245
|
var wjttc_2 = __nccwpck_require__(8750);
|
|
33242
33246
|
Object.defineProperty(exports, "parseWjttcOutput", ({ enumerable: true, get: function () { return wjttc_2.parseWjttcOutput; } }));
|
|
33243
33247
|
/**
|
|
33244
33248
|
* Every parser, in the order parseTestOutput tries them. Order matters:
|
|
33245
|
-
* 1.
|
|
33246
|
-
*
|
|
33247
|
-
*
|
|
33248
|
-
*
|
|
33249
|
+
* 1. JUnit XML — a `<testsuite>` element; first, because a report's captured
|
|
33250
|
+
* stdout can hold another runner's summary line.
|
|
33251
|
+
* 2. Bun — `Ran N tests across M files` is bun-unique.
|
|
33252
|
+
* 3. WJTTC — `pc-ai WJTTC` / suite `pc-ai-wjttc` (FAF bar; not Jest-shaped).
|
|
33253
|
+
* 4. Jest — `Tests: … total`.
|
|
33254
|
+
* 5. Vitest — `Tests … (N)`.
|
|
33249
33255
|
*/
|
|
33250
33256
|
const PARSERS = [
|
|
33257
|
+
['JUnit XML', junit_1.parseJunitOutput],
|
|
33251
33258
|
['Bun', bun_1.parseBunOutput],
|
|
33252
33259
|
['WJTTC', wjttc_1.parseWjttcOutput],
|
|
33253
33260
|
['Jest', jest_1.parseJestOutput],
|
|
@@ -33364,6 +33371,117 @@ function parseJestOutput(output) {
|
|
|
33364
33371
|
*/
|
|
33365
33372
|
|
|
33366
33373
|
|
|
33374
|
+
/***/ }),
|
|
33375
|
+
|
|
33376
|
+
/***/ 1916:
|
|
33377
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
33378
|
+
|
|
33379
|
+
"use strict";
|
|
33380
|
+
|
|
33381
|
+
/**
|
|
33382
|
+
* JUnit XML parser
|
|
33383
|
+
*
|
|
33384
|
+
* Extracts test counts from a JUnit XML report — the common format nearly every
|
|
33385
|
+
* test runner can write: pytest (--junitxml), cargo (nextest, cargo2junit), Go
|
|
33386
|
+
* (go-junit-report, gotestsum), Maven/Gradle, .NET, PHPUnit, Jest (jest-junit).
|
|
33387
|
+
*/
|
|
33388
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
33389
|
+
exports.parseJunitOutput = parseJunitOutput;
|
|
33390
|
+
const SUITE_TAG = /<(\/?)testsuite\b([^>]*?)(\/?)>/g;
|
|
33391
|
+
/** Read one numeric attribute; undefined when the attribute is absent. */
|
|
33392
|
+
function attr(attrs, name) {
|
|
33393
|
+
const match = attrs.match(new RegExp(`\\b${name}\\s*=\\s*["'](\\d+)["']`));
|
|
33394
|
+
return match ? parseInt(match[1], 10) : undefined;
|
|
33395
|
+
}
|
|
33396
|
+
/** Counts from a <testsuite> or <testsuites> attribute list, or null without a `tests` count. */
|
|
33397
|
+
function countsFromAttrs(attrs) {
|
|
33398
|
+
const tests = attr(attrs, 'tests');
|
|
33399
|
+
if (tests === undefined)
|
|
33400
|
+
return null;
|
|
33401
|
+
return {
|
|
33402
|
+
tests,
|
|
33403
|
+
failed: (attr(attrs, 'failures') ?? 0) + (attr(attrs, 'errors') ?? 0),
|
|
33404
|
+
skipped: (attr(attrs, 'skipped') ?? 0) + (attr(attrs, 'disabled') ?? 0),
|
|
33405
|
+
};
|
|
33406
|
+
}
|
|
33407
|
+
/** Fallback when suites carry no counts: walk the <testcase> elements themselves. */
|
|
33408
|
+
function countsFromTestcases(xml) {
|
|
33409
|
+
const counts = { tests: 0, failed: 0, skipped: 0 };
|
|
33410
|
+
const testcase = /<testcase\b[^>]*?(?:\/>|>([\s\S]*?)<\/testcase>)/g;
|
|
33411
|
+
let match;
|
|
33412
|
+
while ((match = testcase.exec(xml)) !== null) {
|
|
33413
|
+
counts.tests++;
|
|
33414
|
+
const body = match[1] ?? '';
|
|
33415
|
+
if (/<(failure|error)\b/.test(body))
|
|
33416
|
+
counts.failed++;
|
|
33417
|
+
else if (/<skipped\b/.test(body))
|
|
33418
|
+
counts.skipped++;
|
|
33419
|
+
}
|
|
33420
|
+
return counts;
|
|
33421
|
+
}
|
|
33422
|
+
/**
|
|
33423
|
+
* Parse a JUnit XML report to extract test results
|
|
33424
|
+
*
|
|
33425
|
+
* Handles:
|
|
33426
|
+
* - a <testsuites> root that carries the totals (gotestsum, Maven)
|
|
33427
|
+
* - a <testsuites> root without totals, around counted <testsuite>s (pytest)
|
|
33428
|
+
* - a single <testsuite> root
|
|
33429
|
+
* - nested <testsuite>s (only the outermost level is counted, never twice)
|
|
33430
|
+
* - suites with no counts at all (the <testcase> elements are counted instead)
|
|
33431
|
+
*
|
|
33432
|
+
* failures + errors count as failed; skipped + disabled count as skipped.
|
|
33433
|
+
*/
|
|
33434
|
+
function parseJunitOutput(output) {
|
|
33435
|
+
const xml = output.replace(/<!--[\s\S]*?-->/g, '');
|
|
33436
|
+
if (!/<testsuites?\b/.test(xml))
|
|
33437
|
+
return null;
|
|
33438
|
+
let counts = null;
|
|
33439
|
+
const root = xml.match(/<testsuites\b([^>]*)>/);
|
|
33440
|
+
if (root)
|
|
33441
|
+
counts = countsFromAttrs(root[1]);
|
|
33442
|
+
if (!counts) {
|
|
33443
|
+
// Sum the outermost <testsuite>s; a suite without counts sends us to the testcases.
|
|
33444
|
+
let depth = 0;
|
|
33445
|
+
let summed = { tests: 0, failed: 0, skipped: 0 };
|
|
33446
|
+
let seen = 0;
|
|
33447
|
+
let match;
|
|
33448
|
+
SUITE_TAG.lastIndex = 0;
|
|
33449
|
+
while ((match = SUITE_TAG.exec(xml)) !== null) {
|
|
33450
|
+
const [, closing, attrs, selfClosing] = match;
|
|
33451
|
+
if (closing) {
|
|
33452
|
+
depth--;
|
|
33453
|
+
continue;
|
|
33454
|
+
}
|
|
33455
|
+
if (depth === 0 && summed) {
|
|
33456
|
+
seen++;
|
|
33457
|
+
const suite = countsFromAttrs(attrs);
|
|
33458
|
+
if (suite) {
|
|
33459
|
+
summed.tests += suite.tests;
|
|
33460
|
+
summed.failed += suite.failed;
|
|
33461
|
+
summed.skipped += suite.skipped;
|
|
33462
|
+
}
|
|
33463
|
+
else {
|
|
33464
|
+
summed = null;
|
|
33465
|
+
}
|
|
33466
|
+
}
|
|
33467
|
+
if (!selfClosing)
|
|
33468
|
+
depth++;
|
|
33469
|
+
}
|
|
33470
|
+
counts = seen > 0 && summed ? summed : countsFromTestcases(xml);
|
|
33471
|
+
}
|
|
33472
|
+
if (counts.tests === 0)
|
|
33473
|
+
return null;
|
|
33474
|
+
const passed = Math.max(0, counts.tests - counts.failed - counts.skipped);
|
|
33475
|
+
return {
|
|
33476
|
+
total: counts.tests,
|
|
33477
|
+
passed,
|
|
33478
|
+
failed: counts.failed,
|
|
33479
|
+
skipped: counts.skipped > 0 ? counts.skipped : undefined,
|
|
33480
|
+
result: counts.failed > 0 ? 'FAILED' : 'PASSED',
|
|
33481
|
+
};
|
|
33482
|
+
}
|
|
33483
|
+
|
|
33484
|
+
|
|
33367
33485
|
/***/ }),
|
|
33368
33486
|
|
|
33369
33487
|
/***/ 9839:
|