Metadata-Version: 2.4
Name: velvet-report
Version: 2.1.1
Summary: VelvetReport — Universal JUnit XML to self-contained offline HTML test reporter. Works with pytest, Playwright, Maven, Jest, Cypress, Robot Framework.
Home-page: https://github.com/velvetreport/velvet-report
Author: VelvetReport Contributors
Author-email: hello@velvetreport.dev
Keywords: velvet-report test-report junit pytest playwright html-report offline allure-alternative extent-report robot-framework ci-report test-results velvetreport
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: Pytest
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Software Development :: Quality Assurance
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: requires-python
Dynamic: summary

# VelvetReport — Universal Test Reporter

[![PyPI](https://img.shields.io/pypi/v/velvet-report?color=3b82f6&label=pip)](https://pypi.org/project/velvet-report/)
[![npm](https://img.shields.io/npm/v/velvet-report?color=22c55e&label=npm)](https://www.npmjs.com/package/velvet-report)
[![Maven Central](https://img.shields.io/maven-central/v/dev.velvetreport/velvet-report?color=f59e0b)](https://central.sonatype.com/artifact/dev.velvetreport/velvet-report)
[![License: MIT](https://img.shields.io/badge/license-MIT-a855f7)](LICENSE)
[![Tests](https://img.shields.io/badge/self--tests-25%2F25%20passing-22c55e)](scripts/build.js)

**One install. Any language. Beautiful reports. Zero server.**

VelvetReport turns any JUnit XML into a stunning, self-contained HTML dashboard — automatically after every test run. No upload. No internet required. 100% offline.

**New in 2.1 — zero-config pytest auto-capture.** `pip install velvet-report`, run `pytest`, and the report auto-fills environment, marks, setup/call/teardown timings, fixtures, steps, screenshots, and xdist worker distribution. Allure-quality detail, zero config, zero server.

---

## Install

```bash
pip install velvet-report                        # Python
npm install velvet-report --save-dev             # Node.js
# Java: dev.velvetreport:velvet-report:2.1.0 in pom.xml
```

---

## Quickstart

### Python (pytest) — zero config
Just install and run. The report appears at `reports/velvetreport.html` after every run:

```bash
pip install velvet-report
pytest
# → reports/velvetreport.html  ✓  (env, marks, phases, fixtures, screenshots auto-captured)
```

Optional `pytest.ini`:
```ini
[pytest]
vReport_Title               = My Project
vReport_output              = reports
vReport_history             = reports/.history
vReport_email_report_enable = false
```

Attach a screenshot or add a step from any test — see [`CUSTOMIZE.md`](core/packages/python/get_pytest_data/CUSTOMIZE.md):
```python
import velvet_report.get_pytest_data as vr

def test_checkout(page):
    with vr.step("open cart"):
        ...
    vr.attach("shot.png", name="checkout", mime="image/png")
```

### Node.js
```json
{ "scripts": { "posttest": "velvet-report generate junit.xml ./reports" } }
```
```bash
npm test
# → reports/velvetreport.html  ✓
```

### Java
```bash
mvn test
# → target/velvetreport/velvetreport.html  ✓
```

---

## Why VelvetReport?

| | VelvetReport | Allure | pytest-html |
|---|:---:|:---:|:---:|
| Works fully **offline** | ✅ | ⚠️ needs `allure serve` | ✅ |
| **Zero server / single file** | ✅ one `.html` | ❌ static site + server | ✅ |
| **Zero config** (pytest) | ✅ | ⚠️ decorators + CLI | ⚠️ flags |
| Any JUnit XML (any language) | ✅ | ⚠️ adapters | ❌ pytest only |
| History & flaky trends built in | ✅ | ⚠️ plugin | ❌ |
| Marks · fixtures · steps · screenshots · xdist workers | ✅ auto | ✅ manual | partial |

---

## Report Features

### Metrics & KPIs
- **12 KPI cards** — Total, Passed, Failed, Errors, Skipped, Rerun, Pass Rate, Avg Test Time, Total Duration, Stability Score (0–100), Flaky %, Failure Reproducibility — animated count-up on view
- **Risk badge** — STABLE / UNSTABLE / HIGH RISK
- Click any KPI card → modal listing the exact test cases behind it

### Test Details
- Expandable suite tree with per-test tabs: **Summary** (phases/fixtures/reason), **Stack Trace**, **Run History**, **Logs**, **Tags** (marks + steps), **Screenshots**, **Attachments**
- **Run history** — per-run status, duration, date/time, failure reason, screenshot — mapped correctly by file + test name
- **FLAKY badge** — auto-detected vs previous runs
- Live search + filter (All / Passed / Failed / Skipped / Flaky)

### Visual Analysis
- **Test Execution Timeline** — animated per-test bars
- **Mind Map** — Root → Suite → Describe → Test, clickable nodes open full detail
- **Failure Analysis** — auto-classified: Assertion / Timeout / Network / Script, with screenshot preview in modal
- **Result Heatmap**, **Individual Test History Cards**

### Charts
Pass/Fail donut · Duration histogram · Volume & Outcome Trends · Duration Trends · Duration by Spec File · Duration by Describe Block · **Test Distribution by Worker** (with total time) · Browser Distribution · Top 10 Slowest · Suite Health

### pytest auto-capture (new in 2.1)
- **Environment** — OS, Python, CI vars, git branch/commit, package versions
- **Marks & params** → tags panel (xdist-safe)
- **Phases** — setup / call / teardown timings + **fixture (before/after) costs**
- **Steps** — `velvet_report.step("...")`
- **Screenshots/videos** — explicit `attach()` or auto-discovered on failure
- **xdist** — per-worker distribution + total time
- Every field optional — absent data is hidden, report stays identical for XML-only users

### History & Export
- Auto-saved to `.history/` — up to 30 runs, full detail per test; commit to git for team trends
- Tags panel with multi-select filter
- Export HTML / CSV / JSON / **Email HTML** summary

---

## Configuration Reference (Python)

| Key | CLI flag | Default | Description |
|-----|----------|---------|-------------|
| `vReport_Title` | `--vReport-title` | XML filename | Report title |
| `vReport_output` | `--vReport-output` | `reports` | Output folder |
| `vReport_history` | `--vReport-history` | `reports/.history` | History folder |
| `vReport_xml` | `--vReport-xml` | auto | JUnit XML path |
| `vReport_open` | `--vReport-open` | `false` | Auto-open browser |
| `vReport_disable` | `--vReport-disable` | `false` | Skip generation |
| `vReport_capture` | — | `auto` | pytest auto-capture: `auto` \| `off` |
| `vReport_embed_max` | — | `2M` | Max attachment size to embed |
| `vReport_email` / `vReport_email_report_enable` | `--vReport-email` | `false` | Email-ready HTML summary |

### Node.js CLI
```
velvet-report generate <xml> [output] [--title text] [--history dir] [--open]
velvet-report clear-history [dir]
velvet-report info
```

---

## Architecture — One Change, All Platforms

```
core/src/template-parts/          ← Modular HTML / CSS / browser runtime
core/src/parser.js                ← JUnit XML parser
core/src/history.js               ← History + email
core/packages/python/get_pytest_data/  ← pytest auto-capture plugin
        ↓
node scripts/build.js             ← Compiles to all 3 platforms + 25 self-tests
        ↓
packages/pip → PyPI   packages/npm → npm   packages/maven → Maven Central
```

**Making changes:**
```bash
# Edit core/src/... (never hand-edit packages/*)
node scripts/build.js --verify    # rebuild all platforms + run 25 self-tests
```

Contributing? See [CONTRIBUTING.md](CONTRIBUTING.md) — small files, `FIX:` headers, easy to extend.

---

## Supported Frameworks

pytest · Playwright · Robot Framework · Jest · Cypress · Mocha · JUnit 5 · TestNG · Maven Surefire · Gradle · RSpec · PHPUnit · gotestsum · xUnit · NUnit · and any tool that outputs JUnit XML.

---

## License

MIT © VelvetReport Contributors

---

*Keywords: junit xml report generator, html test report, pytest html report, pytest allure alternative, playwright test report, jest html reporter, cypress report, offline html test report, self-contained test report, CI test dashboard, test history tracking, flaky test detection, xdist report, python test report, junit 5 report, maven surefire report*
