Metadata-Version: 2.4
Name: apmt-reports
Version: 0.1.2
Summary: A premium, feature-rich, and beautiful automated testing HTML reporter for pytest, python, and playwright.
License: MIT
Classifier: Framework :: Pytest
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Testing
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: pytest>=7.0.0
Requires-Dist: jinja2>=3.0.0

# ⚡ pytest-apmt-reporter

`pytest-apmt-reporter` is a premium, feature-rich, and visually stunning automated testing HTML reporter for **Python**, **Pytest**, and **Playwright**. It is designed as a modern, high-fidelity alternative to Allure and Robot Framework, providing responsive layouts, glowing glassmorphic dark-mode dashboards, interactive SVG charts, expandable execution step logs, failure tracebacks, and seamlessly embedded Playwright screenshots.

## ✨ Features

- **🔌 True Plug-and-Play (Auto-Detect):** By hooking directly into standard pytest entry points, the reporter is automatically active the moment you `pip install` it. No configuration changes required!
- **🌐 100% Offline-First (Self-Contained):** The final report compiles all layout, styles (CSS), logic (JS), and screenshots (base64 encoded PNGs) into a **single, standalone HTML file**. It requires absolutely zero Internet connection or CDNs to load, making it perfect for secure environments or CI/CD artifacts.
- **🎨 Premium Visual Dashboard:** Designed with premium glassmorphism card layouts, smooth transition animations, sleek dark mode (with a light theme toggle), and neon indicators for passed/failed tests.
- **📊 Interactive SVG Charts:** Includes clean, responsive circular progress indicators and data distributions drawn directly via SVG and animated with vanilla JS—no heavy charting libraries (like Chart.js) needed.
- **📸 Auto Playwright Failure screenshots:** If a test case utilizes a Playwright `page` fixture and fails, the reporter **automatically captures and embeds** a failure screenshot inside the report.
- **📝 Hierarchical Step Logging:** Allows defining nested execution steps using either standard decorators (`@apmt.step`) or context managers (`with apmt.step`), mirroring Allure and Robot Framework.
- **📎 Multi-format Attachments:** Programmatically attach raw logs, JSON blobs, HTML widgets, and custom screenshots to any step or stage.

---

## 🚀 Installation

You can easily install the reporter directly into your Python virtual environment from your project directory:

```bash
# Clone the repository and install in editable mode
pip install -e .
```

---

## 🛠️ Usage

Once installed, running pytest will automatically enable the reporter and generate a file named `report.html` in your working directory.

### Basic Commands

```bash
# Run pytest tests and generate the report with default parameters
pytest

# Specify a custom report name or output directory
pytest --apmt-html=outputs/custom_dashboard.html

# Provide a custom title for your report dashboard
pytest --apmt-title="E2E Portal Smoketests"
```

---

## 📝 Code API Examples

### 1. Step-by-Step Logging

Organize your test cases into nested, readable, and timed blocks:

```python
import pytest_apmt_reporter as apmt

# Using step decorator
@apmt.step("Authenticate credentials")
def login(username, password):
    ...

def test_user_purchase_flow():
    # Using step context manager
    with apmt.step("Initialize customer basket"):
        basket_id = 9988
        
    login("test_user", "password123")
```

### 2. Attaching Screenshots and Metadata

Enrich your reports with logs, JSON responses, or manual Playwright screenshots:

```python
import pytest_apmt_reporter as apmt

def test_payment_gateway_api():
    # Attach plain text logs
    apmt.attach("Connecting to stripe sandbox...", name="Stripe API Connection")
    
    # Attach JSON payload
    apmt.attach('{"id": "ch_3M4", "status": "succeeded"}', name="Stripe Response", attachment_type=apmt.AttachmentType.JSON)
    
def test_dashboard_visual(page):
    # Capture and attach a playwright page screenshot manually
    page.goto("https://admin.portal.local")
    apmt.attach_screenshot(page, name="Dashboard Main Panel")
```

### 3. Custom Dashboard Environment Stats

Display important execution parameters (like environment, server names, CI build IDs) directly on the metrics header:

```python
import pytest_apmt_reporter as apmt

def test_initialize():
    apmt.set_environment_info("Environment", "Staging-US-East")
    apmt.set_environment_info("Release Version", "v4.12.0-rc2")
```

---

## 📊 Try the Demo

Run the pre-configured demo test suite in the repository to see all features in action:

```bash
# Run the demo tests
pytest demo/test_playwright_demo.py --apmt-html=demo_report.html

# Open the beautiful dashboard!
# Windows (PowerShell):
Start-Process demo_report.html
# macOS/Linux:
open demo_report.html
```
