name: ui-release # Tier 2 (release) workflow. Runs on tag push. # # Currently mirrors the Tier 1 step set. Visual regression baseline # checks and the macOS-runner iOS smoke job are landed in later phases # of ui/PLAN.md and live as commented sections at the end of this file # until those phases ship. on: push: tags: - 'v*' jobs: test: runs-on: ubuntu-latest defaults: run: shell: bash steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version-file: go.work cache: true - name: Run Go tests # client/ is the deprecated Fyne client; excluded from CI per # ui/PLAN.md ยง74. -count=1 disables Go's test cache so a green # run never depends on a previous runner's cached state. The # backend suite is run with -p 1 because most backend packages # spawn their own Postgres testcontainer, and parallel # Postgres bootstraps starve each other on a constrained # runner. pkg modules are listed one by one because ./pkg/... # does not recurse across the independent go.work modules # under pkg/. run: | go test -count=1 -p 1 ./backend/... go test -count=1 \ ./gateway/... \ ./game/... \ ./pkg/calc/... \ ./pkg/connector/... \ ./pkg/cronutil/... \ ./pkg/error/... \ ./pkg/geoip/... \ ./pkg/model/... \ ./pkg/postgres/... \ ./pkg/redisconn/... \ ./pkg/schema/... \ ./pkg/storage/... \ ./pkg/transcoder/... \ ./pkg/util/... - name: Set up pnpm uses: pnpm/action-setup@v4 with: version: 11.0.7 - name: Set up Node uses: actions/setup-node@v4 with: node-version: 22 cache: pnpm cache-dependency-path: ui/pnpm-lock.yaml - name: Install npm dependencies working-directory: ui run: pnpm install --frozen-lockfile - name: Install Playwright browsers working-directory: ui/frontend run: pnpm exec playwright install --with-deps - name: Run Vitest working-directory: ui/frontend run: pnpm test - name: Run Playwright working-directory: ui/frontend run: pnpm exec playwright test - name: Upload Playwright report on failure if: failure() uses: actions/upload-artifact@v4 with: name: playwright-report path: ui/frontend/playwright-report/ retention-days: 14 - name: Upload Playwright traces on failure if: failure() uses: actions/upload-artifact@v4 with: name: playwright-traces path: ui/frontend/test-results/ retention-days: 14 # visual-regression: enabled in Phase 33 of ui/PLAN.md, once the PWA # shell and service worker land and a snapshot baseline is committed # under ui/frontend/tests/__snapshots__/. # # visual-regression: # runs-on: ubuntu-latest # needs: test # steps: # - uses: actions/checkout@v4 # - uses: pnpm/action-setup@v4 # with: { version: 11.0.7 } # - uses: actions/setup-node@v4 # with: # node-version: 22 # cache: pnpm # cache-dependency-path: ui/pnpm-lock.yaml # - working-directory: ui # run: pnpm install --frozen-lockfile # - working-directory: ui/frontend # run: pnpm exec playwright install --with-deps # - working-directory: ui/frontend # run: pnpm exec playwright test --grep @visual # ios-smoke: enabled in Phase 32 of ui/PLAN.md, once the Capacitor # wrapper lands. Runs a Capacitor + Appium smoke against an iOS # simulator on a macOS runner. # # ios-smoke: # runs-on: macos-13 # needs: test # steps: # - uses: actions/checkout@v4 # - uses: pnpm/action-setup@v4 # with: { version: 11.0.7 } # - uses: actions/setup-node@v4 # with: # node-version: 22 # cache: pnpm # cache-dependency-path: ui/pnpm-lock.yaml # - working-directory: ui # run: pnpm install --frozen-lockfile # - working-directory: ui/mobile # run: pnpm exec cap sync ios && pnpm exec appium-smoke ios