mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-29 10:42:44 +00:00
Add Danger PR Review (#4442)
This commit is contained in:
27
.github/workflows/danger.yaml
vendored
Normal file
27
.github/workflows/danger.yaml
vendored
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
name: Danger PR Review
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [opened, edited, synchronize]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
danger:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 'lts/*'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Run Danger
|
||||||
|
run: npx danger ci
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
DANGER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
72
dangerfile.ts
Normal file
72
dangerfile.ts
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
import { danger, fail } from 'danger'
|
||||||
|
|
||||||
|
// Check if we should run the checks
|
||||||
|
const shouldRunChecks = async () => {
|
||||||
|
const allChangedFiles = [
|
||||||
|
...danger.git.modified_files,
|
||||||
|
...danger.git.created_files
|
||||||
|
]
|
||||||
|
const srcChanges = allChangedFiles.filter((file) => file.startsWith('src/'))
|
||||||
|
|
||||||
|
if (srcChanges.length === 0) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check total lines changed in src files
|
||||||
|
let totalLinesChanged = 0
|
||||||
|
for (const file of srcChanges) {
|
||||||
|
const diff = await danger.git.diffForFile(file)
|
||||||
|
if (diff) {
|
||||||
|
// Count only lines with actual content (non-empty after trimming whitespace)
|
||||||
|
// This excludes empty lines and lines containing only spaces/tabs
|
||||||
|
const additions =
|
||||||
|
diff.added?.split('\n').filter((line) => line.trim()).length || 0
|
||||||
|
const deletions =
|
||||||
|
diff.removed?.split('\n').filter((line) => line.trim()).length || 0
|
||||||
|
totalLinesChanged += additions + deletions
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return totalLinesChanged > 3
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if browser tests were updated
|
||||||
|
const checkBrowserTestCoverage = () => {
|
||||||
|
const allChangedFiles = [
|
||||||
|
...danger.git.modified_files,
|
||||||
|
...danger.git.created_files
|
||||||
|
]
|
||||||
|
const hasBrowserTestChanges = allChangedFiles.some(
|
||||||
|
(file) => file.startsWith('browser_tests/') && file.endsWith('.ts')
|
||||||
|
)
|
||||||
|
|
||||||
|
if (!hasBrowserTestChanges) {
|
||||||
|
fail(`🧪 **E2E Test Coverage Missing**
|
||||||
|
|
||||||
|
All changes should be covered under E2E testing. Please add or update browser tests.`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for screen recording in PR description
|
||||||
|
const checkScreenRecording = () => {
|
||||||
|
const description = danger.github.pr.body || ''
|
||||||
|
const hasRecording =
|
||||||
|
/github\.com\/user-attachments\/assets\/[a-f0-9-]+/i.test(description) ||
|
||||||
|
/youtube\.com\/watch|youtu\.be\//i.test(description)
|
||||||
|
|
||||||
|
if (!hasRecording) {
|
||||||
|
fail(`📹 **Visual Documentation Missing**
|
||||||
|
|
||||||
|
Please add a screen recording or screenshot:
|
||||||
|
- GitHub: Drag & drop media to PR description
|
||||||
|
- YouTube: Add YouTube link`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run the checks only if conditions are met
|
||||||
|
shouldRunChecks().then((shouldRun) => {
|
||||||
|
if (shouldRun) {
|
||||||
|
checkBrowserTestCoverage()
|
||||||
|
checkScreenRecording()
|
||||||
|
}
|
||||||
|
})
|
||||||
806
package-lock.json
generated
806
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -45,6 +45,7 @@
|
|||||||
"@vue/test-utils": "^2.4.6",
|
"@vue/test-utils": "^2.4.6",
|
||||||
"autoprefixer": "^10.4.19",
|
"autoprefixer": "^10.4.19",
|
||||||
"chalk": "^5.3.0",
|
"chalk": "^5.3.0",
|
||||||
|
"danger": "^13.0.4",
|
||||||
"eslint": "^9.12.0",
|
"eslint": "^9.12.0",
|
||||||
"eslint-config-prettier": "^10.1.2",
|
"eslint-config-prettier": "^10.1.2",
|
||||||
"eslint-plugin-prettier": "^5.2.6",
|
"eslint-plugin-prettier": "^5.2.6",
|
||||||
|
|||||||
Reference in New Issue
Block a user