comfy-test 0.0.41__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.
- comfy_test-0.0.41/.github/workflows/publish.yml +74 -0
- comfy_test-0.0.41/.github/workflows/test-matrix-local.yml +241 -0
- comfy_test-0.0.41/.github/workflows/test-matrix.yml +271 -0
- comfy_test-0.0.41/.gitignore +69 -0
- comfy_test-0.0.41/.ipynb_checkpoints/pyproject-checkpoint.toml +48 -0
- comfy_test-0.0.41/LICENSE +21 -0
- comfy_test-0.0.41/PKG-INFO +231 -0
- comfy_test-0.0.41/README.md +199 -0
- comfy_test-0.0.41/bin/act +0 -0
- comfy_test-0.0.41/pyproject.toml +49 -0
- comfy_test-0.0.41/src/comfy_test/__init__.py +103 -0
- comfy_test-0.0.41/src/comfy_test/__main__.py +6 -0
- comfy_test-0.0.41/src/comfy_test/cli.py +643 -0
- comfy_test-0.0.41/src/comfy_test/comfyui/__init__.py +11 -0
- comfy_test-0.0.41/src/comfy_test/comfyui/api.py +202 -0
- comfy_test-0.0.41/src/comfy_test/comfyui/server.py +211 -0
- comfy_test-0.0.41/src/comfy_test/comfyui/validator.py +616 -0
- comfy_test-0.0.41/src/comfy_test/comfyui/workflow.py +234 -0
- comfy_test-0.0.41/src/comfy_test/comfyui/workflow_converter.py +1313 -0
- comfy_test-0.0.41/src/comfy_test/errors.py +99 -0
- comfy_test-0.0.41/src/comfy_test/github/__init__.py +1 -0
- comfy_test-0.0.41/src/comfy_test/local_runner.py +246 -0
- comfy_test-0.0.41/src/comfy_test/runner.py +81 -0
- comfy_test-0.0.41/src/comfy_test/screenshot.py +584 -0
- comfy_test-0.0.41/src/comfy_test/screenshot_cache.py +332 -0
- comfy_test-0.0.41/src/comfy_test/test/__init__.py +13 -0
- comfy_test-0.0.41/src/comfy_test/test/comfy_env.py +75 -0
- comfy_test-0.0.41/src/comfy_test/test/config.py +221 -0
- comfy_test-0.0.41/src/comfy_test/test/config_file.py +310 -0
- comfy_test-0.0.41/src/comfy_test/test/manager.py +1182 -0
- comfy_test-0.0.41/src/comfy_test/test/node_discovery.py +231 -0
- comfy_test-0.0.41/src/comfy_test/test/platform/__init__.py +74 -0
- comfy_test-0.0.41/src/comfy_test/test/platform/base.py +218 -0
- comfy_test-0.0.41/src/comfy_test/test/platform/linux.py +250 -0
- comfy_test-0.0.41/src/comfy_test/test/platform/windows.py +248 -0
- comfy_test-0.0.41/src/comfy_test/test/platform/windows_portable.py +371 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
name: Bump Version & Publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
workflow_call:
|
|
9
|
+
inputs:
|
|
10
|
+
python-version:
|
|
11
|
+
description: 'Python version to use'
|
|
12
|
+
required: false
|
|
13
|
+
default: '3.10'
|
|
14
|
+
type: string
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
bump-and-publish:
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
environment: pypi
|
|
20
|
+
permissions:
|
|
21
|
+
contents: write
|
|
22
|
+
id-token: write
|
|
23
|
+
steps:
|
|
24
|
+
- uses: actions/checkout@v4
|
|
25
|
+
with:
|
|
26
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
27
|
+
|
|
28
|
+
- name: Setup Python
|
|
29
|
+
uses: actions/setup-python@v5
|
|
30
|
+
with:
|
|
31
|
+
python-version: ${{ inputs.python-version || '3.10' }}
|
|
32
|
+
|
|
33
|
+
- name: Get current version
|
|
34
|
+
id: get_version
|
|
35
|
+
run: |
|
|
36
|
+
current=$(grep '^version = ' pyproject.toml | sed 's/version = "\(.*\)"/\1/' | tr -d '\r')
|
|
37
|
+
echo "current=$current" >> $GITHUB_OUTPUT
|
|
38
|
+
|
|
39
|
+
- name: Bump patch version
|
|
40
|
+
id: bump_version
|
|
41
|
+
run: |
|
|
42
|
+
current="${{ steps.get_version.outputs.current }}"
|
|
43
|
+
IFS='.' read -r major minor patch <<< "$current"
|
|
44
|
+
new_patch=$((patch + 1))
|
|
45
|
+
new_version="${major}.${minor}.${new_patch}"
|
|
46
|
+
sed -i "s/^version = \".*\"/version = \"${new_version}\"/" pyproject.toml
|
|
47
|
+
echo "new_version=$new_version" >> $GITHUB_OUTPUT
|
|
48
|
+
echo "Bumped version: $current -> $new_version"
|
|
49
|
+
|
|
50
|
+
- name: Commit version bump
|
|
51
|
+
run: |
|
|
52
|
+
git config user.name "github-actions[bot]"
|
|
53
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
54
|
+
git add pyproject.toml
|
|
55
|
+
git commit -m "Bump version to ${{ steps.bump_version.outputs.new_version }} [skip ci]"
|
|
56
|
+
git tag "v${{ steps.bump_version.outputs.new_version }}"
|
|
57
|
+
git push origin main --tags
|
|
58
|
+
|
|
59
|
+
- name: Install build tools
|
|
60
|
+
run: pip install build
|
|
61
|
+
|
|
62
|
+
- name: Build package
|
|
63
|
+
run: python -m build
|
|
64
|
+
|
|
65
|
+
- name: Create GitHub Release
|
|
66
|
+
uses: softprops/action-gh-release@v1
|
|
67
|
+
with:
|
|
68
|
+
tag_name: v${{ steps.bump_version.outputs.new_version }}
|
|
69
|
+
name: v${{ steps.bump_version.outputs.new_version }}
|
|
70
|
+
generate_release_notes: true
|
|
71
|
+
files: dist/*
|
|
72
|
+
|
|
73
|
+
- name: Publish to PyPI
|
|
74
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
# LOCAL VERSION - For testing with act
|
|
2
|
+
# This file has local mount overrides for comfy-test and comfy-env
|
|
3
|
+
# Use test-matrix.yml for GitHub Actions CI
|
|
4
|
+
|
|
5
|
+
name: ComfyUI Installation Test Matrix (Local)
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
workflow_call:
|
|
9
|
+
inputs:
|
|
10
|
+
node-path:
|
|
11
|
+
description: "Path to custom node directory"
|
|
12
|
+
type: string
|
|
13
|
+
default: "."
|
|
14
|
+
config-file:
|
|
15
|
+
description: "Path to comfy-test.toml config file"
|
|
16
|
+
type: string
|
|
17
|
+
default: "comfy-test.toml"
|
|
18
|
+
python-version:
|
|
19
|
+
description: "Python version for testing"
|
|
20
|
+
type: string
|
|
21
|
+
default: "3.10"
|
|
22
|
+
comfy-test-ref:
|
|
23
|
+
description: "Git ref for comfy-test (branch, tag, or SHA)"
|
|
24
|
+
type: string
|
|
25
|
+
default: "main"
|
|
26
|
+
timeout-minutes:
|
|
27
|
+
description: "Job timeout in minutes (default: 60)"
|
|
28
|
+
type: number
|
|
29
|
+
default: 60
|
|
30
|
+
|
|
31
|
+
jobs:
|
|
32
|
+
test-linux:
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
timeout-minutes: ${{ inputs.timeout-minutes }}
|
|
35
|
+
steps:
|
|
36
|
+
- name: Free disk space
|
|
37
|
+
run: |
|
|
38
|
+
sudo rm -rf /usr/share/dotnet &
|
|
39
|
+
sudo rm -rf /usr/local/lib/android &
|
|
40
|
+
sudo rm -rf /opt/ghc &
|
|
41
|
+
sudo rm -rf /opt/hostedtoolcache/CodeQL &
|
|
42
|
+
sudo apt-get clean &
|
|
43
|
+
wait
|
|
44
|
+
|
|
45
|
+
- name: Checkout node
|
|
46
|
+
uses: actions/checkout@v4
|
|
47
|
+
|
|
48
|
+
- name: Checkout comfy-test
|
|
49
|
+
if: ${{ !env.COMFY_TEST_LOCAL }}
|
|
50
|
+
uses: actions/checkout@v4
|
|
51
|
+
with:
|
|
52
|
+
repository: PozzettiAndrea/comfy-test
|
|
53
|
+
ref: ${{ inputs.comfy-test-ref }}
|
|
54
|
+
path: .comfy-test-src
|
|
55
|
+
|
|
56
|
+
- name: Setup Python
|
|
57
|
+
uses: actions/setup-python@v5
|
|
58
|
+
with:
|
|
59
|
+
python-version: ${{ inputs.python-version }}
|
|
60
|
+
|
|
61
|
+
- name: Install uv
|
|
62
|
+
run: pip install uv
|
|
63
|
+
|
|
64
|
+
- name: Install comfy-test
|
|
65
|
+
run: |
|
|
66
|
+
if [ -d "/local-comfy-test" ]; then
|
|
67
|
+
echo "Installing comfy-test from local mount: /local-comfy-test"
|
|
68
|
+
pip install "/local-comfy-test[screenshot]"
|
|
69
|
+
else
|
|
70
|
+
pip install "./.comfy-test-src[screenshot]"
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
- name: Install Playwright
|
|
74
|
+
run: |
|
|
75
|
+
playwright install chromium
|
|
76
|
+
playwright install-deps chromium
|
|
77
|
+
|
|
78
|
+
- name: Install local comfy-env
|
|
79
|
+
run: |
|
|
80
|
+
if [ -d "/local-comfy-env" ]; then
|
|
81
|
+
echo "Installing comfy-env from local mount: /local-comfy-env"
|
|
82
|
+
pip install /local-comfy-env
|
|
83
|
+
fi
|
|
84
|
+
|
|
85
|
+
- name: Syntax
|
|
86
|
+
id: syntax
|
|
87
|
+
run: comfy-test run --platform linux --only-level syntax -c ${{ inputs.config-file }}
|
|
88
|
+
|
|
89
|
+
- name: Install
|
|
90
|
+
id: install
|
|
91
|
+
if: always()
|
|
92
|
+
run: comfy-test run --platform linux --only-level install --work-dir .comfy-test-env -c ${{ inputs.config-file }}
|
|
93
|
+
|
|
94
|
+
- name: Registration
|
|
95
|
+
id: registration
|
|
96
|
+
if: always() && steps.install.outcome == 'success'
|
|
97
|
+
run: comfy-test run --platform linux --only-level registration --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
98
|
+
|
|
99
|
+
- name: Instantiation
|
|
100
|
+
id: instantiation
|
|
101
|
+
if: always() && steps.install.outcome == 'success'
|
|
102
|
+
run: comfy-test run --platform linux --only-level instantiation --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
103
|
+
|
|
104
|
+
- name: Validation
|
|
105
|
+
id: validation
|
|
106
|
+
if: always() && steps.install.outcome == 'success'
|
|
107
|
+
run: comfy-test run --platform linux --only-level validation --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
108
|
+
|
|
109
|
+
- name: Execution
|
|
110
|
+
id: execution
|
|
111
|
+
if: always() && steps.install.outcome == 'success'
|
|
112
|
+
run: comfy-test run --platform linux --only-level execution --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
113
|
+
|
|
114
|
+
- name: Upload logs
|
|
115
|
+
if: always()
|
|
116
|
+
uses: actions/upload-artifact@v4
|
|
117
|
+
with:
|
|
118
|
+
name: test-logs-linux
|
|
119
|
+
path: .comfy-test/
|
|
120
|
+
if-no-files-found: ignore
|
|
121
|
+
|
|
122
|
+
test-windows:
|
|
123
|
+
runs-on: windows-latest
|
|
124
|
+
timeout-minutes: ${{ inputs.timeout-minutes }}
|
|
125
|
+
steps:
|
|
126
|
+
- name: Checkout node
|
|
127
|
+
uses: actions/checkout@v4
|
|
128
|
+
|
|
129
|
+
- name: Checkout comfy-test
|
|
130
|
+
uses: actions/checkout@v4
|
|
131
|
+
with:
|
|
132
|
+
repository: PozzettiAndrea/comfy-test
|
|
133
|
+
ref: ${{ inputs.comfy-test-ref }}
|
|
134
|
+
path: .comfy-test-src
|
|
135
|
+
|
|
136
|
+
- name: Setup Python
|
|
137
|
+
uses: actions/setup-python@v5
|
|
138
|
+
with:
|
|
139
|
+
python-version: ${{ inputs.python-version }}
|
|
140
|
+
|
|
141
|
+
- name: Install uv
|
|
142
|
+
run: pip install uv
|
|
143
|
+
|
|
144
|
+
- name: Install comfy-test
|
|
145
|
+
run: pip install ./.comfy-test-src
|
|
146
|
+
|
|
147
|
+
- name: Syntax
|
|
148
|
+
id: syntax
|
|
149
|
+
run: comfy-test run --platform windows --only-level syntax -c ${{ inputs.config-file }}
|
|
150
|
+
|
|
151
|
+
- name: Install
|
|
152
|
+
id: install
|
|
153
|
+
if: always()
|
|
154
|
+
run: comfy-test run --platform windows --only-level install --work-dir .comfy-test-env -c ${{ inputs.config-file }}
|
|
155
|
+
|
|
156
|
+
- name: Registration
|
|
157
|
+
id: registration
|
|
158
|
+
if: always() && steps.install.outcome == 'success'
|
|
159
|
+
run: comfy-test run --platform windows --only-level registration --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
160
|
+
|
|
161
|
+
- name: Instantiation
|
|
162
|
+
id: instantiation
|
|
163
|
+
if: always() && steps.install.outcome == 'success'
|
|
164
|
+
run: comfy-test run --platform windows --only-level instantiation --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
165
|
+
|
|
166
|
+
- name: Validation
|
|
167
|
+
id: validation
|
|
168
|
+
if: always() && steps.install.outcome == 'success'
|
|
169
|
+
run: comfy-test run --platform windows --only-level validation --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
170
|
+
|
|
171
|
+
- name: Execution
|
|
172
|
+
id: execution
|
|
173
|
+
if: always() && steps.install.outcome == 'success'
|
|
174
|
+
run: comfy-test run --platform windows --only-level execution --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
175
|
+
|
|
176
|
+
- name: Upload logs
|
|
177
|
+
if: always()
|
|
178
|
+
uses: actions/upload-artifact@v4
|
|
179
|
+
with:
|
|
180
|
+
name: test-logs-windows
|
|
181
|
+
path: .comfy-test/
|
|
182
|
+
if-no-files-found: ignore
|
|
183
|
+
|
|
184
|
+
test-windows-portable:
|
|
185
|
+
runs-on: windows-latest
|
|
186
|
+
timeout-minutes: ${{ inputs.timeout-minutes }}
|
|
187
|
+
steps:
|
|
188
|
+
- name: Checkout node
|
|
189
|
+
uses: actions/checkout@v4
|
|
190
|
+
|
|
191
|
+
- name: Checkout comfy-test
|
|
192
|
+
uses: actions/checkout@v4
|
|
193
|
+
with:
|
|
194
|
+
repository: PozzettiAndrea/comfy-test
|
|
195
|
+
ref: ${{ inputs.comfy-test-ref }}
|
|
196
|
+
path: .comfy-test-src
|
|
197
|
+
|
|
198
|
+
- name: Setup Python
|
|
199
|
+
uses: actions/setup-python@v5
|
|
200
|
+
with:
|
|
201
|
+
python-version: ${{ inputs.python-version }}
|
|
202
|
+
|
|
203
|
+
- name: Install comfy-test
|
|
204
|
+
run: pip install ./.comfy-test-src
|
|
205
|
+
|
|
206
|
+
- name: Syntax
|
|
207
|
+
id: syntax
|
|
208
|
+
run: comfy-test run --platform windows-portable --only-level syntax -c ${{ inputs.config-file }}
|
|
209
|
+
|
|
210
|
+
- name: Install
|
|
211
|
+
id: install
|
|
212
|
+
if: always()
|
|
213
|
+
run: comfy-test run --platform windows-portable --only-level install --work-dir .comfy-test-env -c ${{ inputs.config-file }}
|
|
214
|
+
|
|
215
|
+
- name: Registration
|
|
216
|
+
id: registration
|
|
217
|
+
if: always() && steps.install.outcome == 'success'
|
|
218
|
+
run: comfy-test run --platform windows-portable --only-level registration --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
219
|
+
|
|
220
|
+
- name: Instantiation
|
|
221
|
+
id: instantiation
|
|
222
|
+
if: always() && steps.install.outcome == 'success'
|
|
223
|
+
run: comfy-test run --platform windows-portable --only-level instantiation --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
224
|
+
|
|
225
|
+
- name: Validation
|
|
226
|
+
id: validation
|
|
227
|
+
if: always() && steps.install.outcome == 'success'
|
|
228
|
+
run: comfy-test run --platform windows-portable --only-level validation --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
229
|
+
|
|
230
|
+
- name: Execution
|
|
231
|
+
id: execution
|
|
232
|
+
if: always() && steps.install.outcome == 'success'
|
|
233
|
+
run: comfy-test run --platform windows-portable --only-level execution --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
234
|
+
|
|
235
|
+
- name: Upload logs
|
|
236
|
+
if: always()
|
|
237
|
+
uses: actions/upload-artifact@v4
|
|
238
|
+
with:
|
|
239
|
+
name: test-logs-windows-portable
|
|
240
|
+
path: .comfy-test/
|
|
241
|
+
if-no-files-found: ignore
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
name: ComfyUI Installation Test Matrix
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_call:
|
|
5
|
+
inputs:
|
|
6
|
+
node-path:
|
|
7
|
+
description: "Path to custom node directory"
|
|
8
|
+
type: string
|
|
9
|
+
default: "."
|
|
10
|
+
config-file:
|
|
11
|
+
description: "Path to comfy-test.toml config file"
|
|
12
|
+
type: string
|
|
13
|
+
default: "comfy-test.toml"
|
|
14
|
+
python-version:
|
|
15
|
+
description: "Python version for testing"
|
|
16
|
+
type: string
|
|
17
|
+
default: "3.10"
|
|
18
|
+
comfy-test-ref:
|
|
19
|
+
description: "Git ref for comfy-test (branch, tag, or SHA)"
|
|
20
|
+
type: string
|
|
21
|
+
default: "main"
|
|
22
|
+
timeout-minutes:
|
|
23
|
+
description: "Job timeout in minutes (default: 60)"
|
|
24
|
+
type: number
|
|
25
|
+
default: 60
|
|
26
|
+
|
|
27
|
+
jobs:
|
|
28
|
+
test-linux:
|
|
29
|
+
runs-on: ubuntu-latest
|
|
30
|
+
timeout-minutes: ${{ inputs.timeout-minutes }}
|
|
31
|
+
steps:
|
|
32
|
+
- name: Free disk space
|
|
33
|
+
run: |
|
|
34
|
+
sudo rm -rf /usr/share/dotnet &
|
|
35
|
+
sudo rm -rf /usr/local/lib/android &
|
|
36
|
+
sudo rm -rf /opt/ghc &
|
|
37
|
+
sudo rm -rf /opt/hostedtoolcache/CodeQL &
|
|
38
|
+
sudo apt-get clean &
|
|
39
|
+
wait
|
|
40
|
+
|
|
41
|
+
- name: Checkout node
|
|
42
|
+
uses: actions/checkout@v4
|
|
43
|
+
|
|
44
|
+
- name: Checkout comfy-test
|
|
45
|
+
uses: actions/checkout@v4
|
|
46
|
+
with:
|
|
47
|
+
repository: PozzettiAndrea/comfy-test
|
|
48
|
+
ref: ${{ inputs.comfy-test-ref }}
|
|
49
|
+
path: .comfy-test-src
|
|
50
|
+
|
|
51
|
+
- name: Setup Python
|
|
52
|
+
uses: actions/setup-python@v5
|
|
53
|
+
with:
|
|
54
|
+
python-version: ${{ inputs.python-version }}
|
|
55
|
+
|
|
56
|
+
- name: Install uv
|
|
57
|
+
run: pip install uv
|
|
58
|
+
|
|
59
|
+
- name: Install comfy-test
|
|
60
|
+
run: pip install "./.comfy-test-src[screenshot]"
|
|
61
|
+
|
|
62
|
+
- name: Install Playwright
|
|
63
|
+
run: |
|
|
64
|
+
playwright install chromium
|
|
65
|
+
playwright install-deps chromium
|
|
66
|
+
|
|
67
|
+
- name: Syntax
|
|
68
|
+
id: syntax
|
|
69
|
+
run: comfy-test run --platform linux --only-level syntax -c ${{ inputs.config-file }}
|
|
70
|
+
|
|
71
|
+
- name: Install
|
|
72
|
+
id: install
|
|
73
|
+
if: always()
|
|
74
|
+
run: comfy-test run --platform linux --only-level install --work-dir .comfy-test-env -c ${{ inputs.config-file }}
|
|
75
|
+
|
|
76
|
+
- name: Registration
|
|
77
|
+
id: registration
|
|
78
|
+
if: always() && steps.install.outcome == 'success'
|
|
79
|
+
run: comfy-test run --platform linux --only-level registration --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
80
|
+
|
|
81
|
+
- name: Instantiation
|
|
82
|
+
id: instantiation
|
|
83
|
+
if: always() && steps.install.outcome == 'success'
|
|
84
|
+
run: comfy-test run --platform linux --only-level instantiation --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
85
|
+
|
|
86
|
+
- name: Validation
|
|
87
|
+
id: validation
|
|
88
|
+
if: always() && steps.install.outcome == 'success'
|
|
89
|
+
run: comfy-test run --platform linux --only-level validation --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
90
|
+
|
|
91
|
+
- name: Execution
|
|
92
|
+
id: execution
|
|
93
|
+
if: always() && steps.install.outcome == 'success'
|
|
94
|
+
run: comfy-test run --platform linux --only-level execution --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
95
|
+
|
|
96
|
+
- name: Upload logs
|
|
97
|
+
if: always()
|
|
98
|
+
uses: actions/upload-artifact@v4
|
|
99
|
+
with:
|
|
100
|
+
name: test-logs-linux
|
|
101
|
+
path: .comfy-test/
|
|
102
|
+
if-no-files-found: ignore
|
|
103
|
+
|
|
104
|
+
- name: Upload screenshots
|
|
105
|
+
if: always()
|
|
106
|
+
uses: actions/upload-artifact@v4
|
|
107
|
+
with:
|
|
108
|
+
name: screenshots-linux
|
|
109
|
+
path: .comfy-test/screenshots/
|
|
110
|
+
if-no-files-found: ignore
|
|
111
|
+
|
|
112
|
+
- name: Publish to gh-pages
|
|
113
|
+
if: always() && steps.execution.outcome == 'success'
|
|
114
|
+
uses: peaceiris/actions-gh-pages@v4
|
|
115
|
+
with:
|
|
116
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
117
|
+
publish_branch: gh-pages
|
|
118
|
+
publish_dir: .comfy-test
|
|
119
|
+
keep_files: true
|
|
120
|
+
exclude_assets: ''
|
|
121
|
+
|
|
122
|
+
test-windows:
|
|
123
|
+
runs-on: windows-latest
|
|
124
|
+
timeout-minutes: ${{ inputs.timeout-minutes }}
|
|
125
|
+
steps:
|
|
126
|
+
- name: Checkout node
|
|
127
|
+
uses: actions/checkout@v4
|
|
128
|
+
|
|
129
|
+
- name: Checkout comfy-test
|
|
130
|
+
uses: actions/checkout@v4
|
|
131
|
+
with:
|
|
132
|
+
repository: PozzettiAndrea/comfy-test
|
|
133
|
+
ref: ${{ inputs.comfy-test-ref }}
|
|
134
|
+
path: .comfy-test-src
|
|
135
|
+
|
|
136
|
+
- name: Setup Python
|
|
137
|
+
uses: actions/setup-python@v5
|
|
138
|
+
with:
|
|
139
|
+
python-version: ${{ inputs.python-version }}
|
|
140
|
+
|
|
141
|
+
- name: Install uv
|
|
142
|
+
run: pip install uv
|
|
143
|
+
|
|
144
|
+
- name: Install comfy-test
|
|
145
|
+
run: pip install "./.comfy-test-src[screenshot]"
|
|
146
|
+
|
|
147
|
+
- name: Install Playwright
|
|
148
|
+
run: |
|
|
149
|
+
playwright install chromium
|
|
150
|
+
playwright install-deps chromium
|
|
151
|
+
|
|
152
|
+
- name: Syntax
|
|
153
|
+
id: syntax
|
|
154
|
+
run: comfy-test run --platform windows --only-level syntax -c ${{ inputs.config-file }}
|
|
155
|
+
|
|
156
|
+
- name: Install
|
|
157
|
+
id: install
|
|
158
|
+
if: always()
|
|
159
|
+
run: comfy-test run --platform windows --only-level install --work-dir .comfy-test-env -c ${{ inputs.config-file }}
|
|
160
|
+
|
|
161
|
+
- name: Registration
|
|
162
|
+
id: registration
|
|
163
|
+
if: always() && steps.install.outcome == 'success'
|
|
164
|
+
run: comfy-test run --platform windows --only-level registration --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
165
|
+
|
|
166
|
+
- name: Instantiation
|
|
167
|
+
id: instantiation
|
|
168
|
+
if: always() && steps.install.outcome == 'success'
|
|
169
|
+
run: comfy-test run --platform windows --only-level instantiation --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
170
|
+
|
|
171
|
+
- name: Validation
|
|
172
|
+
id: validation
|
|
173
|
+
if: always() && steps.install.outcome == 'success'
|
|
174
|
+
run: comfy-test run --platform windows --only-level validation --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
175
|
+
|
|
176
|
+
- name: Execution
|
|
177
|
+
id: execution
|
|
178
|
+
if: always() && steps.install.outcome == 'success'
|
|
179
|
+
run: comfy-test run --platform windows --only-level execution --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
180
|
+
|
|
181
|
+
- name: Upload logs
|
|
182
|
+
if: always()
|
|
183
|
+
uses: actions/upload-artifact@v4
|
|
184
|
+
with:
|
|
185
|
+
name: test-logs-windows
|
|
186
|
+
path: .comfy-test/
|
|
187
|
+
if-no-files-found: ignore
|
|
188
|
+
|
|
189
|
+
- name: Upload screenshots
|
|
190
|
+
if: always()
|
|
191
|
+
uses: actions/upload-artifact@v4
|
|
192
|
+
with:
|
|
193
|
+
name: screenshots-windows
|
|
194
|
+
path: |
|
|
195
|
+
${{ inputs.node-path }}/workflows/*.png
|
|
196
|
+
${{ inputs.node-path }}/workflows/**/*.png
|
|
197
|
+
if-no-files-found: ignore
|
|
198
|
+
|
|
199
|
+
test-windows-portable:
|
|
200
|
+
runs-on: windows-latest
|
|
201
|
+
timeout-minutes: ${{ inputs.timeout-minutes }}
|
|
202
|
+
steps:
|
|
203
|
+
- name: Checkout node
|
|
204
|
+
uses: actions/checkout@v4
|
|
205
|
+
|
|
206
|
+
- name: Checkout comfy-test
|
|
207
|
+
uses: actions/checkout@v4
|
|
208
|
+
with:
|
|
209
|
+
repository: PozzettiAndrea/comfy-test
|
|
210
|
+
ref: ${{ inputs.comfy-test-ref }}
|
|
211
|
+
path: .comfy-test-src
|
|
212
|
+
|
|
213
|
+
- name: Setup Python
|
|
214
|
+
uses: actions/setup-python@v5
|
|
215
|
+
with:
|
|
216
|
+
python-version: ${{ inputs.python-version }}
|
|
217
|
+
|
|
218
|
+
- name: Install comfy-test
|
|
219
|
+
run: pip install "./.comfy-test-src[screenshot]"
|
|
220
|
+
|
|
221
|
+
- name: Install Playwright
|
|
222
|
+
run: |
|
|
223
|
+
playwright install chromium
|
|
224
|
+
playwright install-deps chromium
|
|
225
|
+
|
|
226
|
+
- name: Syntax
|
|
227
|
+
id: syntax
|
|
228
|
+
run: comfy-test run --platform windows-portable --only-level syntax -c ${{ inputs.config-file }}
|
|
229
|
+
|
|
230
|
+
- name: Install
|
|
231
|
+
id: install
|
|
232
|
+
if: always()
|
|
233
|
+
run: comfy-test run --platform windows-portable --only-level install --work-dir .comfy-test-env -c ${{ inputs.config-file }}
|
|
234
|
+
|
|
235
|
+
- name: Registration
|
|
236
|
+
id: registration
|
|
237
|
+
if: always() && steps.install.outcome == 'success'
|
|
238
|
+
run: comfy-test run --platform windows-portable --only-level registration --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
239
|
+
|
|
240
|
+
- name: Instantiation
|
|
241
|
+
id: instantiation
|
|
242
|
+
if: always() && steps.install.outcome == 'success'
|
|
243
|
+
run: comfy-test run --platform windows-portable --only-level instantiation --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
244
|
+
|
|
245
|
+
- name: Validation
|
|
246
|
+
id: validation
|
|
247
|
+
if: always() && steps.install.outcome == 'success'
|
|
248
|
+
run: comfy-test run --platform windows-portable --only-level validation --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
249
|
+
|
|
250
|
+
- name: Execution
|
|
251
|
+
id: execution
|
|
252
|
+
if: always() && steps.install.outcome == 'success'
|
|
253
|
+
run: comfy-test run --platform windows-portable --only-level execution --work-dir .comfy-test-env --skip-setup -c ${{ inputs.config-file }}
|
|
254
|
+
|
|
255
|
+
- name: Upload logs
|
|
256
|
+
if: always()
|
|
257
|
+
uses: actions/upload-artifact@v4
|
|
258
|
+
with:
|
|
259
|
+
name: test-logs-windows-portable
|
|
260
|
+
path: .comfy-test/
|
|
261
|
+
if-no-files-found: ignore
|
|
262
|
+
|
|
263
|
+
- name: Upload screenshots
|
|
264
|
+
if: always()
|
|
265
|
+
uses: actions/upload-artifact@v4
|
|
266
|
+
with:
|
|
267
|
+
name: screenshots-windows-portable
|
|
268
|
+
path: |
|
|
269
|
+
${{ inputs.node-path }}/workflows/*.png
|
|
270
|
+
${{ inputs.node-path }}/workflows/**/*.png
|
|
271
|
+
if-no-files-found: ignore
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
*.egg-info/
|
|
24
|
+
.installed.cfg
|
|
25
|
+
*.egg
|
|
26
|
+
|
|
27
|
+
# PyInstaller
|
|
28
|
+
*.manifest
|
|
29
|
+
*.spec
|
|
30
|
+
|
|
31
|
+
# Installer logs
|
|
32
|
+
pip-log.txt
|
|
33
|
+
pip-delete-this-directory.txt
|
|
34
|
+
|
|
35
|
+
# Unit test / coverage reports
|
|
36
|
+
htmlcov/
|
|
37
|
+
.tox/
|
|
38
|
+
.nox/
|
|
39
|
+
.coverage
|
|
40
|
+
.coverage.*
|
|
41
|
+
.cache
|
|
42
|
+
nosetests.xml
|
|
43
|
+
coverage.xml
|
|
44
|
+
*.cover
|
|
45
|
+
*.py,cover
|
|
46
|
+
.hypothesis/
|
|
47
|
+
.pytest_cache/
|
|
48
|
+
|
|
49
|
+
# Environments
|
|
50
|
+
.env
|
|
51
|
+
.venv
|
|
52
|
+
env/
|
|
53
|
+
venv/
|
|
54
|
+
ENV/
|
|
55
|
+
env.bak/
|
|
56
|
+
venv.bak/
|
|
57
|
+
|
|
58
|
+
# IDEs
|
|
59
|
+
.idea/
|
|
60
|
+
.vscode/
|
|
61
|
+
*.swp
|
|
62
|
+
*.swo
|
|
63
|
+
|
|
64
|
+
# Test artifacts
|
|
65
|
+
.comfy-test/
|
|
66
|
+
|
|
67
|
+
# OS
|
|
68
|
+
.DS_Store
|
|
69
|
+
Thumbs.db
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "comfy-test"
|
|
3
|
+
version = "0.0.10"
|
|
4
|
+
description = "Installation testing infrastructure for ComfyUI custom nodes"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
license = {text = "MIT"}
|
|
7
|
+
requires-python = ">=3.10"
|
|
8
|
+
authors = [
|
|
9
|
+
{name = "Andrea Pozzetti"}
|
|
10
|
+
]
|
|
11
|
+
keywords = ["comfyui", "testing", "installation", "ci", "github-actions"]
|
|
12
|
+
classifiers = [
|
|
13
|
+
"Development Status :: 3 - Alpha",
|
|
14
|
+
"Intended Audience :: Developers",
|
|
15
|
+
"License :: OSI Approved :: MIT License",
|
|
16
|
+
"Programming Language :: Python :: 3.10",
|
|
17
|
+
"Programming Language :: Python :: 3.11",
|
|
18
|
+
"Programming Language :: Python :: 3.12",
|
|
19
|
+
"Programming Language :: Python :: 3.13",
|
|
20
|
+
]
|
|
21
|
+
dependencies = [
|
|
22
|
+
"tomli>=2.0.0; python_version < '3.11'", # TOML parsing (built-in for 3.11+)
|
|
23
|
+
"requests>=2.28.0", # ComfyUI API calls
|
|
24
|
+
"websocket-client", # ComfyUI WebSocket for workflow monitoring
|
|
25
|
+
"py7zr>=0.20.0", # Extract portable 7z archives
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
[project.optional-dependencies]
|
|
29
|
+
dev = ["pytest", "ruff", "mypy"]
|
|
30
|
+
|
|
31
|
+
[project.urls]
|
|
32
|
+
Homepage = "https://github.com/PozzettiAndrea/comfy-test"
|
|
33
|
+
Repository = "https://github.com/PozzettiAndrea/comfy-test"
|
|
34
|
+
Issues = "https://github.com/PozzettiAndrea/comfy-test/issues"
|
|
35
|
+
|
|
36
|
+
[project.scripts]
|
|
37
|
+
comfy-test = "comfy_test.cli:main"
|
|
38
|
+
|
|
39
|
+
[build-system]
|
|
40
|
+
requires = ["hatchling"]
|
|
41
|
+
build-backend = "hatchling.build"
|
|
42
|
+
|
|
43
|
+
[tool.hatch.build.targets.wheel]
|
|
44
|
+
packages = ["src/comfy_test"]
|
|
45
|
+
|
|
46
|
+
[tool.ruff]
|
|
47
|
+
line-length = 100
|
|
48
|
+
target-version = "py310"
|