Files
wehub-resource-sync 426e9eeabd
Benchmark Bridge Tests / benchmark (bunx @biomejs/biome check packages/lifeops-bench/src, benchmark-lint) (push) Waiting to run
Benchmark Bridge Tests / benchmark (bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests, benchmark-tests) (push) Waiting to run
Build Agent Image / build-and-push (push) Waiting to run
Chat shell gestures / Chat shell gesture + parity e2e (push) Waiting to run
ci / test (push) Waiting to run
ci / lint-and-format (push) Waiting to run
ci / build (push) Waiting to run
ci / dev-startup (push) Waiting to run
Cloud Gateway Discord / Test (push) Waiting to run
Cloud Gateway Webhook / Test (push) Waiting to run
Cloud Tests / lint-and-types (push) Waiting to run
Cloud Tests / unit-tests (push) Waiting to run
Cloud Tests / integration-tests (push) Waiting to run
Cloud Tests / e2e-tests (push) Blocked by required conditions
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Deploy Apps Worker (Product 2) / Determine environment (push) Waiting to run
Deploy Apps Worker (Product 2) / Deploy apps worker to apps-control host (${{ needs.determine-env.outputs.environment }}) (push) Blocked by required conditions
Deploy Eliza Provisioning Worker / Determine environment (push) Waiting to run
Deploy Eliza Provisioning Worker / Deploy worker to Hetzner host (${{ needs.determine-env.outputs.environment }} @ ${{ needs.determine-env.outputs.deployment_sha }}) (push) Blocked by required conditions
Dev Smoke / Classify changed paths (push) Waiting to run
Dev Smoke / bun run dev onboarding chat (push) Blocked by required conditions
Dev Smoke / Vite HMR dependency-level smoke (push) Blocked by required conditions
Electrobun Submodule Guard / electrobun gitlink is fetchable (push) Waiting to run
gitleaks / gitleaks (push) Waiting to run
Markdown Links / Relative Markdown Links (push) Waiting to run
Publish @elizaos/example-code / check_npm (push) Waiting to run
Publish @elizaos/example-code / publish_npm (push) Blocked by required conditions
Publish @elizaos/plugin-elizacloud / verify_version (push) Waiting to run
Publish @elizaos/plugin-elizacloud / publish_npm (push) Blocked by required conditions
Quality (Extended) / Homepage Build (PR smoke) (push) Waiting to run
Quality (Extended) / Comment-only diff guard (push) Waiting to run
Quality (Extended) / Format + Type Safety Ratchet (push) Waiting to run
Quality (Extended) / Develop Gate (secret scan + UI determinism) (push) Waiting to run
Quality (Extended) / Develop Gate (lint) (push) Waiting to run
Sandbox Live Smoke / Sandbox live smoke (push) Waiting to run
Snap Build & Test / Build Snap (amd64) (push) Waiting to run
Snap Build & Test / Build Snap (arm64) (push) Waiting to run
supply-chain / sbom (push) Waiting to run
supply-chain / vulnerability-scan (push) Waiting to run
Build, Push & Deploy to Phala Cloud / build-and-push (push) Waiting to run
Test Packaging / Validate Packaging Configs (push) Waiting to run
Test Packaging / PyPI on Python ${{ matrix.python }} (push) Waiting to run
Test Packaging / Pack & Test JS Tarballs (push) Waiting to run
Test Packaging / elizaos CLI global-install smoke (node + bun) (push) Waiting to run
UI Fixture E2E / ui-fixture-e2e (push) Waiting to run
UI Fixture E2E / fixture-e2e (push) Waiting to run
UI Story Gate / story-gate (push) Waiting to run
vault-ci / test (macos-latest) (push) Waiting to run
vault-ci / test (ubuntu-latest) (push) Waiting to run
vault-ci / test (windows-latest) (push) Waiting to run
vault-ci / app-core wiring tests (push) Waiting to run
verify-patches / verify patches/CHECKSUMS.sha256 (push) Waiting to run
Voice Benchmark Smoke / voice-emotion fixture smoke (push) Waiting to run
Voice Benchmark Smoke / voiceagentbench fixture smoke (push) Waiting to run
Voice Benchmark Smoke / voicebench-quality unit smoke (push) Waiting to run
Voice Benchmark Smoke / voicebench TypeScript unit (no audio) (push) Waiting to run
Voice Benchmark Smoke / voice bench smoke summary (push) Blocked by required conditions
Windows CI / windows ([bun run --cwd packages/app-core test bun run --cwd packages/elizaos test bun run --cwd packages/cloud/shared test], app-and-cli) (push) Waiting to run
Windows CI / windows ([bun run --cwd packages/scenario-runner test bun run --cwd packages/vault test bun run --cwd packages/security test bun run --cwd plugins/plugin-coding-tools test], framework-packages) (push) Waiting to run
Windows CI / windows ([bun run --cwd plugins/plugin-elizacloud test bun run --cwd plugins/plugin-discord test bun run --cwd plugins/plugin-anthropic test bun run --cwd plugins/plugin-openai test bun run --cwd plugins/plugin-app-control test bun run --cwd plugins/pl… (push) Waiting to run
Windows CI / windows ([node packages/scripts/run-turbo.mjs run build --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/agent --concurrency=4 node packages/scripts/run-bash-linux-only.mjs scripts/verify-riscv64-buildpaths.sh node packages/scripts/run… (push) Waiting to run
Windows CI / windows ([node packages/scripts/run-turbo.mjs run typecheck --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/cloud-shared --concurrency=4 bun run --cwd packages/core test bun run --cwd packages/shared test], core-runtime, 75) (push) Waiting to run
Test Packaging / Build & Test PyPI Package (push) Waiting to run
Voice Workbench / headless workbench (mocked backends) (push) Has been cancelled
Voice Workbench / real acoustic lane (nightly, provisioned only) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:43:05 +08:00

195 lines
9.0 KiB
YAML

name: UI Fixture E2E
# #9310 section 3.16: the packages/ui fixture e2e runners (src/**/__e2e__/run-*.mjs)
# esbuild-bundle REAL shipped components into a self-contained page and drive
# them with real input in headless Chromium: no app server, no credentials,
# fully deterministic. All were verified to run locally, but only the chat
# gesture trio (ui-e2e-gate.yml), the swipe/perf set (chat-shell-gestures.yml),
# and tutorial/perf-gate (test.yml) had CI legs; the ten runners below were
# wired to NO workflow, so a regression in the agent-surface bridge, bottombar,
# ambient background, background/launcher/connectors pages, view lifecycle, or
# chat widgets could only be caught by hand. This gates them on packages/ui
# changes. Mirrors ui-e2e-gate.yml (lean bun workspace + Playwright Chromium;
# the runners self-bundle from source, so no dist build is needed).
#
# fused-wake is keyless too: it self-skips (exit 0 + ::notice::) unless the
# prebuilt libwakeword + hey-eliza models are staged, so on this runner it
# documents the skip instead of silently not existing.
on:
# Reusable entry for the scheduled exhaustive develop lane (#12342).
workflow_call:
pull_request:
branches: [develop, main]
paths:
- "packages/ui/src/**"
- ".github/workflows/ui-fixture-e2e.yml"
push:
branches: [main, develop]
paths:
- "packages/ui/src/**"
# CI fan-out fix: the PR-scoped concurrency from #14069 fell back to
# github.run_id on push, so every develop push got a unique group and
# nothing ever superseded. A 37-merge wave queued thousands of push runs
# and starved the self-hosted fleet. Fall back to github.ref (all develop
# pushes share a group) and cancel superseded runs on push too. PR behavior
# is unchanged (pull_request.number still wins the key); merge_group and
# schedule events are not in the cancel set, so the merge queue and nightly
# runs always complete.
concurrency:
group: ui-fixture-e2e-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' || github.event_name == 'push' }}
permissions:
contents: read
env:
BUN_VERSION: "canary"
NODE_VERSION: "24.15.0"
jobs:
fixture-e2e:
runs-on: ${{ fromJSON(vars.HETZNER_FLEET_ONLINE == 'false' && '["ubuntu-24.04"]' || '["self-hosted","hetzner-robot"]') }}
timeout-minutes: 30
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
install-native-deps: "false"
skip-avatar-clone: "true"
no-vision-deps: "true"
- name: Install Playwright Chromium + WebKit
run: .github/scripts/install-playwright-browsers.sh chromium webkit
# The permission-priming fixture pulls @elizaos/shared, whose i18n module
# loads generated keyword data that is gitignored. Generate it so the
# esbuild bundle resolves (mirrors ui-e2e-gate.yml / chat-shell-gestures.yml).
- name: Ensure generated shared i18n data
run: node packages/app-core/scripts/ensure-shared-i18n-data.mjs
# Agent capability bridge: synthetic fixture + REAL plugin-task-coordinator
# components driven purely through window.__agentSurface.
- name: Agent-surface bridge e2e
run: bun run --cwd packages/ui test:agent-surface-e2e
# Chromeless desktop bottom bar (#9953): resting -> open -> type -> vision flow.
- name: Bottombar e2e
run: bun run --cwd packages/ui test:bottombar-e2e
# /chat ambient background: pulse phases + reduced-motion still.
- name: Chat ambient background e2e
run: bun run --cwd packages/ui test:chat-ambient-e2e
# Unified app background: swatch/upload/agent-apply/undo/redo chain.
- name: Background view e2e
run: bun run --cwd packages/ui test:background-e2e
# Settings page sections and persisted local state.
- name: Settings page e2e
run: bun run --cwd packages/ui test:settings-e2e
# Infinite upward scroll (#13532): the REAL useLoadOlderOnScroll +
# loadOlderConversationMessages — scroll-to-top fires a ?before= fetch,
# older rows prepend, the viewport anchor stays put, plus the empty-history
# (no fetch) and fetch-failure (no fabricated prepend, no retry storm) legs.
# Both engines: scroll-anchor-on-prepend is engine-specific and was FLAKY
# on WebKit until #14329 (double-rAF anchor expiry) — this lane guards it.
- name: Chat infinite-scroll e2e (chromium)
run: bun run --cwd packages/ui test:chat-infinite-scroll-e2e
- name: Chat infinite-scroll e2e (webkit)
run: ENGINE=webkit bun run --cwd packages/ui test:chat-infinite-scroll-e2e
# Launcher view: tiles, tap-launch, long-press edit, page-nav, telemetry.
- name: Launcher e2e
run: bun run --cwd packages/ui test:launcher-e2e
# Connector card config/setup-panel co-rendering (#10705).
- name: Connectors page e2e
run: bun run --cwd packages/ui test:connectors-e2e
# View lifecycle contract (#10202): LRU retention, pause, evict, leaks.
- name: View lifecycle e2e
run: bun run --cwd packages/ui test:view-lifecycle-e2e
# OrchestratorAccountsView render states with a clean console.
- name: Orchestrator accounts widget e2e
run: bun run --cwd packages/ui test:orchestrator-accounts-e2e
# Wallet widget default + held-balance display states.
- name: Wallet widget e2e
run: bun run --cwd packages/ui test:wallet-widget-e2e
# Agent-activity surfaces (#13535): the REAL TurnStatus working indicator +
# ToolCallEventLog inline row across thinking / tool-running / settled, after
# the 900ms grace, desktop + mobile.
- name: Activity feedback e2e
run: bun run --cwd packages/ui test:activity-feedback-e2e
# Inline task-activity pipeline (#13536): the grouped task → sub-agent →
# step tree (nested sub-agents, in-place tool steps, live plan checklist,
# workflow pipeline) renders on real store shapes with a clean console.
- name: Task pipeline widget e2e
run: bun run --cwd packages/ui test:task-pipeline-e2e
# Onboarding permission-priming modal: the soft-ask gesture flow end to end
# (Enable → OS request → advance, scripted denial → recovery callout →
# Continue, final grant → primed), desktop + mobile.
- name: Permission priming e2e
run: bun run --cwd packages/ui test:permission-priming-e2e
# Divider drag interaction stays within the perf budget under real layout.
- name: Divider drag perf gate
run: bun run --cwd packages/ui test:divider-drag-perf-gate
# Locale-sensitive home shell labels render without falling back to keys.
- name: Home locale e2e
run: bun run --cwd packages/ui test:home-locale-e2e
# Real-browser widget certification evidence layer.
- name: Widget certification e2e
run: bun run --cwd packages/ui test:widget-cert-e2e
# Full-chain fused wake (#10351): self-skips with ::notice:: unless
# libwakeword + hey-eliza models are staged on the runner.
- name: Fused-wake integration e2e (self-skipping)
run: bun run --cwd packages/ui test:fused-wake-integration-e2e
- name: Upload fixture e2e artifacts
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: ui-fixture-e2e-output
path: |
packages/ui/src/agent-surface/__e2e__/output
packages/ui/src/components/shell/__e2e__/output
packages/ui/src/components/shell/__e2e__/output-bottombar
packages/ui/src/components/pages/__e2e__/output-background
packages/ui/src/components/pages/__e2e__/output-infinite-scroll
packages/ui/src/components/pages/__e2e__/output-launcher
packages/ui/src/components/pages/__e2e__/output-connectors
packages/ui/src/components/pages/__e2e__/output-settings
packages/ui/src/components/views/__e2e__/output-view-lifecycle
packages/ui/src/components/chat/widgets/__e2e__/output
packages/ui/src/components/chat/widgets/__e2e__/output-ftu
packages/ui/src/components/chat/widgets/__e2e__/output-wallet
packages/ui/src/components/chat/__e2e__/output-activity-feedback
packages/ui/src/components/permissions/__e2e__/output-permission-priming
packages/ui/src/components/composites/__e2e__/output-divider-perf
packages/ui/src/components/shell/__e2e__/output-home-locale
packages/ui/src/testing/__e2e__/output-widget-cert
retention-days: 14
if-no-files-found: ignore