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.

You will learn
  • How to pick the right setup guide for your framework
  • What files Merv creates under merv.report.folder
  • Every merv.properties attribute 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:

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-reports/ index.html merv-index-data.json emailable-report.html # latest (when merv.emailable.html=true or after Download) 15-05-2026 14-23-41 Merv-Report/ json/merv-report.json html/merv-report.html html/merv-report-live.html emailable-report.html merv-report-offline.zip # created by suite Download screenshots/

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.
Cucumber-js peer dependency: The npm package 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
Tip: Run from the directory that contains 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/:

Use a local web server

Recommended (JavaScript / TypeScript): with 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.
Recommended (Java): download the 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:

  1. Install the Live Server extension (Extensions view → search Live Server).
  2. In the Explorer, open your report folder (for example merv-reports/).
  3. Right-click index.htmlOpen with Live Server (or click Go Live when that folder is the workspace root).
  4. The browser opens something like http://127.0.0.1:5500/merv-reports/index.html — bookmark that URL as your dashboard.
  5. From a suite card, open Live or Report; or navigate directly to {runFolder}/html/merv-report-live.html or merv-report.html under the same host.
Tip: While tests run, keep 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.
Merv-Logs: If you open the report with Live Server, Merv-Logs will not show logs (the logs API is only available with 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.

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:

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).

Open Share / Download guide →

Framework guides

Framework Merv-Local guide
Cucumber (Java) Merv-Local + Cucumber guide
Cucumber-js + Playwright Merv-Local + Cucumber-js guidedoctor or manual
TestNG Merv-Local + TestNG guide
JUnit 5 Merv-Local + JUnit 5 guide
Playwright (JS/TS) Merv-Local + Playwright guidedoctor or manual
Custom report (no framework) Custom report guidedoctor (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 guidemerv.log.server, combined Merv-Logs, npx merv show-logs
Merv-Tutor (JS/TS debugger) Merv-Tutor guidenpx 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:

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.

Merv-Server guide →

What’s next

Full Merv-Local documentation →