Merv-Documentation
Introduction
Merv-Local turns your automated test runs into rich HTML and JSON reports on your machine —
no central server required. Connect your runner (Cucumber, TestNG, JUnit 5, Playwright, …) once; open
index.html to browse runs, KPIs, and consolidated testcase history.
- How to pick the right setup guide for your framework
- What files Merv creates under
merv.report.folder - Every
merv.propertiesattribute for Merv-Local - How to open the dashboard with VS Code Live Server, IntelliJ, or another local web server
Choose your framework
Select your test stack below — you will be taken to the focused integration guide when both fields are set.
Documentation picker
Choose a framework to open its Merv-Local guide.
What is Merv-Local?
Each test run writes a timestamped folder under your configured report root. Inside that folder,
json/merv-report.json is the source of truth for pass/fail counts, steps, tags, and
screenshots. The client also generates:
index.htmlat the report root — suite grid, execution chart, consolidated views, KPIshtml/merv-report.html— final suite report for one runhtml/merv-report-live.html— live suite view while tests are running
Configure runs with merv.properties (see below), then open the dashboard under
merv.report.folder.
What’s on disk
Typical layout when merv.report.folder=./merv-reports/:
merv.properties
Merv reads merv.properties from your project root — the directory
you run tests from (where pom.xml or package.json usually lives). Java runners load it
at startup; Playwright resolves it from process.cwd() (or an ancestor folder).
merv-client/src/main/resources/merv.properties.example from the Java client repo, then keep only the
keys you need for Merv-Local.
Merv-Local properties
Set merv.local=true for on-disk HTML and JSON reports. On the Java client, omitting
merv.local also selects local mode; set it explicitly so behaviour is clear.
| Property | Required | Description |
|---|---|---|
merv.local |
Yes |
true — write reports under merv.report.folder (no MERV REST API
for suite/case storage). false — Merv-Server mode (see
Merv-Server).
|
merv.report.folder |
Yes (local) |
Root directory for all runs. Each execution creates a timestamped subfolder (for example
15-05-2026 14-23-41 Merv-Report/). Relative paths resolve from the project root. If omitted,
Java defaults to reports/ under the project root.
|
merv.regression_suite |
Recommended |
Suite title on dashboard cards, suite HTML, and in json/merv-report.json
(testSuite.title). Default on Java: Test Execution Report.
|
merv.execution.parallel |
Recommended |
true — parallel threads may share one suite folder (parallel Cucumber/TestNG).
false — one suite run per execution (typical sequential runs). Must be
true or false (case-insensitive).
|
merv.screenshot |
Optional |
When on, true, yes, or 1, Merv captures screenshots from
your bound automation driver (WebDriver or Playwright Page) after steps. Java:
call MervCucumberHandler.setAutomationToolObject(...) (or TestNG/JUnit equivalent) in hooks.
Legacy alias: screenshot=on.
|
merv.sprint |
Optional | Sprint or release label stored with the suite (shown in metadata when present). |
merv.reports.delete.port |
Optional |
TCP port for the optional localhost delete API (ReportsDeleteServer, default
9191). When the server is running, the dashboard Delete control on suite cards
can remove run folders from disk. Binds to 127.0.0.1 only.
|
Playwright-only (JavaScript / TypeScript)
| Property | Description |
|---|---|
merv.debug / debug |
When true, include hooks, fixtures, and all test.step categories in the report.
When false or omitted, only Playwright API and expect steps are listed (plus types from
merv.report.extra_step_types).
|
merv.report.extra_step_types |
Comma- or semicolon-separated step type names (for example VALIDATION_STEP,INFO,DATA_STEP) to
show when debug is off. Alias: merv.extra_step_types.
|
merv.plugin_assertion_soft |
Record failed plugin validations without failing the Playwright test. |
Sample merv.properties (Merv-Local)
Minimal file for Cucumber, TestNG, JUnit 5, or Playwright with on-disk reports:
# --- Merv-Local (on-disk reports) ---
merv.local=true
# Where index.html and run folders are written
merv.report.folder=./merv-reports/
# Title on dashboard cards and suite reports
merv.regression_suite=My Regression Suite
# true if parallel threads share one suite folder
merv.execution.parallel=false
# Optional: driver screenshots (bind WebDriver/Page in hooks)
merv.screenshot=on
# Optional: sprint label in suite metadata
# merv.sprint=Sprint 12
# Optional: enable Delete on dashboard (start ReportsDeleteServer on this port)
# merv.reports.delete.port=9191
Place this file at the project root, wire your framework plugin or reporter, run tests, then open the dashboard (see Open the Merv dashboard).
Quick start
Every Merv-Local integration shares the same configuration file at the project root.
1. Add merv.properties
Use the sample Merv-Local file above.
2. Wire your test framework
Register the Merv plugin or reporter for your runner (Cucumber plugin, TestNG listener, JUnit extension, etc.). See the framework guides table below.
Playwright — register the reporter
In playwright.config.js or playwright.config.ts, add Merv using the
merv-client/playwright-reporter subpath (not import from root
merv-client in config):
import { defineConfig } from '@playwright/test';
export default defineConfig({
reporter: [
['list'],
['merv-client/playwright-reporter', {}],
],
});
Details: Playwright guide — Register the reporter.
3. Run tests
# Java (Maven) — example
mvn test
# Playwright — example
npx playwright test
merv.properties so the client can find it.
Open the Merv dashboard
After tests run, the Merv dashboard is index.html under your configured report root.
Open it through a local web server so the browser uses http://localhost:… — not
file:// from double-clicking the file in Finder or Explorer.
Report paths
Given merv.report.folder=./merv-reports/:
-
merv-reports/index.html— main dashboard (suite grid, KPI charts, consolidated views, execution chart, tag search) -
merv-reports/merv-index-data.json— polled by the live dashboard while runs are in progress -
{runFolder}/html/merv-report.html— final suite report for one run (linked from each suite card) -
{runFolder}/html/merv-report-live.html— live suite view during the run (pollsjson/merv-report.json) -
{runFolder}/json/merv-report.json— source of truth for counts, steps, tags, and screenshots
Use a local web server
Merv-Local pages load JSON, charts, and screenshots with fetch. Browsers often block those requests
on file:// URLs, so the dashboard may look empty or show console errors. Serve the report folder over
HTTP instead.
- Install the Live Server extension (Extensions view → search Live Server).
-
In the Explorer, open your report folder (for example
merv-reports/). -
Right-click
index.html→ Open with Live Server (or click Go Live when that folder is the workspace root). -
The browser opens something like
http://127.0.0.1:5500/merv-reports/index.html— bookmark that URL as your dashboard. -
From a suite card, open Live or Report; or navigate directly to
{runFolder}/html/merv-report-live.htmlormerv-report.htmlunder the same host.
merv-report-live.html open on Live Server. Merv
suppresses Live Server’s full-page reload when JSON changes; the live page and dashboard update in place.
-
In the Project tool window, locate
merv-reports/index.html(or yourmerv.report.folderpath). -
Right-click
index.html→ Open in Browser (or Preview in some editions). IntelliJ serves the file from its built-in web server (oftenhttp://localhost:63342/…). -
Use that browser URL for the dashboard. Open suite reports the same way: right-click
merv-report.htmlormerv-report-live.htmlunder{runFolder}/html/. -
If the page is blank or network requests fail, confirm the address bar shows
http://…, notfile://…. Use Tools → Web Browsers to pick Chrome, Edge, or Firefox if needed.
The same steps apply in WebStorm and other JetBrains IDEs with the embedded static server.
Other editors and CI
Any static server works, for example npx serve merv-reports or
python3 -m http.server --directory merv-reports, then open
http://localhost:…/index.html. In CI, publish merv-reports as an artifact and serve it
from your pipeline report viewer or object storage with HTTP access.
Dashboard views
On index.html you can:
- Test Suites — one card per run; links to live or final suite HTML; optional delete when the delete server is enabled
- Consolidated Report — testcase history and failure reasons across runs
- KPIs — pass/fail trends, flaky tests, duration charts (filter by tags where supported)
- Execution chart — pass/fail activity over a selected time range
- Tag search — filter suite cards and charts by Cucumber/Playwright tags
Live suite report
While a run is in progress, open {runFolder}/html/merv-report-live.html (from the dashboard
Live link or your IDE browser). The page polls json/merv-report.json and refreshes
steps and status without a full page reload. When the run finishes, use merv-report.html for the final
suite view or return to index.html to compare runs.
Framework guides
| Framework | Merv-Local guide |
|---|---|
| Cucumber (Java) | Merv-Local + Cucumber guide |
| TestNG | Merv-Local + TestNG guide |
| JUnit 5 | Merv-Local + JUnit 5 guide |
| Playwright (JS/TS) | Merv-Local + Playwright guide |
| JUnit 4, Cypress, NUnit | Guide coming soon — use Forum or full docs |
Merv-Server (optional)
Merv-Local does not require the MERV API or React UI. If you also use the central Merv-Server (suites, cases, and steps in a database with a web UI), see API documentation for Docker, login, JWT, and REST endpoints.
What’s next
- Merv-Local documentation — dashboard views, JSON contract, KPI details
- Playwright + merv-client — npm install, Option A imports, plugin steps
- API documentation — server mode (optional)
- Forum / defects — questions and feature requests
MERV