mirror of
https://github.com/tinyhumansai/openhuman.git
synced 2026-07-27 21:08:00 +00:00
test(e2e): deep chat-harness coverage + streaming mock LLM + rust-e2e Linux lane (#1892)
This commit is contained in:
@@ -133,11 +133,24 @@ jobs:
|
||||
- name: Build E2E app
|
||||
run: pnpm --filter openhuman-app test:e2e:build
|
||||
|
||||
- name: Run E2E (smoke + mega-flow)
|
||||
- name: Run E2E (smoke)
|
||||
if: ${{ !inputs.full }}
|
||||
run: |
|
||||
xvfb-run -a --server-args="-screen 0 1280x960x24" \
|
||||
bash app/scripts/e2e-run-session.sh test/e2e/specs/smoke.spec.ts smoke
|
||||
|
||||
# Mega-flow exercises the OAuth-success-deep-link and Composio
|
||||
# trigger-lifecycle paths. Both currently hit a pre-existing race
|
||||
# in the deep-link → custom-event propagation on the Linux CI
|
||||
# image (smoke.spec.ts has a related skipped `it()` with the
|
||||
# same root cause). Keep mega-flow visible in CI as a signal but
|
||||
# non-blocking, mirroring the pre-refactor behavior — once the
|
||||
# auth/oauth deep-link race lands a fix, drop the
|
||||
# `continue-on-error` and consolidate the two steps.
|
||||
- name: Run E2E (mega-flow, non-blocking)
|
||||
if: ${{ !inputs.full }}
|
||||
continue-on-error: true
|
||||
run: |
|
||||
xvfb-run -a --server-args="-screen 0 1280x960x24" \
|
||||
bash app/scripts/e2e-run-session.sh test/e2e/specs/mega-flow.spec.ts mega-flow
|
||||
|
||||
@@ -147,17 +160,65 @@ jobs:
|
||||
xvfb-run -a --server-args="-screen 0 1280x960x24" \
|
||||
bash app/scripts/e2e-run-session.sh
|
||||
|
||||
- name: Upload e2e artifacts
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v5
|
||||
# Artifact uploads intentionally omitted — this reusable workflow
|
||||
# is invoked from release-staging.yml and release-production.yml,
|
||||
# and uploaded logs can carry mock-backend payloads, env-var
|
||||
# echoes, and CDP transcripts that we don't want pinned to a
|
||||
# release artifact. Local repro: rerun the spec via Docker and
|
||||
# the same logs land in /tmp.
|
||||
|
||||
# Rust-side E2E counterpart to the Tauri runs above. Same Linux-only
|
||||
# scope (CI does not run this on macOS or Windows — the Rust core is
|
||||
# platform-independent, so one OS is enough signal). Boots the same
|
||||
# `scripts/mock-api-server.mjs` the Tauri specs hit, then runs every
|
||||
# `tests/*_e2e.rs` suite against it.
|
||||
rust-e2e-linux:
|
||||
if: inputs.run_linux
|
||||
name: E2E (Linux / Rust integration suite)
|
||||
runs-on: ubuntu-22.04
|
||||
container:
|
||||
image: ghcr.io/tinyhumansai/openhuman_ci:latest
|
||||
timeout-minutes: 60
|
||||
env:
|
||||
CARGO_INCREMENTAL: '0'
|
||||
RUST_BACKTRACE: '1'
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
with:
|
||||
name: e2e-artifacts-linux
|
||||
path: |
|
||||
app/test/e2e/artifacts/
|
||||
${{ runner.temp }}/openhuman-e2e-app-*.log
|
||||
${{ runner.temp }}/appium-e2e-*.log
|
||||
if-no-files-found: ignore
|
||||
retention-days: 7
|
||||
ref: ${{ inputs.ref }}
|
||||
fetch-depth: 1
|
||||
submodules: recursive
|
||||
|
||||
- name: Cache pnpm store
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: ~/.local/share/pnpm/store
|
||||
key: pnpm-store-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
pnpm-store-${{ runner.os }}-
|
||||
|
||||
- name: Cache Rust build artifacts
|
||||
uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
workspaces: . -> target
|
||||
cache-on-failure: true
|
||||
key: rust-e2e-linux
|
||||
|
||||
- name: Install JS dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Ensure .env exists for tests
|
||||
run: |
|
||||
touch .env
|
||||
touch app/.env
|
||||
|
||||
- name: Run Rust E2E suite (tests/*_e2e.rs vs mock backend)
|
||||
run: pnpm test:rust:e2e
|
||||
|
||||
# No artifact uploads here either — same release-workflow reuse
|
||||
# concern as the Tauri job above. Mock-backend log lives at
|
||||
# /tmp/openhuman-rust-e2e-mock.log for local docker repro.
|
||||
|
||||
e2e-macos:
|
||||
if: inputs.run_macos
|
||||
@@ -259,17 +320,8 @@ jobs:
|
||||
if: ${{ inputs.full }}
|
||||
run: bash app/scripts/e2e-run-session.sh
|
||||
|
||||
- name: Upload e2e artifacts
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: e2e-artifacts-macos
|
||||
path: |
|
||||
app/test/e2e/artifacts/
|
||||
${{ runner.temp }}/openhuman-e2e-app-*.log
|
||||
${{ runner.temp }}/appium-e2e-*.log
|
||||
if-no-files-found: ignore
|
||||
retention-days: 7
|
||||
# Artifact uploads intentionally omitted — see e2e-linux for the
|
||||
# reusable-workflow-is-also-used-by-releases rationale.
|
||||
|
||||
e2e-windows:
|
||||
if: inputs.run_windows
|
||||
@@ -355,14 +407,5 @@ jobs:
|
||||
shell: bash
|
||||
run: bash app/scripts/e2e-run-session.sh
|
||||
|
||||
- name: Upload e2e artifacts
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: e2e-artifacts-windows
|
||||
path: |
|
||||
app/test/e2e/artifacts/
|
||||
${{ runner.temp }}/openhuman-e2e-app-*.log
|
||||
${{ runner.temp }}/appium-e2e-*.log
|
||||
if-no-files-found: ignore
|
||||
retention-days: 7
|
||||
# Artifact uploads intentionally omitted — see e2e-linux for the
|
||||
# reusable-workflow-is-also-used-by-releases rationale.
|
||||
|
||||
Reference in New Issue
Block a user