Skip to content

Reports

The Reports screen is the home for every dashboard you have generated through Testver’s AI Assistant in Reporting mode. A report is not a flat document — it is an interactive dashboard built on a 12-column grid that combines KPI tiles, charts, data tables, and short narrative notes, all driven by live data from your Testver project (test cases, run history, coverage, and failure analysis).

The screen itself does not generate reports. It is a catalogue and control panel: you build a dashboard elsewhere (in chat, in Reporting mode), then save it, and from here you open it, pin it, download it, email it on a schedule, regenerate it against fresh data, or share it publicly.

Analogy: think of it as the photo library on your phone. The camera (the AI Assistant in Reporting mode) takes the pictures; the library (this screen) is where you organise them, favourite the ones you care about, re-take a shot with today’s lighting (Regenerate), print copies in different formats (HTML, PDF, DOCX, XLSX, JSON), set up an automatic monthly print-and-mail (Scheduled), or hand someone a shareable link to view an album without giving them your phone (public share link).

  • QA engineers and leads who generate dashboards in Reporting mode and need to find, reopen, and refresh them later.
  • Engineering managers who want a recurring email of the latest test status without logging in (via the Scheduled tab).
  • Stakeholders and clients who only ever receive a public share link and view the report read-only, with no Testver account.
  • Anyone picking a quick-start Template to kick off a new report when they know the topic but not the exact layout.
TermWhat it means
Report / Saved reportA persisted dashboard with a stable id, a title, a saved spec (the dashboard definition), and an updatedAt date. Created by saving a dashboard from Reporting mode.
Dashboard specThe spec object that defines the report: a title, optional subtitle, a generatedAt timestamp, and an ordered list of cells laid out on a 12-column grid.
CellOne block in the dashboard grid. Four types exist: KPI (a single headline number), Chart, Table, and Markdown (narrative text).
KPI tileA cell showing one headline metric with an optional unit, delta (change), and up/down/flat direction — e.g. “Pass Rate 94% ▲”.
PinnedA flag (pinned) that marks a report as a favourite; pinned reports show an amber Pin icon.
TemplateA quick-start preset. Clicking it opens the AI Assistant in Reporting mode with a pre-filled prompt you can edit before submitting.
ScheduleA recurring job (ReportSchedule) that emails the latest version of a saved report to a list of recipients on a cron cadence.
CronA 5-field expression (minute hour day-of-month month day-of-week) that defines when a schedule fires, e.g. 0 9 * * 1-5 = 9 AM on weekdays.
Share tokenAn opaque token (shareToken) minted when you publish a report. It powers the public URL /reports/share/<token>.
RegenerateRe-running the AI workflow that built a report so its numbers reflect the current state of Testver, while preserving the report’s id, share link, and pin state.
render.html endpointA server route that rebuilds the HTML report fresh from the saved spec on every fetch, guaranteeing working inline charts even for older saved reports.

Reports are built from your project’s real data. When a dashboard is generated (or regenerated), the AI queries Testver — test cases, run history, coverage stats, baseline comparisons, flaky-test detection, slowest-tests stats — and emits a spec whose cells hold those numbers. The flow:

  1. In Reporting mode the AI calls the generate_dashboard tool, which returns a dashboard spec plus standalone HTML and JSON snapshot files.
  2. You click the bookmark icon to save the dashboard; it now appears on this screen under My Reports with a stable id.
  3. Opening a saved report renders the spec through the same ReportCard component used in chat, so the full-view page is pixel-identical to what you saw in chat.
  4. Regenerate re-runs that AI workflow server-side and overwrites the spec values with current data — same id, same share link, same pin state.
  5. Download (HTML) always hits the render.html endpoint, which rebuilds the file from the saved spec so charts are always real inline SVG, never a stale placeholder.
  1. From the left sidebar, click Reports (the file-text icon). This navigates to /reports.
  2. The page header Reports appears with a one-paragraph description of the four tabs.
  3. The My Reports tab is selected by default and begins loading your saved reports (you’ll briefly see “Loading reports…”).
  4. Use the four tabs — My Reports, Scheduled, Templates, Shared — to move between the sub-sections.
