|
27196
|
20217
|
6
|
5
|
468c7319f39e251cdf8eb96c3aa63f4db200a7db
|
0
|
visual-regression
|
1
|
name: E2E Tests
"on":
# PR validation name: E2E Tests
"on":
# PR validation - 运行关键测试
pull_request:
branches: [main, develop]
paths:
- 'frontend/**'
- 'backend/**'
- 'e2e/**'
- 'package.json'
- 'pnpm-lock.yaml'
# Push to main - 运行完整测试套件
push:
branches: [main]
# 每日定时全量测试 (UTC 时间 00:00 = 北京时间 08:00)
schedule:
- cron: '0 0 * * *'
# 手动触发
workflow_dispatch:
inputs:
test_suite:
description: 'Test suite to run'
required: true
default: 'all'
type: choice
options:
- all
- critical
- business-flows
- visual-regression
- performance
env:
NODE_VERSION: "20"
PNPM_VERSION: "9"
jobs:
visual-regression:
name: visual-regression
runs-on: ubuntu-latest
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.test_suite == 'visual-regression')
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: "0"
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: ${{ env.PNPM_VERSION }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup test database
run: |
cd backend
npx prisma migrate deploy
npx prisma db seed
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
- name: Build and start services
run: |
cd backend && npm run build && npm run start &
cd frontend && npm run build && npm run preview &
sleep 15
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
REDIS_URL: redis://localhost:6379
NODE_ENV: test
VITE_API_URL: http://localhost:3000
- name: Install Playwright
run: npx playwright install --with-deps chromium
- name: Run visual regression tests
run: |
cd e2e
npx playwright test tests/visual-regression/ --reporter=html
env:
E2E_BASE_URL: http://localhost:5173
E2E_TEST_USER: admin@juhi.com
E2E_TEST_PASSWORD: Admin@123
- if: always()
name: Upload visual diff results
uses: actions/upload-artifact@v4
with:
name: visual-regression-report
path: |
e2e/playwright-report/
e2e/test-results/
retention-days: "30"
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
name: Update baseline screenshots
run: |
cd e2e
npx playwright test tests/visual-regression/ --update-snapshots
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git add tests/visual-regression/**/*.png
git commit -m "chore: update visual regression baselines" || echo "No changes"
git push
timeout-minutes: "30"
services:
postgres:
image: postgres:15
env:
POSTGRES_DB: juhi_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: test_user
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:7
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
...
|
visual-regression
|
null
|
["ubuntu-latest"]
|
23472
|
4
|
1777939333
|
1777939333
|
1777939241
|
1777939334
|
|
0
|
|
0
|
Edit
Delete
|
|
27493
|
20507
|
6
|
5
|
468c7319f39e251cdf8eb96c3aa63f4db200a7db
|
0
|
visual-regression
|
1
|
name: E2E Tests
"on":
# PR validation name: E2E Tests
"on":
# PR validation - 运行关键测试
pull_request:
branches: [main, develop]
paths:
- 'frontend/**'
- 'backend/**'
- 'e2e/**'
- 'package.json'
- 'pnpm-lock.yaml'
# Push to main - 运行完整测试套件
push:
branches: [main]
# 每日定时全量测试 (UTC 时间 00:00 = 北京时间 08:00)
schedule:
- cron: '0 0 * * *'
# 手动触发
workflow_dispatch:
inputs:
test_suite:
description: 'Test suite to run'
required: true
default: 'all'
type: choice
options:
- all
- critical
- business-flows
- visual-regression
- performance
env:
NODE_VERSION: "20"
PNPM_VERSION: "9"
jobs:
visual-regression:
name: visual-regression
runs-on: ubuntu-latest
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.test_suite == 'visual-regression')
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: "0"
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: ${{ env.PNPM_VERSION }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup test database
run: |
cd backend
npx prisma migrate deploy
npx prisma db seed
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
- name: Build and start services
run: |
cd backend && npm run build && npm run start &
cd frontend && npm run build && npm run preview &
sleep 15
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
REDIS_URL: redis://localhost:6379
NODE_ENV: test
VITE_API_URL: http://localhost:3000
- name: Install Playwright
run: npx playwright install --with-deps chromium
- name: Run visual regression tests
run: |
cd e2e
npx playwright test tests/visual-regression/ --reporter=html
env:
E2E_BASE_URL: http://localhost:5173
E2E_TEST_USER: admin@juhi.com
E2E_TEST_PASSWORD: Admin@123
- if: always()
name: Upload visual diff results
uses: actions/upload-artifact@v4
with:
name: visual-regression-report
path: |
e2e/playwright-report/
e2e/test-results/
retention-days: "30"
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
name: Update baseline screenshots
run: |
cd e2e
npx playwright test tests/visual-regression/ --update-snapshots
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git add tests/visual-regression/**/*.png
git commit -m "chore: update visual regression baselines" || echo "No changes"
git push
timeout-minutes: "30"
services:
postgres:
image: postgres:15
env:
POSTGRES_DB: juhi_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: test_user
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:7
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
...
|
visual-regression
|
null
|
["ubuntu-latest"]
|
23769
|
4
|
1778026202
|
1778026202
|
1778025640
|
1778026202
|
|
0
|
|
0
|
Edit
Delete
|
|
27789
|
20796
|
6
|
5
|
468c7319f39e251cdf8eb96c3aa63f4db200a7db
|
0
|
visual-regression
|
1
|
name: E2E Tests
"on":
# PR validation name: E2E Tests
"on":
# PR validation - 运行关键测试
pull_request:
branches: [main, develop]
paths:
- 'frontend/**'
- 'backend/**'
- 'e2e/**'
- 'package.json'
- 'pnpm-lock.yaml'
# Push to main - 运行完整测试套件
push:
branches: [main]
# 每日定时全量测试 (UTC 时间 00:00 = 北京时间 08:00)
schedule:
- cron: '0 0 * * *'
# 手动触发
workflow_dispatch:
inputs:
test_suite:
description: 'Test suite to run'
required: true
default: 'all'
type: choice
options:
- all
- critical
- business-flows
- visual-regression
- performance
env:
NODE_VERSION: "20"
PNPM_VERSION: "9"
jobs:
visual-regression:
name: visual-regression
runs-on: ubuntu-latest
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.test_suite == 'visual-regression')
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: "0"
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: ${{ env.PNPM_VERSION }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup test database
run: |
cd backend
npx prisma migrate deploy
npx prisma db seed
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
- name: Build and start services
run: |
cd backend && npm run build && npm run start &
cd frontend && npm run build && npm run preview &
sleep 15
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
REDIS_URL: redis://localhost:6379
NODE_ENV: test
VITE_API_URL: http://localhost:3000
- name: Install Playwright
run: npx playwright install --with-deps chromium
- name: Run visual regression tests
run: |
cd e2e
npx playwright test tests/visual-regression/ --reporter=html
env:
E2E_BASE_URL: http://localhost:5173
E2E_TEST_USER: admin@juhi.com
E2E_TEST_PASSWORD: Admin@123
- if: always()
name: Upload visual diff results
uses: actions/upload-artifact@v4
with:
name: visual-regression-report
path: |
e2e/playwright-report/
e2e/test-results/
retention-days: "30"
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
name: Update baseline screenshots
run: |
cd e2e
npx playwright test tests/visual-regression/ --update-snapshots
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git add tests/visual-regression/**/*.png
git commit -m "chore: update visual regression baselines" || echo "No changes"
git push
timeout-minutes: "30"
services:
postgres:
image: postgres:15
env:
POSTGRES_DB: juhi_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: test_user
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:7
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
...
|
visual-regression
|
null
|
["ubuntu-latest"]
|
24065
|
4
|
1778112130
|
1778112130
|
1778112041
|
1778112130
|
|
0
|
|
0
|
Edit
Delete
|
|
28085
|
21085
|
6
|
5
|
468c7319f39e251cdf8eb96c3aa63f4db200a7db
|
0
|
visual-regression
|
1
|
name: E2E Tests
"on":
# PR validation name: E2E Tests
"on":
# PR validation - 运行关键测试
pull_request:
branches: [main, develop]
paths:
- 'frontend/**'
- 'backend/**'
- 'e2e/**'
- 'package.json'
- 'pnpm-lock.yaml'
# Push to main - 运行完整测试套件
push:
branches: [main]
# 每日定时全量测试 (UTC 时间 00:00 = 北京时间 08:00)
schedule:
- cron: '0 0 * * *'
# 手动触发
workflow_dispatch:
inputs:
test_suite:
description: 'Test suite to run'
required: true
default: 'all'
type: choice
options:
- all
- critical
- business-flows
- visual-regression
- performance
env:
NODE_VERSION: "20"
PNPM_VERSION: "9"
jobs:
visual-regression:
name: visual-regression
runs-on: ubuntu-latest
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.test_suite == 'visual-regression')
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: "0"
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: ${{ env.PNPM_VERSION }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup test database
run: |
cd backend
npx prisma migrate deploy
npx prisma db seed
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
- name: Build and start services
run: |
cd backend && npm run build && npm run start &
cd frontend && npm run build && npm run preview &
sleep 15
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
REDIS_URL: redis://localhost:6379
NODE_ENV: test
VITE_API_URL: http://localhost:3000
- name: Install Playwright
run: npx playwright install --with-deps chromium
- name: Run visual regression tests
run: |
cd e2e
npx playwright test tests/visual-regression/ --reporter=html
env:
E2E_BASE_URL: http://localhost:5173
E2E_TEST_USER: admin@juhi.com
E2E_TEST_PASSWORD: Admin@123
- if: always()
name: Upload visual diff results
uses: actions/upload-artifact@v4
with:
name: visual-regression-report
path: |
e2e/playwright-report/
e2e/test-results/
retention-days: "30"
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
name: Update baseline screenshots
run: |
cd e2e
npx playwright test tests/visual-regression/ --update-snapshots
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git add tests/visual-regression/**/*.png
git commit -m "chore: update visual regression baselines" || echo "No changes"
git push
timeout-minutes: "30"
services:
postgres:
image: postgres:15
env:
POSTGRES_DB: juhi_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: test_user
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:7
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
...
|
visual-regression
|
null
|
["ubuntu-latest"]
|
24361
|
4
|
1778198916
|
1778198916
|
1778198440
|
1778198917
|
|
0
|
|
0
|
Edit
Delete
|
|
28381
|
21374
|
6
|
5
|
468c7319f39e251cdf8eb96c3aa63f4db200a7db
|
0
|
visual-regression
|
1
|
name: E2E Tests
"on":
# PR validation name: E2E Tests
"on":
# PR validation - 运行关键测试
pull_request:
branches: [main, develop]
paths:
- 'frontend/**'
- 'backend/**'
- 'e2e/**'
- 'package.json'
- 'pnpm-lock.yaml'
# Push to main - 运行完整测试套件
push:
branches: [main]
# 每日定时全量测试 (UTC 时间 00:00 = 北京时间 08:00)
schedule:
- cron: '0 0 * * *'
# 手动触发
workflow_dispatch:
inputs:
test_suite:
description: 'Test suite to run'
required: true
default: 'all'
type: choice
options:
- all
- critical
- business-flows
- visual-regression
- performance
env:
NODE_VERSION: "20"
PNPM_VERSION: "9"
jobs:
visual-regression:
name: visual-regression
runs-on: ubuntu-latest
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.test_suite == 'visual-regression')
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: "0"
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: ${{ env.PNPM_VERSION }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup test database
run: |
cd backend
npx prisma migrate deploy
npx prisma db seed
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
- name: Build and start services
run: |
cd backend && npm run build && npm run start &
cd frontend && npm run build && npm run preview &
sleep 15
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
REDIS_URL: redis://localhost:6379
NODE_ENV: test
VITE_API_URL: http://localhost:3000
- name: Install Playwright
run: npx playwright install --with-deps chromium
- name: Run visual regression tests
run: |
cd e2e
npx playwright test tests/visual-regression/ --reporter=html
env:
E2E_BASE_URL: http://localhost:5173
E2E_TEST_USER: admin@juhi.com
E2E_TEST_PASSWORD: Admin@123
- if: always()
name: Upload visual diff results
uses: actions/upload-artifact@v4
with:
name: visual-regression-report
path: |
e2e/playwright-report/
e2e/test-results/
retention-days: "30"
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
name: Update baseline screenshots
run: |
cd e2e
npx playwright test tests/visual-regression/ --update-snapshots
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git add tests/visual-regression/**/*.png
git commit -m "chore: update visual regression baselines" || echo "No changes"
git push
timeout-minutes: "30"
services:
postgres:
image: postgres:15
env:
POSTGRES_DB: juhi_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: test_user
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:7
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
...
|
visual-regression
|
null
|
["ubuntu-latest"]
|
24657
|
4
|
1778284929
|
1778284929
|
1778284840
|
1778284929
|
|
0
|
|
0
|
Edit
Delete
|
|
28680
|
21666
|
6
|
5
|
468c7319f39e251cdf8eb96c3aa63f4db200a7db
|
0
|
visual-regression
|
1
|
name: E2E Tests
"on":
# PR validation name: E2E Tests
"on":
# PR validation - 运行关键测试
pull_request:
branches: [main, develop]
paths:
- 'frontend/**'
- 'backend/**'
- 'e2e/**'
- 'package.json'
- 'pnpm-lock.yaml'
# Push to main - 运行完整测试套件
push:
branches: [main]
# 每日定时全量测试 (UTC 时间 00:00 = 北京时间 08:00)
schedule:
- cron: '0 0 * * *'
# 手动触发
workflow_dispatch:
inputs:
test_suite:
description: 'Test suite to run'
required: true
default: 'all'
type: choice
options:
- all
- critical
- business-flows
- visual-regression
- performance
env:
NODE_VERSION: "20"
PNPM_VERSION: "9"
jobs:
visual-regression:
name: visual-regression
runs-on: ubuntu-latest
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.test_suite == 'visual-regression')
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: "0"
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: ${{ env.PNPM_VERSION }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup test database
run: |
cd backend
npx prisma migrate deploy
npx prisma db seed
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
- name: Build and start services
run: |
cd backend && npm run build && npm run start &
cd frontend && npm run build && npm run preview &
sleep 15
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
REDIS_URL: redis://localhost:6379
NODE_ENV: test
VITE_API_URL: http://localhost:3000
- name: Install Playwright
run: npx playwright install --with-deps chromium
- name: Run visual regression tests
run: |
cd e2e
npx playwright test tests/visual-regression/ --reporter=html
env:
E2E_BASE_URL: http://localhost:5173
E2E_TEST_USER: admin@juhi.com
E2E_TEST_PASSWORD: Admin@123
- if: always()
name: Upload visual diff results
uses: actions/upload-artifact@v4
with:
name: visual-regression-report
path: |
e2e/playwright-report/
e2e/test-results/
retention-days: "30"
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
name: Update baseline screenshots
run: |
cd e2e
npx playwright test tests/visual-regression/ --update-snapshots
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git add tests/visual-regression/**/*.png
git commit -m "chore: update visual regression baselines" || echo "No changes"
git push
timeout-minutes: "30"
services:
postgres:
image: postgres:15
env:
POSTGRES_DB: juhi_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: test_user
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:7
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
...
|
visual-regression
|
null
|
["ubuntu-latest"]
|
24956
|
4
|
1778372419
|
1778372419
|
1778371241
|
1778372419
|
|
0
|
|
0
|
Edit
Delete
|
|
28978
|
21957
|
6
|
5
|
468c7319f39e251cdf8eb96c3aa63f4db200a7db
|
0
|
visual-regression
|
1
|
name: E2E Tests
"on":
# PR validation name: E2E Tests
"on":
# PR validation - 运行关键测试
pull_request:
branches: [main, develop]
paths:
- 'frontend/**'
- 'backend/**'
- 'e2e/**'
- 'package.json'
- 'pnpm-lock.yaml'
# Push to main - 运行完整测试套件
push:
branches: [main]
# 每日定时全量测试 (UTC 时间 00:00 = 北京时间 08:00)
schedule:
- cron: '0 0 * * *'
# 手动触发
workflow_dispatch:
inputs:
test_suite:
description: 'Test suite to run'
required: true
default: 'all'
type: choice
options:
- all
- critical
- business-flows
- visual-regression
- performance
env:
NODE_VERSION: "20"
PNPM_VERSION: "9"
jobs:
visual-regression:
name: visual-regression
runs-on: ubuntu-latest
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.test_suite == 'visual-regression')
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: "0"
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: ${{ env.PNPM_VERSION }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup test database
run: |
cd backend
npx prisma migrate deploy
npx prisma db seed
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
- name: Build and start services
run: |
cd backend && npm run build && npm run start &
cd frontend && npm run build && npm run preview &
sleep 15
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
REDIS_URL: redis://localhost:6379
NODE_ENV: test
VITE_API_URL: http://localhost:3000
- name: Install Playwright
run: npx playwright install --with-deps chromium
- name: Run visual regression tests
run: |
cd e2e
npx playwright test tests/visual-regression/ --reporter=html
env:
E2E_BASE_URL: http://localhost:5173
E2E_TEST_USER: admin@juhi.com
E2E_TEST_PASSWORD: Admin@123
- if: always()
name: Upload visual diff results
uses: actions/upload-artifact@v4
with:
name: visual-regression-report
path: |
e2e/playwright-report/
e2e/test-results/
retention-days: "30"
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
name: Update baseline screenshots
run: |
cd e2e
npx playwright test tests/visual-regression/ --update-snapshots
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git add tests/visual-regression/**/*.png
git commit -m "chore: update visual regression baselines" || echo "No changes"
git push
timeout-minutes: "30"
services:
postgres:
image: postgres:15
env:
POSTGRES_DB: juhi_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: test_user
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:7
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
...
|
visual-regression
|
null
|
["ubuntu-latest"]
|
25254
|
4
|
1778457733
|
1778457734
|
1778457640
|
1778457734
|
|
0
|
|
0
|
Edit
Delete
|
|
29284
|
22250
|
6
|
5
|
468c7319f39e251cdf8eb96c3aa63f4db200a7db
|
0
|
visual-regression
|
1
|
name: E2E Tests
"on":
# PR validation name: E2E Tests
"on":
# PR validation - 运行关键测试
pull_request:
branches: [main, develop]
paths:
- 'frontend/**'
- 'backend/**'
- 'e2e/**'
- 'package.json'
- 'pnpm-lock.yaml'
# Push to main - 运行完整测试套件
push:
branches: [main]
# 每日定时全量测试 (UTC 时间 00:00 = 北京时间 08:00)
schedule:
- cron: '0 0 * * *'
# 手动触发
workflow_dispatch:
inputs:
test_suite:
description: 'Test suite to run'
required: true
default: 'all'
type: choice
options:
- all
- critical
- business-flows
- visual-regression
- performance
env:
NODE_VERSION: "20"
PNPM_VERSION: "9"
jobs:
visual-regression:
name: visual-regression
runs-on: ubuntu-latest
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.test_suite == 'visual-regression')
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: "0"
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: ${{ env.PNPM_VERSION }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup test database
run: |
cd backend
npx prisma migrate deploy
npx prisma db seed
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
- name: Build and start services
run: |
cd backend && npm run build && npm run start &
cd frontend && npm run build && npm run preview &
sleep 15
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
REDIS_URL: redis://localhost:6379
NODE_ENV: test
VITE_API_URL: http://localhost:3000
- name: Install Playwright
run: npx playwright install --with-deps chromium
- name: Run visual regression tests
run: |
cd e2e
npx playwright test tests/visual-regression/ --reporter=html
env:
E2E_BASE_URL: http://localhost:5173
E2E_TEST_USER: admin@juhi.com
E2E_TEST_PASSWORD: Admin@123
- if: always()
name: Upload visual diff results
uses: actions/upload-artifact@v4
with:
name: visual-regression-report
path: |
e2e/playwright-report/
e2e/test-results/
retention-days: "30"
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
name: Update baseline screenshots
run: |
cd e2e
npx playwright test tests/visual-regression/ --update-snapshots
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git add tests/visual-regression/**/*.png
git commit -m "chore: update visual regression baselines" || echo "No changes"
git push
timeout-minutes: "30"
services:
postgres:
image: postgres:15
env:
POSTGRES_DB: juhi_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: test_user
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:7
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
...
|
visual-regression
|
null
|
["ubuntu-latest"]
|
25560
|
4
|
1778544216
|
1778544217
|
1778544100
|
1778544217
|
|
0
|
|
0
|
Edit
Delete
|
|
29479
|
22433
|
6
|
5
|
cf8ca525a24f7e8f7f02481cf1c6e72f68c3788a
|
0
|
visual-regression
|
1
|
name: E2E Tests
"on":
# PR validation name: E2E Tests
"on":
# PR validation - 运行关键测试
pull_request:
branches: [main, develop]
paths:
- 'frontend/**'
- 'backend/**'
- 'e2e/**'
- 'package.json'
- 'pnpm-lock.yaml'
# Push to main - 运行完整测试套件
push:
branches: [main]
# 每日定时全量测试 (UTC 时间 00:00 = 北京时间 08:00)
schedule:
- cron: '0 0 * * *'
# 手动触发
workflow_dispatch:
inputs:
test_suite:
description: 'Test suite to run'
required: true
default: 'all'
type: choice
options:
- all
- critical
- business-flows
- visual-regression
- performance
env:
NODE_VERSION: "20"
PNPM_VERSION: "9"
jobs:
visual-regression:
name: visual-regression
runs-on: ubuntu-latest
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.test_suite == 'visual-regression')
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: "0"
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: ${{ env.PNPM_VERSION }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup test database
run: |
cd backend
npx prisma migrate deploy
npx prisma db seed
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
- name: Build and start services
run: |
cd backend && npm run build && npm run start &
cd frontend && npm run build && npm run preview &
sleep 15
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
REDIS_URL: redis://localhost:6379
NODE_ENV: test
VITE_API_URL: http://localhost:3000
- name: Install Playwright
run: npx playwright install --with-deps chromium
- name: Run visual regression tests
run: |
cd e2e
npx playwright test tests/visual-regression/ --reporter=html
env:
E2E_BASE_URL: http://localhost:5173
E2E_TEST_USER: admin@juhi.com
E2E_TEST_PASSWORD: Admin@123
- if: always()
name: Upload visual diff results
uses: actions/upload-artifact@v4
with:
name: visual-regression-report
path: |
e2e/playwright-report/
e2e/test-results/
retention-days: "30"
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
name: Update baseline screenshots
run: |
cd e2e
npx playwright test tests/visual-regression/ --update-snapshots
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git add tests/visual-regression/**/*.png
git commit -m "chore: update visual regression baselines" || echo "No changes"
git push
timeout-minutes: "30"
services:
postgres:
image: postgres:15
env:
POSTGRES_DB: juhi_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: test_user
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:7
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
...
|
visual-regression
|
null
|
["ubuntu-latest"]
|
25751
|
2
|
1778598619
|
1778598706
|
1778598488
|
1778598706
|
|
0
|
|
0
|
Edit
Delete
|
|
29688
|
22509
|
6
|
5
|
534799e0b1707368df37aff7b3df545a6ca1064a
|
0
|
visual-regression
|
1
|
name: E2E Tests
"on":
# PR validation name: E2E Tests
"on":
# PR validation - 运行关键测试
pull_request:
branches: [main, develop]
paths:
- 'frontend/**'
- 'backend/**'
- 'e2e/**'
- 'package.json'
- 'pnpm-lock.yaml'
# Push to main - 运行完整测试套件
push:
branches: [main]
# 每日定时全量测试 (UTC 时间 00:00 = 北京时间 08:00)
schedule:
- cron: '0 0 * * *'
# 手动触发
workflow_dispatch:
inputs:
test_suite:
description: 'Test suite to run'
required: true
default: 'all'
type: choice
options:
- all
- critical
- business-flows
- visual-regression
- performance
env:
E2E_SKIP_WEB_SERVER: "true"
NODE_OPTIONS: --max-old-space-size=8192
NODE_VERSION: "20"
PNPM_VERSION: "9"
jobs:
visual-regression:
name: visual-regression
runs-on: ubuntu-latest
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.test_suite == 'visual-regression')
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: "0"
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup test database
run: |
cd backend
npx prisma migrate deploy
npx prisma db seed
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
DIRECT_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
- name: Build and start services
run: |
cd backend && npm run build:fast && npm run start &
cd frontend && npm run build && npm run preview &
sleep 15
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
DIRECT_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
REDIS_URL: redis://localhost:6379
NODE_ENV: test
VITE_API_URL: http://localhost:3000
- name: Install Playwright
run: |
for attempt in 1 2 3; do
pnpm --filter @juhi/e2e exec playwright install --with-deps chromium && exit 0
sleep $((attempt * 20))
done
pnpm --filter @juhi/e2e exec playwright install --with-deps chromium
- name: Run visual regression tests
run: |
cd e2e
npx playwright test tests/visual-regression/ --reporter=html
env:
E2E_BASE_URL: http://localhost:5173
E2E_TEST_USER: admin@juhi.com
E2E_TEST_PASSWORD: Admin@123
- if: always()
name: Upload visual diff results
uses: actions/upload-artifact@v4
with:
name: visual-regression-report
path: |
e2e/playwright-report/
e2e/test-results/
retention-days: "30"
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
name: Update baseline screenshots
run: |
cd e2e
npx playwright test tests/visual-regression/ --update-snapshots
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git add tests/visual-regression/**/*.png
git commit -m "chore: update visual regression baselines" || echo "No changes"
git push
timeout-minutes: "45"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: test_user
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:7
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
permissions:
contents: read
pull-requests: write # github-script 评论 E2E 测试结果
checks: write
issues: write
...
|
visual-regression
|
null
|
["ubuntu-latest"]
|
25872
|
2
|
1778639157
|
1778639247
|
1778624987
|
1778639247
|
|
0
|
|
0
|
Edit
Delete
|
|
29724
|
22516
|
6
|
5
|
534799e0b1707368df37aff7b3df545a6ca1064a
|
0
|
visual-regression
|
1
|
name: E2E Tests
"on":
# PR validation name: E2E Tests
"on":
# PR validation - 运行关键测试
pull_request:
branches: [main, develop]
paths:
- 'frontend/**'
- 'backend/**'
- 'e2e/**'
- 'package.json'
- 'pnpm-lock.yaml'
# Push to main - 运行完整测试套件
push:
branches: [main]
# 每日定时全量测试 (UTC 时间 00:00 = 北京时间 08:00)
schedule:
- cron: '0 0 * * *'
# 手动触发
workflow_dispatch:
inputs:
test_suite:
description: 'Test suite to run'
required: true
default: 'all'
type: choice
options:
- all
- critical
- business-flows
- visual-regression
- performance
env:
E2E_SKIP_WEB_SERVER: "true"
NODE_OPTIONS: --max-old-space-size=8192
NODE_VERSION: "20"
PNPM_VERSION: "9"
jobs:
visual-regression:
name: visual-regression
runs-on: ubuntu-latest
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.test_suite == 'visual-regression')
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: "0"
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup test database
run: |
cd backend
npx prisma migrate deploy
npx prisma db seed
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
DIRECT_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
- name: Build and start services
run: |
cd backend && npm run build:fast && npm run start &
cd frontend && npm run build && npm run preview &
sleep 15
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
DIRECT_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
REDIS_URL: redis://localhost:6379
NODE_ENV: test
VITE_API_URL: http://localhost:3000
- name: Install Playwright
run: |
for attempt in 1 2 3; do
pnpm --filter @juhi/e2e exec playwright install --with-deps chromium && exit 0
sleep $((attempt * 20))
done
pnpm --filter @juhi/e2e exec playwright install --with-deps chromium
- name: Run visual regression tests
run: |
cd e2e
npx playwright test tests/visual-regression/ --reporter=html
env:
E2E_BASE_URL: http://localhost:5173
E2E_TEST_USER: admin@juhi.com
E2E_TEST_PASSWORD: Admin@123
- if: always()
name: Upload visual diff results
uses: actions/upload-artifact@v4
with:
name: visual-regression-report
path: |
e2e/playwright-report/
e2e/test-results/
retention-days: "30"
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
name: Update baseline screenshots
run: |
cd e2e
npx playwright test tests/visual-regression/ --update-snapshots
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git add tests/visual-regression/**/*.png
git commit -m "chore: update visual regression baselines" || echo "No changes"
git push
timeout-minutes: "45"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: test_user
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:7
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
permissions:
contents: read
pull-requests: write # github-script 评论 E2E 测试结果
checks: write
issues: write
...
|
visual-regression
|
null
|
["ubuntu-latest"]
|
25900
|
4
|
1778643279
|
1778643280
|
1778636051
|
1778643280
|
|
0
|
|
0
|
Edit
Delete
|
|
29931
|
22656
|
6
|
5
|
921a6ce5568beb3034fc47d4bf7a392351c0068f
|
0
|
visual-regression
|
1
|
name: E2E Tests
"on":
# PR validation name: E2E Tests
"on":
# PR validation - 运行关键测试
pull_request:
branches: [main, develop]
paths:
- 'frontend/**'
- 'backend/**'
- 'e2e/**'
- 'package.json'
- 'pnpm-lock.yaml'
# Push to main - 运行完整测试套件
push:
branches: [main]
# 每日定时全量测试 (UTC 时间 00:00 = 北京时间 08:00)
schedule:
- cron: '0 0 * * *'
# 手动触发
workflow_dispatch:
inputs:
test_suite:
description: 'Test suite to run'
required: true
default: 'all'
type: choice
options:
- all
- critical
- business-flows
- visual-regression
- performance
env:
E2E_SKIP_WEB_SERVER: "true"
NODE_OPTIONS: --max-old-space-size=8192
NODE_VERSION: "20"
PNPM_VERSION: "9"
jobs:
visual-regression:
name: visual-regression
runs-on: ubuntu-latest
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.test_suite == 'visual-regression')
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: "0"
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup test database
run: |
cd backend
npx prisma migrate deploy
npx prisma db seed
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
DIRECT_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
- name: Build and start services
run: |
cd backend && npm run build:fast && npm run start &
cd frontend && npm run build && npm run preview &
sleep 15
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
DIRECT_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
REDIS_URL: redis://localhost:6379
NODE_ENV: test
VITE_API_URL: http://localhost:3000
- name: Install Playwright
run: |
for attempt in 1 2 3; do
pnpm --filter @juhi/e2e exec playwright install --with-deps chromium && exit 0
sleep $((attempt * 20))
done
pnpm --filter @juhi/e2e exec playwright install --with-deps chromium
- name: Run visual regression tests
run: |
cd e2e
npx playwright test tests/visual-regression/ --reporter=html
env:
E2E_BASE_URL: http://localhost:5173
E2E_TEST_USER: admin@juhi.com
E2E_TEST_PASSWORD: Admin@123
- if: always()
name: Upload visual diff results
uses: actions/upload-artifact@v4
with:
name: visual-regression-report
path: |
e2e/playwright-report/
e2e/test-results/
retention-days: "30"
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
name: Update baseline screenshots
run: |
cd e2e
npx playwright test tests/visual-regression/ --update-snapshots
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git add tests/visual-regression/**/*.png
git commit -m "chore: update visual regression baselines" || echo "No changes"
git push
timeout-minutes: "45"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: test_user
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:7
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
permissions:
contents: read
pull-requests: write # github-script 评论 E2E 测试结果
checks: write
issues: write
...
|
visual-regression
|
null
|
["ubuntu-latest"]
|
26097
|
4
|
1778683822
|
1778683823
|
1778679718
|
1778683823
|
|
0
|
|
0
|
Edit
Delete
|
|
30116
|
22787
|
6
|
5
|
534799e0b1707368df37aff7b3df545a6ca1064a
|
0
|
visual-regression
|
1
|
name: E2E Tests
"on":
# PR validation name: E2E Tests
"on":
# PR validation - 运行关键测试
pull_request:
branches: [main, develop]
paths:
- 'frontend/**'
- 'backend/**'
- 'e2e/**'
- 'package.json'
- 'pnpm-lock.yaml'
# Push to main - 运行完整测试套件
push:
branches: [main]
# 每日定时全量测试 (UTC 时间 00:00 = 北京时间 08:00)
schedule:
- cron: '0 0 * * *'
# 手动触发
workflow_dispatch:
inputs:
test_suite:
description: 'Test suite to run'
required: true
default: 'all'
type: choice
options:
- all
- critical
- business-flows
- visual-regression
- performance
env:
E2E_SKIP_WEB_SERVER: "true"
NODE_OPTIONS: --max-old-space-size=8192
NODE_VERSION: "20"
PNPM_VERSION: "9"
jobs:
visual-regression:
name: visual-regression
runs-on: ubuntu-latest
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.test_suite == 'visual-regression')
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: "0"
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup test database
run: |
cd backend
npx prisma migrate deploy
npx prisma db seed
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
DIRECT_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
- name: Build and start services
run: |
cd backend && npm run build:fast && npm run start &
cd frontend && npm run build && npm run preview &
sleep 15
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
DIRECT_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
REDIS_URL: redis://localhost:6379
NODE_ENV: test
VITE_API_URL: http://localhost:3000
- name: Install Playwright
run: |
for attempt in 1 2 3; do
pnpm --filter @juhi/e2e exec playwright install --with-deps chromium && exit 0
sleep $((attempt * 20))
done
pnpm --filter @juhi/e2e exec playwright install --with-deps chromium
- name: Run visual regression tests
run: |
cd e2e
npx playwright test tests/visual-regression/ --reporter=html
env:
E2E_BASE_URL: http://localhost:5173
E2E_TEST_USER: admin@juhi.com
E2E_TEST_PASSWORD: Admin@123
- if: always()
name: Upload visual diff results
uses: actions/upload-artifact@v4
with:
name: visual-regression-report
path: |
e2e/playwright-report/
e2e/test-results/
retention-days: "30"
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
name: Update baseline screenshots
run: |
cd e2e
npx playwright test tests/visual-regression/ --update-snapshots
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git add tests/visual-regression/**/*.png
git commit -m "chore: update visual regression baselines" || echo "No changes"
git push
timeout-minutes: "45"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: test_user
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:7
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
permissions:
contents: read
pull-requests: write # github-script 评论 E2E 测试结果
checks: write
issues: write
...
|
visual-regression
|
null
|
["ubuntu-latest"]
|
26282
|
4
|
1778717051
|
1778717051
|
1778716801
|
1778717051
|
|
0
|
|
0
|
Edit
Delete
|
|
30401
|
23053
|
6
|
5
|
534799e0b1707368df37aff7b3df545a6ca1064a
|
0
|
visual-regression
|
1
|
name: E2E Tests
"on":
# PR validation name: E2E Tests
"on":
# PR validation - 运行关键测试
pull_request:
branches: [main, develop]
paths:
- 'frontend/**'
- 'backend/**'
- 'e2e/**'
- 'package.json'
- 'pnpm-lock.yaml'
# Push to main - 运行完整测试套件
push:
branches: [main]
# 每日定时全量测试 (UTC 时间 00:00 = 北京时间 08:00)
schedule:
- cron: '0 0 * * *'
# 手动触发
workflow_dispatch:
inputs:
test_suite:
description: 'Test suite to run'
required: true
default: 'all'
type: choice
options:
- all
- critical
- business-flows
- visual-regression
- performance
env:
E2E_SKIP_WEB_SERVER: "true"
NODE_OPTIONS: --max-old-space-size=8192
NODE_VERSION: "20"
PNPM_VERSION: "9"
jobs:
visual-regression:
name: visual-regression
runs-on: ubuntu-latest
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.test_suite == 'visual-regression')
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: "0"
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup test database
run: |
cd backend
npx prisma migrate deploy
npx prisma db seed
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
DIRECT_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
- name: Build and start services
run: |
cd backend && npm run build:fast && npm run start &
cd frontend && npm run build && npm run preview &
sleep 15
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
DIRECT_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
REDIS_URL: redis://localhost:6379
NODE_ENV: test
VITE_API_URL: http://localhost:3000
- name: Install Playwright
run: |
for attempt in 1 2 3; do
pnpm --filter @juhi/e2e exec playwright install --with-deps chromium && exit 0
sleep $((attempt * 20))
done
pnpm --filter @juhi/e2e exec playwright install --with-deps chromium
- name: Run visual regression tests
run: |
cd e2e
npx playwright test tests/visual-regression/ --reporter=html
env:
E2E_BASE_URL: http://localhost:5173
E2E_TEST_USER: admin@juhi.com
E2E_TEST_PASSWORD: Admin@123
- if: always()
name: Upload visual diff results
uses: actions/upload-artifact@v4
with:
name: visual-regression-report
path: |
e2e/playwright-report/
e2e/test-results/
retention-days: "30"
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
name: Update baseline screenshots
run: |
cd e2e
npx playwright test tests/visual-regression/ --update-snapshots
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git add tests/visual-regression/**/*.png
git commit -m "chore: update visual regression baselines" || echo "No changes"
git push
timeout-minutes: "45"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: test_user
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:7
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
permissions:
contents: read
pull-requests: write # github-script 评论 E2E 测试结果
checks: write
issues: write
...
|
visual-regression
|
null
|
["ubuntu-latest"]
|
26561
|
4
|
1778806435
|
1778806435
|
1778803228
|
1778806435
|
|
0
|
|
0
|
Edit
Delete
|
|
30744
|
23358
|
6
|
5
|
534799e0b1707368df37aff7b3df545a6ca1064a
|
0
|
visual-regression
|
1
|
name: E2E Tests
"on":
# PR validation name: E2E Tests
"on":
# PR validation - 运行关键测试
pull_request:
branches: [main, develop]
paths:
- 'frontend/**'
- 'backend/**'
- 'e2e/**'
- 'package.json'
- 'pnpm-lock.yaml'
# Push to main - 运行完整测试套件
push:
branches: [main]
# 每日定时全量测试 (UTC 时间 00:00 = 北京时间 08:00)
schedule:
- cron: '0 0 * * *'
# 手动触发
workflow_dispatch:
inputs:
test_suite:
description: 'Test suite to run'
required: true
default: 'all'
type: choice
options:
- all
- critical
- business-flows
- visual-regression
- performance
env:
E2E_SKIP_WEB_SERVER: "true"
NODE_OPTIONS: --max-old-space-size=8192
NODE_VERSION: "20"
PNPM_VERSION: "9"
jobs:
visual-regression:
name: visual-regression
runs-on: ubuntu-latest
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.test_suite == 'visual-regression')
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: "0"
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup test database
run: |
cd backend
npx prisma migrate deploy
npx prisma db seed
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
DIRECT_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
- name: Build and start services
run: |
cd backend && npm run build:fast && npm run start &
cd frontend && npm run build && npm run preview &
sleep 15
env:
DATABASE_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
DIRECT_URL: postgresql://test_user:test_password@localhost:5432/juhi_test
REDIS_URL: redis://localhost:6379
NODE_ENV: test
VITE_API_URL: http://localhost:3000
- name: Install Playwright
run: |
for attempt in 1 2 3; do
pnpm --filter @juhi/e2e exec playwright install --with-deps chromium && exit 0
sleep $((attempt * 20))
done
pnpm --filter @juhi/e2e exec playwright install --with-deps chromium
- name: Run visual regression tests
run: |
cd e2e
npx playwright test tests/visual-regression/ --reporter=html
env:
E2E_BASE_URL: http://localhost:5173
E2E_TEST_USER: admin@juhi.com
E2E_TEST_PASSWORD: Admin@123
- if: always()
name: Upload visual diff results
uses: actions/upload-artifact@v4
with:
name: visual-regression-report
path: |
e2e/playwright-report/
e2e/test-results/
retention-days: "30"
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
name: Update baseline screenshots
run: |
cd e2e
npx playwright test tests/visual-regression/ --update-snapshots
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git add tests/visual-regression/**/*.png
git commit -m "chore: update visual regression baselines" || echo "No changes"
git push
timeout-minutes: "45"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: test_user
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:7
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
permissions:
contents: read
pull-requests: write # github-script 评论 E2E 测试结果
checks: write
issues: write
...
|
visual-regression
|
null
|
["ubuntu-latest"]
|
26902
|
4
|
1778892242
|
1778892242
|
1778889628
|
1778892242
|
|
0
|
|
0
|
Edit
Delete
|
|
40088
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file-volta-extends (macos-15-intel)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file-volta-extends:
name: version-file-volta-extends (macos-15-intel)
runs-on: macos-15-intel
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/package-volta-extends.json
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
os:
- macos-15-intel
...
|
version-file-volta-extends
|
null
|
["macos-15-intel"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950480
|
|
0
|
|
0
|
Edit
Delete
|
|
40089
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file-volta-extends (macos-latest)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file-volta-extends:
name: version-file-volta-extends (macos-latest)
runs-on: macos-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/package-volta-extends.json
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
os:
- macos-latest
...
|
version-file-volta-extends
|
null
|
["macos-latest"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950480
|
|
0
|
|
0
|
Edit
Delete
|
|
40090
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file-volta-extends (ubuntu-latest)
|
1
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file-volta-extends:
name: version-file-volta-extends (ubuntu-latest)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/package-volta-extends.json
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
os:
- ubuntu-latest
...
|
version-file-volta-extends
|
null
|
["ubuntu-latest"]
|
33291
|
1
|
1791846871
|
1791846876
|
1791844717
|
1791846876
|
|
0
|
|
0
|
Edit
Delete
|
|
40091
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file-volta-extends (windows-latest)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file-volta-extends:
name: version-file-volta-extends (windows-latest)
runs-on: windows-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/package-volta-extends.json
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
os:
- windows-latest
...
|
version-file-volta-extends
|
null
|
["windows-latest"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950480
|
|
0
|
|
0
|
Edit
Delete
|
|
40084
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file-volta (macos-15-intel)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file-volta:
name: version-file-volta (macos-15-intel)
runs-on: macos-15-intel
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/package-volta.json
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
os:
- macos-15-intel
...
|
version-file-volta
|
null
|
["macos-15-intel"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950480
|
|
0
|
|
0
|
Edit
Delete
|
|
40085
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file-volta (macos-latest)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file-volta:
name: version-file-volta (macos-latest)
runs-on: macos-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/package-volta.json
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
os:
- macos-latest
...
|
version-file-volta
|
null
|
["macos-latest"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950480
|
|
0
|
|
0
|
Edit
Delete
|
|
40086
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file-volta (ubuntu-latest)
|
1
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file-volta:
name: version-file-volta (ubuntu-latest)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/package-volta.json
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
os:
- ubuntu-latest
...
|
version-file-volta
|
null
|
["ubuntu-latest"]
|
33290
|
1
|
1791846865
|
1791846871
|
1791844717
|
1791846871
|
|
0
|
|
0
|
Edit
Delete
|
|
40087
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file-volta (windows-latest)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file-volta:
name: version-file-volta (windows-latest)
runs-on: windows-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/package-volta.json
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
os:
- windows-latest
...
|
version-file-volta
|
null
|
["windows-latest"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950480
|
|
0
|
|
0
|
Edit
Delete
|
|
40081
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file-dev-engines (macos-latest)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file-dev-engines:
name: version-file-dev-engines (macos-latest)
runs-on: macos-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/package-dev-engines.json
- name: Verify node
run: __tests__/verify-node.sh 26
strategy:
fail-fast: "false"
matrix:
os:
- macos-latest
...
|
version-file-dev-engines
|
null
|
["macos-latest"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950480
|
|
0
|
|
0
|
Edit
Delete
|
|
40082
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file-dev-engines (ubuntu-latest)
|
1
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file-dev-engines:
name: version-file-dev-engines (ubuntu-latest)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/package-dev-engines.json
- name: Verify node
run: __tests__/verify-node.sh 26
strategy:
fail-fast: "false"
matrix:
os:
- ubuntu-latest
...
|
version-file-dev-engines
|
null
|
["ubuntu-latest"]
|
33289
|
1
|
1791846860
|
1791846865
|
1791844717
|
1791846865
|
|
0
|
|
0
|
Edit
Delete
|
|
40083
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file-dev-engines (windows-latest)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file-dev-engines:
name: version-file-dev-engines (windows-latest)
runs-on: windows-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/package-dev-engines.json
- name: Verify node
run: __tests__/verify-node.sh 26
strategy:
fail-fast: "false"
matrix:
os:
- windows-latest
...
|
version-file-dev-engines
|
null
|
["windows-latest"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950480
|
|
0
|
|
0
|
Edit
Delete
|
|
40061
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (.nvmrc, macos-15-intel)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (.nvmrc, macos-15-intel)
runs-on: macos-15-intel
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- .nvmrc
os:
- macos-15-intel
...
|
version-file
|
null
|
["macos-15-intel"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950479
|
|
0
|
|
0
|
Edit
Delete
|
|
40062
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (.nvmrc, macos-latest)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (.nvmrc, macos-latest)
runs-on: macos-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- .nvmrc
os:
- macos-latest
...
|
version-file
|
null
|
["macos-latest"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950479
|
|
0
|
|
0
|
Edit
Delete
|
|
40063
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (.nvmrc, ubuntu-latest)
|
1
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (.nvmrc, ubuntu-latest)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- .nvmrc
os:
- ubuntu-latest
...
|
version-file
|
null
|
["ubuntu-latest"]
|
33284
|
1
|
1791846817
|
1791846822
|
1791844717
|
1791846822
|
|
0
|
|
0
|
Edit
Delete
|
|
40064
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (.nvmrc, windows-latest)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (.nvmrc, windows-latest)
runs-on: windows-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- .nvmrc
os:
- windows-latest
...
|
version-file
|
null
|
["windows-latest"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950479
|
|
0
|
|
0
|
Edit
Delete
|
|
40065
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (.tool-versions, macos-15-intel)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (.tool-versions, macos-15-intel)
runs-on: macos-15-intel
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- .tool-versions
os:
- macos-15-intel
...
|
version-file
|
null
|
["macos-15-intel"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950479
|
|
0
|
|
0
|
Edit
Delete
|
|
40066
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (.tool-versions, macos-latest)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (.tool-versions, macos-latest)
runs-on: macos-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- .tool-versions
os:
- macos-latest
...
|
version-file
|
null
|
["macos-latest"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950479
|
|
0
|
|
0
|
Edit
Delete
|
|
40067
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (.tool-versions, ubuntu-latest)
|
1
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (.tool-versions, ubuntu-latest)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- .tool-versions
os:
- ubuntu-latest
...
|
version-file
|
null
|
["ubuntu-latest"]
|
33285
|
1
|
1791846822
|
1791846841
|
1791844717
|
1791846841
|
|
0
|
|
0
|
Edit
Delete
|
|
40068
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (.tool-versions, windows-latest)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (.tool-versions, windows-latest)
runs-on: windows-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- .tool-versions
os:
- windows-latest
...
|
version-file
|
null
|
["windows-latest"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950479
|
|
0
|
|
0
|
Edit
Delete
|
|
40069
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (.tool-versions-node, macos-15-intel)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (.tool-versions-node, macos-15-intel)
runs-on: macos-15-intel
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- .tool-versions-node
os:
- macos-15-intel
...
|
version-file
|
null
|
["macos-15-intel"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950479
|
|
0
|
|
0
|
Edit
Delete
|
|
40070
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (.tool-versions-node, macos-latest)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (.tool-versions-node, macos-latest)
runs-on: macos-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- .tool-versions-node
os:
- macos-latest
...
|
version-file
|
null
|
["macos-latest"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950479
|
|
0
|
|
0
|
Edit
Delete
|
|
40071
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (.tool-versions-node, ubuntu-latest)
|
1
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (.tool-versions-node, ubuntu-latest)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- .tool-versions-node
os:
- ubuntu-latest
...
|
version-file
|
null
|
["ubuntu-latest"]
|
33286
|
1
|
1791846841
|
1791846847
|
1791844717
|
1791846847
|
|
0
|
|
0
|
Edit
Delete
|
|
40072
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (.tool-versions-node, windows-latest)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (.tool-versions-node, windows-latest)
runs-on: windows-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- .tool-versions-node
os:
- windows-latest
...
|
version-file
|
null
|
["windows-latest"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950479
|
|
0
|
|
0
|
Edit
Delete
|
|
40073
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (mise.toml, macos-15-intel)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (mise.toml, macos-15-intel)
runs-on: macos-15-intel
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- mise.toml
os:
- macos-15-intel
...
|
version-file
|
null
|
["macos-15-intel"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950479
|
|
0
|
|
0
|
Edit
Delete
|
|
40074
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (mise.toml, macos-latest)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (mise.toml, macos-latest)
runs-on: macos-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- mise.toml
os:
- macos-latest
...
|
version-file
|
null
|
["macos-latest"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950479
|
|
0
|
|
0
|
Edit
Delete
|
|
40075
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (mise.toml, ubuntu-latest)
|
1
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (mise.toml, ubuntu-latest)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- mise.toml
os:
- ubuntu-latest
...
|
version-file
|
null
|
["ubuntu-latest"]
|
33287
|
1
|
1791846847
|
1791846852
|
1791844717
|
1791846853
|
|
0
|
|
0
|
Edit
Delete
|
|
40076
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (mise.toml, windows-latest)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (mise.toml, windows-latest)
runs-on: windows-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- mise.toml
os:
- windows-latest
...
|
version-file
|
null
|
["windows-latest"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950479
|
|
0
|
|
0
|
Edit
Delete
|
|
40077
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (package.json, macos-15-intel)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (package.json, macos-15-intel)
runs-on: macos-15-intel
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- package.json
os:
- macos-15-intel
...
|
version-file
|
null
|
["macos-15-intel"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950479
|
|
0
|
|
0
|
Edit
Delete
|
|
40078
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (package.json, macos-latest)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (package.json, macos-latest)
runs-on: macos-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- package.json
os:
- macos-latest
...
|
version-file
|
null
|
["macos-latest"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950479
|
|
0
|
|
0
|
Edit
Delete
|
|
40079
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (package.json, ubuntu-latest)
|
1
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (package.json, ubuntu-latest)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- package.json
os:
- ubuntu-latest
...
|
version-file
|
null
|
["ubuntu-latest"]
|
33288
|
1
|
1791846853
|
1791846860
|
1791844717
|
1791846860
|
|
0
|
|
0
|
Edit
Delete
|
|
40080
|
25668
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
version-file (package.json, windows-latest)
|
0
|
name: versions
"on":
pull_request:
name: versions
"on":
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
jobs:
version-file:
name: version-file (package.json, windows-latest)
runs-on: windows-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Setup node from node version file
uses: ./
with:
node-version-file: __tests__/data/${{ matrix.node-version-file }}
- name: Verify node
run: __tests__/verify-node.sh 24
strategy:
fail-fast: "false"
matrix:
node-version-file:
- package.json
os:
- windows-latest
...
|
version-file
|
null
|
["windows-latest"]
|
0
|
3
|
0
|
1791950475
|
1791844717
|
1791950480
|
|
0
|
|
0
|
Edit
Delete
|
|
14411
|
10018
|
6
|
5
|
8c225d73253fe95a23618816b2f7e6a03010cae4
|
0
|
验证总结
|
1
|
name: PR Validation
"on":
pull_request name: PR Validation
"on":
pull_request:
branches: [main, develop]
types: [opened, synchronize, reopened]
env:
NODE_VERSION: "20"
PNPM_VERSION: "8"
jobs:
validation-summary:
name: 验证总结
runs-on: ubuntu-latest
if: always()
steps:
- name: 输出验证结果
run: |
echo "## PR 验证结果"
echo ""
echo "| 检查项 | 状态 |"
echo "|--------|------|"
echo "| 后端验证 | ${{ needs.backend-validation.result || 'skipped' }} |"
echo "| 前端验证 | ${{ needs.frontend-validation.result || 'skipped' }} |"
echo "| 共享包验证 | ${{ needs.shared-validation.result || 'skipped' }} |"
echo "| 提交信息 | ${{ needs.commit-validation.result }} |"
- name: 检查是否通过
run: |
BACKEND="${{ needs.backend-validation.result }}"
FRONTEND="${{ needs.frontend-validation.result }}"
SHARED="${{ needs.shared-validation.result }}"
if [ "$BACKEND" == "failure" ] || [ "$FRONTEND" == "failure" ] || [ "$SHARED" == "failure" ]; then
echo "❌ PR 验证失败"
exit 1
fi
echo "✅ PR 验证通过"
...
|
validation-summary
|
["backend-validation","frontend-valida ["backend-validation","frontend-validation","shared-validation","commit-validation"]...
|
["ubuntu-latest"]
|
11872
|
1
|
1774952026
|
1774952026
|
1774950059
|
1774952026
|
|
1
|
|
0
|
Edit
Delete
|
|
25583
|
18855
|
6
|
5
|
982b47544d9cefb513875cc84c6c36bf1ee27fb2
|
0
|
验证总结
|
1
|
name: PR Validation
"on":
pull_request name: PR Validation
"on":
pull_request:
branches: [main, develop]
types: [opened, synchronize, reopened]
env:
NODE_VERSION: "20"
PNPM_VERSION: "8"
jobs:
validation-summary:
name: 验证总结
runs-on: ubuntu-latest
if: always()
steps:
- name: 输出验证结果
run: |
echo "## PR 验证结果"
echo ""
echo "| 检查项 | 状态 |"
echo "|--------|------|"
echo "| 后端验证 | ${{ needs.backend-validation.result || 'skipped' }} |"
echo "| 前端验证 | ${{ needs.frontend-validation.result || 'skipped' }} |"
echo "| 共享包验证 | ${{ needs.shared-validation.result || 'skipped' }} |"
echo "| 提交信息 | ${{ needs.commit-validation.result }} |"
- name: 检查是否通过
run: |
BACKEND="${{ needs.backend-validation.result }}"
FRONTEND="${{ needs.frontend-validation.result }}"
SHARED="${{ needs.shared-validation.result }}"
if [ "$BACKEND" == "failure" ] || [ "$FRONTEND" == "failure" ] || [ "$SHARED" == "failure" ]; then
echo "❌ PR 验证失败"
exit 1
fi
echo "✅ PR 验证通过"
...
|
validation-summary
|
["backend-validation","frontend-valida ["backend-validation","frontend-validation","shared-validation","commit-validation"]...
|
["ubuntu-latest"]
|
21941
|
1
|
1777522376
|
1777522376
|
1777515701
|
1777522376
|
|
1
|
|
0
|
Edit
Delete
|
|
25691
|
18901
|
6
|
5
|
00e6c41c98f5eca066cac8efd4dc9e91dfe5f583
|
0
|
验证总结
|
1
|
name: PR Validation
"on":
pull_request name: PR Validation
"on":
pull_request:
branches: [main, develop]
types: [opened, synchronize, reopened]
env:
NODE_VERSION: "20"
PNPM_VERSION: "8"
jobs:
validation-summary:
name: 验证总结
runs-on: ubuntu-latest
if: always()
steps:
- name: 输出验证结果
run: |
echo "## PR 验证结果"
echo ""
echo "| 检查项 | 状态 |"
echo "|--------|------|"
echo "| 后端验证 | ${{ needs.backend-validation.result || 'skipped' }} |"
echo "| 前端验证 | ${{ needs.frontend-validation.result || 'skipped' }} |"
echo "| 共享包验证 | ${{ needs.shared-validation.result || 'skipped' }} |"
echo "| 提交信息 | ${{ needs.commit-validation.result }} |"
- name: 检查是否通过
run: |
BACKEND="${{ needs.backend-validation.result }}"
FRONTEND="${{ needs.frontend-validation.result }}"
SHARED="${{ needs.shared-validation.result }}"
if [ "$BACKEND" == "failure" ] || [ "$FRONTEND" == "failure" ] || [ "$SHARED" == "failure" ]; then
echo "❌ PR 验证失败"
exit 1
fi
echo "✅ PR 验证通过"
...
|
validation-summary
|
["backend-validation","frontend-valida ["backend-validation","frontend-validation","shared-validation","commit-validation"]...
|
["ubuntu-latest"]
|
22037
|
1
|
1777545557
|
1777545558
|
1777531658
|
1777545558
|
|
1
|
|
0
|
Edit
Delete
|
|
25957
|
19092
|
6
|
5
|
468c7319f39e251cdf8eb96c3aa63f4db200a7db
|
0
|
验证总结
|
1
|
name: PR Validation
"on":
pull_request name: PR Validation
"on":
pull_request:
branches: [main, develop]
types: [opened, synchronize, reopened]
env:
NODE_VERSION: "20"
PNPM_VERSION: "8"
jobs:
validation-summary:
name: 验证总结
runs-on: ubuntu-latest
if: always()
steps:
- name: 输出验证结果
run: |
echo "## PR 验证结果"
echo ""
echo "| 检查项 | 状态 |"
echo "|--------|------|"
echo "| 后端验证 | ${{ needs.backend-validation.result || 'skipped' }} |"
echo "| 前端验证 | ${{ needs.frontend-validation.result || 'skipped' }} |"
echo "| 共享包验证 | ${{ needs.shared-validation.result || 'skipped' }} |"
echo "| 提交信息 | ${{ needs.commit-validation.result }} |"
- name: 检查是否通过
run: |
BACKEND="${{ needs.backend-validation.result }}"
FRONTEND="${{ needs.frontend-validation.result }}"
SHARED="${{ needs.shared-validation.result }}"
if [ "$BACKEND" == "failure" ] || [ "$FRONTEND" == "failure" ] || [ "$SHARED" == "failure" ]; then
echo "❌ PR 验证失败"
exit 1
fi
echo "✅ PR 验证通过"
...
|
validation-summary
|
["backend-validation","frontend-valida ["backend-validation","frontend-validation","shared-validation","commit-validation"]...
|
["ubuntu-latest"]
|
22282
|
1
|
1777609300
|
1777609301
|
1777597469
|
1777609301
|
|
1
|
|
0
|
Edit
Delete
|