name: Attachment journey videos # Manual-only (workflow_dispatch): records full video runthroughs of the # attachment user journeys — the Files view (load + facets + CRUD affordances) # and the chat attachment upload flow — and uploads the .webm recordings + # traces + screenshots as artifacts (E2E_RECORD=1 → e2e-recordings/). Kept off # PR/develop CI to keep those runs fast; trigger from the Actions tab when a # journey video is wanted. Runs on top of the keyless ui-smoke stub stack # (no secrets), and the renderer build picks up @elizaos/core via the # core-build pre-step in run-ui-playwright.mjs. on: workflow_dispatch: env: BUN_VERSION: "canary" NODE_VERSION: "24.15.0" jobs: attachment-journey-videos: name: Attachment journey videos runs-on: ${{ fromJSON(vars.HETZNER_FLEET_ONLINE == 'false' && '["ubuntu-24.04"]' || '["self-hosted","hetzner-robot"]') }} timeout-minutes: 40 steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 with: submodules: false - name: Setup Node.js uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e with: node-version: ${{ env.NODE_VERSION }} - name: Setup workspace dependencies uses: ./.github/actions/setup-bun-workspace with: bun-version: ${{ env.BUN_VERSION }} install-command: bun install --ignore-scripts --no-frozen-lockfile install-native-deps: "false" skip-avatar-clone: "true" no-vision-deps: "true" - name: Ensure generated shared i18n data run: node packages/app-core/scripts/ensure-shared-i18n-data.mjs - name: Install Playwright browsers run: bunx playwright install --with-deps chromium - name: Record attachment journeys (Files view + chat attachment) run: bun run --cwd packages/app test:e2e:record test/ui-smoke/files-view.spec.ts test/ui-smoke/chat-attachment.spec.ts --project=chromium - name: Upload journey videos + traces if: always() uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a with: name: attachment-journey-videos path: | e2e-recordings/ packages/app/playwright-report/ if-no-files-found: warn retention-days: 14