pytest-html-plus 0.5.0__tar.gz → 0.5.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,20 +1,27 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pytest-html-plus
3
- Version: 0.5.0
3
+ Version: 0.5.2
4
4
  Summary: Generate Actionable, automatic screenshots, unified Mobile friendly Pytest HTML report in less than 3 seconds — no hooks, merge plugins, no config, xdist-ready.
5
5
  License: MIT
6
- Keywords: pytest,pytest-html-plus,pytest-plugin,html-test-report,beautiful-test-report,shareable-test-results,test-report,test-results,unit-test-report,functional-test-report,test-summary,reporting,python-testing,automated-testing,test-runner,report-generator,continuous-integration,ci-cd,github-actions,jenkins,pytest-html,pytest-report
6
+ Keywords: pytest,pytest-plugin,html-report,test-report,screenshot,mobile-report,xdist,allure-alternative,playwright,selenium
7
7
  Author: reporterplus
8
- Requires-Python: >=3.9,<4.0
8
+ Maintainer: reporterplus
9
+ Requires-Python: >=3.10,<4.0
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Framework :: Pytest
12
+ Classifier: Intended Audience :: Developers
9
13
  Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: OS Independent
10
15
  Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.9
12
16
  Classifier: Programming Language :: Python :: 3.10
13
17
  Classifier: Programming Language :: Python :: 3.11
14
18
  Classifier: Programming Language :: Python :: 3.12
15
19
  Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Software Development :: Quality Assurance
21
+ Classifier: Topic :: Software Development :: Testing
16
22
  Requires-Dist: keyring (>=25.6.0,<26.0.0)
17
23
  Requires-Dist: yagmail (>=0.15.293,<0.16.0)
24
+ Project-URL: Documentation, https://pytest-html-plus.readthedocs.io
18
25
  Project-URL: Homepage, https://github.com/reporterplus/pytest-html-plus
19
26
  Project-URL: Source, https://github.com/reporterplus/pytest-html-plus
20
27
  Project-URL: Tracker, https://github.com/reporterplus/pytest-html-plus/issues
@@ -48,7 +55,7 @@ If you don’t want the burden of installing pytest-html-plus manually and your
48
55
 
49
56
  ## Pytest HTML Plus VSCode
50
57
 
51
- [![VS Code Marketplace](https://img.shields.io/visual-studio-marketplace/v/reporterplus.pytest-html-plus-vscode)]
58
+ [![VS Code Marketplace](https://img.shields.io/visual-studio-marketplace/v/reporterplus.pytest-html-plus-vscode?label=VS%20Code%20Marketplace&logo=visualstudiocode&logoColor=white&color=0078d7)](https://marketplace.visualstudio.com/items?itemName=reporterplus.pytest-html-plus-vscode)
52
59
  [![Installs](https://img.shields.io/visual-studio-marketplace/i/reporterplus.pytest-html-plus-vscode)]
53
60
  [![Docs](https://img.shields.io/badge/docs-online-blue)](https://pytest-html-plus.readthedocs.io/en/main/extensions/vscode/usage.html)
54
61
 
@@ -61,9 +68,13 @@ Export a fully merged JUnit XML report effortlessly — no external tools or plu
61
68
  ✔ Works out-of-the-box with your test management tools (like TestRail, XRay, Zephyr)
62
69
  ✔ Just one flag. No extra lines of code. Total traceability.
63
70
 
64
-
65
71
  ![ScreenRecording2025-07-06at11 38 21PM-ezgif com-video-to-gif-converter](https://github.com/user-attachments/assets/02da5cc9-7ef5-4a3a-a475-88907964a9c6)
66
72
 
73
+ #### 🔄 Stop Guessing — See What’s Breaking Your Flaky Tests
74
+ Instantly see how your tests behave across retries — from failure to recovery. Spot patterns like cache issues, race conditions, and random crashes without the guesswork.
75
+
76
+ ![ezgif com-video-to-gif-converter](https://github.com/user-attachments/assets/1f7e0cd8-d2f9-47fd-8909-6f12adf8a800)
77
+
67
78
  #### 🏷️ Tag your tests on the fly!
68
79
  With dynamic markers, you can assign tags like `api`, `critical`, or `slow` — or any custom label — at runtime using standard `pytest.mark.*`.
69
80
  No need for custom marker definitions. Perfect for smarter filtering, reporting, and analysis.
@@ -82,7 +93,6 @@ No need for custom marker definitions. Perfect for smarter filtering, reporting,
82
93
 
83
94
  ![ScreenRecording2025-06-29at1 06 02AM-ezgif com-video-to-gif-converter](https://github.com/user-attachments/assets/af40622f-f548-44a5-982b-344c74a65e13)
84
95
 
85
-
86
96
  #### 🔍 Universal Test Search + Smart Link Navigation
87
97
 
88
98
  Whether you're trying to trace coverage or track unlinked test cases — this search has your back!
@@ -97,10 +107,6 @@ Just start typing, and the dashboard will instantly filter tests by:
97
107
 
98
108
  ![ScreenRecording2025-06-21at3 10 06PM-ezgif com-video-to-gif-converter](https://github.com/user-attachments/assets/f81c9a81-f98d-4151-ad7a-c1184cd199eb)
99
109
 
100
- #### 🔄 Flaky Test Detection: Automatically flags flaky tests so you can spot and fix inconsistent failures quickly.
101
-
102
- ![ScreenRecording2025-06-21at2 37 31PM-ezgif com-video-to-gif-converter](https://github.com/user-attachments/assets/90f694bf-189c-45e1-8e1d-7acd2a975f91)
103
-
104
110
  #### 📸 Screenshot Support: View screenshots directly in the report to understand failures faster.
105
111
 
106
112
  #### 📧 Email Test Reports: Send your reports via email effortlessly using SendGrid integration.
@@ -26,7 +26,7 @@ If you don’t want the burden of installing pytest-html-plus manually and your
26
26
 
27
27
  ## Pytest HTML Plus VSCode
28
28
 
29
- [![VS Code Marketplace](https://img.shields.io/visual-studio-marketplace/v/reporterplus.pytest-html-plus-vscode)]
29
+ [![VS Code Marketplace](https://img.shields.io/visual-studio-marketplace/v/reporterplus.pytest-html-plus-vscode?label=VS%20Code%20Marketplace&logo=visualstudiocode&logoColor=white&color=0078d7)](https://marketplace.visualstudio.com/items?itemName=reporterplus.pytest-html-plus-vscode)
30
30
  [![Installs](https://img.shields.io/visual-studio-marketplace/i/reporterplus.pytest-html-plus-vscode)]
31
31
  [![Docs](https://img.shields.io/badge/docs-online-blue)](https://pytest-html-plus.readthedocs.io/en/main/extensions/vscode/usage.html)
32
32
 
@@ -39,9 +39,13 @@ Export a fully merged JUnit XML report effortlessly — no external tools or plu
39
39
  ✔ Works out-of-the-box with your test management tools (like TestRail, XRay, Zephyr)
40
40
  ✔ Just one flag. No extra lines of code. Total traceability.
41
41
 
42
-
43
42
  ![ScreenRecording2025-07-06at11 38 21PM-ezgif com-video-to-gif-converter](https://github.com/user-attachments/assets/02da5cc9-7ef5-4a3a-a475-88907964a9c6)
44
43
 
44
+ #### 🔄 Stop Guessing — See What’s Breaking Your Flaky Tests
45
+ Instantly see how your tests behave across retries — from failure to recovery. Spot patterns like cache issues, race conditions, and random crashes without the guesswork.
46
+
47
+ ![ezgif com-video-to-gif-converter](https://github.com/user-attachments/assets/1f7e0cd8-d2f9-47fd-8909-6f12adf8a800)
48
+
45
49
  #### 🏷️ Tag your tests on the fly!
46
50
  With dynamic markers, you can assign tags like `api`, `critical`, or `slow` — or any custom label — at runtime using standard `pytest.mark.*`.
47
51
  No need for custom marker definitions. Perfect for smarter filtering, reporting, and analysis.
@@ -60,7 +64,6 @@ No need for custom marker definitions. Perfect for smarter filtering, reporting,
60
64
 
61
65
  ![ScreenRecording2025-06-29at1 06 02AM-ezgif com-video-to-gif-converter](https://github.com/user-attachments/assets/af40622f-f548-44a5-982b-344c74a65e13)
62
66
 
63
-
64
67
  #### 🔍 Universal Test Search + Smart Link Navigation
65
68
 
66
69
  Whether you're trying to trace coverage or track unlinked test cases — this search has your back!
@@ -75,10 +78,6 @@ Just start typing, and the dashboard will instantly filter tests by:
75
78
 
76
79
  ![ScreenRecording2025-06-21at3 10 06PM-ezgif com-video-to-gif-converter](https://github.com/user-attachments/assets/f81c9a81-f98d-4151-ad7a-c1184cd199eb)
77
80
 
78
- #### 🔄 Flaky Test Detection: Automatically flags flaky tests so you can spot and fix inconsistent failures quickly.
79
-
80
- ![ScreenRecording2025-06-21at2 37 31PM-ezgif com-video-to-gif-converter](https://github.com/user-attachments/assets/90f694bf-189c-45e1-8e1d-7acd2a975f91)
81
-
82
81
  #### 📸 Screenshot Support: View screenshots directly in the report to understand failures faster.
83
82
 
84
83
  #### 📧 Email Test Reports: Send your reports via email effortlessly using SendGrid integration.
@@ -0,0 +1,87 @@
1
+ [tool.poetry]
2
+ name = "pytest-html-plus"
3
+ version = "0.5.2"
4
+ description = "Generate Actionable, automatic screenshots, unified Mobile friendly Pytest HTML report in less than 3 seconds — no hooks, merge plugins, no config, xdist-ready."
5
+ readme = "README.md"
6
+ authors = ["reporterplus"]
7
+ license = "MIT"
8
+ packages = [{ include = "pytest_html_plus" }]
9
+ maintainers = ["reporterplus"]
10
+ classifiers = [
11
+ "Framework :: Pytest",
12
+ "Programming Language :: Python :: 3",
13
+ "Programming Language :: Python :: 3.10",
14
+ "Programming Language :: Python :: 3.11",
15
+ "Programming Language :: Python :: 3.12",
16
+ "License :: OSI Approved :: MIT License",
17
+ "Operating System :: OS Independent",
18
+ "Topic :: Software Development :: Testing",
19
+ "Topic :: Software Development :: Quality Assurance",
20
+ "Intended Audience :: Developers",
21
+ "Development Status :: 4 - Beta",
22
+ ]
23
+ keywords = [
24
+ "pytest",
25
+ "pytest-plugin",
26
+ "html-report",
27
+ "test-report",
28
+ "screenshot",
29
+ "mobile-report",
30
+ "xdist",
31
+ "allure-alternative",
32
+ "playwright",
33
+ "selenium",
34
+ ]
35
+
36
+ urls.Homepage = "https://github.com/reporterplus/pytest-html-plus"
37
+ urls.Source = "https://github.com/reporterplus/pytest-html-plus"
38
+ urls.Tracker = "https://github.com/reporterplus/pytest-html-plus/issues"
39
+ urls.Documentation = "https://pytest-html-plus.readthedocs.io"
40
+
41
+ [tool.poetry.dependencies]
42
+ python = ">=3.10,<4.0"
43
+ yagmail = ">=0.15.293,<0.16.0"
44
+ keyring = ">=25.6.0,<26.0.0"
45
+
46
+ [tool.poetry.group.dev.dependencies]
47
+ pytest-rerunfailures = "^15.1"
48
+ pytest = "^8.4.1"
49
+ pytest-cov = "^6.2.1"
50
+ playwright = "^1.53.0"
51
+ pytest-playwright = "^0.7.0"
52
+ pytest-xdist = "^3.8.0"
53
+ selenium = "^4.8.0"
54
+ webdriver-manager = "^3.8.5"
55
+ ruff = "^0.15.2"
56
+ black = "^26.3.1"
57
+ isort = "^8.0.1"
58
+ pre-commit = "^4.5.1"
59
+
60
+ [build-system]
61
+ requires = ["poetry-core"]
62
+ build-backend = "poetry.core.masonry.api"
63
+
64
+ [tool.poetry.plugins."pytest11"]
65
+ pytest_html_plus = "pytest_html_plus.plugin"
66
+
67
+ [tool.ruff]
68
+ line-length = 88
69
+ target-version = "py39"
70
+ ignore = [
71
+ "E501", # line too long — let black handle
72
+ "W291", # trailing whitespace — let black handle
73
+ "W293", # blank line whitespace — let black handle
74
+ ]
75
+ exclude = [
76
+ "pytest_html_plus/generate_html_report.py"
77
+ ]
78
+
79
+ [tool.ruff.lint]
80
+ select = [
81
+ "E", # pycodestyle errors
82
+ "W", # pycodestyle warnings
83
+ "F", # pyflakes
84
+ "I", # isort
85
+ "UP", # pyupgrade
86
+ ]
87
+ ignore = []
@@ -1,5 +1,6 @@
1
1
  from collections import Counter, defaultdict
2
2
 
3
+
3
4
  def compute_filter_count(results):
4
5
  filters = Counter()
5
6
  marker_counts = defaultdict(int)
@@ -27,11 +28,8 @@ def compute_filter_count(results):
27
28
  total = len(results)
28
29
  filters["total"] = total
29
30
  filters["passed"] = (
30
- total
31
- - filters["failed"]
32
- - filters["skipped"]
33
- - filters["error"]
34
- )
31
+ total - filters["failed"] - filters["skipped"] - filters["error"]
32
+ )
35
33
 
36
34
  filters["marker_counts"] = dict(marker_counts)
37
35
  return dict(filters)
@@ -2,11 +2,17 @@ import json
2
2
  import os
3
3
  from datetime import datetime
4
4
 
5
- from pytest_html_plus.utils import is_main_worker, get_env_marker, get_report_title, \
6
- get_python_version
5
+ from pytest_html_plus.utils import (
6
+ get_env_marker,
7
+ get_python_version,
8
+ get_report_title,
9
+ is_main_worker,
10
+ )
7
11
 
8
12
 
9
- def write_plus_metadata_if_main_worker(config, report_path, output_path="plus_metadata.json", **kwargs):
13
+ def write_plus_metadata_if_main_worker(
14
+ config, report_path, output_path="plus_metadata.json", **kwargs
15
+ ):
10
16
  if not is_main_worker():
11
17
  return
12
18
  metadata_path = os.path.join(report_path, output_path)
@@ -18,7 +24,7 @@ def write_plus_metadata_if_main_worker(config, report_path, output_path="plus_me
18
24
  "branch": branch,
19
25
  "commit": commit,
20
26
  "python_version": get_python_version(),
21
- "generated_at": datetime.now().isoformat()
27
+ "generated_at": datetime.now().isoformat(),
22
28
  }
23
29
  os.makedirs(report_path, exist_ok=True)
24
30