AreaLocationWhat it does
Page headerTopShows the title Reports and a sentence describing each tab.
Tab barBelow the headerFour tabs: My Reports, Scheduled, Templates, Shared. The active tab is underlined in the brand colour.
My Reports tabMain area (default)A responsive grid of report cards (1/2/3 columns by screen width), each with actions and download pills.
Scheduled tabMain areaA table of recurring email dispatch jobs, plus a New schedule button and a manual Refresh.
Templates tabMain areaA 2-column grid of quick-start preset cards, each with a Run template button.
Shared tabMain areaThe same card grid as My Reports, filtered to only reports that have an active share token.
Toolbar (per tab)Above the grid/tableA count (“N reports” / “N schedules”) on the left and a Refresh button on the right.
  • The page is centred at a maximum width and padded; it is comfortable on both wide and narrow screens.
  • My Reports and Shared share one underlying view — Shared simply filters to reports that have a share token.
  • Card action icons (Pin, Share, Delete) are hidden until you hover over a card, keeping the grid clean.
  • The Scheduled tab auto-refreshes every 20 seconds in the background so last-run status stays current without you clicking Refresh.
  • Light and dark themes are both supported throughout.

On the My Reports tab each saved report is a card. The card columns and elements are:

ElementWhereWhat it shows / does
Pin markerTop-left of cardAn amber Pin icon appears only when the report is pinned.
TitleTop of cardThe report’s title, truncated if long.
Pin / Unpin buttonTop-right (on hover)Toggles favourite state. Tooltip reads Pin or Unpin.
Share buttonTop-right (on hover)Creates a public link (copies it to your clipboard) or, if already shared, revokes it. Turns emerald-green when a link is active.
Delete buttonTop-right (on hover)Opens a confirmation dialog to permanently delete the report.
Template badgeMetadata rowA small brand-coloured pill showing the templateId, if the report was built from a template.
Shared indicatorMetadata rowA “Shared” label with a share icon when a share token is active.
Updated dateMetadata rowThe report’s updatedAt date, localised.
Download pillsBelow metadataOne pill per available format: always html, plus pdf, docx, xlsx, json when those output files exist. Each opens in a new tab.
Open buttonBottom of cardNavigates to the full-view page /reports/view/<id> (eye icon).
Open-share buttonBottom of cardOnly when shared: an external-link icon that opens the public share URL in a new tab.
  • The left of the toolbar shows the count: e.g. 3 reports (singular “1 report” when there is exactly one).
  • The right shows a Refresh button. Click it to re-fetch the list from the server. While refreshing the icon spins and the label reads Refreshing….
  • On a manual refresh the existing cards stay on screen (no flash to empty) — only the first load shows the full “Loading reports…” splash.

There is no free-text search box on this screen. Filtering is done by tab: the Shared tab is the same card view as My Reports but shows only reports that have an active share token. Everything else (pinning, downloading, opening, deleting) works identically on both tabs.

When the Shared tab is empty it tells you how to populate it: open a saved report from My Reports and click the Share icon to create a public link.

Reports originate from the AI Assistant. There are two paths in from this screen:

  1. Open the Templates tab.
  2. Pick a preset card — for example Executive Summary, QA Daily Report, Release Readiness, Trend Analysis, Manual vs Automated, or Coverage by Requirement.
  3. Read the preview prompt shown in the card (it is fully editable later).
  4. Click Run template. You are taken to the AI Assistant, forced into Reporting mode, with the prompt pre-filled.
  5. Edit the prompt if you wish, then submit. The AI builds the dashboard and (per the prompt) saves it so it appears under My Reports. Alternatively, start a chat in Reporting mode yourself, describe the dashboard you want, and click the bookmark icon on the resulting ReportCard to save it here.
TemplateWhat it produces
Executive SummaryHigh-level KPIs, an automation-status doughnut, a pass-rate trend line, a top-5 failing-tests table, and a 3–5 bullet executive summary — aimed at managers.
QA Daily ReportLast-24h KPIs, a pass/fail/skip stacked bar per run, a failure-categories doughnut, a new-failures-today table, and a what-changed-since-yesterday note — for standups.
Release ReadinessLatest run vs baseline: pass-rate and duration deltas, regression count, a top-5 regressions bar, a new-failures-vs-baseline table, and a Go / No-Go recommendation.
Trend AnalysisA deep dive across the last 20 runs: pass-rate and duration trend lines, flakiest-tests and slowest-tests breakdowns, and an anomalies note.
Manual vs AutomatedA quick breakdown of test cases by automation status (single-line prompt; the AI picks the layout).
Coverage by RequirementRequirement coverage with uncovered requirements and orphaned tests (single-line prompt; the AI picks the layout).
  1. On a report card, click Open (the eye icon). You navigate to /reports/view/<id>.
  2. The page shows a brief “Loading report…” spinner, then renders the dashboard at full width.
  3. If the report can’t be loaded you’ll see a Could not load report panel with the error and a Back to Reports link.
