plum-e2e 2.5.9 → 2.5.10

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.
@@ -67,6 +67,7 @@ async function api(method, path, body) {
67
67
  const get = (path) => api('GET', path);
68
68
  const post = (path, body) => api('POST', path, body);
69
69
  const put = (path, body) => api('PUT', path, body);
70
+ const del = (path) => api('DELETE', path);
70
71
 
71
72
  // ---------------------------------------------------------------------------
72
73
  // Polling helper for test runs
@@ -176,6 +177,33 @@ server.tool(
176
177
  }
177
178
  );
178
179
 
180
+ server.tool(
181
+ 'update_test_suite',
182
+ "Update a test suite's name, description, or priority. Only the fields provided are changed.",
183
+ {
184
+ suiteId: z.string().describe('UUID of the suite to update'),
185
+ name: z.string().min(1).optional(),
186
+ description: z.string().optional(),
187
+ priority: z.enum(['Critical', 'High', 'Medium', 'Low']).optional()
188
+ },
189
+ async ({ suiteId, name, description, priority }) => {
190
+ const data = await put(`/test-suites/${suiteId}`, { name, description, priority });
191
+ return { content: [{ type: 'text', text: JSON.stringify(data.suite, null, 2) }] };
192
+ }
193
+ );
194
+
195
+ server.tool(
196
+ 'delete_test_suite',
197
+ 'Permanently delete a test suite and all of its test cases. This cannot be undone.',
198
+ {
199
+ suiteId: z.string().describe('UUID of the suite to delete')
200
+ },
201
+ async ({ suiteId }) => {
202
+ await del(`/test-suites/${suiteId}`);
203
+ return { content: [{ type: 'text', text: `Suite ${suiteId} deleted.` }] };
204
+ }
205
+ );
206
+
179
207
  // -- Test Repository: Cases -------------------------------------------------
180
208
 
181
209
  server.tool(
@@ -193,6 +221,45 @@ server.tool(
193
221
  }
194
222
  );
195
223
 
224
+ server.tool(
225
+ 'get_test_case',
226
+ 'Get a test case by ID, including its manual steps and recent execution history.',
227
+ {
228
+ caseId: z.string().describe('UUID of the test case')
229
+ },
230
+ async ({ caseId }) => {
231
+ const data = await get(`/test-cases/${caseId}`);
232
+ return { content: [{ type: 'text', text: JSON.stringify(data.testCase, null, 2) }] };
233
+ }
234
+ );
235
+
236
+ server.tool(
237
+ 'update_test_case',
238
+ "Update a test case's title, description, or priority. Only the fields provided are changed.",
239
+ {
240
+ caseId: z.string().describe('UUID of the test case to update'),
241
+ title: z.string().min(1).optional(),
242
+ description: z.string().optional(),
243
+ priority: z.enum(['Critical', 'High', 'Medium', 'Low']).optional()
244
+ },
245
+ async ({ caseId, title, description, priority }) => {
246
+ const data = await put(`/test-cases/${caseId}`, { title, description, priority });
247
+ return { content: [{ type: 'text', text: JSON.stringify(data.testCase, null, 2) }] };
248
+ }
249
+ );
250
+
251
+ server.tool(
252
+ 'delete_test_case',
253
+ 'Permanently delete a test case and its steps. This cannot be undone.',
254
+ {
255
+ caseId: z.string().describe('UUID of the test case to delete')
256
+ },
257
+ async ({ caseId }) => {
258
+ await del(`/test-cases/${caseId}`);
259
+ return { content: [{ type: 'text', text: `Test case ${caseId} deleted.` }] };
260
+ }
261
+ );
262
+
196
263
  server.tool(
197
264
  'set_test_steps',
198
265
  'Set (replace) the manual test steps for a test case. Each step has an action, optional test data, and optional expected output.',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "plum-e2e",
3
- "version": "2.5.9",
3
+ "version": "2.5.10",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/silverlunah/plum.git"