Add expand/collapse plans buttons and test search box

Adds controls for finding a test in large results, as requested in TFT-5220. They sit in the header together with the "Show passed tests" toggle, in this order:

  1. Expand / collapse plans (icon-only buttons) open or close every plan block.
  2. Show passed tests, unchanged.
  3. Search tests by name filters tests as you type, ignoring case.

The search:

  • renders only plans that contain a matching test, and opens them
  • shows matching passed and skipped tests even with "Show passed tests" off, since you search to locate a test
  • stays applied when you flip the toggles or follow a test link
  • shows No tests match "…" when nothing matches, in place of the pipeline.log section

The plan buttons and search box show up whenever results.xml has plans, including while the request is still running. The "Show passed tests" toggle keeps its existing rule. Testsuite <details> now carry a plan class, so the buttons skip the AI summary and pipeline.log sections.

How to test

Run the Cypress suite, which includes a new view-controls test:

cypress/run-container.sh

To try it in a browser, serve the repository root and open a scenario:

python3 -m http.server 8000
  • http://localhost:8000/results.html?url=scenarios/tmt-mixed has 8 plans and one failing test, so you see all three control groups.
    • Click collapse, then expand: all 8 plans close and open, the hidden passed ones included.
    • Type distgit: only /plans/features/basic remains, with /tests/discover/distgit.
    • Type core/: /plans/features/core appears with its 16 passed tests, though "Show passed tests" is off.
    • Type nonexistent: the page shows the no-match note and no pipeline.log.
    • Clear the box: the default view comes back.
  • http://localhost:8000/results.html?url=scenarios/tmt-single-pass passed fully, so the header shows only the plan buttons and the search box.

A local page can't show the in-progress view, because it reads the request state from the Testing Farm API. The tmt-inprogress-pending Cypress test covers that case with a mocked API response.

2026-10-08_03-53

Generated-by: Claude Code

Edited by Miroslav Vadkerti

Merge request reports

Loading
Loading