ActionIconWhat it does
Back to ReportsArrow-leftReturns to the /reports catalogue.
ReloadRefreshRe-fetches the SAVED snapshot from the server. Chart values stay the same unless someone edited the saved report. Shows a spinning icon and “Reloading…” without blanking the rendered report.
Regenerate with current dataSparklesRe-runs the AI workflow that built the dashboard so the KPI/chart/table values reflect the CURRENT state of Testver. The id, share link, and pin state are preserved — only the spec values change. Takes roughly 30 seconds to a couple of minutes; the button shows “Regenerating…” and both Reload and Regenerate are disabled while it runs.
DeleteTrashOpens a confirm dialog; on confirm the report is permanently deleted and you return to the catalogue.

The report body is a 12-column grid of cells. The full-view page renders exactly the same ReportCard component used in chat, so what you see is identical. The four cell types are:

Section / cell typeWhat it shows
KPI tileA single headline metric — a value with an optional unit, an optional delta (change vs a prior period), and an up/down/flat direction. The delta is coloured green or red depending on whether that direction is “good”. Default width: 3 of 12 columns (four per row).
ChartA titled chart in one of six types: line, bar, stacked_bar, pie, doughnut, or horizontal_bar. Supports single-series data or multiple datasets, with colour schemes (vibrant, pastel, status, priority, severity). Default width: 6 of 12 columns (two per row). May include a hint line beneath.
TableA titled data table with column headers and rows; numbers are right-tabulated. Shows “No rows” when empty. Default width: full (12 columns). May include a hint line beneath.
MarkdownA narrative note rendered from lightweight markdown — supports headings, bullet lists, bold, and inline code. Used for executive summaries and Go/No-Go recommendations. Default width: full (12 columns).

Each cell can override its width via a span value (clamped to 1–12). On narrow screens all cells stack to full width.

Above the grid, the ReportCard header shows the report title, an optional subtitle, and a Generated timestamp. To the right is an action bar:

Header actionWhat it does
Save (bookmark)Saves an unsaved dashboard to your reports. Hidden once the report is already saved (and always hidden in the public read-only share view). Turns into a filled check-bookmark when saved.
Share / Revoke (share icon)Creates a public share link (saving the report first if needed) or, when one exists, toggles a panel to view/copy/revoke it. Hidden in read-only share view.
Open full view (external link)Opens the best available URL in a new tab — the public share URL if shared, else the /reports/view/<id> page, else the static HTML snapshot.
Download (download icon)Downloads the HTML report. For saved or shared reports this uses the fresh-render endpoint so charts are always real inline SVG; the public share view uses the public render endpoint so anonymous viewers aren’t blocked.
Copy link (link icon)Copies the interactive URL to the clipboard (share URL when shared, full-view URL when saved, HTML snapshot otherwise). Shows a green check briefly on success.
  • From a report card (My Reports / Shared): use the format pills — html (always present, fresh-rendered) plus pdf, docx, xlsx, json when those files exist.
  • From the full view header: the Download icon downloads the HTML report (filename <spec-id>.html).
  • Owner-gated downloads append your auth token as a ?token= query parameter automatically, because a plain link can’t send an Authorization header — this is what lets the file open without a 401.
  1. On a report card (or in the full view header), click the Share icon.
  2. A share token is minted and a public URL of the form <your-site>/reports/share/<token> is generated.
  3. The absolute URL is copied to your clipboard automatically, and a toast confirms “Share link copied: …”.
  4. The report now shows a green Share icon, a Shared badge, and (on the card) an external-link button that opens the public page.
  5. Move to the Shared tab to see all reports that currently have an active link.

