mirror of
https://github.com/lobehub/lobehub.git
synced 2026-03-26 13:19:34 +07:00
Only 4 checkouts truly need full git history (tag operations, branch sync). The remaining 18 occurrences were used in build/lint/test jobs that only need the current commit. Also removed redundant fetch-tags: true where fetch-depth: 0 already implies full tag fetch.
131 lines
4.3 KiB
YAML
131 lines
4.3 KiB
YAML
name: Claude Auto E2E Testing
|
|
description: Automatically add E2E tests to improve user journey coverage
|
|
|
|
on:
|
|
schedule:
|
|
# Run daily at 21:00 UTC (05:00 Beijing Time)
|
|
- cron: '0 21 * * *'
|
|
workflow_dispatch:
|
|
inputs:
|
|
target_module:
|
|
description: 'Specific module/feature to add E2E tests (e.g., agent/conversation, knowledge/rag)'
|
|
required: false
|
|
type: string
|
|
|
|
concurrency:
|
|
group: auto-e2e-testing
|
|
cancel-in-progress: false
|
|
|
|
env:
|
|
DATABASE_URL: postgresql://postgres:postgres@localhost:5432/postgres
|
|
DATABASE_DRIVER: node
|
|
KEY_VAULTS_SECRET: LA7n9k3JdEcbSgml2sxfw+4TV1AzaaFU5+R176aQz4s=
|
|
AUTH_SECRET: e2e-test-secret-key-for-better-auth-32chars!
|
|
AUTH_EMAIL_VERIFICATION: '0'
|
|
S3_ACCESS_KEY_ID: e2e-mock-access-key
|
|
S3_SECRET_ACCESS_KEY: e2e-mock-secret-key
|
|
S3_BUCKET: e2e-mock-bucket
|
|
S3_ENDPOINT: https://e2e-mock-s3.localhost
|
|
|
|
jobs:
|
|
add-e2e-tests:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
permissions:
|
|
contents: write
|
|
pull-requests: write
|
|
id-token: write
|
|
|
|
services:
|
|
postgres:
|
|
image: paradedb/paradedb:latest
|
|
env:
|
|
POSTGRES_PASSWORD: postgres
|
|
options: >-
|
|
--health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
|
|
|
|
ports:
|
|
- 5432:5432
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v6
|
|
|
|
- name: Setup Bun
|
|
uses: oven-sh/setup-bun@v2
|
|
|
|
- name: Install dependencies
|
|
run: bun install --frozen-lockfile
|
|
|
|
- name: Install Playwright browsers (with system deps)
|
|
run: bunx playwright install --with-deps chromium
|
|
|
|
- name: Run database migrations
|
|
run: bun run db:migrate
|
|
|
|
- name: Build application
|
|
run: bun run build
|
|
env:
|
|
SKIP_LINT: '1'
|
|
|
|
- name: Configure Git
|
|
run: |
|
|
git config --global user.name "claude-bot[bot]"
|
|
git config --global user.email "claude-bot[bot]@users.noreply.github.com"
|
|
|
|
- name: Copy prompts
|
|
run: |
|
|
mkdir -p /tmp/claude-prompts
|
|
cp .claude/prompts/auto-e2e-testing.md /tmp/claude-prompts/
|
|
cp .claude/prompts/security-rules.md /tmp/claude-prompts/
|
|
cp e2e/CLAUDE.md /tmp/claude-prompts/e2e-guide.md
|
|
|
|
- name: Run Claude Code for Auto E2E Testing
|
|
uses: anthropics/claude-code-action@v1
|
|
with:
|
|
github_token: ${{ secrets.GH_TOKEN }}
|
|
allowed_non_write_users: '*'
|
|
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
|
claude_args: |
|
|
--allowedTools "Bash,Read,Edit,Write,Glob,Grep"
|
|
--append-system-prompt "$(cat /tmp/claude-prompts/security-rules.md)"
|
|
prompt: |
|
|
Follow the auto E2E testing guide located at:
|
|
```bash
|
|
cat /tmp/claude-prompts/auto-e2e-testing.md
|
|
```
|
|
|
|
Also read the E2E testing reference guide:
|
|
```bash
|
|
cat /tmp/claude-prompts/e2e-guide.md
|
|
```
|
|
|
|
## Task Assignment
|
|
|
|
${{ inputs.target_module && format('Process the specified module/feature: {0}', inputs.target_module) || 'Automatically select one module/feature from the product modules table that needs E2E coverage' }}
|
|
|
|
## Environment Information
|
|
- Repository: ${{ github.repository }}
|
|
- Branch: ${{ github.ref_name }}
|
|
- Target Module: ${{ inputs.target_module || 'Auto-select' }}
|
|
- Run ID: ${{ github.run_id }}
|
|
|
|
## E2E Runtime Environment
|
|
- PostgreSQL is running at localhost:5432 (user: postgres, password: postgres)
|
|
- Application has been built and is ready to start
|
|
- Playwright chromium is installed
|
|
- To start the server for E2E tests, run: `bunx next start -p 3006 &` from the project root, then wait for it to be ready
|
|
- Run E2E tests with: `cd e2e && BASE_URL=http://localhost:3006 pnpm exec cucumber-js --config cucumber.config.js --tags "<your-tags>"`
|
|
|
|
**Start the auto E2E testing process now.**
|
|
|
|
- name: Upload E2E test artifacts (on failure)
|
|
if: failure()
|
|
uses: actions/upload-artifact@v6
|
|
with:
|
|
name: e2e-artifacts
|
|
path: |
|
|
e2e/reports
|
|
e2e/screenshots
|
|
if-no-files-found: ignore
|