nexu-io--open-design
181 行
5.5 KiB
YAML
181 行
5.5 KiB
YAML
name: ui-extended-main
|
|
|
|
on:
|
|
schedule:
|
|
# 02:00 UTC = 10:00 Asia/Shanghai
|
|
- cron: "0 2 * * *"
|
|
workflow_dispatch:
|
|
inputs:
|
|
suite:
|
|
description: "UI suite to run"
|
|
required: true
|
|
default: p0
|
|
type: choice
|
|
options:
|
|
- p0
|
|
- p0p1
|
|
- full
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: ui-extended-main-${{ github.event_name }}-${{ github.ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
ui_p0:
|
|
name: UI P0 (${{ matrix.name }})
|
|
if: ${{ github.repository == 'nexu-io/open-design' && github.event_name == 'workflow_dispatch' && inputs.suite != 'full' }}
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 45
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- name: entry-settings
|
|
shard: entry-settings
|
|
- name: project-runtime
|
|
shard: project-runtime
|
|
- name: workspace-restoration
|
|
shard: workspace-restoration
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v6.0.2
|
|
|
|
- name: Setup workspace
|
|
uses: ./.github/actions/setup-workspace
|
|
|
|
- name: Setup Playwright
|
|
uses: ./.github/actions/setup-playwright
|
|
with:
|
|
package-json-path: e2e/package.json
|
|
install-command: pnpm -C e2e exec playwright install --with-deps chromium
|
|
|
|
- name: Prebuild workspace type declarations
|
|
run: |
|
|
pnpm --filter @open-design/daemon build
|
|
pnpm --filter @open-design/desktop build
|
|
pnpm --filter @open-design/web build:sidecar
|
|
|
|
- name: Clean Playwright state
|
|
run: pnpm -C e2e exec tsx scripts/playwright.ts clean
|
|
|
|
- name: Run UI shell smoke
|
|
run: pnpm -C e2e exec tsx scripts/playwright.ts run-ui-group smoke
|
|
|
|
- name: Run UI P0 domain
|
|
run: pnpm -C e2e exec tsx scripts/playwright.ts run-ui-group ${{ matrix.shard }}
|
|
|
|
- name: Upload Playwright debug artifact
|
|
if: ${{ always() }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: ui-p0-${{ github.run_id }}-${{ matrix.name }}
|
|
path: |
|
|
e2e/ui/reports/playwright-html-report
|
|
e2e/ui/reports/test-results
|
|
e2e/ui/reports/results.json
|
|
e2e/ui/test-results
|
|
if-no-files-found: ignore
|
|
retention-days: 7
|
|
|
|
ui_extended:
|
|
name: UI P1 (${{ matrix.name }})
|
|
if: ${{ github.repository == 'nexu-io/open-design' && github.event_name == 'workflow_dispatch' && inputs.suite == 'p0p1' }}
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 45
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- name: P1 shard 1
|
|
part: p1
|
|
command: pnpm -C e2e exec playwright test -c playwright.config.ts ui --grep '\[P1\]' --shard=1/2
|
|
- name: P1 shard 2
|
|
part: p1
|
|
command: pnpm -C e2e exec playwright test -c playwright.config.ts ui --grep '\[P1\]' --shard=2/2
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v6.0.2
|
|
|
|
- name: Setup workspace
|
|
uses: ./.github/actions/setup-workspace
|
|
|
|
- name: Setup Playwright
|
|
uses: ./.github/actions/setup-playwright
|
|
with:
|
|
package-json-path: e2e/package.json
|
|
install-command: pnpm -C e2e exec playwright install --with-deps chromium
|
|
|
|
- name: Prebuild workspace type declarations
|
|
run: |
|
|
pnpm --filter @open-design/daemon build
|
|
pnpm --filter @open-design/desktop build
|
|
pnpm --filter @open-design/web build:sidecar
|
|
|
|
- name: Clean Playwright state
|
|
run: pnpm -C e2e exec tsx scripts/playwright.ts clean
|
|
|
|
- name: Run UI P1 shard
|
|
run: ${{ matrix.command }}
|
|
|
|
- name: Upload Playwright debug artifact
|
|
if: ${{ always() }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: ui-extended-main-${{ github.run_id }}-${{ matrix.part }}-${{ matrix.name }}
|
|
path: |
|
|
e2e/ui/reports/playwright-html-report
|
|
e2e/ui/reports/test-results
|
|
e2e/ui/reports/results.json
|
|
e2e/ui/test-results
|
|
if-no-files-found: ignore
|
|
retention-days: 7
|
|
|
|
ui_full:
|
|
name: Full UI regression
|
|
if: ${{ github.repository == 'nexu-io/open-design' && (github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && inputs.suite == 'full')) }}
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 120
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v6.0.2
|
|
|
|
- name: Setup workspace
|
|
uses: ./.github/actions/setup-workspace
|
|
|
|
- name: Setup Playwright
|
|
uses: ./.github/actions/setup-playwright
|
|
with:
|
|
package-json-path: e2e/package.json
|
|
install-command: pnpm -C e2e exec playwright install --with-deps chromium
|
|
|
|
- name: Prebuild workspace type declarations
|
|
run: |
|
|
pnpm --filter @open-design/daemon build
|
|
pnpm --filter @open-design/desktop build
|
|
pnpm --filter @open-design/web build:sidecar
|
|
|
|
- name: Clean Playwright state
|
|
run: pnpm -C e2e exec tsx scripts/playwright.ts clean
|
|
|
|
- name: Run full UI
|
|
run: pnpm -C e2e test:ui
|
|
|
|
- name: Upload Playwright debug artifact
|
|
if: ${{ always() }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: ui-full-${{ github.run_id }}
|
|
path: |
|
|
e2e/ui/reports/playwright-html-report
|
|
e2e/ui/reports/test-results
|
|
e2e/ui/reports/results.json
|
|
e2e/ui/test-results
|
|
if-no-files-found: ignore
|
|
retention-days: 7
|