Skip to content

feat(portal): test suite UI with async runs and result history - #253

Merged
07prajwal2000 merged 1 commit into
Fluxify-rest:mainfrom
07prajwal2000:feature/portal-test-suite-ui
Aug 16, 2026
Merged

feat(portal): test suite UI with async runs and result history#253
07prajwal2000 merged 1 commit into
Fluxify-rest:mainfrom
07prajwal2000:feature/portal-test-suite-ui

Conversation

@07prajwal2000

Copy link
Copy Markdown
Collaborator

Closes #227

Adds the test suite UI to apps/portal. The legacy apps/web implementation was used only as a behaviour reference — nothing there is ported or modified.

Navigation

New sibling route /$projectId/canvas/$routeId/test-suites. The route topbar is shared with the canvas via RouteWorkbenchTabs, so the route switcher stays put and a Canvas | Tests segmented control switches between the two views. Suite count, Run all and New suite live in that same topbar.

What's in it

  • Suites — list with filter, create, rename, delete (confirm dialog).
  • Request editor — description, path params derived from the route's own :segments, query params, headers, and a JSON body gated on the method actually taking one.
  • Assertions editor — the operator dropdown only offers pairs the server accepts, the expected-value input disappears for valueless operators, and switching target normalises the row. Save is blocked on invalid rows instead of round-tripping a 400.
  • Overrides — app config (rendered as password inputs; they're credentials) and integration swaps, each side filtered out of the other's list.
  • Run results — suite rows settle independently, so the panel renders what has landed rather than one spinner until the parent finishes. Both run buttons block until the parent run reaches a terminal status. Expanding a row shows assertion verdicts, timeout explanation, run error and the response.
  • Response viewer — Body/Headers tabs; Monaco for JSON/text, <img>/<video>/<audio> for media, a download card for binary.
  • Run history — paginated, with timestamps, and a Clear button.

Server change

DELETE /v1/:projectId/test-suites/route/:routeId/runs is new — the Clear history button needs it. It's the only change outside apps/portal and packages/components, and it wasn't in the issue's scope.

packages/components gains a read-only CodeViewer; monaco already lives there and portal doesn't depend on it.

Checks

  • 11 unit tests for the assertion rules (mirrors the server's superRefine).
  • bun run lint clean for portal, server and packages/components.
  • Full suite on commit: 740 tests, 0 fail.
  • No hardcoded colors — semantic tokens throughout.

Adds the test-suite workbench the portal was missing (Fluxify-rest#227): a sibling
route at /$projectId/canvas/$routeId/test-suites with a tab switcher in
the canvas topbar, so suites are reachable without leaving the route.

- Suite CRUD, mock request (path params read from the route's own
  segments), assertions and per-suite overrides.
- Assertion target/operator rules mirror the server superRefine, so an
  invalid pair is never offered and a missing expected value blocks the
  save instead of returning a 400.
- Runs are queued and polled; suite rows render as they settle, with
  timeout and error runs explaining themselves rather than showing an
  empty result.
- Response body renders by content type: Monaco for text, native
  elements for media, a download for binary.
- New DELETE /v1/:projectId/test-suites/route/:routeId/runs clears a
  route's run history; the portal had no way to do that.
- CodeViewer (read-only Monaco) added to packages/components rather than
  pulling monaco into the portal.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@07prajwal2000
07prajwal2000 added this pull request to the merge queue Aug 16, 2026
Merged via the queue into Fluxify-rest:main with commit 17ccdd8 Aug 16, 2026
12 checks passed
@07prajwal2000
07prajwal2000 deleted the feature/portal-test-suite-ui branch August 16, 2026 22:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Portal]: Test suite UI - creation, editing, overrides and async run results

1 participant