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.1.tar.gz (40.9 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.1-py3-none-any.whl (36.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: allure_report_mailer-0.1.1.tar.gz
  • Upload date:
  • Size: 40.9 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.1.tar.gz
Algorithm Hash digest
SHA256 b2b570be6ac24463ecfa12f44d8b7b79f4f86f42a71550ddffce836132f58f19
MD5 82437545c7ba3cc61cbfcd739e876075
BLAKE2b-256 f3881272c37d0306064d42cc2c6ea653896b00acb8d25a73bddb7c73da27cb3d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for allure_report_mailer-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 026607cf56856c6293404091c90756c431122cbe70af51069a6ac9243df5feda
MD5 cb8c5d28a54e65ebb7134e9500bdb7f5
BLAKE2b-256 f53c9b48620a4758bb94565f10aa7e00032e1e2167d2b6357094631c3776e473

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