Skip to content

--report-url deep links for test alerts open the full test list instead of the specific test (cold-load redirect on #/report/test-runs/<id>) #2283

Description

@niccoloalexander

Summary

Deep links to #/report/test-runs/<test_unique_id>/ don't resolve on a cold page load — they redirect to #/report/test-runs (the full Test Performance list). This is the exact link edr monitor --report-url generates for test alerts, so every Slack alert's report link opens the full test list instead of the failing test.

This is the same class of cold-load redirect-guard bug as #2182, but for test-runs (that issue is scoped to model-runs and notes test-runs as unaffected — that's no longer the case).

Environment

  • edr (elementary-data): reproduced on 0.23.1, 0.23.2, 0.23.4, 0.24.0, 0.24.1, 0.25.0
  • OSS self-hosted report (static HTML, no Cloud)

Steps to reproduce

  1. Generate a report and send alerts with edr monitor --report-url <host>.
  2. In a fresh tab, open a test alert's report link: <host>/#/report/test-runs/<test_unique_id>/.
  3. Observe it lands on #/report/test-runs (full list); the specific test is never selected.
  4. Pasting the same URL into an already-open report tab works — same warm/cold distinction as [Bug] Model-run deep-links redirect to parent route on fresh page load #2182.

Expected vs actual

  • Expected: the link opens the specific test's run history.
  • Actual: redirects to the full Test Performance list.

Evidence across versions

I injected a real report's window.elementaryData into each version's bundled report/index.html and cold-loaded the deep link in headless Chrome. All six versions (0.23.1 → 0.25.0) land on the unfiltered list. The data renders correctly in each, so it's the routing/redirect guard, not a data problem.

Likely cause / fix

Same mechanism as #2182: the detail route's redirect guard fires while data is still in its initial empty/fetching state, then navigates to the parent list. Likely fixes: guard the redirect useEffect with the isFetching flag, or fall back to embedded report data instead of an empty array during fetch.

(Noting the report frontend that generates the artifact isn't public, so external contributors can't patch it directly.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions