Repository navigation
Expand file tree
/
Copy pathaction.yml
More file actions
122 lines (119 loc) · 4.01 KB
/
Copy pathaction.yml
File metadata and controls
122 lines (119 loc) · 4.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
name: "Pytest HTML Plus Action"
description: "Run pytest with pytest-html-plus and generate rich reports"
outputs:
total:
description: "Total test count parsed from the JSON report"
passed:
description: "Passed test count parsed from the JSON report"
failed:
description: "Failed test count parsed from the JSON report"
skipped:
description: "Skipped test count parsed from the JSON report"
duration:
description: "Sum of test durations in seconds parsed from the JSON report"
inputs:
test_path:
description: "Optional path or target for pytest (e.g. 'tests/' or 'src/tests/test_file.py'). If empty, pytest discovery runs from repo root."
required: false
default: ""
pytest_args:
description: "Arguments to pass directly to pytest (e.g. '--cov=... --reruns 1')"
required: false
default: ""
json_report:
description: "Path for JSON report"
required: false
default: "final_report.json"
capture_screenshots:
description: "Capture screenshots (failed, all, none)"
required: false
default: "failed"
html_output:
description: "Directory to save HTML report"
required: false
default: "report_output"
screenshots:
description: "Directory to save screenshots"
required: false
default: "screenshots"
plus_email:
description: "Send HTML report via email"
required: false
default: "false"
should_open_report:
description: "When to open the report (always, failed, never)"
required: false
default: "failed"
generate_xml:
description: "Generate JUnit-style XML"
required: false
default: "false"
xml_report:
description: "Path to XML report"
required: false
default: ""
use_poetry:
description: "If true, run pytest through poetry (poetry run pytest)"
required: false
default: "false"
use_uv:
description: "If true, run pytest through uv (uv run pytest)"
required: false
default: "false"
git_branch:
description: "If value passed, will show git branch name"
required: false
default: ""
git_commit:
description: "If value passed, will show git commit id"
required: false
default: ""
post_pr_comment:
description: "Post a summary comment on pull requests"
required: false
default: "false"
github_token:
description: "GitHub token used to post pull request comments"
required: false
default: ""
upload_html_artifact:
description: "If true, upload the generated HTML report directory as a GitHub Actions artifact"
required: false
default: "true"
html_artifact_name:
description: "Artifact name for the uploaded HTML report"
required: false
default: "pytest-html-plus-report"
runs:
using: "composite"
steps:
- name: Install pytest-html-plus
run: pip install pytest-html-plus
shell: bash
- name: Run entrypoint
env:
INPUT_TEST_PATH: ${{ inputs.test_path }}
INPUT_PYTEST_ARGS: ${{ inputs.pytest_args }}
INPUT_JSON_REPORT: ${{ inputs.json_report }}
INPUT_SCREENSHOTS: ${{ inputs.screenshots }}
INPUT_HTML_OUTPUT: ${{ inputs.html_output }}
INPUT_PLUS_EMAIL: ${{ inputs.plus_email }}
INPUT_GENERATE_XML: ${{ inputs.generate_xml }}
INPUT_XML_REPORT: ${{ inputs.xml_report }}
INPUT_CAPTURE_SCREENSHOTS: ${{ inputs.capture_screenshots }}
INPUT_SHOULD_OPEN_REPORT: ${{ inputs.should_open_report }}
INPUT_USE_POETRY: ${{ inputs.use_poetry }}
INPUT_USE_UV: ${{ inputs.use_uv }}
INPUT_GIT_BRANCH: ${{ inputs.git_branch }}
INPUT_GIT_COMMIT: ${{ inputs.git_commit }}
INPUT_POST_PR_COMMENT: ${{ inputs.post_pr_comment }}
INPUT_GITHUB_TOKEN: ${{ inputs.github_token }}
run: "${GITHUB_ACTION_PATH}/entrypoint.sh"
shell: bash
- name: Upload HTML report artifact
if: ${{ inputs.upload_html_artifact == 'true' }}
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.html_artifact_name }}
path: ${{ inputs.html_output }}
if-no-files-found: warn