Reports
Introduction
Section titled “Introduction”What is the Reports screen?
Section titled “What is the Reports screen?”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).
Who this guide is for
Section titled “Who this guide is for”- 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.
Key terms
Section titled “Key terms”| Term | What it means |
|---|---|
| Report / Saved report | A 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 spec | The 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. |
| Cell | One block in the dashboard grid. Four types exist: KPI (a single headline number), Chart, Table, and Markdown (narrative text). |
| KPI tile | A cell showing one headline metric with an optional unit, delta (change), and up/down/flat direction — e.g. “Pass Rate 94% ▲”. |
| Pinned | A flag (pinned) that marks a report as a favourite; pinned reports show an amber Pin icon. |
| Template | A quick-start preset. Clicking it opens the AI Assistant in Reporting mode with a pre-filled prompt you can edit before submitting. |
| Schedule | A recurring job (ReportSchedule) that emails the latest version of a saved report to a list of recipients on a cron cadence. |
| Cron | A 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 token | An opaque token (shareToken) minted when you publish a report. It powers the public URL /reports/share/<token>. |
| Regenerate | Re-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 endpoint | A server route that rebuilds the HTML report fresh from the saved spec on every fetch, guaranteeing working inline charts even for older saved reports. |
How it works
Section titled “How it works”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:
- In Reporting mode the AI calls the
generate_dashboardtool, which returns a dashboard spec plus standalone HTML and JSON snapshot files. - You click the bookmark icon to save the dashboard; it now appears on this screen under My Reports with a stable id.
- 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.
- Regenerate re-runs that AI workflow server-side and overwrites the spec values with current data — same id, same share link, same pin state.
- Download (HTML) always hits the
render.htmlendpoint, which rebuilds the file from the saved spec so charts are always real inline SVG, never a stale placeholder.
Getting Started
Section titled “Getting Started”Opening Reports
Section titled “Opening Reports”- From the left sidebar, click Reports (the file-text icon). This navigates to
/reports. - The page header Reports appears with a one-paragraph description of the four tabs.
- The My Reports tab is selected by default and begins loading your saved reports (you’ll briefly see “Loading reports…”).
- Use the four tabs — My Reports, Scheduled, Templates, Shared — to move between the sub-sections.
The screen layout
Section titled “The screen layout”| Area | Location | What it does |
|---|---|---|
| Page header | Top | Shows the title Reports and a sentence describing each tab. |
| Tab bar | Below the header | Four tabs: My Reports, Scheduled, Templates, Shared. The active tab is underlined in the brand colour. |
| My Reports tab | Main area (default) | A responsive grid of report cards (1/2/3 columns by screen width), each with actions and download pills. |
| Scheduled tab | Main area | A table of recurring email dispatch jobs, plus a New schedule button and a manual Refresh. |
| Templates tab | Main area | A 2-column grid of quick-start preset cards, each with a Run template button. |
| Shared tab | Main area | The same card grid as My Reports, filtered to only reports that have an active share token. |
| Toolbar (per tab) | Above the grid/table | A count (“N reports” / “N schedules”) on the left and a Refresh button on the right. |
At a glance
Section titled “At a glance”- 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.
The Reports List
Section titled “The Reports List”Anatomy of a report card
Section titled “Anatomy of a report card”On the My Reports tab each saved report is a card. The card columns and elements are:
| Element | Where | What it shows / does |
|---|---|---|
| Pin marker | Top-left of card | An amber Pin icon appears only when the report is pinned. |
| Title | Top of card | The report’s title, truncated if long. |
| Pin / Unpin button | Top-right (on hover) | Toggles favourite state. Tooltip reads Pin or Unpin. |
| Share button | Top-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 button | Top-right (on hover) | Opens a confirmation dialog to permanently delete the report. |
| Template badge | Metadata row | A small brand-coloured pill showing the templateId, if the report was built from a template. |
| Shared indicator | Metadata row | A “Shared” label with a share icon when a share token is active. |
| Updated date | Metadata row | The report’s updatedAt date, localised. |
| Download pills | Below metadata | One pill per available format: always html, plus pdf, docx, xlsx, json when those output files exist. Each opens in a new tab. |
| Open button | Bottom of card | Navigates to the full-view page /reports/view/<id> (eye icon). |
| Open-share button | Bottom of card | Only when shared: an external-link icon that opens the public share URL in a new tab. |
The report count
Section titled “The report count”- 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.
Filtering by tab
Section titled “Filtering by tab”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.
Where reports come from
Section titled “Where reports come from”Reports originate from the AI Assistant. There are two paths in from this screen:
- Open the Templates tab.
- Pick a preset card — for example Executive Summary, QA Daily Report, Release Readiness, Trend Analysis, Manual vs Automated, or Coverage by Requirement.
- Read the preview prompt shown in the card (it is fully editable later).
- Click Run template. You are taken to the AI Assistant, forced into Reporting mode, with the prompt pre-filled.
- 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.
| Template | What it produces |
|---|---|
| Executive Summary | High-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 Report | Last-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 Readiness | Latest 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 Analysis | A 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 Automated | A quick breakdown of test cases by automation status (single-line prompt; the AI picks the layout). |
| Coverage by Requirement | Requirement coverage with uncovered requirements and orphaned tests (single-line prompt; the AI picks the layout). |
Viewing a Report
Section titled “Viewing a Report”Opening a report
Section titled “Opening a report”- On a report card, click Open (the eye icon). You navigate to
/reports/view/<id>. - The page shows a brief “Loading report…” spinner, then renders the dashboard at full width.
- 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.
Report actions
Section titled “Report actions”| Action | Icon | What it does |
|---|---|---|
| Back to Reports | Arrow-left | Returns to the /reports catalogue. |
| Reload | Refresh | Re-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 data | Sparkles | Re-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. |
| Delete | Trash | Opens a confirm dialog; on confirm the report is permanently deleted and you return to the catalogue. |
The dashboard grid and cell types
Section titled “The dashboard grid and cell types”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 type | What it shows |
|---|---|
| KPI tile | A 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). |
| Chart | A 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. |
| Table | A 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. |
| Markdown | A 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.
The report header and action bar
Section titled “The report header and action bar”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 action | What 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. |
Downloading other formats
Section titled “Downloading other formats”- 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.
Sharing a Report
Section titled “Sharing a Report”Creating a share link
Section titled “Creating a share link”- On a report card (or in the full view header), click the Share icon.
- A share token is minted and a public URL of the form
<your-site>/reports/share/<token>is generated. - The absolute URL is copied to your clipboard automatically, and a toast confirms “Share link copied: …”.
- The report now shows a green Share icon, a Shared badge, and (on the card) an external-link button that opens the public page.
- Move to the Shared tab to see all reports that currently have an active link.
The public share page
Section titled “The public share page”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 and revocation
Section titled “Access and revocation”- 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.”
Common Tasks (How Do I…?)
Section titled “Common Tasks (How Do I…?)”| I want to… | Do this |
|---|---|
| Find a report I made earlier | Open Reports → My Reports tab. Click Refresh if it’s not shown. |
| Create a new report | Open 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 width | Click Open (eye icon) on its card, or Open full view in the chat ReportCard. |
| Mark a report as a favourite | Hover the card and click the Pin icon. Pinned reports show an amber pin marker. |
| Update a report’s numbers to today’s data | Open the report and click Regenerate with current data (takes ~30s–2min). |
| Download a report | Use a format pill on the card (html/pdf/docx/xlsx/json) or the Download icon in the full view. |
| Email a report on a schedule | Open the Scheduled tab → New schedule → choose source report, cron, format (HTML or XLSX), and recipients. |
| Run a scheduled report immediately | On the Scheduled tab, click the Play (Run now) icon on that row. |
| Pause / resume a schedule | Click PAUSE / RESUME on the schedule’s row. |
| Share a report publicly | Click the Share icon on the card or in the full view; the link is copied to your clipboard. |
| See everything I’ve shared | Open the Shared tab. |
| Stop sharing a report | Click the Share icon again (toggles off), or click Revoke in the full-view share panel. |
| Delete a report | Click the Delete (trash) icon and confirm. Note: linked schedules are also removed. |
Tips & Best Practices
Section titled “Tips & Best Practices”- 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.
Troubleshooting & FAQ
Section titled “Troubleshooting & FAQ”| Symptom | Likely cause / fix |
|---|---|
| ”No saved reports yet” on My Reports | You haven’t saved any dashboards. Build one in Reporting mode and click the bookmark icon, or use a Template. |
| ”No shared reports yet” on Shared | No 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 report | Use 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 slow | Expected — 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 schedule | It’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 Error | Hover 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 formats | By design — PDF and DOCX delivery is not wired for scheduling in this build. |
Related
Section titled “Related”- AI Assistant → Reporting mode — where reports are built.
- Schedules — run-side equivalent.
- Connectors → Email — email delivery.