---
module: reports.builder
title: Report Builder
tab: Testing
order: 35
audience: dev
---

Frontend test checklist for **Report Builder** (`report.bcos.dev`). Click through in the UI and mark each row Pass or Fail.

## Set up
Log in at **report.bcos.dev** — test accounts (all password `Passw0rd-d3v!`):

| Login | Role | Sees |
|-------|------|------|
| `bcos_a@bcos.dev` | Admin | All institutions |
| `msp_a@msp1.bcos.dev` | MSP admin | C1 + C2 only |
| `customer_a@customer1.bcos.dev` | Customer | C1 only |

Reports are **per-user** — each account sees only its own templates plus ones **Shared** with it. When you run a report, pick the simulator ATMs: **C1-ATM-001…** (and **C2-**/**C3-** for the other institutions).

## What to test

| # | Do this | ✅ Pass if |
|---|---------|-----------|
| 1 | As `msp_a`, open **Reports** | Page loads with tabs **Templates / Run History** and a **+ New Report** button |
| 2 | Click **+ New Report** → set a **Name**, **Data Source** = Incidents, **Format** = CSV, click a few **Columns**, then **Save** | Panel closes and the new report shows in the **My Reports** table |
| 3 | Open **+ New Report** again, fill the name but select **no columns** | **Save is blocked** — you can't save until at least one column (or Group By field) is picked |
| 4 | Edit a report and pick a **Group By** field | An **Aggregations** section appears (SUM/AVG/MIN/MAX) and the report row shows a **Grouped by …** badge |
| 5 | Click **▶ Run** on a report → choose **Custom**, set a date range, search and move **C1-ATM-001** into the selected list → **Run** | You land on **Run History** with a new run that moves **Pending → Running → Completed** |
| 6 | On a **Completed** run, click **Preview**, then **Download** | Preview opens a table of rows in-app; Download saves a CSV/JSON file |
| 7 | On a run, click **Delete** → **Confirm?** | The run disappears from Run History (no error/crash) |
| 8 | On one of your reports click **Share**, then log in as `bcos_a` and open **Reports** | The report appears under **Shared Reports** for `bcos_a` with a **▶ Run** button |
| 9 | As `customer_a`, click **▶ Run** on a report → **Custom** and open the ATM picker | Only **C1** devices are listed — no C2 or C3 ATMs |
| 10 | As `customer_a`, look at the **Templates** tab | You see **only your own** reports (and Shared ones) — not `msp_a`'s or `bcos_a`'s reports |

**Report a fail with:** the row #, which login you used, and what you actually saw.
