Repository navigation
v0.1.0 — first Maven Central release
First release of reportingLabs for Java on Maven Central 🎉
Same self-contained HTML report as the Node.js side — one file, no server, no login, no expiry. A Java team's report is byte-for-byte the report a JavaScript team opens.
Artifacts (all on Maven Central under dev.reportinglabs)
| Artifact | Purpose |
|---|---|
reporting-labs-core |
Engine, annotations and Rl.* runtime helpers. Framework-agnostic. |
reporting-labs-junit5 |
JUnit 5 Extension, auto-registered via ServiceLoader. |
reporting-labs-testng |
TestNG listener, auto-registered via ServiceLoader. |
reporting-labs-playwright |
One-line auto-capture for Playwright for Java. |
Install
JUnit 5
<dependency>
<groupId>dev.reportinglabs</groupId>
<artifactId>reporting-labs-junit5</artifactId>
<version>0.1.0</version>
<scope>test</scope>
</dependency>Add src/test/resources/junit-platform.properties:
junit.jupiter.extensions.autodetection.enabled=trueRun mvn test. Open reporting-labs/index.html.
TestNG
<dependency>
<groupId>dev.reportinglabs</groupId>
<artifactId>reporting-labs-testng</artifactId>
<version>0.1.0</version>
<scope>test</scope>
</dependency>Auto-registers via ServiceLoader — no <listeners> block needed in testng.xml.
A first tagged test
import dev.reportinglabs.core.Rl;
import dev.reportinglabs.core.annotations.*;
import org.junit.jupiter.api.Test;
import java.util.Map;
@Owner("naveen") @Feature("checkout")
class CheckoutTest {
@Test @Priority("P0") @Severity("blocker") @Story("SHOP-231")
void places_an_order_with_a_saved_card() {
Rl.testData("Cart snapshot", Map.of(
"user", "demo@shop.io", "card", "4242…", "total", 99.90));
Rl.log("opening checkout");
// your existing Selenium / Playwright / plain Java code — no wrappers
}
}Playwright for Java — auto-capture
import dev.reportinglabs.playwright.RlPlaywright;
import com.microsoft.playwright.*;
@BeforeEach
void setup() {
playwright = Playwright.create();
browser = playwright.chromium().launch();
page = browser.newPage();
RlPlaywright.attach(page); // <-- one line does everything
}That one line gives you:
- Every request / response recorded as an API call in the report
- A Playwright trace started and attached on test finish
- A full-page screenshot on failure
What's inside
- 10 annotations —
@Priority,@Severity,@Owner,@Feature,@Story,@Epic,@Issue,@Component,@Team,@Meta Rl.*runtime helpers —Rl.log(),Rl.testData(),Rl.api(),Rl.attach(),Rl.meta()- Sensitive-key masking —
password,token,authorization,cvv,apiKey, etc. auto-masked - History + trend chart —
reporting-labs.history.jsonpowers the pass-rate trend - Failure clusters — thirty red tests that share one error read as one problem
- Same six tabs as the Node.js reporter — Overview, Tests, Failures, API, Graphs, Timeline
- Works with anything — Selenium, Playwright, REST Assured, Karate, plain code — same
Rl.*surface
Docs
- Get started: https://reportinglabs.dev/get-started/java
- Report tour: https://reportinglabs.dev/features/report-tour
- Runnable examples:
examples/
Requirements
- JDK 11+
- Maven 3.9+ or Gradle 8+
- JUnit Jupiter 5.10+ (for
reporting-labs-junit5) - TestNG 7.10+ (for
reporting-labs-testng) - Playwright for Java 1.47+ (for
reporting-labs-playwright)