@quenty/cli-output-helpers 1.9.0 → 1.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/reporting/composite-reporter.d.ts +3 -1
  3. package/dist/reporting/composite-reporter.d.ts.map +1 -1
  4. package/dist/reporting/composite-reporter.js +9 -0
  5. package/dist/reporting/composite-reporter.js.map +1 -1
  6. package/dist/reporting/github/comment-table-reporter.d.ts +2 -1
  7. package/dist/reporting/github/comment-table-reporter.d.ts.map +1 -1
  8. package/dist/reporting/github/comment-table-reporter.js +3 -0
  9. package/dist/reporting/github/comment-table-reporter.js.map +1 -1
  10. package/dist/reporting/github/formatting.d.ts +3 -3
  11. package/dist/reporting/github/formatting.d.ts.map +1 -1
  12. package/dist/reporting/github/formatting.js +31 -16
  13. package/dist/reporting/github/formatting.js.map +1 -1
  14. package/dist/reporting/grouped-reporter.d.ts.map +1 -1
  15. package/dist/reporting/grouped-reporter.js +14 -2
  16. package/dist/reporting/grouped-reporter.js.map +1 -1
  17. package/dist/reporting/index.d.ts +2 -1
  18. package/dist/reporting/index.d.ts.map +1 -1
  19. package/dist/reporting/index.js +2 -0
  20. package/dist/reporting/index.js.map +1 -1
  21. package/dist/reporting/progress-format.d.ts +35 -0
  22. package/dist/reporting/progress-format.d.ts.map +1 -0
  23. package/dist/reporting/progress-format.js +88 -0
  24. package/dist/reporting/progress-format.js.map +1 -0
  25. package/dist/reporting/reporter.d.ts +27 -1
  26. package/dist/reporting/reporter.d.ts.map +1 -1
  27. package/dist/reporting/reporter.js +1 -0
  28. package/dist/reporting/reporter.js.map +1 -1
  29. package/dist/reporting/simple-reporter.d.ts.map +1 -1
  30. package/dist/reporting/simple-reporter.js +4 -1
  31. package/dist/reporting/simple-reporter.js.map +1 -1
  32. package/dist/reporting/spinner-reporter.d.ts.map +1 -1
  33. package/dist/reporting/spinner-reporter.js +25 -6
  34. package/dist/reporting/spinner-reporter.js.map +1 -1
  35. package/dist/reporting/state/live-state-tracker.d.ts +3 -1
  36. package/dist/reporting/state/live-state-tracker.d.ts.map +1 -1
  37. package/dist/reporting/state/live-state-tracker.js +15 -0
  38. package/dist/reporting/state/live-state-tracker.js.map +1 -1
  39. package/dist/reporting/state/loaded-state-tracker.d.ts +2 -1
  40. package/dist/reporting/state/loaded-state-tracker.d.ts.map +1 -1
  41. package/dist/reporting/state/loaded-state-tracker.js +4 -0
  42. package/dist/reporting/state/loaded-state-tracker.js.map +1 -1
  43. package/dist/reporting/state/state-tracker.d.ts +3 -1
  44. package/dist/reporting/state/state-tracker.d.ts.map +1 -1
  45. package/dist/reporting/summary-table-reporter.d.ts.map +1 -1
  46. package/dist/reporting/summary-table-reporter.js +34 -6
  47. package/dist/reporting/summary-table-reporter.js.map +1 -1
  48. package/package.json +2 -2
  49. package/src/reporting/composite-reporter.ts +12 -1
  50. package/src/reporting/github/comment-table-reporter.ts +5 -0
  51. package/src/reporting/github/formatting.ts +43 -17
  52. package/src/reporting/grouped-reporter.ts +15 -4
  53. package/src/reporting/index.ts +12 -0
  54. package/src/reporting/progress-format.ts +97 -0
  55. package/src/reporting/reporter.ts +34 -1
  56. package/src/reporting/simple-reporter.ts +4 -1
  57. package/src/reporting/spinner-reporter.ts +24 -12
  58. package/src/reporting/state/live-state-tracker.ts +16 -1
  59. package/src/reporting/state/loaded-state-tracker.ts +6 -0
  60. package/src/reporting/state/state-tracker.ts +3 -1
  61. package/src/reporting/summary-table-reporter.ts +40 -6
  62. package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,28 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.10.1](https://github.com/Quenty/Nevermore/compare/@quenty/cli-output-helpers@1.10.0...@quenty/cli-output-helpers@1.10.1) (2026-04-27)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **cli-output-helpers:** collapse no-results PR comment to single line ([083969c](https://github.com/Quenty/Nevermore/commit/083969c128b14f8b8accceb6bc3e1dfd37c3739d))
12
+
13
+
14
+
15
+
16
+
17
+ # [1.10.0](https://github.com/Quenty/Nevermore/compare/@quenty/cli-output-helpers@1.9.0...@quenty/cli-output-helpers@1.10.0) (2026-02-23)
18
+
19
+
20
+ ### Features
21
+
22
+ * **cli:** add structured progress and failure context to reporting ([#668](https://github.com/Quenty/Nevermore/issues/668)) ([e716329](https://github.com/Quenty/Nevermore/commit/e716329f5aeace8b213322ba3cce06b98d8ea43d))
23
+
24
+
25
+
26
+
27
+
6
28
  # [1.9.0](https://github.com/Quenty/Nevermore/compare/@quenty/cli-output-helpers@1.8.0...@quenty/cli-output-helpers@1.9.0) (2026-02-19)
7
29
 
8
30
 
@@ -1,4 +1,4 @@
1
- import { type PackageResult, type Reporter, type JobPhase } from './reporter.js';
1
+ import { type PackageResult, type Reporter, type JobPhase, type ProgressSummary } from './reporter.js';
2
2
  import { LiveStateTracker } from './state/live-state-tracker.js';
3
3
  /**
4
4
  * Owns a LiveStateTracker and fans out every lifecycle hook
@@ -10,9 +10,11 @@ export declare class CompositeReporter implements Reporter {
10
10
  private _state;
11
11
  private _reporters;
12
12
  constructor(packageNames: string[], factory: (state: LiveStateTracker) => Reporter[]);
13
+ get state(): LiveStateTracker;
13
14
  startAsync(): Promise<void>;
14
15
  onPackageStart(packageName: string): void;
15
16
  onPackagePhaseChange(packageName: string, phase: JobPhase): void;
17
+ onPackageProgressUpdate(packageName: string, progress: ProgressSummary): void;
16
18
  onPackageResult(result: PackageResult, bufferedOutput?: string[]): void;
17
19
  stopAsync(): Promise<void>;
18
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"composite-reporter.d.ts","sourceRoot":"","sources":["../../src/reporting/composite-reporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,QAAQ;IAChD,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,UAAU,CAAa;gBAG7B,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,QAAQ,EAAE;IAM5C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAOzC,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI;IAOhE,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAOjE,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAMjC"}
1
+ {"version":3,"file":"composite-reporter.d.ts","sourceRoot":"","sources":["../../src/reporting/composite-reporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACvG,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,QAAQ;IAChD,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,UAAU,CAAa;gBAG7B,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,QAAQ,EAAE;IAMlD,IAAI,KAAK,IAAI,gBAAgB,CAE5B;IAEK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAOzC,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI;IAOhE,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI;IAO7E,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAOjE,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAMjC"}
@@ -12,6 +12,9 @@ export class CompositeReporter {
12
12
  this._state = new LiveStateTracker(packageNames);
13
13
  this._reporters = factory(this._state);
14
14
  }
15
+ get state() {
16
+ return this._state;
17
+ }
15
18
  async startAsync() {
16
19
  await this._state.startAsync();
17
20
  for (const r of this._reporters) {
@@ -30,6 +33,12 @@ export class CompositeReporter {
30
33
  r.onPackagePhaseChange(packageName, phase);
31
34
  }
32
35
  }
36
+ onPackageProgressUpdate(packageName, progress) {
37
+ this._state.onPackageProgressUpdate(packageName, progress);
38
+ for (const r of this._reporters) {
39
+ r.onPackageProgressUpdate(packageName, progress);
40
+ }
41
+ }
33
42
  onPackageResult(result, bufferedOutput) {
34
43
  this._state.onPackageResult(result, bufferedOutput);
35
44
  for (const r of this._reporters) {
@@ -1 +1 @@
1
- {"version":3,"file":"composite-reporter.js","sourceRoot":"","sources":["../../src/reporting/composite-reporter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAmB;IACzB,UAAU,CAAa;IAE/B,YACE,YAAsB,EACtB,OAAgD;QAEhD,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED,cAAc,CAAC,WAAmB;QAChC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACxC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,oBAAoB,CAAC,WAAmB,EAAE,KAAe;QACvD,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACrD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,eAAe,CAAC,MAAqB,EAAE,cAAyB;QAC9D,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS;QACb,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IAChC,CAAC;CACF"}
1
+ {"version":3,"file":"composite-reporter.js","sourceRoot":"","sources":["../../src/reporting/composite-reporter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAmB;IACzB,UAAU,CAAa;IAE/B,YACE,YAAsB,EACtB,OAAgD;QAEhD,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED,cAAc,CAAC,WAAmB;QAChC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACxC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,oBAAoB,CAAC,WAAmB,EAAE,KAAe;QACvD,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACrD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,uBAAuB,CAAC,WAAmB,EAAE,QAAyB;QACpE,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC3D,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,CAAC,CAAC,uBAAuB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,eAAe,CAAC,MAAqB,EAAE,cAAyB;QAC9D,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS;QACb,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IAChC,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { type PackageResult, type PackageStatus, BaseReporter } from '../reporter.js';
1
+ import { type PackageResult, type PackageStatus, type ProgressSummary, BaseReporter } from '../reporter.js';
2
2
  import { type IStateTracker } from '../state/state-tracker.js';
3
3
  import { type GithubCommentTableConfig } from './formatting.js';
4
4
  export type { GithubCommentColumn, GithubCommentTableConfig, GithubTableRow, } from './formatting.js';
@@ -34,6 +34,7 @@ export declare class GithubCommentTableReporter extends BaseReporter {
34
34
  startAsync(): Promise<void>;
35
35
  onPackageStart(_name: string): void;
36
36
  onPackagePhaseChange(_name: string, _phase: PackageStatus): void;
37
+ onPackageProgressUpdate(_name: string, _progress: ProgressSummary): void;
37
38
  onPackageResult(_result: PackageResult): void;
38
39
  stopAsync(): Promise<void>;
39
40
  private _scheduleUpdate;
@@ -1 +1 @@
1
- {"version":3,"file":"comment-table-reporter.d.ts","sourceRoot":"","sources":["../../../src/reporting/github/comment-table-reporter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,KAAK,wBAAwB,EAI9B,MAAM,iBAAiB,CAAC;AAOzB,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;GAMG;AACH,qBAAa,0BAA2B,SAAQ,YAAY;IAC1D,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,eAAe,CAAqB;IAE5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAU;gBAG3C,KAAK,EAAE,aAAa,GAAG,SAAS,EAChC,MAAM,EAAE,wBAAwB,EAChC,WAAW,CAAC,EAAE,MAAM;IAQtB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,oBAAoB,CAC3B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,aAAa,GACpB,IAAI;IAIE,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAIvC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBzC,OAAO,CAAC,eAAe;YAmBT,gBAAgB;YAUhB,iBAAiB;CAOhC"}
1
+ {"version":3,"file":"comment-table-reporter.d.ts","sourceRoot":"","sources":["../../../src/reporting/github/comment-table-reporter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,KAAK,wBAAwB,EAI9B,MAAM,iBAAiB,CAAC;AAOzB,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;GAMG;AACH,qBAAa,0BAA2B,SAAQ,YAAY;IAC1D,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,eAAe,CAAqB;IAE5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAU;gBAG3C,KAAK,EAAE,aAAa,GAAG,SAAS,EAChC,MAAM,EAAE,wBAAwB,EAChC,WAAW,CAAC,EAAE,MAAM;IAQtB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,oBAAoB,CAC3B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,aAAa,GACpB,IAAI;IAIE,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,IAAI;IAIxE,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAIvC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBzC,OAAO,CAAC,eAAe;YAmBT,gBAAgB;YAUhB,iBAAiB;CAOhC"}
@@ -51,6 +51,9 @@ export class GithubCommentTableReporter extends BaseReporter {
51
51
  onPackagePhaseChange(_name, _phase) {
52
52
  this._scheduleUpdate();
53
53
  }
54
+ onPackageProgressUpdate(_name, _progress) {
55
+ this._scheduleUpdate();
56
+ }
54
57
  onPackageResult(_result) {
55
58
  this._scheduleUpdate();
56
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"comment-table-reporter.js","sourceRoot":"","sources":["../../../src/reporting/github/comment-table-reporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"comment-table-reporter.js","sourceRoot":"","sources":["../../../src/reporting/github/comment-table-reporter.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Both the PR comment reporter and job summary reporter use these to
5
5
  * render identical markdown tables from batch run state.
6
6
  */
7
- import { type PackageResult, type PackageStatus } from '../reporter.js';
7
+ import { type PackageResult, type PackageStatus, type ProgressSummary, type JobPhase } from '../reporter.js';
8
8
  import { type IStateTracker, type PackageState } from '../state/state-tracker.js';
9
9
  /** A column to render in the GitHub comment table. */
10
10
  export interface GithubCommentColumn {
@@ -46,8 +46,8 @@ export interface GithubTableRow {
46
46
  * Summarize an error string for display in compact contexts (tables, etc.).
47
47
  * Parses JSON API error bodies and truncates long messages.
48
48
  */
49
- export declare function summarizeError(error: string): string;
50
- export declare function formatRunningStatus(phase: PackageStatus): string;
49
+ export declare function summarizeError(error: string, failedPhase?: JobPhase): string;
50
+ export declare function formatRunningStatus(phase: PackageStatus, progress?: ProgressSummary): string;
51
51
  export declare function formatResultStatus(pkg: PackageResult, successLabel: string, failureLabel: string): string;
52
52
  export declare function getActionsRunUrl(): string | undefined;
53
53
  /** Render a markdown table with header, data rows, and footer. */
@@ -1 +1 @@
1
- {"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../../src/reporting/github/formatting.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,2BAA2B,CAAC;AAInC,sDAAsD;AACtD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAAC;IAClC,kEAAkE;IAClE,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CAChC;AAED,gDAAgD;AAChD,MAAM,WAAW,wBAAwB;IACvC,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACrC,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6FAA6F;IAC7F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAkBpD;AA4BD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAEhE;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,aAAa,EAClB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,MAAM,CAKR;AAED,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAUrD;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,cAAc,EAAE,EACtB,YAAY,EAAE,mBAAmB,EAAE,EACnC,MAAM,EAAE,MAAM,GACb,MAAM,CAyCR;AA8BD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,wBAAwB,EAChC,WAAW,EAAE,MAAM,GAClB,MAAM,CA0ER;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,wBAAwB,EAChC,OAAO,EAAE,MAAM,GACd,MAAM,CAcR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,MAAM,GACZ,MAAM,CAcR"}
1
+ {"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../../src/reporting/github/formatting.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,2BAA2B,CAAC;AASnC,sDAAsD;AACtD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAAC;IAClC,kEAAkE;IAClE,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CAChC;AAED,gDAAgD;AAChD,MAAM,WAAW,wBAAwB;IACvC,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACrC,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6FAA6F;IAC7F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAG,MAAM,CAkB5E;AA4BD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,aAAa,EACpB,QAAQ,CAAC,EAAE,eAAe,GACzB,MAAM,CAOR;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,aAAa,EAClB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,MAAM,CAiBR;AAED,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAUrD;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,cAAc,EAAE,EACtB,YAAY,EAAE,mBAAmB,EAAE,EACnC,MAAM,EAAE,MAAM,GACb,MAAM,CAyCR;AA8BD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,wBAAwB,EAChC,WAAW,EAAE,MAAM,GAClB,MAAM,CA4ER;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,wBAAwB,EAChC,OAAO,EAAE,MAAM,GACd,MAAM,CAWR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,MAAM,GACZ,MAAM,CAcR"}
@@ -5,12 +5,13 @@
5
5
  * render identical markdown tables from batch run state.
6
6
  */
7
7
  import { formatDurationMs } from '../../cli-utils.js';
8
+ import { formatProgressInline, formatProgressResult, isEmptyTestRun, } from '../progress-format.js';
8
9
  // ── Error summarization ─────────────────────────────────────────────────────
9
10
  /**
10
11
  * Summarize an error string for display in compact contexts (tables, etc.).
11
12
  * Parses JSON API error bodies and truncates long messages.
12
13
  */
13
- export function summarizeError(error) {
14
+ export function summarizeError(error, failedPhase) {
14
15
  const firstLine = error.split('\n')[0];
15
16
  // Try to extract JSON error body from API responses
16
17
  // Format: "Action failed: STATUS TEXT: {json}"
@@ -51,14 +52,29 @@ const RUNNING_PHASE_LABELS = {
51
52
  connecting: '🔌 Connecting...',
52
53
  executing: '🔄 Executing...',
53
54
  };
54
- export function formatRunningStatus(phase) {
55
- return RUNNING_PHASE_LABELS[phase] ?? '🔄 Running...';
55
+ export function formatRunningStatus(phase, progress) {
56
+ const label = RUNNING_PHASE_LABELS[phase] ?? '🔄 Running...';
57
+ if (progress) {
58
+ const progressText = formatProgressInline(progress);
59
+ return progressText ? `${label} ${progressText}` : label;
60
+ }
61
+ return label;
56
62
  }
57
63
  export function formatResultStatus(pkg, successLabel, failureLabel) {
58
64
  const duration = formatDurationMs(pkg.durationMs);
59
- return pkg.success
60
- ? `✅ ${successLabel} (${duration})`
61
- : `❌ **${failureLabel}** (${duration})`;
65
+ const progressText = formatProgressResult(pkg.progressSummary);
66
+ const empty = isEmptyTestRun(pkg.progressSummary);
67
+ if (pkg.success) {
68
+ const label = progressText
69
+ ? `${successLabel} ${progressText}`
70
+ : successLabel;
71
+ return empty ? `⚠️ ${label} (${duration})` : `✅ ${label} (${duration})`;
72
+ }
73
+ const failedPhase = pkg.failedPhase;
74
+ const label = failedPhase
75
+ ? `**${failureLabel}** at ${failedPhase}`
76
+ : `**${failureLabel}**`;
77
+ return `❌ ${label} (${duration})`;
62
78
  }
63
79
  export function getActionsRunUrl() {
64
80
  const serverUrl = process.env.GITHUB_SERVER_URL;
@@ -144,7 +160,7 @@ export function formatGithubTableBody(state, config, concurrency) {
144
160
  statusText = formatResultStatus(pkg.result, config.successLabel ?? 'Passed', config.failureLabel ?? 'Failed');
145
161
  break;
146
162
  default:
147
- statusText = formatRunningStatus(pkg.status);
163
+ statusText = formatRunningStatus(pkg.status, pkg.progress);
148
164
  break;
149
165
  }
150
166
  const extraCells = extraColumns.map((col) => col.render(pkg));
@@ -158,14 +174,16 @@ export function formatGithubTableBody(state, config, concurrency) {
158
174
  if (allDone) {
159
175
  const passed = packages.filter((p) => p.status === 'passed').length;
160
176
  const failed = packages.filter((p) => p.status === 'failed').length;
177
+ const emptyRuns = packages.filter((p) => isEmptyTestRun(p.progress)).length;
161
178
  const verb = config.summaryVerb ?? 'tested';
162
179
  footer = `**${packages.length} ${verb}, ${passed} passed, ${failed} failed** in ${formatDurationMs(elapsedMs)}`;
180
+ if (emptyRuns > 0) {
181
+ footer += `\n⚠️ ${emptyRuns} package(s) ran 0 tests — check test discovery`;
182
+ }
163
183
  }
164
184
  else {
165
185
  const done = packages.filter((p) => p.status === 'passed' || p.status === 'failed').length;
166
- const running = packages.filter((p) => p.status !== 'pending' &&
167
- p.status !== 'passed' &&
168
- p.status !== 'failed').length;
186
+ const running = packages.filter((p) => p.status !== 'pending' && p.status !== 'passed' && p.status !== 'failed').length;
169
187
  const pending = packages.filter((p) => p.status === 'pending').length;
170
188
  const parts = [];
171
189
  if (done > 0)
@@ -184,13 +202,10 @@ export function formatGithubTableBody(state, config, concurrency) {
184
202
  export function formatGithubNoTestsBody(config, message) {
185
203
  const actionsRunUrl = getActionsRunUrl();
186
204
  const heading = config.heading;
205
+ const logsPart = actionsRunUrl ? ` · [View logs](${actionsRunUrl})` : '';
187
206
  let body = config.commentMarker + '\n';
188
- body += `## ${heading}\n\n`;
189
- body += `ℹ️ **No tests to run**\n\n`;
190
- body += `${message}\n`;
191
- if (actionsRunUrl) {
192
- body += `\n[View logs](${actionsRunUrl})\n`;
193
- }
207
+ body += `## ${heading}\n`;
208
+ body += `ℹ️ ${message}${logsPart}\n`;
194
209
  return body;
195
210
  }
196
211
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../../src/reporting/github/formatting.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAmDtD,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvC,oDAAoD;IACpD,+CAA+C;IAC/C,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtE,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC;QAC/C,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,GAAG,MAAM,KAAK,MAAM,MAAM,OAAO,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;IACxC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;YAC9D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAClC,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,WAAW;IACb,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,+EAA+E;AAE/E,MAAM,oBAAoB,GAA2B;IACnD,QAAQ,EAAE,gBAAgB;IAC1B,SAAS,EAAE,iBAAiB;IAC5B,UAAU,EAAE,iBAAiB;IAC7B,SAAS,EAAE,iBAAiB;IAC5B,UAAU,EAAE,kBAAkB;IAC9B,SAAS,EAAE,iBAAiB;CAC7B,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,KAAoB;IACtD,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,GAAkB,EAClB,YAAoB,EACpB,YAAoB;IAEpB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO,GAAG,CAAC,OAAO;QAChB,CAAC,CAAC,KAAK,YAAY,KAAK,QAAQ,GAAG;QACnC,CAAC,CAAC,OAAO,YAAY,OAAO,QAAQ,GAAG,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAChD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAExC,IAAI,SAAS,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;QACrC,OAAO,GAAG,SAAS,IAAI,UAAU,iBAAiB,KAAK,EAAE,CAAC;IAC5D,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,iBAAiB,CAC/B,MAAgC,EAChC,IAAsB,EACtB,YAAmC,EACnC,MAAc;IAEd,2DAA2D;IAC3D,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QAChD,IAAI,GAAG,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBACrB,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACtC,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7E,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IAEzC,IAAI,IAAI,GAAG,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;IACvC,IAAI,IAAI,MAAM,MAAM,CAAC,OAAO,MAAM,CAAC;IAEnC,aAAa;IACb,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7E,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;IAC5C,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAE9D,YAAY;IACZ,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;IAC5C,CAAC;IAED,IAAI,IAAI,IAAI,CAAC;IACb,IAAI,IAAI,MAAM,CAAC;IAEf,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,IAAI,kBAAkB,aAAa,GAAG,CAAC;IAC7C,CAAC;IAED,IAAI,IAAI,IAAI,CAAC;IACb,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAE/E,SAAS,iBAAiB,CAAC,KAAoB;IAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;IACnC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAClE,OAAO,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;AAClC,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAoB,EACpB,WAAmB,EACnB,UAAkB,EAClB,YAAoB;IAEpB,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAEvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QACxC,OAAO,cACL,UAAU,GAAG,CACf,IAAI,YAAY,QAAQ,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC;IACrD,CAAC;IAED,OAAO,cAAc,UAAU,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAoB,EACpB,MAAgC,EAChC,WAAmB;IAEnB,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CACtD,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC;IAEjD,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAE3E,MAAM,IAAI,GAAqB,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAiB,EAAE,EAAE;QAChE,IAAI,UAAkB,CAAC;QAEvB,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,SAAS;gBACZ,UAAU,GAAG,oBAAoB,CAC/B,KAAK,EACL,WAAW,EACX,YAAY,EAAE,EACd,YAAY,CACb,CAAC;gBACF,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ;gBACX,UAAU,GAAG,kBAAkB,CAC7B,GAAG,CAAC,MAAO,EACX,MAAM,CAAC,YAAY,IAAI,QAAQ,EAC/B,MAAM,CAAC,YAAY,IAAI,QAAQ,CAChC,CAAC;gBACF,MAAM;YACR;gBACE,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC7C,MAAM;QACV,CAAC;QAED,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAE9D,OAAO;YACL,WAAW,EAAE,GAAG,CAAC,IAAI;YACrB,MAAM,EAAE,UAAU;YAClB,UAAU;SACX,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,MAAc,CAAC;IACnB,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;QACpE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;QACpE,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC;QAC5C,MAAM,GAAG,KACP,QAAQ,CAAC,MACX,IAAI,IAAI,KAAK,MAAM,YAAY,MAAM,gBAAgB,gBAAgB,CACnE,SAAS,CACV,EAAE,CAAC;IACN,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CACtD,CAAC,MAAM,CAAC;QACT,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAC7B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,MAAM,KAAK,SAAS;YACtB,CAAC,CAAC,MAAM,KAAK,QAAQ;YACrB,CAAC,CAAC,MAAM,KAAK,QAAQ,CACxB,CAAC,MAAM,CAAC;QACT,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QACtE,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,IAAI,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;QACzC,IAAI,OAAO,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,UAAU,CAAC,CAAC;QAClD,IAAI,OAAO,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,UAAU,CAAC,CAAC;QAClD,MAAM,GAAG,KAAK,QAAQ,CAAC,MAAM,iBAAiB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACnE,CAAC;IAED,OAAO,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAgC,EAChC,OAAe;IAEf,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAE/B,IAAI,IAAI,GAAG,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;IACvC,IAAI,IAAI,MAAM,OAAO,MAAM,CAAC;IAC5B,IAAI,IAAI,4BAA4B,CAAC;IACrC,IAAI,IAAI,GAAG,OAAO,IAAI,CAAC;IAEvB,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,IAAI,iBAAiB,aAAa,KAAK,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAgC,EAChC,KAAa;IAEb,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC;IAEtD,IAAI,IAAI,GAAG,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;IACvC,IAAI,IAAI,MAAM,OAAO,MAAM,CAAC;IAC5B,IAAI,IAAI,+CAA+C,CAAC;IACxD,IAAI,IAAI,WAAW,KAAK,YAAY,CAAC;IAErC,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,IAAI,iBAAiB,aAAa,KAAK,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../../src/reporting/github/formatting.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"grouped-reporter.d.ts","sourceRoot":"","sources":["../../src/reporting/grouped-reporter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,KAAK,CAAU;gBAEX,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,sBAAsB;IAOlD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMlC,eAAe,CACtB,MAAM,EAAE,aAAa,EACrB,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,IAAI;IAIP,OAAO,CAAC,mBAAmB;CAuD5B"}
1
+ {"version":3,"file":"grouped-reporter.d.ts","sourceRoot":"","sources":["../../src/reporting/grouped-reporter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,KAAK,CAAU;gBAEX,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,sBAAsB;IAOlD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMlC,eAAe,CACtB,MAAM,EAAE,aAAa,EACrB,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,IAAI;IAIP,OAAO,CAAC,mBAAmB;CAiE5B"}
@@ -1,6 +1,7 @@
1
1
  import { OutputHelper } from '../outputHelper.js';
2
2
  import { formatDurationMs, isCI } from '../cli-utils.js';
3
3
  import { BaseReporter } from './reporter.js';
4
+ import { formatProgressResult, isEmptyTestRun } from './progress-format.js';
4
5
  /**
5
6
  * CI / verbose / non-TTY output for batch job progress.
6
7
  * Prints grouped result blocks as each package completes.
@@ -44,11 +45,22 @@ export class GroupedReporter extends BaseReporter {
44
45
  const duration = formatDurationMs(result.durationMs);
45
46
  const successLabel = this._options.successLabel ?? 'Passed';
46
47
  const failureLabel = this._options.failureLabel ?? 'FAILED';
48
+ const progressText = formatProgressResult(result.progressSummary);
49
+ const empty = isEmptyTestRun(result.progressSummary);
47
50
  if (result.success) {
48
- console.log(` ${OutputHelper.formatSuccess('✓')} ${OutputHelper.formatSuccess(successLabel)} ${OutputHelper.formatDim(`(${duration})`)}`);
51
+ const label = progressText ? `${successLabel} ${progressText}` : successLabel;
52
+ const formatted = empty
53
+ ? OutputHelper.formatWarning(`${label} ⚠`)
54
+ : OutputHelper.formatSuccess(label);
55
+ const icon = empty ? OutputHelper.formatWarning('⚠') : OutputHelper.formatSuccess('✓');
56
+ console.log(` ${icon} ${formatted} ${OutputHelper.formatDim(`(${duration})`)}`);
49
57
  }
50
58
  else {
51
- console.log(` ${OutputHelper.formatError('✗')} ${OutputHelper.formatError(failureLabel)} ${OutputHelper.formatDim(`(${duration})`)}`);
59
+ const failedPhase = result.failedPhase;
60
+ const label = failedPhase
61
+ ? `${failureLabel} at ${failedPhase}`
62
+ : failureLabel;
63
+ console.log(` ${OutputHelper.formatError('✗')} ${OutputHelper.formatError(label)} ${OutputHelper.formatDim(`(${duration})`)}`);
52
64
  }
53
65
  if (showLogs) {
54
66
  if (result.logs) {
@@ -1 +1 @@
1
- {"version":3,"file":"grouped-reporter.js","sourceRoot":"","sources":["../../src/reporting/grouped-reporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grouped-reporter.js","sourceRoot":"","sources":["../../src/reporting/grouped-reporter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- export { BaseReporter, type Reporter, type JobPhase, type PackageStatus, type PackageResult, type BatchSummary, } from './reporter.js';
1
+ export { BaseReporter, type Reporter, type JobPhase, type PackageStatus, type PackageResult, type BatchSummary, type ProgressSummary, type TestCountProgress, type ByteProgress, type StepProgress, } from './reporter.js';
2
+ export { formatProgressInline, formatProgressResult, isEmptyTestRun, summarizeFailure, } from './progress-format.js';
2
3
  export { type IStateTracker, type PackageState, } from './state/state-tracker.js';
3
4
  export { LiveStateTracker } from './state/live-state-tracker.js';
4
5
  export { LoadedStateTracker } from './state/loaded-state-tracker.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reporting/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAGrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,GACjC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reporting/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAGrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,GACjC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC"}
@@ -1,5 +1,7 @@
1
1
  // Core types and base class
2
2
  export { BaseReporter, } from './reporter.js';
3
+ // Progress formatting helpers
4
+ export { formatProgressInline, formatProgressResult, isEmptyTestRun, summarizeFailure, } from './progress-format.js';
3
5
  export { LiveStateTracker } from './state/live-state-tracker.js';
4
6
  export { LoadedStateTracker } from './state/loaded-state-tracker.js';
5
7
  // Reporter implementations
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reporting/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,EACL,YAAY,GAMb,MAAM,eAAe,CAAC;AAOvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,2BAA2B;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EACL,cAAc,GAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,GAEhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,eAAe,GAEhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,GAErB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EAIxB,cAAc,EAId,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reporting/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,EACL,YAAY,GAUb,MAAM,eAAe,CAAC;AAEvB,8BAA8B;AAC9B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,2BAA2B;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EACL,cAAc,GAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,GAEhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,eAAe,GAEhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,GAErB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EAIxB,cAAc,EAId,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Formatting helpers for ProgressSummary values.
3
+ */
4
+ import { type ProgressSummary, type JobPhase } from './reporter.js';
5
+ /**
6
+ * Format progress for inline display in spinners and running status.
7
+ * Returns empty string when progress is undefined.
8
+ *
9
+ * - test-counts: "(5/23)"
10
+ * - bytes: "12.3 MB" or "45%"
11
+ * - steps: "(3/10)"
12
+ */
13
+ export declare function formatProgressInline(progress?: ProgressSummary): string;
14
+ /**
15
+ * Format progress for final result display (passed/failed lines).
16
+ * Returns empty string when progress is undefined.
17
+ *
18
+ * - test-counts: "(23/100)" or "(0/0)"
19
+ * - bytes: "(12.3 MB)"
20
+ * - steps: "(3/10)"
21
+ */
22
+ export declare function formatProgressResult(progress?: ProgressSummary): string;
23
+ /** True when progress is test-counts with total === 0. */
24
+ export declare function isEmptyTestRun(progress?: ProgressSummary): boolean;
25
+ /**
26
+ * Condense a raw error string and optional failedPhase into a short one-liner.
27
+ *
28
+ * Examples:
29
+ * summarizeFailure("Upload failed: 409 Conflict: {...}", "uploading")
30
+ * → "at uploading: Upload failed (409)"
31
+ * summarizeFailure("timeout after 120s", "executing")
32
+ * → "at executing: timeout after 120s"
33
+ */
34
+ export declare function summarizeFailure(error?: string, failedPhase?: JobPhase): string;
35
+ //# sourceMappingURL=progress-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-format.d.ts","sourceRoot":"","sources":["../../src/reporting/progress-format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEpE;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,MAAM,CAkBvE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,MAAM,CAWvE;AAED,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAElE;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,CAAC,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,QAAQ,GACrB,MAAM,CAkBR"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Formatting helpers for ProgressSummary values.
3
+ */
4
+ /**
5
+ * Format progress for inline display in spinners and running status.
6
+ * Returns empty string when progress is undefined.
7
+ *
8
+ * - test-counts: "(5/23)"
9
+ * - bytes: "12.3 MB" or "45%"
10
+ * - steps: "(3/10)"
11
+ */
12
+ export function formatProgressInline(progress) {
13
+ if (!progress)
14
+ return '';
15
+ switch (progress.kind) {
16
+ case 'test-counts':
17
+ return `(${progress.passed}/${progress.total})`;
18
+ case 'bytes':
19
+ if (progress.totalBytes > 0 && progress.transferredBytes > 0) {
20
+ return `(${_formatBytes(progress.transferredBytes)}/${_formatBytes(progress.totalBytes)})`;
21
+ }
22
+ return `(${_formatBytes(progress.totalBytes)})`;
23
+ case 'steps':
24
+ if (progress.total > 0) {
25
+ return `(${progress.completed}/${progress.total})`;
26
+ }
27
+ // Indeterminate: show label or just the count
28
+ return progress.label ? `(${progress.label})` : `(${progress.completed})`;
29
+ }
30
+ }
31
+ /**
32
+ * Format progress for final result display (passed/failed lines).
33
+ * Returns empty string when progress is undefined.
34
+ *
35
+ * - test-counts: "(23/100)" or "(0/0)"
36
+ * - bytes: "(12.3 MB)"
37
+ * - steps: "(3/10)"
38
+ */
39
+ export function formatProgressResult(progress) {
40
+ if (!progress)
41
+ return '';
42
+ switch (progress.kind) {
43
+ case 'test-counts':
44
+ return `(${progress.passed}/${progress.total})`;
45
+ case 'bytes':
46
+ return `(${_formatBytes(progress.totalBytes)})`;
47
+ case 'steps':
48
+ return `(${progress.completed}/${progress.total})`;
49
+ }
50
+ }
51
+ /** True when progress is test-counts with total === 0. */
52
+ export function isEmptyTestRun(progress) {
53
+ return progress?.kind === 'test-counts' && progress.total === 0;
54
+ }
55
+ /**
56
+ * Condense a raw error string and optional failedPhase into a short one-liner.
57
+ *
58
+ * Examples:
59
+ * summarizeFailure("Upload failed: 409 Conflict: {...}", "uploading")
60
+ * → "at uploading: Upload failed (409)"
61
+ * summarizeFailure("timeout after 120s", "executing")
62
+ * → "at executing: timeout after 120s"
63
+ */
64
+ export function summarizeFailure(error, failedPhase) {
65
+ const parts = [];
66
+ if (failedPhase) {
67
+ parts.push(`at ${failedPhase}`);
68
+ }
69
+ if (error) {
70
+ const firstLine = error.split('\n')[0];
71
+ const short = firstLine.length > 60 ? firstLine.slice(0, 57) + '...' : firstLine;
72
+ if (parts.length > 0) {
73
+ parts.push(`: ${short}`);
74
+ }
75
+ else {
76
+ parts.push(short);
77
+ }
78
+ }
79
+ return parts.join('');
80
+ }
81
+ function _formatBytes(bytes) {
82
+ if (bytes < 1024)
83
+ return `${bytes} B`;
84
+ if (bytes < 1024 * 1024)
85
+ return `${(bytes / 1024).toFixed(1)} KB`;
86
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
87
+ }
88
+ //# sourceMappingURL=progress-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-format.js","sourceRoot":"","sources":["../../src/reporting/progress-format.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,30 @@
5
5
  * and end in a terminal state (passed / failed).
6
6
  */
7
7
  /** Execution phases a package can move through. */
8
- export type JobPhase = 'building' | 'downloading' | 'merging' | 'uploading' | 'scheduling' | 'launching' | 'connecting' | 'executing';
8
+ export type JobPhase = 'waiting' | 'building' | 'downloading' | 'merging' | 'combining' | 'uploading' | 'scheduling' | 'launching' | 'connecting' | 'executing';
9
9
  /** Unified status for a package moving through the job lifecycle. */
10
10
  export type PackageStatus = 'pending' | JobPhase | 'passed' | 'failed';
11
+ /** Test count progress: "23/100 passed" */
12
+ export interface TestCountProgress {
13
+ kind: 'test-counts';
14
+ passed: number;
15
+ failed: number;
16
+ total: number;
17
+ }
18
+ /** Byte-level transfer progress: "45% of 12.3 MB" */
19
+ export interface ByteProgress {
20
+ kind: 'bytes';
21
+ transferredBytes: number;
22
+ totalBytes: number;
23
+ }
24
+ /** Generic step progress: "3/10 packages" */
25
+ export interface StepProgress {
26
+ kind: 'steps';
27
+ completed: number;
28
+ total: number;
29
+ label?: string;
30
+ }
31
+ export type ProgressSummary = TestCountProgress | ByteProgress | StepProgress;
11
32
  /** Result for a single package in a batch run. */
12
33
  export interface PackageResult {
13
34
  packageName: string;
@@ -15,6 +36,8 @@ export interface PackageResult {
15
36
  logs: string;
16
37
  durationMs: number;
17
38
  error?: string;
39
+ progressSummary?: ProgressSummary;
40
+ failedPhase?: JobPhase;
18
41
  }
19
42
  /** Summary of a complete batch run. */
20
43
  export interface BatchSummary<TResult extends PackageResult = PackageResult> {
@@ -39,6 +62,8 @@ export interface Reporter {
39
62
  onPackageStart(packageName: string): void;
40
63
  /** Called when a package transitions phases (building, uploading, executing, etc). */
41
64
  onPackagePhaseChange(packageName: string, phase: JobPhase): void;
65
+ /** Called when a package's in-progress metrics update (high-frequency). */
66
+ onPackageProgressUpdate(packageName: string, progress: ProgressSummary): void;
42
67
  /** Called when a single package job completes. */
43
68
  onPackageResult(result: PackageResult, bufferedOutput?: string[]): void;
44
69
  /** Called after all jobs complete. */
@@ -52,6 +77,7 @@ export declare class BaseReporter implements Reporter {
52
77
  startAsync(): Promise<void>;
53
78
  onPackageStart(_packageName: string): void;
54
79
  onPackagePhaseChange(_packageName: string, _phase: JobPhase): void;
80
+ onPackageProgressUpdate(_packageName: string, _progress: ProgressSummary): void;
55
81
  onPackageResult(_result: PackageResult, _bufferedOutput?: string[]): void;
56
82
  stopAsync(): Promise<void>;
57
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/reporting/reporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,mDAAmD;AACnD,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;AAEtI,qEAAqE;AACrE,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvE,kDAAkD;AAClD,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,uCAAuC;AACvC,MAAM,WAAW,YAAY,CAAC,OAAO,SAAS,aAAa,GAAG,aAAa;IACzE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,uCAAuC;IACvC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,+CAA+C;IAC/C,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1C,sFAAsF;IACtF,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IAEjE,kDAAkD;IAClD,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAExE,sCAAsC;IACtC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;;GAGG;AACH,qBAAa,YAAa,YAAW,QAAQ;IACrC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IACjC,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAC1C,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI;IAClE,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IACnE,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CACjC"}
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/reporting/reporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,mDAAmD;AACnD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;AAEhK,qEAAqE;AACrE,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAIvE,2CAA2C;AAC3C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,6CAA6C;AAC7C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,YAAY,GAAG,YAAY,CAAC;AAE9E,kDAAkD;AAClD,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,WAAW,CAAC,EAAE,QAAQ,CAAC;CACxB;AAED,uCAAuC;AACvC,MAAM,WAAW,YAAY,CAAC,OAAO,SAAS,aAAa,GAAG,aAAa;IACzE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,uCAAuC;IACvC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,+CAA+C;IAC/C,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1C,sFAAsF;IACtF,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IAEjE,2EAA2E;IAC3E,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IAE9E,kDAAkD;IAClD,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAExE,sCAAsC;IACtC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;;GAGG;AACH,qBAAa,YAAa,YAAW,QAAQ;IACrC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IACjC,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAC1C,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI;IAClE,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,IAAI;IAC/E,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IACnE,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CACjC"}
@@ -12,6 +12,7 @@ export class BaseReporter {
12
12
  async startAsync() { }
13
13
  onPackageStart(_packageName) { }
14
14
  onPackagePhaseChange(_packageName, _phase) { }
15
+ onPackageProgressUpdate(_packageName, _progress) { }
15
16
  onPackageResult(_result, _bufferedOutput) { }
16
17
  async stopAsync() { }
17
18
  }