zephyr-enterprise-tools 1.2.7 → 1.3.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/README.md +126 -76
- package/cli.js +63 -0
- package/mcp-server.js +63 -0
- package/package.json +1 -1
- package/zephyr-enterprise-tools.d.ts +124 -0
- package/zephyr-enterprise-tools.js +484 -48
|
@@ -88,6 +88,30 @@ export interface ReleaseReadinessResult {
|
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
export interface GateComparison {
|
|
92
|
+
metric: string;
|
|
93
|
+
releaseA: { status: GateStatus; value: number };
|
|
94
|
+
releaseB: { status: GateStatus; value: number };
|
|
95
|
+
delta: number;
|
|
96
|
+
statusChanged: boolean;
|
|
97
|
+
trend: 'improved' | 'regressed' | 'unchanged';
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export interface CompareReleasesResult {
|
|
101
|
+
projectId: number;
|
|
102
|
+
timestamp: string;
|
|
103
|
+
query?: string;
|
|
104
|
+
releaseA: { releaseId: number; projectName: string; releaseName: string; generatedAt: string; fileName: string; overallStatus: GateStatus };
|
|
105
|
+
releaseB: { releaseId: number; projectName: string; releaseName: string; generatedAt: string; fileName: string; overallStatus: GateStatus };
|
|
106
|
+
overallStatusChanged: boolean;
|
|
107
|
+
gates: {
|
|
108
|
+
requirementCoverage: GateComparison;
|
|
109
|
+
testPlanAnalysis: GateComparison;
|
|
110
|
+
testExecution: GateComparison;
|
|
111
|
+
defectQuality: GateComparison;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
91
115
|
export interface ProjectHealthResult {
|
|
92
116
|
tool: string;
|
|
93
117
|
projectId: number;
|
|
@@ -164,6 +188,14 @@ export interface UserActivityOptions {
|
|
|
164
188
|
days?: number;
|
|
165
189
|
}
|
|
166
190
|
|
|
191
|
+
export interface UserActivityTrendSummary {
|
|
192
|
+
mostActiveUser: { userId: number; name: string; executed: number } | null;
|
|
193
|
+
leastActiveUser: { userId: number; name: string; executed: number } | null;
|
|
194
|
+
avgCompletionRate: number;
|
|
195
|
+
teamVelocityTrend: 'increasing' | 'decreasing' | 'steady' | 'insufficient data';
|
|
196
|
+
velocity: { firstHalfAvgPerDay: number; secondHalfAvgPerDay: number; changePct: number } | null;
|
|
197
|
+
}
|
|
198
|
+
|
|
167
199
|
export interface UserActivityResult {
|
|
168
200
|
tool: string;
|
|
169
201
|
projectId: number;
|
|
@@ -171,6 +203,7 @@ export interface UserActivityResult {
|
|
|
171
203
|
timestamp: string;
|
|
172
204
|
period: { days: number };
|
|
173
205
|
teamSummary: Record<string, unknown>;
|
|
206
|
+
trendSummary: UserActivityTrendSummary;
|
|
174
207
|
assignedTo: unknown[];
|
|
175
208
|
executedBy: unknown[];
|
|
176
209
|
topExecutors: unknown[];
|
|
@@ -184,6 +217,93 @@ export interface TrendsOptions {
|
|
|
184
217
|
days?: number;
|
|
185
218
|
}
|
|
186
219
|
|
|
220
|
+
export interface ListUsersOptions {
|
|
221
|
+
pageSize?: number;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
export interface ZephyrUser {
|
|
225
|
+
id: number;
|
|
226
|
+
fullName: string;
|
|
227
|
+
userName: string;
|
|
228
|
+
email: string;
|
|
229
|
+
title?: string;
|
|
230
|
+
location?: string;
|
|
231
|
+
accountEnabled: boolean;
|
|
232
|
+
roles: number[];
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
export interface ListUsersResult {
|
|
236
|
+
tool: string;
|
|
237
|
+
projectId: number;
|
|
238
|
+
timestamp: string;
|
|
239
|
+
total: number;
|
|
240
|
+
returned: number;
|
|
241
|
+
note?: string;
|
|
242
|
+
users: ZephyrUser[];
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export interface ExecutionStatusBreakdown {
|
|
246
|
+
statusCode: number;
|
|
247
|
+
label: string;
|
|
248
|
+
count: number;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
export interface ExecutionStatusCounts {
|
|
252
|
+
total: number;
|
|
253
|
+
breakdown: ExecutionStatusBreakdown[];
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
export interface CyclePhase {
|
|
257
|
+
id: number;
|
|
258
|
+
name: string;
|
|
259
|
+
startDate: string;
|
|
260
|
+
endDate: string;
|
|
261
|
+
executionStatusCounts: ExecutionStatusCounts | null;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
export interface ZephyrCycle {
|
|
265
|
+
id: number;
|
|
266
|
+
name: string;
|
|
267
|
+
environment?: string;
|
|
268
|
+
build?: string;
|
|
269
|
+
startDate: string;
|
|
270
|
+
endDate: string;
|
|
271
|
+
status: number;
|
|
272
|
+
executionStatusCounts: ExecutionStatusCounts | null;
|
|
273
|
+
phases: CyclePhase[];
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
export interface ListCyclesResult {
|
|
277
|
+
tool: string;
|
|
278
|
+
releaseId: number;
|
|
279
|
+
timestamp: string;
|
|
280
|
+
total: number;
|
|
281
|
+
cycles: ZephyrCycle[];
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
export interface CyclePhaseDetail extends CyclePhase {
|
|
285
|
+
freeForm?: boolean;
|
|
286
|
+
resetExecution?: boolean;
|
|
287
|
+
hasChild?: boolean;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
export interface GetCycleResult {
|
|
291
|
+
tool: string;
|
|
292
|
+
cycleId: number;
|
|
293
|
+
timestamp: string;
|
|
294
|
+
id: number;
|
|
295
|
+
name: string;
|
|
296
|
+
environment?: string;
|
|
297
|
+
build?: string;
|
|
298
|
+
startDate: string;
|
|
299
|
+
endDate: string;
|
|
300
|
+
status: number;
|
|
301
|
+
releaseId: number;
|
|
302
|
+
hasChild?: boolean;
|
|
303
|
+
executionStatusCounts: ExecutionStatusCounts | null;
|
|
304
|
+
phases: CyclePhaseDetail[];
|
|
305
|
+
}
|
|
306
|
+
|
|
187
307
|
export declare class QualityGates {
|
|
188
308
|
constructor(config: ZephyrConfig);
|
|
189
309
|
|
|
@@ -193,6 +313,7 @@ export declare class QualityGates {
|
|
|
193
313
|
testExecutionGate(projectId: number, releaseId: number): Promise<TestExecutionResult>;
|
|
194
314
|
defectQualityGate(projectId: number, releaseId: number): Promise<DefectQualityResult>;
|
|
195
315
|
runAllGates(projectId: number, releaseId: number, options?: TestPlanOptions): Promise<ReleaseReadinessResult>;
|
|
316
|
+
compareReleases(projectId: number, releaseId1: number, releaseId2: number, options?: TestPlanOptions): Promise<CompareReleasesResult>;
|
|
196
317
|
|
|
197
318
|
// Analytics & Insights
|
|
198
319
|
getProjectHealth(projectId: number, releaseId: number): Promise<ProjectHealthResult>;
|
|
@@ -202,6 +323,9 @@ export declare class QualityGates {
|
|
|
202
323
|
getTestCaseTrends(projectId: number, releaseId: number, options?: TrendsOptions): Promise<TestTrendsResult>;
|
|
203
324
|
searchTestCases(projectId: number, releaseId: number, options?: SearchTestCasesOptions): Promise<SearchTestCasesResult>;
|
|
204
325
|
getUserActivity(projectId: number, releaseId: number, options?: UserActivityOptions): Promise<UserActivityResult>;
|
|
326
|
+
listUsers(projectId: number, options?: ListUsersOptions): Promise<ListUsersResult>;
|
|
327
|
+
listCycles(releaseId: number): Promise<ListCyclesResult>;
|
|
328
|
+
getCycle(cycleId: number): Promise<GetCycleResult>;
|
|
205
329
|
}
|
|
206
330
|
|
|
207
331
|
export declare const THRESHOLDS: ThresholdConfig;
|