get_project_test_executions
Retrieve all test executions for a specific Jira project to track testing progress and results
Instructions
Get all test executions for a specific project
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| maxResults | No | Maximum number of results to return | |
| projectKey | Yes | The Jira project key (e.g., "PROJ") |
Implementation Reference
- src/index.ts:674-687 (handler)Handler for the MCP tool 'get_project_test_executions' that extracts arguments, calls the XrayClient method, and returns the result as JSON text content.case 'get_project_test_executions': { const result = await xrayClient.getTestExecutionsByProject( args.projectKey as string, args.maxResults as number | undefined ); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; }
- src/index.ts:229-247 (schema)Input schema definition for the tool, specifying required projectKey and optional maxResults.{ name: 'get_project_test_executions', description: 'Get all test executions for a specific project', inputSchema: { type: 'object', properties: { projectKey: { type: 'string', description: 'The Jira project key (e.g., "PROJ")', }, maxResults: { type: 'number', description: 'Maximum number of results to return', default: 50, }, }, required: ['projectKey'], }, },
- src/index.ts:28-503 (registration)The tool is registered in the global tools array used by ListToolsRequestSchema handler.const tools: Tool[] = [ { name: 'create_test_case', description: 'Create a new test case in Xray Cloud', inputSchema: { type: 'object', properties: { projectKey: { type: 'string', description: 'The Jira project key (e.g., "PROJ")', }, summary: { type: 'string', description: 'The test case summary/title', }, description: { type: 'string', description: 'The test case description', }, testType: { type: 'string', enum: ['Manual', 'Cucumber', 'Generic'], description: 'The type of test case', default: 'Manual', }, labels: { type: 'array', items: { type: 'string' }, description: 'Labels to attach to the test case', }, priority: { type: 'string', description: 'Priority of the test case (e.g., "High", "Medium", "Low")', }, }, required: ['projectKey', 'summary'], }, }, { name: 'get_test_case', description: 'Get details of a specific test case by key', inputSchema: { type: 'object', properties: { testKey: { type: 'string', description: 'The test case key (e.g., "PROJ-123")', }, }, required: ['testKey'], }, }, { name: 'update_test_case', description: 'Update an existing test case', inputSchema: { type: 'object', properties: { testKey: { type: 'string', description: 'The test case key (e.g., "PROJ-123")', }, summary: { type: 'string', description: 'New summary/title for the test case', }, description: { type: 'string', description: 'New description for the test case', }, labels: { type: 'array', items: { type: 'string' }, description: 'New labels for the test case', }, priority: { type: 'string', description: 'New priority for the test case', }, }, required: ['testKey'], }, }, { name: 'delete_test_case', description: 'Delete a test case', inputSchema: { type: 'object', properties: { testKey: { type: 'string', description: 'The test case key to delete (e.g., "PROJ-123")', }, }, required: ['testKey'], }, }, { name: 'search_test_cases', description: 'Search for test cases using JQL (Jira Query Language)', inputSchema: { type: 'object', properties: { jql: { type: 'string', description: 'JQL query to search test cases (e.g., "project = PROJ AND labels = automation")', }, maxResults: { type: 'number', description: 'Maximum number of results to return', default: 50, }, }, required: ['jql'], }, }, { name: 'get_project_test_cases', description: 'Get all test cases for a specific project', inputSchema: { type: 'object', properties: { projectKey: { type: 'string', description: 'The Jira project key (e.g., "PROJ")', }, maxResults: { type: 'number', description: 'Maximum number of results to return', default: 50, }, }, required: ['projectKey'], }, }, // Test Execution tools { name: 'create_test_execution', description: 'Create a new test execution in Xray Cloud to run tests', inputSchema: { type: 'object', properties: { projectKey: { type: 'string', description: 'The Jira project key (e.g., "PROJ")', }, summary: { type: 'string', description: 'The test execution summary/title', }, description: { type: 'string', description: 'The test execution description', }, testIssueIds: { type: 'array', items: { type: 'string' }, description: 'Array of test issue IDs to include in this execution (e.g., ["10001", "10002"])', }, testEnvironments: { type: 'array', items: { type: 'string' }, description: 'Array of test environments (e.g., ["Chrome", "iOS"])', }, }, required: ['projectKey', 'summary'], }, }, { name: 'get_test_execution', description: 'Get details of a specific test execution by key, including all test runs', inputSchema: { type: 'object', properties: { testExecutionKey: { type: 'string', description: 'The test execution key (e.g., "PROJ-456")', }, }, required: ['testExecutionKey'], }, }, { name: 'search_test_executions', description: 'Search for test executions using JQL (Jira Query Language)', inputSchema: { type: 'object', properties: { jql: { type: 'string', description: 'JQL query to search test executions (e.g., "project = PROJ AND created >= -7d")', }, maxResults: { type: 'number', description: 'Maximum number of results to return', default: 50, }, }, required: ['jql'], }, }, { name: 'get_project_test_executions', description: 'Get all test executions for a specific project', inputSchema: { type: 'object', properties: { projectKey: { type: 'string', description: 'The Jira project key (e.g., "PROJ")', }, maxResults: { type: 'number', description: 'Maximum number of results to return', default: 50, }, }, required: ['projectKey'], }, }, { name: 'update_test_run_status', description: 'Update the status of a specific test run (e.g., mark as PASS or FAIL)', inputSchema: { type: 'object', properties: { testRunId: { type: 'string', description: 'The test run ID (obtained from test execution details)', }, status: { type: 'string', enum: ['TODO', 'EXECUTING', 'PASS', 'FAIL', 'ABORTED', 'PASSED', 'FAILED'], description: 'The new status for the test run', }, }, required: ['testRunId', 'status'], }, }, // Test Plan tools { name: 'create_test_plan', description: 'Create a new test plan in Xray Cloud to organize tests', inputSchema: { type: 'object', properties: { projectKey: { type: 'string', description: 'The Jira project key (e.g., "PROJ")', }, summary: { type: 'string', description: 'The test plan summary/title', }, description: { type: 'string', description: 'The test plan description', }, testIssueIds: { type: 'array', items: { type: 'string' }, description: 'Array of test issue IDs to include in this plan', }, }, required: ['projectKey', 'summary'], }, }, { name: 'get_test_plan', description: 'Get details of a specific test plan by key, including all tests', inputSchema: { type: 'object', properties: { testPlanKey: { type: 'string', description: 'The test plan key (e.g., "PROJ-789")', }, }, required: ['testPlanKey'], }, }, { name: 'search_test_plans', description: 'Search for test plans using JQL (Jira Query Language)', inputSchema: { type: 'object', properties: { jql: { type: 'string', description: 'JQL query to search test plans', }, maxResults: { type: 'number', description: 'Maximum number of results to return', default: 50, }, }, required: ['jql'], }, }, { name: 'get_project_test_plans', description: 'Get all test plans for a specific project', inputSchema: { type: 'object', properties: { projectKey: { type: 'string', description: 'The Jira project key (e.g., "PROJ")', }, maxResults: { type: 'number', description: 'Maximum number of results to return', default: 50, }, }, required: ['projectKey'], }, }, { name: 'add_tests_to_test_plan', description: 'Add tests to an existing test plan', inputSchema: { type: 'object', properties: { testPlanIssueId: { type: 'string', description: 'The test plan issue ID (not key)', }, testIssueIds: { type: 'array', items: { type: 'string' }, description: 'Array of test issue IDs to add', }, }, required: ['testPlanIssueId', 'testIssueIds'], }, }, { name: 'remove_tests_from_test_plan', description: 'Remove tests from an existing test plan', inputSchema: { type: 'object', properties: { testPlanIssueId: { type: 'string', description: 'The test plan issue ID (not key)', }, testIssueIds: { type: 'array', items: { type: 'string' }, description: 'Array of test issue IDs to remove', }, }, required: ['testPlanIssueId', 'testIssueIds'], }, }, // Test Set tools { name: 'create_test_set', description: 'Create a new test set in Xray Cloud to group related tests', inputSchema: { type: 'object', properties: { projectKey: { type: 'string', description: 'The Jira project key (e.g., "PROJ")', }, summary: { type: 'string', description: 'The test set summary/title', }, description: { type: 'string', description: 'The test set description', }, testIssueIds: { type: 'array', items: { type: 'string' }, description: 'Array of test issue IDs to include in this set', }, }, required: ['projectKey', 'summary'], }, }, { name: 'get_test_set', description: 'Get details of a specific test set by key, including all tests', inputSchema: { type: 'object', properties: { testSetKey: { type: 'string', description: 'The test set key (e.g., "PROJ-890")', }, }, required: ['testSetKey'], }, }, { name: 'search_test_sets', description: 'Search for test sets using JQL (Jira Query Language)', inputSchema: { type: 'object', properties: { jql: { type: 'string', description: 'JQL query to search test sets', }, maxResults: { type: 'number', description: 'Maximum number of results to return', default: 50, }, }, required: ['jql'], }, }, { name: 'get_project_test_sets', description: 'Get all test sets for a specific project', inputSchema: { type: 'object', properties: { projectKey: { type: 'string', description: 'The Jira project key (e.g., "PROJ")', }, maxResults: { type: 'number', description: 'Maximum number of results to return', default: 50, }, }, required: ['projectKey'], }, }, { name: 'add_tests_to_test_set', description: 'Add tests to an existing test set', inputSchema: { type: 'object', properties: { testSetIssueId: { type: 'string', description: 'The test set issue ID (not key)', }, testIssueIds: { type: 'array', items: { type: 'string' }, description: 'Array of test issue IDs to add', }, }, required: ['testSetIssueId', 'testIssueIds'], }, }, { name: 'remove_tests_from_test_set', description: 'Remove tests from an existing test set', inputSchema: { type: 'object', properties: { testSetIssueId: { type: 'string', description: 'The test set issue ID (not key)', }, testIssueIds: { type: 'array', items: { type: 'string' }, description: 'Array of test issue IDs to remove', }, }, required: ['testSetIssueId', 'testIssueIds'], }, }, ];
- src/xray-client.ts:514-517 (helper)XrayClient helper method that generates JQL for the project and delegates to searchTestExecutions.async getTestExecutionsByProject(projectKey: string, maxResults: number = 50): Promise<any> { const jql = `project = '${projectKey}'`; return this.searchTestExecutions(jql, maxResults); }
- src/xray-client.ts:522-559 (helper)Core helper that performs the GraphQL query to fetch test executions using JQL, including test runs details.async searchTestExecutions(jql: string, maxResults: number = 50): Promise<any> { const query = ` query SearchTestExecutions($jql: String!, $limit: Int!) { getTestExecutions(jql: $jql, limit: $limit) { total start limit results { issueId projectId jira(fields: ["key", "summary", "description", "status", "created", "updated"]) testRuns(limit: 100) { total results { id status { name description } test { issueId jira(fields: ["key", "summary"]) } } } } } } `; const variables = { jql, limit: maxResults }; const result = await this.graphqlRequest<{ getTestExecutions: any }>(query, variables); return result.getTestExecutions; }