zephyr-enterprise-tools 1.1.0 → 1.2.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.
package/cli.js CHANGED
@@ -15,17 +15,19 @@
15
15
  * zephyr-tools mcp # Start MCP server
16
16
  */
17
17
 
18
+ import QualityGates from './zephyr-enterprise-tools.js';
19
+
18
20
  // Check if MCP server mode
19
21
  if (process.argv[2] === 'mcp') {
20
22
  import('./mcp-server.js');
21
23
  } else {
22
- // Normal CLI mode
23
- runCLI();
24
+ main().catch(err => {
25
+ console.error(`Error: ${err.message}`);
26
+ if (process.env.DEBUG) console.error(err.stack);
27
+ process.exit(1);
28
+ });
24
29
  }
25
30
 
26
- async function runCLI() {
27
- const { default: QualityGates } = await import('./zephyr-enterprise-tools.js');
28
-
29
31
  // ─── Parse Arguments ──────────────────────────────────────────────────────────
30
32
 
31
33
  function parseArgs() {
@@ -545,6 +547,3 @@ async function main() {
545
547
  process.exit(1);
546
548
  }
547
549
  }
548
-
549
- main();
550
- } // end runCLI
package/package.json CHANGED
@@ -1,10 +1,14 @@
1
1
  {
2
2
  "name": "zephyr-enterprise-tools",
3
- "version": "1.1.0",
3
+ "version": "1.2.1",
4
4
  "description": "Comprehensive Zephyr Enterprise Tools - Release Readiness, Project Health, Test Analytics & More",
5
5
  "main": "zephyr-enterprise-tools.js",
6
+ "types": "zephyr-enterprise-tools.d.ts",
6
7
  "exports": {
7
- ".": "./zephyr-enterprise-tools.js",
8
+ ".": {
9
+ "import": "./zephyr-enterprise-tools.js",
10
+ "types": "./zephyr-enterprise-tools.d.ts"
11
+ },
8
12
  "./cli": "./cli.js",
9
13
  "./mcp": "./mcp-server.js"
10
14
  },
@@ -52,6 +56,7 @@
52
56
  },
