zephyr-scale-mcp-server 0.0.2 → 0.0.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/README.md +8 -0
- package/build/index.js +54 -0
- package/package.json +1 -1
- package/src/index.ts +55 -0
package/README.md
CHANGED
|
@@ -64,6 +64,7 @@ node build/index.js
|
|
|
64
64
|
- `create_test_case_with_bdd` - Create BDD/Gherkin test cases
|
|
65
65
|
- `get_test_case` - Get test case details
|
|
66
66
|
- `update_test_case_bdd` - Update BDD test cases
|
|
67
|
+
- `delete_test_case` - Delete a specific test case
|
|
67
68
|
- `create_folder` - Create test case folders
|
|
68
69
|
- `get_test_run_cases` - Get test cases from test runs
|
|
69
70
|
|
|
@@ -102,6 +103,13 @@ node build/index.js
|
|
|
102
103
|
}
|
|
103
104
|
```
|
|
104
105
|
|
|
106
|
+
### Delete Test Case
|
|
107
|
+
```json
|
|
108
|
+
{
|
|
109
|
+
"test_case_key": "PROJ-T123"
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
105
113
|
## Verification
|
|
106
114
|
|
|
107
115
|
After installation, verify the package works:
|
package/build/index.js
CHANGED
|
@@ -235,6 +235,20 @@ class ZephyrServer {
|
|
|
235
235
|
required: ['test_run_key'],
|
|
236
236
|
},
|
|
237
237
|
},
|
|
238
|
+
{
|
|
239
|
+
name: 'delete_test_case',
|
|
240
|
+
description: 'Delete a specific test case',
|
|
241
|
+
inputSchema: {
|
|
242
|
+
type: 'object',
|
|
243
|
+
properties: {
|
|
244
|
+
test_case_key: {
|
|
245
|
+
type: 'string',
|
|
246
|
+
description: 'Test case key to delete (e.g., PROJ-T123)',
|
|
247
|
+
},
|
|
248
|
+
},
|
|
249
|
+
required: ['test_case_key'],
|
|
250
|
+
},
|
|
251
|
+
},
|
|
238
252
|
],
|
|
239
253
|
}));
|
|
240
254
|
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
@@ -252,6 +266,8 @@ class ZephyrServer {
|
|
|
252
266
|
return await this.createFolder(request.params.arguments);
|
|
253
267
|
case 'get_test_run_cases':
|
|
254
268
|
return await this.getTestRunCases(request.params.arguments);
|
|
269
|
+
case 'delete_test_case':
|
|
270
|
+
return await this.deleteTestCase(request.params.arguments);
|
|
255
271
|
default:
|
|
256
272
|
throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}`);
|
|
257
273
|
}
|
|
@@ -551,6 +567,44 @@ class ZephyrServer {
|
|
|
551
567
|
throw new McpError(ErrorCode.InternalError, `Failed to get test run cases: ${error instanceof Error ? error.message : String(error)}`);
|
|
552
568
|
}
|
|
553
569
|
}
|
|
570
|
+
async deleteTestCase(args) {
|
|
571
|
+
const { test_case_key } = args;
|
|
572
|
+
try {
|
|
573
|
+
const response = await this.axiosInstance.delete(`/rest/atm/1.0/testcase/${test_case_key}`);
|
|
574
|
+
if (response.status === 204) {
|
|
575
|
+
return {
|
|
576
|
+
content: [
|
|
577
|
+
{
|
|
578
|
+
type: 'text',
|
|
579
|
+
text: `✅ Test case ${test_case_key} deleted successfully`,
|
|
580
|
+
},
|
|
581
|
+
],
|
|
582
|
+
};
|
|
583
|
+
}
|
|
584
|
+
else {
|
|
585
|
+
throw new Error(`Unexpected status code: ${response.status}`);
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
catch (error) {
|
|
589
|
+
let errorMessage = 'Unknown error';
|
|
590
|
+
if (error instanceof Error && 'response' in error) {
|
|
591
|
+
const axiosError = error;
|
|
592
|
+
if (axiosError.response?.status === 404) {
|
|
593
|
+
errorMessage = `Test case ${test_case_key} not found`;
|
|
594
|
+
}
|
|
595
|
+
else {
|
|
596
|
+
errorMessage = `Status: ${axiosError.response?.status}, Data: ${JSON.stringify(axiosError.response?.data)}`;
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
else if (error instanceof Error) {
|
|
600
|
+
errorMessage = error.message;
|
|
601
|
+
}
|
|
602
|
+
else {
|
|
603
|
+
errorMessage = String(error);
|
|
604
|
+
}
|
|
605
|
+
throw new McpError(ErrorCode.InternalError, `Failed to delete test case: ${errorMessage}`);
|
|
606
|
+
}
|
|
607
|
+
}
|
|
554
608
|
async run() {
|
|
555
609
|
const transport = new StdioServerTransport();
|
|
556
610
|
await this.server.connect(transport);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zephyr-scale-mcp-server",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"description": "Model Context Protocol (MCP) server for Zephyr Scale test case management with comprehensive STEP_BY_STEP, PLAIN_TEXT, and BDD support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./build/index.js",
|
package/src/index.ts
CHANGED
|
@@ -252,6 +252,20 @@ class ZephyrServer {
|
|
|
252
252
|
required: ['test_run_key'],
|
|
253
253
|
},
|
|
254
254
|
},
|
|
255
|
+
{
|
|
256
|
+
name: 'delete_test_case',
|
|
257
|
+
description: 'Delete a specific test case',
|
|
258
|
+
inputSchema: {
|
|
259
|
+
type: 'object',
|
|
260
|
+
properties: {
|
|
261
|
+
test_case_key: {
|
|
262
|
+
type: 'string',
|
|
263
|
+
description: 'Test case key to delete (e.g., PROJ-T123)',
|
|
264
|
+
},
|
|
265
|
+
},
|
|
266
|
+
required: ['test_case_key'],
|
|
267
|
+
},
|
|
268
|
+
},
|
|
255
269
|
],
|
|
256
270
|
}));
|
|
257
271
|
|
|
@@ -270,6 +284,8 @@ class ZephyrServer {
|
|
|
270
284
|
return await this.createFolder(request.params.arguments);
|
|
271
285
|
case 'get_test_run_cases':
|
|
272
286
|
return await this.getTestRunCases(request.params.arguments);
|
|
287
|
+
case 'delete_test_case':
|
|
288
|
+
return await this.deleteTestCase(request.params.arguments);
|
|
273
289
|
default:
|
|
274
290
|
throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}`);
|
|
275
291
|
}
|
|
@@ -605,6 +621,45 @@ class ZephyrServer {
|
|
|
605
621
|
}
|
|
606
622
|
}
|
|
607
623
|
|
|
624
|
+
private async deleteTestCase(args: any) {
|
|
625
|
+
const { test_case_key } = args;
|
|
626
|
+
|
|
627
|
+
try {
|
|
628
|
+
const response = await this.axiosInstance.delete(`/rest/atm/1.0/testcase/${test_case_key}`);
|
|
629
|
+
|
|
630
|
+
if (response.status === 204) {
|
|
631
|
+
return {
|
|
632
|
+
content: [
|
|
633
|
+
{
|
|
634
|
+
type: 'text',
|
|
635
|
+
text: `✅ Test case ${test_case_key} deleted successfully`,
|
|
636
|
+
},
|
|
637
|
+
],
|
|
638
|
+
};
|
|
639
|
+
} else {
|
|
640
|
+
throw new Error(`Unexpected status code: ${response.status}`);
|
|
641
|
+
}
|
|
642
|
+
} catch (error) {
|
|
643
|
+
let errorMessage = 'Unknown error';
|
|
644
|
+
if (error instanceof Error && 'response' in error) {
|
|
645
|
+
const axiosError = error as any;
|
|
646
|
+
if (axiosError.response?.status === 404) {
|
|
647
|
+
errorMessage = `Test case ${test_case_key} not found`;
|
|
648
|
+
} else {
|
|
649
|
+
errorMessage = `Status: ${axiosError.response?.status}, Data: ${JSON.stringify(axiosError.response?.data)}`;
|
|
650
|
+
}
|
|
651
|
+
} else if (error instanceof Error) {
|
|
652
|
+
errorMessage = error.message;
|
|
653
|
+
} else {
|
|
654
|
+
errorMessage = String(error);
|
|
655
|
+
}
|
|
656
|
+
throw new McpError(
|
|
657
|
+
ErrorCode.InternalError,
|
|
658
|
+
`Failed to delete test case: ${errorMessage}`
|
|
659
|
+
);
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
|
|
608
663
|
async run() {
|
|
609
664
|
const transport = new StdioServerTransport();
|
|
610
665
|
await this.server.connect(transport);
|