name: Terminal IME E2E on: workflow_dispatch: schedule: - cron: '30 9 * * *' permissions: contents: read 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 - name: Setup Node.js uses: actions/setup-node@v6 with: node-version-file: package.json - name: Setup pnpm uses: pnpm/action-setup@v6 with: run_install: false - name: Use external node-gyp to avoid pnpm bundled copy run: | npm install -g node-gyp@11.5.0 echo "npm_config_node_gyp=$(npm root -g)/node-gyp/bin/node-gyp.js" >> "$GITHUB_ENV" - name: Install dependencies run: pnpm install --frozen-lockfile - 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 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