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
- How to Share on LAN, Download offline zip / emailable HTML, and use
merv.emailable.html - How Merv-Logs, Centralized logs, and Merv-Tutor fit into local workflows
Choose your framework
Pick Merv-Local or Merv-Server, then click your framework to open its guide.
Documentation picker
On-disk HTML reports — click a framework to open its integration 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-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 merv-reports/ under the project root when omitted.
|
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.emailable.html |
Optional |
When true, write interactive emailable-report.html at suite finish
(run folder + report root). Doctor defaults this to false. Suite
Download always regenerates it. Full guide:
Share, Download & emailable.
|
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). Ignored when merv.step.allowed is set.
|
merv.step.allowed |
Optional allowlist of high-level step categories in the Playwright / JS report.
Comma- or semicolon-separated:
info (informative / data / custom plugin rows),
hook (before/after hooks & fixtures),
assertion (Playwright expect, Chai, and plugin validations),
action (UI/API actions such as click, fill, goto).
Categories not listed are omitted. When set, this overrides
merv.debug and merv.report.extra_step_types.
Example: merv.step.allowed=info,assertion,action.
|
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. Ignored when
merv.step.allowed is set.
|
merv.plugin_assertion_soft |
Record failed plugin validations without failing the Playwright test. |
merv.chai |
Playwright / Cucumber-js only. When chai is installed, record Chai assertions as MERV
ASSERTION steps (default true). Playwright built-in
expect still appears as EXPECT — both can show in the same testcase.
Set merv.chai=false to disable. Details:
Playwright JS guide — Chai assertions.
|
merv-client declares an optional peer of
@cucumber/cucumber ≥ 7.0.0 (and @playwright/test ≥ 1.40 when using Playwright).
Projects on Cucumber 7–10 can install without forcing Cucumber 11.
If npm reports ERESOLVE with an older published package, upgrade merv-client to
4.0.22+ or install with npm install --legacy-peer-deps.
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
# Write interactive emailable-report.html when the suite finishes
merv.emailable.html=false
# Playwright / JS only — optional step category allowlist (info, hook, assertion, action)
# merv.step.allowed=info,assertion,action
# Playwright / Cucumber-js — record Chai expect/assert as ASSERTION (default on; needs chai installed)
# merv.chai=true
# 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
Download sample merv.properties
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-client installed, run
merv show-report from the project root (the folder that contains merv.properties).
It starts a built-in server on http://127.0.0.1:6174/, opens the browser, and needs no Live Server
extension. Stop with Ctrl+C.
merv-client CLI (Java 17+). Run
merv-client show-report or merv-client show-logs from your Maven project root.
If lib/merv-client.jar is missing, the launcher auto-downloads it from
merv.online/downloads.
Commands to open the report
# From the project root (where merv.properties lives)
npx merv show-report
# Same command via the package binary / npm script (doctor often adds this)
npx merv-client show-report
npm run show-report
# Point at a specific report folder
npx merv show-report ./merv-reports
npx merv show-report /absolute/path/to/merv-reports
# Options
npx merv show-report --port 6174
npx merv show-report --host 127.0.0.1
npx merv show-report --host 0.0.0.0
npx merv show-report --no-open
npx merv show-report ./merv-reports --port 8080 --no-open
Java CLI (merv-client)
merv-client doctor setup
merv-client show-report
merv-client show-logs --host 0.0.0.0
Download: merv-client-download.html ·
JAR: /downloads/merv-client.jar
Use --host 0.0.0.0 when you need suite Share on your LAN
(see Share, Download & emailable).
After the server starts, open these URLs:
http://127.0.0.1:6174/— dashboard (index.html)http://127.0.0.1:6174/merv-logs.html— Merv-Logs live console (see the Merv-Logs guide; or use the Merv-Logs link in the sidebar)http://127.0.0.1:6174/merv-tutor.html— Merv-Tutor step debugger (prefernpx merv-tutor open; see the Merv-Tutor guide)- Suite cards on the dashboard link to
{runFolder}/html/merv-report.htmland live reports
- 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.
npx merv show-report). Use npx merv show-report and open
http://127.0.0.1:6174/merv-logs.html (or the Merv-Logs sidebar link).
Full setup: Merv-Logs guide.
-
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.
Share, Download & emailable
Suite reports include Share and Download next to the suite title when you open
them over HTTP (not file://). Share copies a LAN link while the report server is running.
Download saves an interactive emailable-report.html and a full offline zip.
Share
LAN URL via npx merv show-report --host 0.0.0.0 (same network, port open).
Download
Emailable HTML + merv-report-offline.zip with a size confirmation popup.
Emailable on finish
Set merv.emailable.html=true — doctor adds the key (default false).
Full guide
Framework guides
| Framework | Merv-Local guide |
|---|---|
| Cucumber (Java) | Merv-Local + Cucumber guide |
| Cucumber-js + Playwright | Merv-Local + Cucumber-js guide — doctor or manual |
| TestNG | Merv-Local + TestNG guide |
| JUnit 5 | Merv-Local + JUnit 5 guide |
| Playwright (JS/TS) | Merv-Local + Playwright guide — doctor or manual |
| Custom report (no framework) | Custom report guide — doctor (JS/TS) or hand-built suite / steps |
Merv-Logs (MervLogger) |
Merv-Logs guide — Java + JS/TS live console, NDJSON under log/ |
| Centralized logs | Centralized logs guide — merv.log.server, combined Merv-Logs, npx merv show-logs |
| Merv-Tutor (JS/TS debugger) | Merv-Tutor guide — npx merv-tutor, step debugger UI |
| Cypress, NUnit, Pytest | Guide coming soon — use Forum or full docs |
Merv-Logs, Centralized logs & Merv-Tutor
Beyond framework reporters, MERV includes logging and teaching tools:
-
Merv-Logs —
MervLoggerandimport { console } from 'merv-client'on Java (merv-client-api) and JS/TS (merv-client). Open withnpx merv show-logs. Doctor:setup-log,set console/unset console. -
Centralized logs —
set
merv.log.serverso several projects forward into one shared Merv-Logs page (local write first, async ingest). -
Merv-Tutor —
run
npx merv-tutor script.js, thennpx merv-tutor openfor a line-by-line debugger with variables and console output (merv-tutor/latest.json+merv-tutor.html) — JavaScript / TypeScript only.
Install: Maven merv-client-api (Java logs); npm install merv-client (JS logs);
add merv-tutor for the tutor CLI. Merv-Logs file sink defaults to on
(merv.logger.file=true).
Merv-Server (send reports to the cloud)
If you want results in the MERV web app instead of local HTML folders, use
Merv-Server: create an account, workspace, copy a Hierarchy ID, create an API key, and set
merv.local=false in merv.properties. Full walkthrough:
Merv-Server user guide.
What’s next
- Download merv-client (Java CLI) — show-report, doctor, auto-download JAR
- Share, Download & emailable — LAN share, offline zip,
merv.emailable.html - Merv-Local documentation — dashboard views, JSON contract, KPI details
- TestNG + merv-client — listener, parallel suite, step screenshots
- JUnit 5 + merv-client — extension, MervReporter, step screenshots
- Cucumber-js + merv-client — doctor setup or manual formatter / hooks
- Playwright + merv-client — doctor setup or manual reporter / Option A
- Custom report — doctor setup or hand-built suites (Java / JS / TS)
- Merv-Logs —
MervLogger,doctor setup-log,set console - Centralized logs — combine several projects on one Merv-Logs page
- Merv-Tutor — step debugger for small JS/TS files
- API documentation — server mode (optional)
- Forum / defects — questions and feature requests
MERV