name: Terminal IME E2E on: # Let pr.yml own costly real-IBus path routing; a separate pull_request trigger would run every PR. workflow_call: workflow_dispatch: inputs: diagnose_wayland_input: description: Capture passive Wayland input diagnostics while running both native lanes required: false type: boolean default: false schedule: - cron: '30 9 * * *' permissions: contents: read env: ORCA_BACKGROUND_LAUNCH: '1' jobs: linux-x11: name: Linux X11 terminal IME runs-on: ubuntu-22.04 timeout-minutes: 25 steps: - name: Checkout uses: actions/checkout@v6 with: persist-credentials: false - name: Install native build and IME tools run: >- sudo apt-get update && sudo apt-get install -y build-essential dbus-x11 dconf-gsettings-backend ibus ibus-hangul libglib2.0-bin python3 xdotool xfwm4 xvfb - uses: ./.github/actions/install-node-dependencies with: native-runtime: electron - name: Build Electron app for E2E run: pnpm exec electron-vite build --mode e2e - name: Run deterministic terminal IME boundary tests run: >- xvfb-run --auto-servernum env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1 pnpm run test:e2e tests/e2e/terminal-ime-exact-byte.spec.ts --workers=1 - name: Run native IBus Hangul exact-byte tests # Run native half despite synthetic failure: independent signals must both appear, rather than default success() hiding native evidence. if: '!cancelled()' env: SKIP_BUILD: '1' run: pnpm run test:e2e:terminal-ime-native - name: Upload terminal IME evidence if: always() uses: actions/upload-artifact@v7 with: name: terminal-ime-evidence path: test-results/ retention-days: 7 if-no-files-found: ignore linux-wayland: name: Linux Wayland Hangul terminating digit runs-on: ubuntu-22.04 timeout-minutes: 25 steps: - uses: actions/checkout@v6 with: persist-credentials: false - name: Install native build, nested compositor and IME tools run: >- sudo apt-get update && sudo apt-get install -y build-essential python3 fonts-noto-cjk dbus-x11 dconf-gsettings-backend ibus ibus-hangul gnome-shell gnome-settings-daemon libglib2.0-bin xdotool xvfb x11-utils imagemagick - uses: ./.github/actions/install-node-dependencies with: native-runtime: electron - name: Build Electron app for E2E env: VITE_EXPOSE_STORE: 'true' run: | pnpm run build:wsl-guest pnpm exec electron-vite build --mode e2e pnpm run build:web-from-renderer - name: Run native Wayland Hangul terminating digit env: SKIP_BUILD: '1' ORCA_E2E_WAYLAND_INPUT_DIAGNOSTICS: ${{ inputs.diagnose_wayland_input && '1' || '' }} run: node config/scripts/run-terminal-ibus-hangul-e2e.mjs --nested-wayland - name: Upload Wayland terminal IME evidence if: always() uses: actions/upload-artifact@v7 with: name: terminal-wayland-ime-evidence path: test-results/ retention-days: 7 if-no-files-found: error