The public page at /reports/share/<token> is a read-only render of the dashboard:

  • A small header strip reads Testver → Shared Report with a “Read-only view · <date>” label.
  • The dashboard renders through the same ReportCard, but in readonly mode: the Save, Share, and Revoke actions are all hidden.
  • The viewer can still Open full view, Download HTML, and Copy link — the Download uses the public render endpoint so it works without an account.
  • A footer reads “Generated by Testver”.
  • If the token is invalid or revoked, the page shows Share link unavailable with the message: “This share link is no longer valid. Ask the report owner for a fresh link.”
  • Access is governed solely by possession of the token — there is no per-person access list, no password, and no expiry beyond manual revocation.
  • To revoke: click the Share icon on a shared card again (it toggles the link off), or in the full view open the share panel and click Revoke (shield-off icon). A toast confirms “Share link revoked”.
  • Once revoked, the old URL stops working immediately and shows the “no longer valid” page. Re-sharing mints a brand-new token; the old URL never comes back.
  • Deleting a report also invalidates its share link — the confirm dialog warns “Any active share link will stop working.”
I want to…Do this
Find a report I made earlierOpen Reports → My Reports tab. Click Refresh if it’s not shown.
Create a new reportOpen the Templates tab, pick a preset, click Run template, then submit in the AI Assistant. Or save a dashboard from a Reporting-mode chat.
Open a report at full widthClick Open (eye icon) on its card, or Open full view in the chat ReportCard.
Mark a report as a favouriteHover the card and click the Pin icon. Pinned reports show an amber pin marker.
Update a report’s numbers to today’s dataOpen the report and click Regenerate with current data (takes ~30s–2min).
Download a reportUse a format pill on the card (html/pdf/docx/xlsx/json) or the Download icon in the full view.
Email a report on a scheduleOpen the Scheduled tab → New schedule → choose source report, cron, format (HTML or XLSX), and recipients.
Run a scheduled report immediatelyOn the Scheduled tab, click the Play (Run now) icon on that row.
Pause / resume a scheduleClick PAUSE / RESUME on the schedule’s row.
Share a report publiclyClick the Share icon on the card or in the full view; the link is copied to your clipboard.
See everything I’ve sharedOpen the Shared tab.
Stop sharing a reportClick the Share icon again (toggles off), or click Revoke in the full-view share panel.
Delete a reportClick the Delete (trash) icon and confirm. Note: linked schedules are also removed.
  • Configure an Email connector in Connectors before creating a schedule — recurring delivery needs it.
  • Give schedules clear titles (e.g. “Weekly QA Summary”) so the Scheduled table stays readable.
  • Revoke share links you no longer need; a forgotten public link is a forgotten data leak.
  • Use the Run now action to test a schedule’s recipients and format before trusting the recurring cadence.
SymptomLikely cause / fix
”No saved reports yet” on My ReportsYou haven’t saved any dashboards. Build one in Reporting mode and click the bookmark icon, or use a Template.
”No shared reports yet” on SharedNo report has an active share link. Open a saved report and click the Share icon to create one.
A downloaded file opens a 401 / “file was not available on site”The auth token wasn’t attached. Use the in-app download pills/buttons, which append the token automatically, rather than copying a raw /api/reports/… URL.
Charts missing in a downloaded older reportUse the html download pill — it fresh-renders from the saved spec. Older stored snapshots may have placeholders instead of inline charts.
Public link shows “This share link is no longer valid”The token was revoked or the report deleted. Ask the owner to create a fresh link.
Regenerate is slowExpected — it re-runs the AI workflow and re-queries Testver, which takes ~30 seconds to a couple of minutes. Both Reload and Regenerate are disabled meanwhile.
Can’t click New scheduleIt’s disabled until you have at least one saved report. Save a report first, then schedule it.
Schedule shows “Source: Missing”The saved report that fed this schedule was deleted. The schedule can’t dispatch — recreate the report or delete the schedule.
Schedule status shows ErrorHover the Error label to see the message. Common causes: no Email connector configured, or an invalid recipient. Fix and use Run now to retest.
”At least one recipient email is required” / “Invalid recipient email”Enter comma-separated, properly formatted email addresses in the Recipients field.
”Cron expression must have 5 fields”Use the CronBuilder presets, or write five space-separated fields: minute hour day-of-month month day-of-week.
Only HTML and XLSX show as schedule formatsBy design — PDF and DOCX delivery is not wired for scheduling in this build.