Skip to main content
Glama

Get Test Case Details

get_testcase_details
Read-only

Fetches full test case details—errors, stack traces, steps, console logs, and artifacts—by testcase ID or name, with optional run scoping and failed-only step filtering for debugging.

Instructions

Get full details of a test case — errors, stack traces, steps, console logs, and artifacts. Use testcase_id (the Playwright pw_test_id) for the most precise lookup; it can be used alone for latest detail or paired with testrun_id for exact run-scoped detail. testcase_name resolves through test history; combine it with testrun_id to scope to specific run(s), otherwise the latest run is used. Always pass steps_filter="failed_only" when debugging — it drops unrelated passing setup/hook steps and keeps failed branches plus required parent context, cutting noise significantly. Every stored artifact comes back in evidence[] — trace, video, screenshots, and for a visual failure the expected/actual/diff images — each with its attempt index, a url, and an expires_at. Download what you need as soon as you receive it: the links are minutes-scale by design. If one has expired, call this tool again to mint fresh links rather than treating the artifact as missing. traceDownloadUrl points at the first FAILING attempt, which on a flaky test is not the last one.

Input Schema

NameRequiredDescriptionDefault
by_titleNoDeprecated alias for testcase_name (kept for backward compatibility).
projectIdYesProject ID
testcaseidNoDeprecated alias for testcase_id (kept for backward compatibility).
testrun_idNoRun scope for testcase_id / testcase_name lookup. Comma-separated (max 20).
testcase_idNoExact test case ID(s) — Playwright pw_test_id, comma-separated (max 50).
by_fulltitleNo
steps_filterNoUse "failed_only" to drop passing setup/hook steps
by_testrun_idNoDeprecated alias for testrun_id (kept for backward compatibility).
history_limitNoMaximum history timeline cells to keep when include_history=true.
testcase_nameNoTest case title — resolves through test history; scoped by testrun_id when given, else latest matching detail.
by_testrun_idsNoComma-separated (max 20)
include_historyNoAttach DH /analytics/test-history output to returned case detail items.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed19 schema fields changedv2.2.0
    • addedInput schema / $schema
      Added value: +"http://json-schema.org/draft-07/schema#"
    • addedInput schema / additionalProperties
      Added value: +false
    • removedInput schema / properties / by_fulltitle / description
      Removed value: -"Full test case title including suite path (partial match, case-insensitive). Example: 'auth.spec.js > Login > Verify user can logout and login'."
    • changedInput schema / properties / by_testrun_id / description
      Previous value: -"(deprecated — use testrun_id) Single test run ID to filter results. Retained for backward compatibility."New value: +"Deprecated alias for testrun_id (kept for backward compatibility)."
    • changedInput schema / properties / by_testrun_ids / description
      Previous value: -"Multiple test run IDs (comma-separated, max 20). Example: 'test_run_abc,test_run_def'."New value: +"Comma-separated (max 20)"
    • changedInput schema / properties / by_title / description
      Previous value: -"(deprecated — use testcase_name) Test case title (partial match, case-insensitive). Retained for backward compatibility."New value: +"Deprecated alias for testcase_name (kept for backward compatibility)."
    • removedInput schema / properties / history_limit / default
      Removed value: -10
    • changedInput schema / properties / history_limit / description
      Previous value: -"Max number of history entries to return (max: 100, default: 10)."New value: +"Maximum history timeline cells to keep when include_history=true."
    • addedInput schema / properties / history_limit / maximum
      Added value: +100
    • addedInput schema / properties / history_limit / minimum
      Added value: +1
    • changedInput schema / properties / history_limit / type
      Previous value: -"number"New value: +"integer"
    • removedInput schema / properties / include_history / default
      Removed value: -false
    • changedInput schema / properties / include_history / description
      Previous value: -"Include historical executions of the same test case when searching by name. Default: false."New value: +"Attach DH /analytics/test-history output to returned case detail items."
    • changedInput schema / properties / projectId / description
      Previous value: -"Project ID (Required). The TestDino project identifier."New value: +"Project ID"
    • changedInput schema / properties / steps_filter / description
      Previous value: -"Filter steps in each attempt. Use 'failed_only' to return only steps with errors, stripping passing setup and hook steps."New value: +"Use \"failed_only\" to drop passing setup/hook steps"
    • changedInput schema / properties / testcase_id / description
      Previous value: -"Test case ID. Can be used alone to get test case details. Example: 'test_case_123'."New value: +"Exact test case ID(s) — Playwright pw_test_id, comma-separated (max 50)."
    • changedInput schema / properties / testcase_name / description
      Previous value: -"Test case title (partial match, case-insensitive). Must be combined with testrun_id when used alone. Example: 'Verify user can logout and login'."New value: +"Test case title — resolves through test history; scoped by testrun_id when given, else latest matching detail."
    • changedInput schema / properties / testcaseid / description
      Previous value: -"(deprecated — use testcase_id) Test case ID. Retained for backward compatibility."New value: +"Deprecated alias for testcase_id (kept for backward compatibility)."
    • changedInput schema / properties / testrun_id / description
      Previous value: -"Single test run ID to filter results. Example: 'test_run_6901b2abc6b187e63f536a6b'."New value: +"Run scope for testcase_id / testcase_name lookup. Comma-separated (max 20)."
  2. Changed24 schema fields changedv2.0.2
    • removedInput schema / properties / by_code_snippet
      Removed value: -{
      -  "description": "Search in error code snippets (partial match, case-insensitive).",
      -  "type": "string"
      -}
    • removedInput schema / properties / by_error_message
      Removed value: -{
      -  "description": "Search in error messages (partial match, case-insensitive). Example: 'Timeout 15000ms exceeded'.",
      -  "type": "string"
      -}
    • addedInput schema / properties / by_fulltitle
      Added value: +{
      +  "description": "Full test case title including suite path (partial match, case-insensitive). Example: 'auth.spec.js > Login > Verify user can logout and login'.",
      +  "type": "string"
      +}
    • removedInput schema / properties / by_status
      Removed value: -{
      -  "description": "Filter by test case status.",
      -  "enum": [
      -    "passed",
      -    "failed",
      -    "skipped",
      -    "flaky"
      -  ],
      -  "type": "string"
      -}
    • addedInput schema / properties / by_testrun_id
      Added value: +{
      +  "description": "(deprecated — use testrun_id) Single test run ID to filter results. Retained for backward compatibility.",
      +  "type": "string"
      +}
    • addedInput schema / properties / by_testrun_ids
      Added value: +{
      +  "description": "Multiple test run IDs (comma-separated, max 20). Example: 'test_run_abc,test_run_def'.",
      +  "type": "string"
      +}
    • addedInput schema / properties / by_title
      Added value: +{
      +  "description": "(deprecated — use testcase_name) Test case title (partial match, case-insensitive). Retained for backward compatibility.",
      +  "type": "string"
      +}
    • removedInput schema / properties / counter
      Removed value: -{
      -  "description": "Test run counter number. Alternative to testrun_id to identify the test run. Example: 43.",
      -  "type": "number"
      -}
    • removedInput schema / properties / get_all
      Removed value: -{
      -  "default": false,
      -  "description": "Return all matching results up to 1000 (default: false).",
      -  "type": "boolean"
      -}
    • changedInput schema / properties / history_limit / description
      Previous value: -"Max number of history entries to return (default: 10)."New value: +"Max number of history entries to return (max: 100, default: 10)."
    • removedInput schema / properties / include_artifacts
      Removed value: -{
      -  "default": false,
      -  "description": "Include all artifacts (screenshots, traces, videos, attachments) with authenticated URLs. Default: false.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / include_attachments
      Removed value: -{
      -  "default": false,
      -  "description": "Include all attachment metadata from test attempts. Default: false.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / include_screenshots
      Removed value: -{
      -  "default": false,
      -  "description": "Include screenshot URLs from test attempts. Default: false.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / include_traces
      Removed value: -{
      -  "default": false,
      -  "description": "Include Playwright trace links from test attempts. Default: false.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / include_videos
      Removed value: -{
      -  "default": false,
      -  "description": "Include video recording URLs from test attempts. Default: false.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / limit
      Removed value: -{
      -  "description": "Max results to return (default: 1 for ID lookup, 50 for search, max: 1000).",
      -  "type": "number"
      -}
    • removedInput schema / properties / page
      Removed value: -{
      -  "default": 1,
      -  "description": "Page number for pagination (default: 1).",
      -  "type": "number"
      -}
    • removedInput schema / properties / sort_by
      Removed value: -{
      -  "description": "Sort results by field (default: startTime).",
      -  "enum": [
      -    "startTime",
      -    "duration"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / sort_order
      Removed value: -{
      -  "description": "Sort direction (default: desc).",
      -  "enum": [
      -    "asc",
      -    "desc"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / testcase_fulltitle
      Removed value: -{
      -  "description": "Full test case title including suite path (partial match, case-insensitive). Example: 'auth.spec.js > Login > Verify user can logout and login'.",
      -  "type": "string"
      -}
    • changedInput schema / properties / testcase_name / description
      Previous value: -"Test case title (partial match, case-insensitive). Must be combined with testrun_id or counter when used alone. Example: 'Verify user can logout and login'."New value: +"Test case title (partial match, case-insensitive). Must be combined with testrun_id when used alone. Example: 'Verify user can logout and login'."
    • addedInput schema / properties / testcaseid
      Added value: +{
      +  "description": "(deprecated — use testcase_id) Test case ID. Retained for backward compatibility.",
      +  "type": "string"
      +}
    • removedInput schema / properties / testrun_ids
      Removed value: -{
      -  "description": "Multiple test run IDs (comma-separated, max 20). Example: 'test_run_abc,test_run_def'.",
      -  "type": "string"
      -}
    • removedInput schema / properties / testsuite_id
      Removed value: -{
      -  "description": "Filter by test suite ID.",
      -  "type": "string"
      -}
  3. Changed22 schema fields changedv1.0.10
    • addedInput schema / properties / by_code_snippet
      Added value: +{
      +  "description": "Search in error code snippets (partial match, case-insensitive).",
      +  "type": "string"
      +}
    • addedInput schema / properties / by_error_message
      Added value: +{
      +  "description": "Search in error messages (partial match, case-insensitive). Example: 'Timeout 15000ms exceeded'.",
      +  "type": "string"
      +}
    • addedInput schema / properties / by_status
      Added value: +{
      +  "description": "Filter by test case status.",
      +  "enum": [
      +    "passed",
      +    "failed",
      +    "skipped",
      +    "flaky"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / counter / description
      Previous value: -"Test run counter number. Required when using testcase_name (if testrun_id is not provided) to specify which test run's test case you want. Example: 43."New value: +"Test run counter number. Alternative to testrun_id to identify the test run. Example: 43."
    • addedInput schema / properties / get_all
      Added value: +{
      +  "default": false,
      +  "description": "Return all matching results up to 1000 (default: false).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / history_limit
      Added value: +{
      +  "default": 10,
      +  "description": "Max number of history entries to return (default: 10).",
      +  "type": "number"
      +}
    • addedInput schema / properties / include_artifacts
      Added value: +{
      +  "default": false,
      +  "description": "Include all artifacts (screenshots, traces, videos, attachments) with authenticated URLs. Default: false.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / include_attachments
      Added value: +{
      +  "default": false,
      +  "description": "Include all attachment metadata from test attempts. Default: false.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / include_history
      Added value: +{
      +  "default": false,
      +  "description": "Include historical executions of the same test case when searching by name. Default: false.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / include_screenshots
      Added value: +{
      +  "default": false,
      +  "description": "Include screenshot URLs from test attempts. Default: false.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / include_traces
      Added value: +{
      +  "default": false,
      +  "description": "Include Playwright trace links from test attempts. Default: false.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / include_videos
      Added value: +{
      +  "default": false,
      +  "description": "Include video recording URLs from test attempts. Default: false.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / limit
      Added value: +{
      +  "description": "Max results to return (default: 1 for ID lookup, 50 for search, max: 1000).",
      +  "type": "number"
      +}
    • addedInput schema / properties / page
      Added value: +{
      +  "default": 1,
      +  "description": "Page number for pagination (default: 1).",
      +  "type": "number"
      +}
    • addedInput schema / properties / sort_by
      Added value: +{
      +  "description": "Sort results by field (default: startTime).",
      +  "enum": [
      +    "startTime",
      +    "duration"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / sort_order
      Added value: +{
      +  "description": "Sort direction (default: desc).",
      +  "enum": [
      +    "asc",
      +    "desc"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / steps_filter
      Added value: +{
      +  "description": "Filter steps in each attempt. Use 'failed_only' to return only steps with errors, stripping passing setup and hook steps.",
      +  "enum": [
      +    "failed_only"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / testcase_fulltitle
      Added value: +{
      +  "description": "Full test case title including suite path (partial match, case-insensitive). Example: 'auth.spec.js > Login > Verify user can logout and login'.",
      +  "type": "string"
      +}
    • changedInput schema / properties / testcase_name / description
      Previous value: -"Test case name/title. Must be combined with either testrun_id or counter to identify which test run's test case you want. Example: 'Verify user can logout and login'."New value: +"Test case title (partial match, case-insensitive). Must be combined with testrun_id or counter when used alone. Example: 'Verify user can logout and login'."
    • changedInput schema / properties / testrun_id / description
      Previous value: -"Test run ID. Required when using testcase_name to specify which test run's test case you want. Example: 'test_run_6901b2abc6b187e63f536a6b'."New value: +"Single test run ID to filter results. Example: 'test_run_6901b2abc6b187e63f536a6b'."
    • addedInput schema / properties / testrun_ids
      Added value: +{
      +  "description": "Multiple test run IDs (comma-separated, max 20). Example: 'test_run_abc,test_run_def'.",
      +  "type": "string"
      +}
    • addedInput schema / properties / testsuite_id
      Added value: +{
      +  "description": "Filter by test suite ID.",
      +  "type": "string"
      +}
  4. First observed

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only readOnlyHint available as annotation, the description carries real behavioral weight: artifact URLs expire on a minutes scale, expired links are re-minted by re-calling the tool rather than assumed missing, and traceDownloadUrl points at the first FAILING attempt (not the last) on flaky tests. These are non-obvious operating constraints an agent could not derive from the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The lookup-mode guidance is front-loaded before the artifact caveats, so an agent reading only the first sentences can still call the tool correctly. It is dense and slightly long, but each sentence (expiry, re-minting, first-failing attempt) earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter, no-output-schema tool it covers the return payload shape well (evidence[] with attempt index, url, expires_at) and the critical lookup parameters. Legacy aliases (by_title, testcaseid, by_fulltitle), history_limit, and include_history are left to the schema, which is acceptable at 92% coverage but not fully closed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 92%, so the schema documents individual parameters, but the description adds genuine semantics beyond it — the resolution path for testcase_name through test history, how testrun_id scopes that lookup, and why steps_filter drops passing setup/hook steps while keeping failed branches and parent context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource and enumerates exactly what 'full details' contains — errors, stack traces, steps, console logs, artifacts — which lets an agent distinguish it from a bare lister like list_testcase. It never names a sibling tool explicitly, so the differentiation is inferential rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear when-to-use conditions for each lookup mode: testcase_id alone vs paired with testrun_id, testcase_name combined with testrun_id or defaulting to latest, and the debugging recommendation to always pass steps_filter="failed_only". It stops short of naming alternative sibling tools (e.g. debug_testcase, get_run_details) that an agent might reach for instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.