aggregate_test_cases_by_feature
Find and group test cases by feature keyword across project test suites to organize testing efforts and generate automation tags.
Instructions
🔍 Find ALL test cases related to a specific feature across the project. Searches in title, description, preconditions, and test steps (case-insensitive, partial match). Groups results by Root Suite and Feature Suite, avoiding duplicates. Output formats: detailed (full hierarchy), short (summary), dto (JSON), test_run_rules (for automation tags)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | Project key (e.g., 'MCPAND', 'MCP') | |
| feature_keyword | Yes | Feature keyword to search for (case-insensitive, partial match) | |
| output_format | No | Output format: detailed, short, dto, or test_run_rules | short |
| tags_format | No | TAGS output format: by_root_suite (separate TAGS line per root suite, default) or single_line (all combined on one line) | by_root_suite |
| max_results | No | Maximum test cases to process |
Implementation Reference
- src/types/api.ts:289-307 (schema)Defines the input schema (Zod validation) for the 'aggregate_test_cases_by_feature' MCP tool, including parameters like project_key, feature_keyword, output_format, etc. No handler or registration found elsewhere in the codebase.export const AggregateTestCasesByFeatureInputSchema = z.object({ project_key: z.string().min(1).describe("Project key (e.g., 'MCPAND', 'MCP')"), feature_keyword: z.string().min(1).describe("Feature keyword to search for (case-insensitive, partial match). Searches in title, description, preconditions, and test steps."), output_format: z.enum(['detailed', 'short', 'dto', 'test_run_rules']).default('short').describe( "Output format:\n" + "- 'detailed': Full hierarchy with all intermediate levels\n" + "- 'short': Root Suite -> Direct Parent -> TestCaseKey + Name\n" + "- 'dto': JSON object with numbers, ids, keys, and names\n" + "- 'test_run_rules': RootSuiteId with name + TAGS=>featureSuiteId=X||featureSuiteId=Y format" ), tags_format: z.enum(['by_root_suite', 'single_line']).default('by_root_suite').describe( "TAGS output format:\n" + "- 'by_root_suite': Separate TAGS line per root suite (default)\n" + "- 'single_line': All featureSuiteIds combined on one line" ), max_results: z.number().int().positive().max(2000).default(500).describe("Maximum number of test cases to process (for performance)") }); export type AggregateTestCasesByFeatureInput = z.infer<typeof AggregateTestCasesByFeatureInputSchema>;