@qase/mcp-server 1.1.8 → 2.0.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/CHANGELOG.md +38 -0
- package/README.md +75 -542
- package/build/auth/client-context.d.ts +12 -0
- package/build/auth/client-context.d.ts.map +1 -0
- package/build/auth/client-context.js +12 -0
- package/build/auth/client-context.js.map +1 -0
- package/build/auth/jwks-verifier.d.ts +15 -0
- package/build/auth/jwks-verifier.d.ts.map +1 -0
- package/build/auth/jwks-verifier.js +31 -0
- package/build/auth/jwks-verifier.js.map +1 -0
- package/build/auth/mcp-guard.d.ts +15 -0
- package/build/auth/mcp-guard.d.ts.map +1 -0
- package/build/auth/mcp-guard.js +44 -0
- package/build/auth/mcp-guard.js.map +1 -0
- package/build/auth/oauth-config.d.ts +40 -0
- package/build/auth/oauth-config.d.ts.map +1 -0
- package/build/auth/oauth-config.js +34 -0
- package/build/auth/oauth-config.js.map +1 -0
- package/build/auth/proxy-provider.d.ts +31 -0
- package/build/auth/proxy-provider.d.ts.map +1 -0
- package/build/auth/proxy-provider.js +87 -0
- package/build/auth/proxy-provider.js.map +1 -0
- package/build/auth/token-type.d.ts +7 -0
- package/build/auth/token-type.d.ts.map +1 -0
- package/build/auth/token-type.js +10 -0
- package/build/auth/token-type.js.map +1 -0
- package/build/cache/circuit-breaker.d.ts +33 -0
- package/build/cache/circuit-breaker.d.ts.map +1 -0
- package/build/cache/circuit-breaker.js +68 -0
- package/build/cache/circuit-breaker.js.map +1 -0
- package/build/cache/index.d.ts +24 -0
- package/build/cache/index.d.ts.map +1 -0
- package/build/cache/index.js +86 -0
- package/build/cache/index.js.map +1 -0
- package/build/cache/keys.d.ts +25 -0
- package/build/cache/keys.d.ts.map +1 -0
- package/build/cache/keys.js +36 -0
- package/build/cache/keys.js.map +1 -0
- package/build/cache/layered.d.ts +31 -0
- package/build/cache/layered.d.ts.map +1 -0
- package/build/cache/layered.js +88 -0
- package/build/cache/layered.js.map +1 -0
- package/build/cache/memory.d.ts +32 -0
- package/build/cache/memory.d.ts.map +1 -0
- package/build/cache/memory.js +108 -0
- package/build/cache/memory.js.map +1 -0
- package/build/cache/metrics.d.ts +31 -0
- package/build/cache/metrics.d.ts.map +1 -0
- package/build/cache/metrics.js +95 -0
- package/build/cache/metrics.js.map +1 -0
- package/build/cache/prom-format.d.ts +7 -0
- package/build/cache/prom-format.d.ts.map +1 -0
- package/build/cache/prom-format.js +16 -0
- package/build/cache/prom-format.js.map +1 -0
- package/build/cache/redis-bus.d.ts +29 -0
- package/build/cache/redis-bus.d.ts.map +1 -0
- package/build/cache/redis-bus.js +50 -0
- package/build/cache/redis-bus.js.map +1 -0
- package/build/cache/redis.d.ts +32 -0
- package/build/cache/redis.d.ts.map +1 -0
- package/build/cache/redis.js +89 -0
- package/build/cache/redis.js.map +1 -0
- package/build/cache/types.d.ts +38 -0
- package/build/cache/types.d.ts.map +1 -0
- package/build/cache/types.js +2 -0
- package/build/cache/types.js.map +1 -0
- package/build/client/index.d.ts +10 -3
- package/build/client/index.d.ts.map +1 -1
- package/build/client/index.js +75 -50
- package/build/client/index.js.map +1 -1
- package/build/http/agent.d.ts +16 -0
- package/build/http/agent.d.ts.map +1 -0
- package/build/http/agent.js +16 -0
- package/build/http/agent.js.map +1 -0
- package/build/http/dedupe.d.ts +14 -0
- package/build/http/dedupe.d.ts.map +1 -0
- package/build/http/dedupe.js +69 -0
- package/build/http/dedupe.js.map +1 -0
- package/build/http/index.d.ts +6 -0
- package/build/http/index.d.ts.map +1 -0
- package/build/http/index.js +4 -0
- package/build/http/index.js.map +1 -0
- package/build/http/retry.d.ts +18 -0
- package/build/http/retry.d.ts.map +1 -0
- package/build/http/retry.js +52 -0
- package/build/http/retry.js.map +1 -0
- package/build/index.d.ts +1 -18
- package/build/index.d.ts.map +1 -1
- package/build/index.js +95 -63
- package/build/index.js.map +1 -1
- package/build/operations-v2/composites/ci-report.d.ts +2 -0
- package/build/operations-v2/composites/ci-report.d.ts.map +1 -0
- package/build/operations-v2/composites/ci-report.js +99 -0
- package/build/operations-v2/composites/ci-report.js.map +1 -0
- package/build/operations-v2/composites/regression-run.d.ts +2 -0
- package/build/operations-v2/composites/regression-run.d.ts.map +1 -0
- package/build/operations-v2/composites/regression-run.js +81 -0
- package/build/operations-v2/composites/regression-run.js.map +1 -0
- package/build/operations-v2/composites/triage-defect.d.ts +2 -0
- package/build/operations-v2/composites/triage-defect.d.ts.map +1 -0
- package/build/operations-v2/composites/triage-defect.js +67 -0
- package/build/operations-v2/composites/triage-defect.js.map +1 -0
- package/build/operations-v2/escape/api.d.ts +2 -0
- package/build/operations-v2/escape/api.d.ts.map +1 -0
- package/build/operations-v2/escape/api.js +34 -0
- package/build/operations-v2/escape/api.js.map +1 -0
- package/build/operations-v2/index.d.ts +21 -0
- package/build/operations-v2/index.d.ts.map +1 -0
- package/build/operations-v2/index.js +27 -0
- package/build/operations-v2/index.js.map +1 -0
- package/build/operations-v2/meta/discover.d.ts +9 -0
- package/build/operations-v2/meta/discover.d.ts.map +1 -0
- package/build/operations-v2/meta/discover.js +79 -0
- package/build/operations-v2/meta/discover.js.map +1 -0
- package/build/{operations/search.d.ts → operations-v2/qql/index.d.ts} +1 -1
- package/build/operations-v2/qql/index.d.ts.map +1 -0
- package/build/{operations/search.js → operations-v2/qql/index.js} +34 -9
- package/build/operations-v2/qql/index.js.map +1 -0
- package/build/operations-v2/read/get.d.ts +2 -0
- package/build/operations-v2/read/get.d.ts.map +1 -0
- package/build/operations-v2/read/get.js +115 -0
- package/build/operations-v2/read/get.js.map +1 -0
- package/build/operations-v2/read/project-context.d.ts +2 -0
- package/build/operations-v2/read/project-context.d.ts.map +1 -0
- package/build/operations-v2/read/project-context.js +102 -0
- package/build/operations-v2/read/project-context.js.map +1 -0
- package/build/operations-v2/write/attachments.d.ts +2 -0
- package/build/operations-v2/write/attachments.d.ts.map +1 -0
- package/build/operations-v2/write/attachments.js +58 -0
- package/build/operations-v2/write/attachments.js.map +1 -0
- package/build/operations-v2/write/case-fields.d.ts +206 -0
- package/build/operations-v2/write/case-fields.d.ts.map +1 -0
- package/build/operations-v2/write/case-fields.js +79 -0
- package/build/operations-v2/write/case-fields.js.map +1 -0
- package/build/operations-v2/write/cases-bulk.d.ts +2 -0
- package/build/operations-v2/write/cases-bulk.d.ts.map +1 -0
- package/build/operations-v2/write/cases-bulk.js +54 -0
- package/build/operations-v2/write/cases-bulk.js.map +1 -0
- package/build/operations-v2/write/cases.d.ts +2 -0
- package/build/operations-v2/write/cases.d.ts.map +1 -0
- package/build/operations-v2/write/cases.js +52 -0
- package/build/operations-v2/write/cases.js.map +1 -0
- package/build/operations-v2/write/defects.d.ts +2 -0
- package/build/operations-v2/write/defects.d.ts.map +1 -0
- package/build/operations-v2/write/defects.js +81 -0
- package/build/operations-v2/write/defects.js.map +1 -0
- package/build/operations-v2/write/environments.d.ts +2 -0
- package/build/operations-v2/write/environments.d.ts.map +1 -0
- package/build/operations-v2/write/environments.js +56 -0
- package/build/operations-v2/write/environments.js.map +1 -0
- package/build/operations-v2/write/external-issues.d.ts +2 -0
- package/build/operations-v2/write/external-issues.d.ts.map +1 -0
- package/build/operations-v2/write/external-issues.js +96 -0
- package/build/operations-v2/write/external-issues.js.map +1 -0
- package/build/operations-v2/write/milestones.d.ts +2 -0
- package/build/operations-v2/write/milestones.d.ts.map +1 -0
- package/build/operations-v2/write/milestones.js +56 -0
- package/build/operations-v2/write/milestones.js.map +1 -0
- package/build/operations-v2/write/plans.d.ts +2 -0
- package/build/operations-v2/write/plans.d.ts.map +1 -0
- package/build/operations-v2/write/plans.js +55 -0
- package/build/operations-v2/write/plans.js.map +1 -0
- package/build/operations-v2/write/results.d.ts +2 -0
- package/build/operations-v2/write/results.d.ts.map +1 -0
- package/build/operations-v2/write/results.js +72 -0
- package/build/operations-v2/write/results.js.map +1 -0
- package/build/operations-v2/write/runs.d.ts +2 -0
- package/build/operations-v2/write/runs.d.ts.map +1 -0
- package/build/operations-v2/write/runs.js +84 -0
- package/build/operations-v2/write/runs.js.map +1 -0
- package/build/operations-v2/write/shared-steps.d.ts +2 -0
- package/build/operations-v2/write/shared-steps.d.ts.map +1 -0
- package/build/operations-v2/write/shared-steps.js +60 -0
- package/build/operations-v2/write/shared-steps.js.map +1 -0
- package/build/operations-v2/write/suites.d.ts +2 -0
- package/build/operations-v2/write/suites.d.ts.map +1 -0
- package/build/operations-v2/write/suites.js +63 -0
- package/build/operations-v2/write/suites.js.map +1 -0
- package/build/prompts/index.d.ts +31 -0
- package/build/prompts/index.d.ts.map +1 -0
- package/build/prompts/index.js +229 -0
- package/build/prompts/index.js.map +1 -0
- package/build/transports/sse.d.ts.map +1 -1
- package/build/transports/sse.js +6 -0
- package/build/transports/sse.js.map +1 -1
- package/build/transports/streamableHttp.d.ts +6 -1
- package/build/transports/streamableHttp.d.ts.map +1 -1
- package/build/transports/streamableHttp.js +128 -16
- package/build/transports/streamableHttp.js.map +1 -1
- package/build/utils/auth-context.d.ts +8 -0
- package/build/utils/auth-context.d.ts.map +1 -1
- package/build/utils/auth-context.js +18 -0
- package/build/utils/auth-context.js.map +1 -1
- package/build/utils/case-enums.d.ts +5 -3
- package/build/utils/case-enums.d.ts.map +1 -1
- package/build/utils/case-enums.js +77 -59
- package/build/utils/case-enums.js.map +1 -1
- package/build/utils/output-schemas.d.ts +16 -0
- package/build/utils/output-schemas.d.ts.map +1 -0
- package/build/utils/output-schemas.js +82 -0
- package/build/utils/output-schemas.js.map +1 -0
- package/build/utils/registry.d.ts +42 -9
- package/build/utils/registry.d.ts.map +1 -1
- package/build/utils/registry.js +64 -11
- package/build/utils/registry.js.map +1 -1
- package/build/utils/response-shape.d.ts +23 -0
- package/build/utils/response-shape.d.ts.map +1 -0
- package/build/utils/response-shape.js +73 -0
- package/build/utils/response-shape.js.map +1 -0
- package/build/utils/rich-response.d.ts +58 -0
- package/build/utils/rich-response.d.ts.map +1 -0
- package/build/utils/rich-response.js +93 -0
- package/build/utils/rich-response.js.map +1 -0
- package/build/utils/server-context.d.ts +65 -0
- package/build/utils/server-context.d.ts.map +1 -0
- package/build/utils/server-context.js +67 -0
- package/build/utils/server-context.js.map +1 -0
- package/build/version.d.ts +1 -1
- package/build/version.js +1 -1
- package/docs/connect.md +81 -0
- package/docs/migration.md +351 -0
- package/docs/self-run.md +270 -0
- package/docs/tools.md +111 -0
- package/docs/troubleshooting.md +144 -0
- package/package.json +11 -2
- package/server.json +8 -2
- package/build/operations/attachments.d.ts +0 -8
- package/build/operations/attachments.d.ts.map +0 -1
- package/build/operations/attachments.js +0 -146
- package/build/operations/attachments.js.map +0 -1
- package/build/operations/authors.d.ts +0 -8
- package/build/operations/authors.d.ts.map +0 -1
- package/build/operations/authors.js +0 -70
- package/build/operations/authors.js.map +0 -1
- package/build/operations/cases.d.ts +0 -8
- package/build/operations/cases.d.ts.map +0 -1
- package/build/operations/cases.js +0 -370
- package/build/operations/cases.js.map +0 -1
- package/build/operations/configurations.d.ts +0 -10
- package/build/operations/configurations.d.ts.map +0 -1
- package/build/operations/configurations.js +0 -125
- package/build/operations/configurations.js.map +0 -1
- package/build/operations/custom-fields.d.ts +0 -8
- package/build/operations/custom-fields.d.ts.map +0 -1
- package/build/operations/custom-fields.js +0 -172
- package/build/operations/custom-fields.js.map +0 -1
- package/build/operations/defects.d.ts +0 -8
- package/build/operations/defects.d.ts.map +0 -1
- package/build/operations/defects.js +0 -256
- package/build/operations/defects.js.map +0 -1
- package/build/operations/environments.d.ts +0 -8
- package/build/operations/environments.d.ts.map +0 -1
- package/build/operations/environments.js +0 -154
- package/build/operations/environments.js.map +0 -1
- package/build/operations/milestones.d.ts +0 -8
- package/build/operations/milestones.d.ts.map +0 -1
- package/build/operations/milestones.js +0 -155
- package/build/operations/milestones.js.map +0 -1
- package/build/operations/plans.d.ts +0 -8
- package/build/operations/plans.d.ts.map +0 -1
- package/build/operations/plans.js +0 -158
- package/build/operations/plans.js.map +0 -1
- package/build/operations/projects.d.ts +0 -8
- package/build/operations/projects.d.ts.map +0 -1
- package/build/operations/projects.js +0 -192
- package/build/operations/projects.js.map +0 -1
- package/build/operations/results.d.ts +0 -8
- package/build/operations/results.d.ts.map +0 -1
- package/build/operations/results.js +0 -214
- package/build/operations/results.js.map +0 -1
- package/build/operations/runs.d.ts +0 -8
- package/build/operations/runs.d.ts.map +0 -1
- package/build/operations/runs.js +0 -224
- package/build/operations/runs.js.map +0 -1
- package/build/operations/search.d.ts.map +0 -1
- package/build/operations/search.js.map +0 -1
- package/build/operations/shared-parameters.d.ts +0 -10
- package/build/operations/shared-parameters.d.ts.map +0 -1
- package/build/operations/shared-parameters.js +0 -93
- package/build/operations/shared-parameters.js.map +0 -1
- package/build/operations/shared-steps.d.ts +0 -8
- package/build/operations/shared-steps.d.ts.map +0 -1
- package/build/operations/shared-steps.js +0 -160
- package/build/operations/shared-steps.js.map +0 -1
- package/build/operations/suites.d.ts +0 -8
- package/build/operations/suites.d.ts.map +0 -1
- package/build/operations/suites.js +0 -169
- package/build/operations/suites.js.map +0 -1
- package/build/operations/system-fields.d.ts +0 -10
- package/build/operations/system-fields.d.ts.map +0 -1
- package/build/operations/system-fields.js +0 -47
- package/build/operations/system-fields.js.map +0 -1
- package/build/operations/users.d.ts +0 -10
- package/build/operations/users.d.ts.map +0 -1
- package/build/operations/users.js +0 -78
- package/build/operations/users.js.map +0 -1
|
@@ -1,370 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Test Cases (Qases) Operations
|
|
3
|
-
*
|
|
4
|
-
* Implements all MCP tools for managing test cases in Qase.
|
|
5
|
-
* Test cases are the core entities representing individual tests.
|
|
6
|
-
*/
|
|
7
|
-
import { z } from 'zod';
|
|
8
|
-
import { getApiClient } from '../client/index.js';
|
|
9
|
-
import { toolRegistry, ReadAnnotation, CreateAnnotation, UpdateAnnotation, DeleteAnnotation, } from '../utils/registry.js';
|
|
10
|
-
import { toResultAsync, createToolError } from '../utils/errors.js';
|
|
11
|
-
import { normalizeCaseEnums } from '../utils/case-enums.js';
|
|
12
|
-
import { ProjectCodeSchema, IdSchema } from '../utils/validation.js';
|
|
13
|
-
// ============================================================================
|
|
14
|
-
// SCHEMAS
|
|
15
|
-
// ============================================================================
|
|
16
|
-
/**
|
|
17
|
-
* Schema for listing test cases
|
|
18
|
-
*/
|
|
19
|
-
const ListCasesSchema = z.object({
|
|
20
|
-
code: ProjectCodeSchema,
|
|
21
|
-
search: z.string().optional().describe('Search query for test case title or description'),
|
|
22
|
-
milestone_id: z.number().int().positive().optional().describe('Filter by milestone ID'),
|
|
23
|
-
suite_id: z.number().int().positive().optional().describe('Filter by suite ID'),
|
|
24
|
-
severity: z.string().optional().describe('Filter by severity (e.g., "blocker", "critical")'),
|
|
25
|
-
priority: z.string().optional().describe('Filter by priority (e.g., "high", "medium")'),
|
|
26
|
-
type: z.string().optional().describe('Filter by type (e.g., "functional", "smoke")'),
|
|
27
|
-
behavior: z.string().optional().describe('Filter by behavior (e.g., "positive", "negative")'),
|
|
28
|
-
automation: z.string().optional().describe('Filter by automation status'),
|
|
29
|
-
status: z.string().optional().describe('Filter by status (e.g., "actual", "draft")'),
|
|
30
|
-
external_issues_type: z
|
|
31
|
-
.enum([
|
|
32
|
-
'asana',
|
|
33
|
-
'azure-devops',
|
|
34
|
-
'clickup-app',
|
|
35
|
-
'github-app',
|
|
36
|
-
'gitlab-app',
|
|
37
|
-
'jira-cloud',
|
|
38
|
-
'jira-server',
|
|
39
|
-
'linear',
|
|
40
|
-
'monday',
|
|
41
|
-
'redmine-app',
|
|
42
|
-
'trello-app',
|
|
43
|
-
'youtrack-app',
|
|
44
|
-
])
|
|
45
|
-
.optional()
|
|
46
|
-
.describe('Filter by external integration type'),
|
|
47
|
-
external_issues_ids: z
|
|
48
|
-
.array(z.string())
|
|
49
|
-
.optional()
|
|
50
|
-
.describe('Filter by external issue IDs (e.g., Jira ticket keys)'),
|
|
51
|
-
include: z
|
|
52
|
-
.string()
|
|
53
|
-
.optional()
|
|
54
|
-
.describe('Comma-separated list of entities to include in response (e.g., "external_issues")'),
|
|
55
|
-
limit: z.number().int().positive().max(100).optional().describe('Maximum number of items'),
|
|
56
|
-
offset: z.number().int().nonnegative().optional().describe('Number of items to skip'),
|
|
57
|
-
});
|
|
58
|
-
/**
|
|
59
|
-
* Schema for getting a specific test case
|
|
60
|
-
*/
|
|
61
|
-
const GetCaseSchema = z.object({
|
|
62
|
-
code: ProjectCodeSchema,
|
|
63
|
-
id: IdSchema,
|
|
64
|
-
});
|
|
65
|
-
/**
|
|
66
|
-
* Schema for test case steps
|
|
67
|
-
*/
|
|
68
|
-
const CaseEnumValueSchema = z.string();
|
|
69
|
-
const stepFields = {
|
|
70
|
-
action: z.string().optional().describe('Step action description (used for classic steps)'),
|
|
71
|
-
expected_result: z.string().optional().describe('Expected result for this step'),
|
|
72
|
-
data: z.string().optional().describe('Test data for this step'),
|
|
73
|
-
value: z
|
|
74
|
-
.string()
|
|
75
|
-
.optional()
|
|
76
|
-
.describe('Gherkin scenario text (used when steps_type is "gherkin"). Example: "Given a user exists\\nWhen they log in\\nThen they see the dashboard"'),
|
|
77
|
-
attachments: z.array(z.string()).optional().describe('Array of attachment hashes'),
|
|
78
|
-
};
|
|
79
|
-
const TestStepSchema = z.object({
|
|
80
|
-
...stepFields,
|
|
81
|
-
steps: z
|
|
82
|
-
.array(z.object(stepFields).passthrough())
|
|
83
|
-
.optional()
|
|
84
|
-
.describe('Nested substeps. Same structure as parent steps, supports further nesting.'),
|
|
85
|
-
});
|
|
86
|
-
/**
|
|
87
|
-
* Schema for creating a test case
|
|
88
|
-
*/
|
|
89
|
-
const CreateCaseSchema = z.object({
|
|
90
|
-
code: ProjectCodeSchema,
|
|
91
|
-
title: z.string().min(1).max(255).describe('Test case title'),
|
|
92
|
-
description: z.string().optional().describe('Test case description'),
|
|
93
|
-
preconditions: z.string().optional().describe('Preconditions for the test'),
|
|
94
|
-
postconditions: z.string().optional().describe('Postconditions after the test'),
|
|
95
|
-
severity: CaseEnumValueSchema.optional().describe('Test severity (label or numeric ID from the current workspace configuration)'),
|
|
96
|
-
priority: CaseEnumValueSchema.optional().describe('Test priority (label or numeric ID: 0=not set, 1=high, 2=medium, 3=low)'),
|
|
97
|
-
type: CaseEnumValueSchema.optional().describe('Test type (label or numeric ID: 1=functional, 2=smoke, 3=regression, 4=security, 5=usability, 6=performance, 7=acceptance)'),
|
|
98
|
-
layer: CaseEnumValueSchema.optional().describe('Test layer (label or numeric ID from workspace configuration)'),
|
|
99
|
-
is_flaky: z.boolean().optional().describe('Mark test case as flaky'),
|
|
100
|
-
suite_id: z.number().int().positive().optional().describe('Suite ID to organize test case'),
|
|
101
|
-
milestone_id: z.number().int().positive().optional().describe('Milestone ID'),
|
|
102
|
-
behavior: CaseEnumValueSchema.optional().describe('Test behavior (label or numeric ID from workspace configuration)'),
|
|
103
|
-
automation: CaseEnumValueSchema.optional().describe('Automation status (label, slug, or numeric ID: 0=Manual / is-not-automated, 1=To be automated, 2=Automated)'),
|
|
104
|
-
status: CaseEnumValueSchema.optional().describe('Test case status (label or numeric ID from workspace configuration)'),
|
|
105
|
-
steps: z.array(TestStepSchema).optional().describe('Array of test steps'),
|
|
106
|
-
steps_type: z
|
|
107
|
-
.enum(['classic', 'gherkin'])
|
|
108
|
-
.optional()
|
|
109
|
-
.describe("Step format: 'classic' for structured steps, 'gherkin' for Given/When/Then scenarios"),
|
|
110
|
-
tags: z.array(z.string()).optional().describe('Tags for categorization'),
|
|
111
|
-
attachments: z.array(z.string()).optional().describe('Array of attachment hashes'),
|
|
112
|
-
custom_field: z.record(z.any()).optional().describe('Custom field values'),
|
|
113
|
-
});
|
|
114
|
-
/**
|
|
115
|
-
* Schema for updating a test case
|
|
116
|
-
*/
|
|
117
|
-
const UpdateCaseSchema = z.object({
|
|
118
|
-
code: ProjectCodeSchema,
|
|
119
|
-
id: IdSchema,
|
|
120
|
-
title: z.string().min(1).max(255).optional().describe('Test case title'),
|
|
121
|
-
description: z.string().optional().describe('Test case description'),
|
|
122
|
-
preconditions: z.string().optional().describe('Preconditions for the test'),
|
|
123
|
-
postconditions: z.string().optional().describe('Postconditions after the test'),
|
|
124
|
-
severity: CaseEnumValueSchema.optional().describe('Test severity (label or numeric ID from workspace configuration)'),
|
|
125
|
-
priority: CaseEnumValueSchema.optional().describe('Test priority (label or numeric ID: 0=not set, 1=high, 2=medium, 3=low)'),
|
|
126
|
-
type: CaseEnumValueSchema.optional().describe('Test type (label or numeric ID: 1=functional, 2=smoke, 3=regression, 4=security, 5=usability, 6=performance, 7=acceptance)'),
|
|
127
|
-
layer: CaseEnumValueSchema.optional().describe('Test layer (label or numeric ID from workspace configuration)'),
|
|
128
|
-
is_flaky: z.boolean().optional().describe('Mark test case as flaky'),
|
|
129
|
-
suite_id: z.number().int().positive().optional().describe('Suite ID'),
|
|
130
|
-
milestone_id: z.number().int().positive().optional().describe('Milestone ID'),
|
|
131
|
-
behavior: CaseEnumValueSchema.optional().describe('Test behavior (label or numeric ID from workspace configuration)'),
|
|
132
|
-
automation: CaseEnumValueSchema.optional().describe('Automation status (label, slug, or numeric ID: 0=Manual / is-not-automated, 1=To be automated, 2=Automated)'),
|
|
133
|
-
status: CaseEnumValueSchema.optional().describe('Test case status (label or numeric ID from workspace configuration)'),
|
|
134
|
-
steps: z.array(TestStepSchema).optional().describe('Array of test steps'),
|
|
135
|
-
steps_type: z
|
|
136
|
-
.enum(['classic', 'gherkin'])
|
|
137
|
-
.optional()
|
|
138
|
-
.describe("Step format: 'classic' for structured steps, 'gherkin' for Given/When/Then scenarios"),
|
|
139
|
-
tags: z.array(z.string()).optional().describe('Tags for categorization'),
|
|
140
|
-
attachments: z.array(z.string()).optional().describe('Array of attachment hashes'),
|
|
141
|
-
custom_field: z.record(z.any()).optional().describe('Custom field values'),
|
|
142
|
-
});
|
|
143
|
-
/**
|
|
144
|
-
* Schema for deleting a test case
|
|
145
|
-
*/
|
|
146
|
-
const DeleteCaseSchema = z.object({
|
|
147
|
-
code: ProjectCodeSchema,
|
|
148
|
-
id: IdSchema,
|
|
149
|
-
});
|
|
150
|
-
/**
|
|
151
|
-
* Schema for bulk creating test cases
|
|
152
|
-
*/
|
|
153
|
-
const BulkCreateCasesSchema = z.object({
|
|
154
|
-
code: ProjectCodeSchema,
|
|
155
|
-
cases: z.array(CreateCaseSchema.omit({ code: true })).describe('Array of test cases to create'),
|
|
156
|
-
});
|
|
157
|
-
/**
|
|
158
|
-
* Schema for attaching external issue
|
|
159
|
-
*/
|
|
160
|
-
const AttachExternalIssueSchema = z.object({
|
|
161
|
-
code: ProjectCodeSchema,
|
|
162
|
-
id: IdSchema,
|
|
163
|
-
issue_id: z.string().describe('External issue ID (e.g., Jira issue key)'),
|
|
164
|
-
type: z
|
|
165
|
-
.enum(['jira-cloud', 'jira-server'])
|
|
166
|
-
.describe('Type of external issue integration (Jira Cloud or Jira Server)'),
|
|
167
|
-
});
|
|
168
|
-
/**
|
|
169
|
-
* Schema for detaching external issue
|
|
170
|
-
*/
|
|
171
|
-
const DetachExternalIssueSchema = z.object({
|
|
172
|
-
code: ProjectCodeSchema,
|
|
173
|
-
id: IdSchema,
|
|
174
|
-
issue_id: z.string().describe('External issue ID to detach'),
|
|
175
|
-
type: z
|
|
176
|
-
.enum(['jira-cloud', 'jira-server'])
|
|
177
|
-
.describe('Type of external issue integration (Jira Cloud or Jira Server)'),
|
|
178
|
-
});
|
|
179
|
-
// ============================================================================
|
|
180
|
-
// HELPERS
|
|
181
|
-
// ============================================================================
|
|
182
|
-
/**
|
|
183
|
-
* Map the user-facing `automation` enum (0=Manual, 1=To be automated,
|
|
184
|
-
* 2=Automated) to the current API contract (`isManual` + `isToBeAutomated`).
|
|
185
|
-
* The legacy `automation` field is deprecated in qase-api-client and dropped
|
|
186
|
-
* from the outbound payload.
|
|
187
|
-
*/
|
|
188
|
-
function applyAutomationMapping(caseData) {
|
|
189
|
-
const automationId = caseData.automation;
|
|
190
|
-
if (typeof automationId !== 'number') {
|
|
191
|
-
return caseData;
|
|
192
|
-
}
|
|
193
|
-
const { automation: _drop, ...rest } = caseData;
|
|
194
|
-
const mapped = rest;
|
|
195
|
-
switch (automationId) {
|
|
196
|
-
case 2: // Automated
|
|
197
|
-
mapped.isManual = 0;
|
|
198
|
-
break;
|
|
199
|
-
case 1: // To be automated
|
|
200
|
-
mapped.isManual = 1;
|
|
201
|
-
mapped.isToBeAutomated = 1;
|
|
202
|
-
break;
|
|
203
|
-
case 0: // Manual
|
|
204
|
-
default:
|
|
205
|
-
mapped.isManual = 1;
|
|
206
|
-
mapped.isToBeAutomated = 0;
|
|
207
|
-
break;
|
|
208
|
-
}
|
|
209
|
-
return mapped;
|
|
210
|
-
}
|
|
211
|
-
// ============================================================================
|
|
212
|
-
// HANDLERS
|
|
213
|
-
// ============================================================================
|
|
214
|
-
/**
|
|
215
|
-
* List all test cases in a project with filtering
|
|
216
|
-
*/
|
|
217
|
-
async function listCases(args) {
|
|
218
|
-
const client = getApiClient();
|
|
219
|
-
const { code, ...filters } = args;
|
|
220
|
-
const result = await toResultAsync(client.cases.getCases(code, filters.search, filters.milestone_id, filters.suite_id, filters.severity, filters.priority, filters.type, filters.behavior, filters.automation, filters.status, filters.external_issues_type, filters.external_issues_ids, filters.include, filters.limit, filters.offset));
|
|
221
|
-
return result.match((response) => response.data.result, (error) => {
|
|
222
|
-
throw createToolError(error, 'case operation');
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* Get a specific test case
|
|
227
|
-
*/
|
|
228
|
-
async function getCase(args) {
|
|
229
|
-
const client = getApiClient();
|
|
230
|
-
const { code, id } = args;
|
|
231
|
-
const result = await toResultAsync(client.cases.getCase(code, id));
|
|
232
|
-
return result.match((response) => response.data.result, (error) => {
|
|
233
|
-
throw createToolError(error, 'case operation');
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Create a new test case
|
|
238
|
-
*/
|
|
239
|
-
async function createCase(args) {
|
|
240
|
-
const client = getApiClient();
|
|
241
|
-
const { code, ...caseData } = args;
|
|
242
|
-
const normalizedCaseData = applyAutomationMapping(await normalizeCaseEnums(caseData));
|
|
243
|
-
const result = await toResultAsync(client.cases.createCase(code, normalizedCaseData));
|
|
244
|
-
return result.match((response) => response.data.result, (error) => {
|
|
245
|
-
throw createToolError(error, 'case operation');
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Update an existing test case
|
|
250
|
-
*/
|
|
251
|
-
async function updateCase(args) {
|
|
252
|
-
const client = getApiClient();
|
|
253
|
-
const { code, id, ...updateData } = args;
|
|
254
|
-
const normalizedUpdateData = applyAutomationMapping(await normalizeCaseEnums(updateData));
|
|
255
|
-
const result = await toResultAsync(client.cases.updateCase(code, id, normalizedUpdateData));
|
|
256
|
-
return result.match((response) => response.data.result, (error) => {
|
|
257
|
-
throw createToolError(error, 'case operation');
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* Delete a test case
|
|
262
|
-
*/
|
|
263
|
-
async function deleteCase(args) {
|
|
264
|
-
const client = getApiClient();
|
|
265
|
-
const { code, id } = args;
|
|
266
|
-
const result = await toResultAsync(client.cases.deleteCase(code, id));
|
|
267
|
-
return result.match((_response) => ({ success: true, id }), (error) => {
|
|
268
|
-
throw createToolError(error, 'case operation');
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
/**
|
|
272
|
-
* Bulk create multiple test cases
|
|
273
|
-
*/
|
|
274
|
-
async function bulkCreateCases(args) {
|
|
275
|
-
const client = getApiClient();
|
|
276
|
-
const { code, cases } = args;
|
|
277
|
-
const normalizedCases = await Promise.all(cases.map(async (caseData) => applyAutomationMapping(await normalizeCaseEnums(caseData))));
|
|
278
|
-
const result = await toResultAsync(client.cases.bulk(code, { cases: normalizedCases }));
|
|
279
|
-
return result.match((response) => response.data.result, (error) => {
|
|
280
|
-
throw createToolError(error, 'case operation');
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
|
-
/**
|
|
284
|
-
* Attach external issue to a test case
|
|
285
|
-
*/
|
|
286
|
-
async function attachExternalIssue(args) {
|
|
287
|
-
const client = getApiClient();
|
|
288
|
-
const { code, id, issue_id, type } = args;
|
|
289
|
-
const result = await toResultAsync(client.cases.caseAttachExternalIssue(code, {
|
|
290
|
-
type: type,
|
|
291
|
-
links: [{ case_id: id, external_issues: [issue_id] }],
|
|
292
|
-
}));
|
|
293
|
-
return result.match((_response) => ({ success: true, id, issue_id }), (error) => {
|
|
294
|
-
throw createToolError(error, 'case operation');
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
|
-
/**
|
|
298
|
-
* Detach external issue from a test case
|
|
299
|
-
*/
|
|
300
|
-
async function detachExternalIssue(args) {
|
|
301
|
-
const client = getApiClient();
|
|
302
|
-
const { code, id, issue_id, type } = args;
|
|
303
|
-
const result = await toResultAsync(client.cases.caseDetachExternalIssue(code, {
|
|
304
|
-
type: type,
|
|
305
|
-
links: [{ case_id: id, external_issues: [issue_id] }],
|
|
306
|
-
}));
|
|
307
|
-
return result.match((_response) => ({ success: true, id, issue_id }), (error) => {
|
|
308
|
-
throw createToolError(error, 'case operation');
|
|
309
|
-
});
|
|
310
|
-
}
|
|
311
|
-
// ============================================================================
|
|
312
|
-
// TOOL REGISTRATION
|
|
313
|
-
// ============================================================================
|
|
314
|
-
toolRegistry.register({
|
|
315
|
-
name: 'list_cases',
|
|
316
|
-
description: 'Get all test cases in a project with optional filtering and pagination',
|
|
317
|
-
schema: ListCasesSchema,
|
|
318
|
-
handler: listCases,
|
|
319
|
-
annotations: ReadAnnotation,
|
|
320
|
-
});
|
|
321
|
-
toolRegistry.register({
|
|
322
|
-
name: 'get_case',
|
|
323
|
-
description: 'Get a specific test case by project code and case ID',
|
|
324
|
-
schema: GetCaseSchema,
|
|
325
|
-
handler: getCase,
|
|
326
|
-
annotations: ReadAnnotation,
|
|
327
|
-
});
|
|
328
|
-
toolRegistry.register({
|
|
329
|
-
name: 'create_case',
|
|
330
|
-
description: 'Create a new test case in a project',
|
|
331
|
-
schema: CreateCaseSchema,
|
|
332
|
-
handler: createCase,
|
|
333
|
-
annotations: CreateAnnotation,
|
|
334
|
-
});
|
|
335
|
-
toolRegistry.register({
|
|
336
|
-
name: 'update_case',
|
|
337
|
-
description: 'Update an existing test case',
|
|
338
|
-
schema: UpdateCaseSchema,
|
|
339
|
-
handler: updateCase,
|
|
340
|
-
annotations: UpdateAnnotation,
|
|
341
|
-
});
|
|
342
|
-
toolRegistry.register({
|
|
343
|
-
name: 'delete_case',
|
|
344
|
-
description: 'Delete a test case from a project',
|
|
345
|
-
schema: DeleteCaseSchema,
|
|
346
|
-
handler: deleteCase,
|
|
347
|
-
annotations: DeleteAnnotation,
|
|
348
|
-
});
|
|
349
|
-
toolRegistry.register({
|
|
350
|
-
name: 'bulk_create_cases',
|
|
351
|
-
description: 'Create multiple test cases at once in a project',
|
|
352
|
-
schema: BulkCreateCasesSchema,
|
|
353
|
-
handler: bulkCreateCases,
|
|
354
|
-
annotations: CreateAnnotation,
|
|
355
|
-
});
|
|
356
|
-
toolRegistry.register({
|
|
357
|
-
name: 'attach_external_issue',
|
|
358
|
-
description: 'Attach an external issue (e.g., Jira ticket) to a test case',
|
|
359
|
-
schema: AttachExternalIssueSchema,
|
|
360
|
-
handler: attachExternalIssue,
|
|
361
|
-
annotations: CreateAnnotation,
|
|
362
|
-
});
|
|
363
|
-
toolRegistry.register({
|
|
364
|
-
name: 'detach_external_issue',
|
|
365
|
-
description: 'Detach an external issue from a test case',
|
|
366
|
-
schema: DetachExternalIssueSchema,
|
|
367
|
-
handler: detachExternalIssue,
|
|
368
|
-
annotations: DeleteAnnotation,
|
|
369
|
-
});
|
|
370
|
-
//# sourceMappingURL=cases.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cases.js","sourceRoot":"","sources":["../../src/operations/cases.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Configurations Operations
|
|
3
|
-
*
|
|
4
|
-
* Implements all MCP tools for managing test configurations in Qase.
|
|
5
|
-
* Configurations represent test environment settings (browser, OS, device, etc.).
|
|
6
|
-
*
|
|
7
|
-
* https://developers.qase.io/reference/get-configurations
|
|
8
|
-
*/
|
|
9
|
-
export {};
|
|
10
|
-
//# sourceMappingURL=configurations.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configurations.d.ts","sourceRoot":"","sources":["../../src/operations/configurations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Configurations Operations
|
|
3
|
-
*
|
|
4
|
-
* Implements all MCP tools for managing test configurations in Qase.
|
|
5
|
-
* Configurations represent test environment settings (browser, OS, device, etc.).
|
|
6
|
-
*
|
|
7
|
-
* https://developers.qase.io/reference/get-configurations
|
|
8
|
-
*/
|
|
9
|
-
import { z } from 'zod';
|
|
10
|
-
import { getApiClient } from '../client/index.js';
|
|
11
|
-
import { toolRegistry, ReadAnnotation, CreateAnnotation, DeleteAnnotation, } from '../utils/registry.js';
|
|
12
|
-
import { toResultAsync, createToolError } from '../utils/errors.js';
|
|
13
|
-
import { ProjectCodeSchema, IdSchema } from '../utils/validation.js';
|
|
14
|
-
// ============================================================================
|
|
15
|
-
// SCHEMAS
|
|
16
|
-
// ============================================================================
|
|
17
|
-
/**
|
|
18
|
-
* Schema for a single configuration item within a group
|
|
19
|
-
*/
|
|
20
|
-
const ConfigurationItemSchema = z.object({
|
|
21
|
-
title: z.string().min(1).describe('Configuration item title (e.g., "Chrome", "Windows 10")'),
|
|
22
|
-
});
|
|
23
|
-
/**
|
|
24
|
-
* Schema for listing configurations in a project
|
|
25
|
-
* API: GET /v1/configuration/{code}
|
|
26
|
-
* https://developers.qase.io/reference/get-configurations
|
|
27
|
-
*/
|
|
28
|
-
const ListConfigurationsSchema = z.object({
|
|
29
|
-
code: ProjectCodeSchema,
|
|
30
|
-
});
|
|
31
|
-
/**
|
|
32
|
-
* Schema for creating a configuration group
|
|
33
|
-
* API: POST /v1/configuration/{code}/group
|
|
34
|
-
* https://developers.qase.io/reference/create-configuration-group
|
|
35
|
-
*/
|
|
36
|
-
const CreateConfigurationGroupSchema = z.object({
|
|
37
|
-
code: ProjectCodeSchema,
|
|
38
|
-
title: z.string().min(1).max(255).describe('Configuration group title (e.g., "Browser", "OS")'),
|
|
39
|
-
configurations: z
|
|
40
|
-
.array(ConfigurationItemSchema)
|
|
41
|
-
.min(1)
|
|
42
|
-
.describe('Configuration items in the group'),
|
|
43
|
-
});
|
|
44
|
-
/**
|
|
45
|
-
* Schema for deleting a configuration group
|
|
46
|
-
* API: DELETE /v1/configuration/{code}/group/{id}
|
|
47
|
-
* This endpoint is not documented in the official API docs but follows REST conventions.
|
|
48
|
-
*/
|
|
49
|
-
const DeleteConfigurationGroupSchema = z.object({
|
|
50
|
-
code: ProjectCodeSchema,
|
|
51
|
-
id: IdSchema.describe('Configuration group ID'),
|
|
52
|
-
});
|
|
53
|
-
// ============================================================================
|
|
54
|
-
// HANDLERS
|
|
55
|
-
// ============================================================================
|
|
56
|
-
/**
|
|
57
|
-
* List all configurations in a project
|
|
58
|
-
* API: GET /v1/configuration/{code}
|
|
59
|
-
* https://developers.qase.io/reference/get-configurations
|
|
60
|
-
*/
|
|
61
|
-
async function listConfigurations(args) {
|
|
62
|
-
const client = getApiClient();
|
|
63
|
-
const { code } = args;
|
|
64
|
-
const result = await toResultAsync(client.configurations.getConfigurations(code));
|
|
65
|
-
return result.match((response) => response.data.result, (error) => {
|
|
66
|
-
throw createToolError(error, 'listing configurations');
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Create a new configuration group
|
|
71
|
-
* API: POST /v1/configuration/{code}/group
|
|
72
|
-
* https://developers.qase.io/reference/create-configuration-group
|
|
73
|
-
*
|
|
74
|
-
* Note: The SDK type `ConfigurationGroupCreate` only declares `title`,
|
|
75
|
-
* but the API also accepts a `configurations` array. We cast to `any`
|
|
76
|
-
* to pass the full payload.
|
|
77
|
-
*/
|
|
78
|
-
async function createConfigurationGroup(args) {
|
|
79
|
-
const client = getApiClient();
|
|
80
|
-
const { code, title, configurations } = args;
|
|
81
|
-
const result = await toResultAsync(client.configurations.createConfigurationGroup(code, { title, configurations }));
|
|
82
|
-
return result.match((response) => response.data.result, (error) => {
|
|
83
|
-
throw createToolError(error, 'creating configuration group');
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Delete a configuration group
|
|
88
|
-
* API: DELETE /v1/configuration/{code}/group/{id}
|
|
89
|
-
*
|
|
90
|
-
* The SDK does not expose a delete method for configuration groups,
|
|
91
|
-
* so we use a direct API call.
|
|
92
|
-
*/
|
|
93
|
-
async function deleteConfigurationGroup(args) {
|
|
94
|
-
const client = getApiClient();
|
|
95
|
-
const { code, id } = args;
|
|
96
|
-
await client.request(`/v1/configuration/${code}/group/${id}`, {
|
|
97
|
-
method: 'DELETE',
|
|
98
|
-
});
|
|
99
|
-
return { success: true, id };
|
|
100
|
-
}
|
|
101
|
-
// ============================================================================
|
|
102
|
-
// TOOL REGISTRATION
|
|
103
|
-
// ============================================================================
|
|
104
|
-
toolRegistry.register({
|
|
105
|
-
name: 'list_configurations',
|
|
106
|
-
description: 'Get all configuration groups and their items in a project',
|
|
107
|
-
schema: ListConfigurationsSchema,
|
|
108
|
-
handler: listConfigurations,
|
|
109
|
-
annotations: ReadAnnotation,
|
|
110
|
-
});
|
|
111
|
-
toolRegistry.register({
|
|
112
|
-
name: 'create_configuration_group',
|
|
113
|
-
description: 'Create a new configuration group (e.g., Browser, OS) with items',
|
|
114
|
-
schema: CreateConfigurationGroupSchema,
|
|
115
|
-
handler: createConfigurationGroup,
|
|
116
|
-
annotations: CreateAnnotation,
|
|
117
|
-
});
|
|
118
|
-
toolRegistry.register({
|
|
119
|
-
name: 'delete_configuration_group',
|
|
120
|
-
description: 'Delete a configuration group from a project',
|
|
121
|
-
schema: DeleteConfigurationGroupSchema,
|
|
122
|
-
handler: deleteConfigurationGroup,
|
|
123
|
-
annotations: DeleteAnnotation,
|
|
124
|
-
});
|
|
125
|
-
//# sourceMappingURL=configurations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configurations.js","sourceRoot":"","sources":["../../src/operations/configurations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"custom-fields.d.ts","sourceRoot":"","sources":["../../src/operations/custom-fields.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|