Test results reporting for Snapline

Snapline Hub is an optional web application that stores and visualizes TestRunReport data from Snapline test runs. Use it when you want a centralized dashboard for pass/fail history, suite drill-down, and structured diff inspection.

Node.js 18+ SQLite storage REST API React dashboard MIT License
Part of the Snapline ecosystem

Snapline Hub complements Snapline for Node.js and Snapline for Python. It is not bundled into the framework packages — install and run it only when you need centralized reporting.

What Snapline Hub does

Snapline test runners produce structured results: suite names, step outcomes, and on failure a diff object with path, actual, and expected. By default, Snapline can write these to local JSON, HTML, or text files. Snapline Hub adds:

Dashboard

Total runs, suites executed, pass rate, and a table of recent test runs with framework labels.

Run history

Search, quick filters (Node/Python/failed/date), active filter chips, and advanced project/tag filters.

Diff viewer

Failed steps show the Snapline diff block: field path, actual value, expected value, and message.

Framework-agnostic

Accepts the same TestRunReport JSON schema from Node.js (@vaagatech/snapline-core) and Python (snapline-core).

When to use it

ScenarioRecommendation
Local development, single developer Optional — console output and local HTML reports may be enough
Team sharing test history across runs Run Hub on a shared server; push from CI after each test job
Debugging reconciliation failures Use Hub to compare diffs across runs without digging through log files
Demo / QA environment Push full integration demo results with SNAPLINE_HUB_URL
Production CI only needs pass/fail Skip Hub — use process.exitCode or pytest exit codes
Hub is optional. Snapline works fully without Snapline Hub. File-based reports (writeTestReport / write_test_report) and console output are always available. Hub is an add-on for teams that want a shared UI.

How data flows

Snapline test runner (Node.js or Python) │ ├─ testSuite() / runApiFixtureCases() / demo runner │ └── TestSuiteResult[] (per-suite pass/fail + step results) │ ├─ buildReport() / build_report() │ └── TestRunReport { generatedAt, framework, summary, suites } │ └─ pushTestReportToHub() / push_test_report_to_hub() OR manual upload │ │ POST /api/reports (JSON body) ▼ Snapline Hub ├─ SQLite (persistent storage) └─ React UI (dashboard, run detail, diff viewer)

Quick start

git clone https://github.com/vaagatech/snapline-hub.git
cd snapline-hub
npm install
npm run dev

Open http://localhost:5173 for the UI (development) or http://localhost:3847 after npm run build && npm start (production).

Push a report from Snapline:

# Node.js
SNAPLINE_HUB_URL=http://localhost:3847 npm run demo

# Python
SNAPLINE_HUB_URL=http://localhost:3847 uv run demo

Documentation map

PageContents
InstallationPrerequisites, clone, dev vs production, environment variables, deployment options
Getting Started5-minute walkthrough: start Hub, push first report, view in UI
User GuideDashboard, run history, upload, run detail, diff inspection, labels
Snapline IntegrationNode.js and Python push APIs, env vars, CLI flags, CI examples
ArchitectureComponents, data model, storage, security considerations
API ReferenceREST endpoints, request/response schemas, curl examples
Next steps: Read Installation for setup options, then Getting Started to push your first report. If you use Snapline already, jump to Snapline Integration.