Skip to main content

Parse Allure BDD HTML test reports into Excel/HTML summaries and email them.

Project description

allure-report-mailer

Parse Allure BDD HTML test reports into Excel/HTML summaries and email them.

Three stages, each usable independently or chained via a pipeline command:

  1. parse — reads Allure HTML report artifacts (widgets/summary.json, widgets/environment.json, data/test-cases/*.json embedded in each report), aggregates by (ID, FileName), dedupes to one row per test ID keeping the most recent run, and writes test_runtime_data.xlsx + test_env.json.
  2. render — renders test_runtime_data.xlsx into a standalone, timestamped HTML report with client-side filter/sort, a color palette, and a configurable title.
  3. email — finds the most recently generated HTML report and emails a compact, Outlook-safe summary (stats table + environment table) via SMTP, with the full report attached as a .zip.

Install

pip install allure-report-mailer

Usage

# Run all three stages in sequence
allure-report-mailer pipeline /path/to/allure/artifacts --output-dir ./out

# Or run each stage independently
allure-report-mailer parse /path/to/allure/artifacts --output-dir ./out
allure-report-mailer render ./out/test_runtime_data.xlsx ./out --report-title "My Regression Report"
allure-report-mailer email --report-dir ./out

Run allure-report-mailer --help, or allure-report-mailer <subcommand> --help for full option lists.

Email configuration

Secrets are read only from environment variables (never CLI flags, never hardcoded):

Variable Required Default
EMAIL_USER / EMAIL_PASS Yes none
EMAIL_FROM No falls back to EMAIL_USER
EMAIL_TO Yes none (comma-separated)
EMAIL_CC No none (comma-separated)
SMTP_HOST No smtp.azurecomm.net
SMTP_PORT No 587
REPORT_DIR No current directory

The email's title, subject template, greeting/intro/closing copy, and environment-field labels can be overridden without touching source via --email-config path/to/config.json:

{
  "report_title": "Weekly Regression Report",
  "subject_template": "{report_title} - {date}",
  "email_body": {
    "greeting": "Hi Team,",
    "intro": "Please find below the test execution summary for the week of {date}."
  }
}

Only the keys you want to override need to be present — everything else falls back to the built-in defaults (see allure_report_mailer/config.py).

Development

pip install -e ".[dev]"
pytest --cov=allure_report_mailer --cov-report=term-missing

See SETUP.md for build/release steps.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

allure_report_mailer-0.1.2.tar.gz (41.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

allure_report_mailer-0.1.2-py3-none-any.whl (36.7 kB view details)

Uploaded Python 3

File details

Details for the file allure_report_mailer-0.1.2.tar.gz.

File metadata

  • Download URL: allure_report_mailer-0.1.2.tar.gz
  • Upload date:
  • Size: 41.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for allure_report_mailer-0.1.2.tar.gz
Algorithm Hash digest
SHA256 3287c3e9792908c8a3979f985b33438483ab18166bc6b099464863cbeed27b94
MD5 508dd6aca4233354b0c766918073d957
BLAKE2b-256 1b4421647fd059e0153453f703d22c2fda2de95cb68efe0326d4fdc9fe4770c9

See more details on using hashes here.

File details

Details for the file allure_report_mailer-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for allure_report_mailer-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 325c8d7927d659a229fffcb0a26ed2daa4c5abe7d47ce2cfe6a95a49dcd2699e
MD5 3d23c003ad92a0967547e88e80644b56
BLAKE2b-256 90a2568acfb184383f310435ce6f23dd9729f83dfc89fbface35d8b37d5aa0b5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page