get_launch_tests
Retrieve all test attempts from a launch with results, errors, and artifact links, using titlePath to count distinct tests across retries.
Instructions
Get every test inside one launch, with results, error messages and stack traces for the failures. IMPORTANT: rows are one per retry ATTEMPT, not one per test, so a retried test appears more than once and the row count can exceed the launch stats counts, while the stats on the launch itself count tests rather than attempts. Two traps follow, and both have produced a wrong count. First, testId is minted per ROW, so every attempt has a different one and deduplicating on testId still counts attempts: the identity of a test across its attempts is titlePath, optionally with filePath. Second, retry is 0-based but a retry:0 row is NOT guaranteed to exist - a launch can hold a retry:1 row whose first attempt was never stored - so counting rows where retry is 0 undercounts. Count distinct titlePath. Each row also carries status, previousStatus, durationMs, tags and errors. previousStatus reads superseded on an attempt a later one replaced, which looks like the clean way to filter, and is not: on a measured launch of 4472 rows, dropping the superseded ones left 4460 against 4457 real tests, because a retried attempt can carry its own earlier result there instead. The launch stats embedded in this response follow the same convention as everywhere else: total EXCLUDES skipped, so a launch with total 4417 and skipped 40 really does hold 4457 distinct tests, and passed counts first-time passes with flaky held separately. Use this once you have a launch id, which get_launches_statistics gives you; use get_test_history to follow one test across launches instead. For each failed test that has artifacts the response carries an attachments array of id, name, contentType, size and url. The url is fully qualified: if it is an API URL, fetch it with the same X-MCP-Key header you use for this server, while presigned storage URLs need no header. That is how you reach screenshots, traces, videos and source files when investigating a failure.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of tests to return | |
| offset | No | Pagination offset | |
| search | No | Search in test title path or file path | |
| launchId | Yes | Run/launch UUID to get tests from. Obtain from get_launches_statistics or get_launches_trends. | |
| statuses | No | Filter by ATTEMPT-ROW status, not by how a test ended (default: all). A test that failed once and passed on retry still returns its failed row here, so counting the filtered rows, or even counting distinct titlePath over them, answers how many tests had this status at SOME attempt - never how many ended that way. A launch whose own stats.failed is 0 can return 15 failed rows across 13 titles. For tests that ENDED failed, fetch the rows unfiltered and keep the highest-retry row per titlePath, or read stats.failed on the launch itself. | |
| includeErrors | No | Include error details for failed tests |