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

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:

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 15-05-2026 14-23-41 Merv-Report/ json/merv-report.json html/merv-report.html html/merv-report-live.html 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).

Tip: Copy 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
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

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.

  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.

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.

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

Full Merv-Local documentation →