53
57
  "files": [
54
58
  "zephyr-enterprise-tools.js",
59
+ "zephyr-enterprise-tools.d.ts",
55
60
  "cli.js",
56
61
  "mcp-server.js",
57
62
  "README.md",
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Zephyr Enterprise Tools - TypeScript Declarations
3
+ */
4
+
5
+ export interface ZephyrConfig {
6
+ baseUrl?: string;
7
+ token?: string;
8
+ }
9
+
10
+ export interface ThresholdConfig {
11
+ requirementCoverage: { go: number; description: string };
12
+ testPlanAnalysis: { noGo: number; conditionalGo: number; description: string };
13
+ testExecution: { noGo: number; conditionalGo: number; description: string };
14
+ defectQuality: { blockerLimit: number; highRiskLimit: number; description: string };
15
+ }
16
+
17
+ export type GateStatus = "GO" | "CONDITIONAL GO" | "NO GO";
18
+ export type HealthStatus = "HEALTHY" | "MODERATE" | "AT RISK" | "CRITICAL";
19
+
20
+ export interface GateResult {
21
+ gate: string;
22
+ status: GateStatus;
23
+ statusMessage: string;
24
+ [key: string]: unknown;
25
+ }
26
+
27
+ export interface RequirementCoverageResult extends GateResult {
28
+ coveragePercentage: number;
29
+ coveredRequirements: number;
30
+ notCoveredRequirements: number;
31
+ totalRequirements: number;
32
+ }
33
+
34
+ export interface TestPlanResult extends GateResult {
35
+ overallPlanningPercentage: number;
36
+ totalTests: number;
37
+ plannedTests: number;
38
+ assignedTests: number;
39
+ }
40
+
41
+ export interface TestExecutionResult extends GateResult {
42
+ executionPercentage: number;
43
+ completedTests: number;
44
+ totalPlannedTests: number;
45
+ breakdown: {
46
+ passed: number;
47
+ failed: number;
48
+ blocked: number;
49
+ wip: number;
50
+ notExecuted: number;
51
+ };
52
+ }
53
+
54
+ export interface DefectQualityResult extends GateResult {
55
+ totalDefects: number;
56
+ breakdown: {
57
+ blocker: { count: number; defects: unknown[] };
58
+ highRisk: { count: number; defects: unknown[] };
59
+ lowRisk: { count: number; defects: unknown[] };
60
+ resolved: { count: number };
61
+ };
62
+ }
63
+
64
+ export interface ReleaseReadinessResult {
65
+ projectId: number;
66
+ releaseId: number;
67
+ timestamp: string;
68
+ overallStatus: GateStatus;
69
+ summary: { passed: number; failed: number; conditional: number };
70
+ recommendation: string;
71
+ gates: {
72
+ requirementCoverage: RequirementCoverageResult;
73
+ testPlanAnalysis: TestPlanResult;
74
+ testExecution: TestExecutionResult;
75
+ defectQuality: DefectQualityResult;
76
+ };
77
+ }
78
+
79
+ export interface ProjectHealthResult {
80
+ tool: string;
81
+ projectId: number;
82
+ releaseId: number;
83
+ timestamp: string;
84
+ healthScore: number;
85
+ healthStatus: HealthStatus;
86
+ summary: Record<string, unknown>;
87
+ metrics: Record<string, Record<string, unknown>>;
88
+ recommendations: string[];
89
+ }
90
+
91
+ export interface TestCoverageResult {
92
+ tool: string;
93
+ projectId: number;
94
+ releaseId: number;
95
+ timestamp: string;
96
+ summary: Record<string, unknown>;
97
+ [key: string]: unknown;
98
+ }
99
+
100
+ export interface FailedTest {
101
+ testcaseId: number;
102
+ testcaseKey: string;
103
+ testcaseName: string;
104
+ executedBy?: string;
105
+ [key: string]: unknown;
106
+ }
107
+
108
+ export interface FailedTestsResult {
109
+ tool: string;
110
+ projectId: number;
111
+ releaseId: number;
112
+ timestamp: string;
113
+ failedTests: FailedTest[];
114
+ total: number;
115
+ }
116
+
117
+ export interface RequirementCoverageDetailResult {
118
+ tool: string;
119
+ projectId: number;
120
+ releaseId: number;
121
+ timestamp: string;
122
+ results: unknown[];
123
+ [key: string]: unknown;
124
+ }
125
+
126
+ export interface TestTrendsResult {
127
+ tool: string;
128
+ projectId: number;
129
+ releaseId: number;
130
+ timestamp: string;
131
+ dailyTrends: Array<{ date: string; total: number; passed: number; failed: number; blocked: number }>;
132
+ [key: string]: unknown;
133
+ }
134
+
135
+ export interface SearchTestCasesOptions {
136
+ query?: string;
137
+ limit?: number;
138
+ }
139
+
140
+ export interface SearchTestCasesResult {
141
+ tool: string;
142
+ projectId: number;
143
+ releaseId: number;
144
+ timestamp: string;
145
+ results: Array<{ id: number; key: string; name: string; status?: string }>;
146
+ totalMatches: number;
147
+ returned: number;
148
+ }
149
+
150
+ export interface UserActivityOptions {
151
+ days?: number;
152
+ }
153
+
154
+ export interface UserActivityResult {
155
+ tool: string;
156
+ projectId: number;
157
+ releaseId: number;
158
+ timestamp: string;
159
+ period: { days: number };
160
+ teamSummary: Record<string, unknown>;
161
+ assignedTo: unknown[];
162
+ executedBy: unknown[];
163
+ topExecutors: unknown[];
164
+ }
165
+
166
+ export interface FailedTestsOptions {
167
+ limit?: number;
168
+ }
169
+
170
+ export interface TrendsOptions {
171
+ days?: number;
172
+ }
173
+
174
+ export declare class QualityGates {
175
+ constructor(config: ZephyrConfig);
176
+
177
+ // Quality Gates (Release Readiness)
178
+ requirementCoverageGate(projectId: number, releaseId: number): Promise<RequirementCoverageResult>;
179
+ testPlanAnalysisGate(projectId: number, releaseId: number): Promise<TestPlanResult>;
180
+ testExecutionGate(projectId: number, releaseId: number): Promise<TestExecutionResult>;
181
+ defectQualityGate(projectId: number, releaseId: number): Promise<DefectQualityResult>;
182
+ runAllGates(projectId: number, releaseId: number): Promise<ReleaseReadinessResult>;
183
+
184
+ // Analytics & Insights
185
+ getProjectHealth(projectId: number, releaseId: number): Promise<ProjectHealthResult>;
186
+ getTestCoverage(projectId: number, releaseId: number): Promise<TestCoverageResult>;
187
+ getFailedTests(projectId: number, releaseId: number, options?: FailedTestsOptions): Promise<FailedTestsResult>;
188
+ getRequirementCoverage(projectId: number, releaseId: number): Promise<RequirementCoverageDetailResult>;
189
+ getTestCaseTrends(projectId: number, releaseId: number, options?: TrendsOptions): Promise<TestTrendsResult>;
190
+ searchTestCases(projectId: number, releaseId: number, options?: SearchTestCasesOptions): Promise<SearchTestCasesResult>;
191
+ getUserActivity(projectId: number, releaseId: number, options?: UserActivityOptions): Promise<UserActivityResult>;
192
+ }
193
+
194
+ export declare const THRESHOLDS: ThresholdConfig;
195
+ export declare const RESOLVED_STATUSES: string[];
196
+ export declare const BLOCKER_PRIORITIES: string[];
197
+ export declare const HIGH_RISK_PRIORITIES: string[];
198
+ export declare const LOW_RISK_PRIORITIES: string[];
199
+
200
+ /** Alias for QualityGates — kept for backward compatibility */
201
+ export { QualityGates as ZephyrTools };
202
+ export default QualityGates;