Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
581c81f
Add web Playwright e2e lane
senamakel May 25, 2026
6baef07
Migrate auth callback flow to Playwright
senamakel May 25, 2026
3a0b984
Merge remote-tracking branch 'upstream/main' into codex/web-shell-pla…
senamakel May 25, 2026
c2231c9
Migrate channels and command palette to Playwright
senamakel May 25, 2026
b68f218
Stabilize Playwright bootstrap and add settings debug coverage
senamakel May 25, 2026
4a9040a
Merge remote-tracking branch 'upstream/main' into codex/web-shell-pla…
senamakel May 25, 2026
40ba8f3
Migrate additional browser-compatible flows to Playwright
senamakel May 25, 2026
2be21d8
Migrate settings and notifications to Playwright
senamakel May 25, 2026
2c45fb9
Migrate advanced and account settings to Playwright
senamakel May 25, 2026
3882dd5
Migrate channel permissions settings to Playwright
senamakel May 25, 2026
4f5bf77
Migrate rewards progression persistence to Playwright
senamakel May 25, 2026
98adbad
Add Playwright auth access control coverage
senamakel May 25, 2026
0573209
Broaden Playwright core session support
senamakel May 25, 2026
8e2a961
Add Playwright connector migration scaffold
senamakel May 25, 2026
0b9503f
Migrate chat harness flows to Playwright
senamakel May 25, 2026
6ed1c5f
Migrate auth and walkthrough flows to Playwright
senamakel May 25, 2026
599933b
Stabilize Playwright connector scaffold
senamakel May 25, 2026
aa36d0b
Stabilize Playwright connector auth and routing
senamakel May 25, 2026
24538d2
Merge remote-tracking branch 'upstream/main' into codex/web-shell-pla…
senamakel May 25, 2026
ca3714d
Harden Playwright walkthrough dismissal
senamakel May 25, 2026
2ccbd50
Migrate additional skills flows to Playwright
senamakel May 25, 2026
24564ba
Migrate voice mode coverage to Playwright
senamakel May 25, 2026
6ce54cd
Migrate route and connectivity smokes to Playwright
senamakel May 25, 2026
ff8d653
Migrate skill family smokes to Playwright
senamakel May 25, 2026
70d8d1a
Migrate tool and webhook smokes to Playwright
senamakel May 25, 2026
f3c351b
Migrate channel provider smokes to Playwright
senamakel May 25, 2026
55842d7
Migrate harness tool flows to Playwright
senamakel May 25, 2026
1419481
Migrate harness and memory flows to Playwright
senamakel May 25, 2026
7bb4b9d
Migrate telegram and cron flows to Playwright
senamakel May 25, 2026
a63d04f
Migrate billing and bridge smokes to Playwright
senamakel May 25, 2026
9eb285b
Migrate remaining browser-safe flows to Playwright
senamakel May 25, 2026
af19b05
Merge remote-tracking branch 'upstream/main' into codex/web-shell-pla…
senamakel May 25, 2026
a765b4f
Update E2E workflow lanes
senamakel May 25, 2026
b774cbe
Format Playwright migration files
senamakel May 25, 2026
6be30e7
Adjust lint config for Playwright specs
senamakel May 25, 2026
8f08665
Merge remote-tracking branch 'upstream/main' into codex/web-shell-pla…
senamakel May 25, 2026
9de8f9a
Merge remote-tracking branch 'upstream/main' into codex/web-shell-pla…
senamakel May 25, 2026
e1f952a
Stabilize Playwright Docker web lane
senamakel May 25, 2026
e62b094
Stabilize Playwright chat flow specs
senamakel May 25, 2026
b5a22b7
chore(ci): make long-running steps cancel-aware
senamakel May 25, 2026
810c178
Split voice coverage between Playwright and WDIO
senamakel May 25, 2026
f9743f0
Fix E2E CI coverage and Linux mega flow
senamakel May 25, 2026
8225f1f
Clean up Linux mega flow skip path
senamakel May 25, 2026
35c9152
Merge remote-tracking branch 'upstream/main' into codex/web-shell-pla…
senamakel May 25, 2026
96e41b7
Merge remote-tracking branch 'upstream/main' into codex/web-shell-pla…
senamakel May 25, 2026
de3cb88
Stabilize flaky Playwright harness specs
senamakel May 25, 2026
dfdcab0
Merge remote-tracking branch 'upstream/main' into codex/web-shell-pla…
senamakel May 26, 2026
c21def4
Harden Playwright thread setup helpers
senamakel May 26, 2026
02160f6
Split Playwright and relax release workflows
senamakel May 26, 2026
56a96fa
Merge branch 'main' into codex/web-shell-playwright
senamakel May 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/android-compile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ jobs:
cache: 'pnpm'

- name: Install dependencies
run: pnpm install --frozen-lockfile
run: bash scripts/ci-cancel-aware.sh pnpm install --frozen-lockfile

# Hard gate: mobile Tauri host compiles for Android.
- name: cargo check -- mobile host (aarch64-linux-android)
run: cargo check --manifest-path app/src-tauri-mobile/Cargo.toml --target aarch64-linux-android
run: bash scripts/ci-cancel-aware.sh cargo check --manifest-path app/src-tauri-mobile/Cargo.toml --target aarch64-linux-android
10 changes: 5 additions & 5 deletions .github/workflows/build-desktop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -238,9 +238,9 @@ jobs:
!= 'true') || (matrix.settings.platform != 'windows-latest' && steps.tauri-cli-cache-unix.outputs.cache-hit
!= 'true')
shell: bash
run: cargo install --locked --path app/src-tauri/vendor/tauri-cef/crates/tauri-cli
run: bash scripts/ci-cancel-aware.sh cargo install --locked --path app/src-tauri/vendor/tauri-cef/crates/tauri-cli
- name: Install dependencies
run: pnpm install --frozen-lockfile
run: bash scripts/ci-cancel-aware.sh pnpm install --frozen-lockfile

- name: Validate signing prerequisites
# The minisign pubkey is baked into the static tauri.conf.json, not
Expand Down Expand Up @@ -349,7 +349,7 @@ jobs:
if [ -z "${OPENHUMAN_CORE_SENTRY_DSN}" ]; then
echo "::warning::vars.OPENHUMAN_CORE_SENTRY_DSN (or legacy vars.OPENHUMAN_SENTRY_DSN) is empty — the standalone CLI artifact will ship without crash reporting."
fi
cargo build \
bash scripts/ci-cancel-aware.sh cargo build \
--manifest-path "$CORE_MANIFEST" \
--target "$MATRIX_TARGET" \
--bin "$CORE_BIN_NAME"
Expand Down Expand Up @@ -440,7 +440,7 @@ jobs:
# macOS / Windows take the original single-call path.
if [ "${RUNNER_OS}" = "Linux" ]; then
echo "[appimage-fix] linux split build: compile first to fetch CEF"
NODE_OPTIONS="--max-old-space-size=8192" cargo tauri build --no-bundle $PROFILE_FLAG -c "$TAURI_CONFIG_OVERRIDE" $MATRIX_ARGS
NODE_OPTIONS="--max-old-space-size=8192" bash ../scripts/ci-cancel-aware.sh cargo tauri build --no-bundle $PROFILE_FLAG -c "$TAURI_CONFIG_OVERRIDE" $MATRIX_ARGS
CEF_LIB_DIR="$(find "$HOME/.cache/tauri-cef" -name libcef.so -printf '%h\n' 2>/dev/null | head -1)"
if [ -z "$CEF_LIB_DIR" ]; then
echo "::error::libcef.so not found under ~/.cache/tauri-cef after --no-bundle compile; cannot satisfy lib4bin ldd resolution." >&2
Expand All @@ -449,7 +449,7 @@ jobs:
echo "[appimage-fix] prepending CEF lib dir to LD_LIBRARY_PATH: $CEF_LIB_DIR"
export LD_LIBRARY_PATH="$CEF_LIB_DIR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
fi
NODE_OPTIONS="--max-old-space-size=8192" cargo tauri build $PROFILE_FLAG -c "$TAURI_CONFIG_OVERRIDE" $MATRIX_ARGS
NODE_OPTIONS="--max-old-space-size=8192" bash ../scripts/ci-cancel-aware.sh cargo tauri build $PROFILE_FLAG -c "$TAURI_CONFIG_OVERRIDE" $MATRIX_ARGS

# Diagnostic for the recurring quick-sharun "is missing libraries!
# Aborting..." error on the AppImage bundler — the upstream script
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/build-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,11 @@ jobs:
- name: Install vendored tauri-cli (cef-aware bundler)
if: steps.tauri-cli-cache.outputs.cache-hit != 'true'
shell: bash
run: cargo install --locked --path app/src-tauri/vendor/tauri-cef/crates/tauri-cli
run: bash scripts/ci-cancel-aware.sh cargo install --locked --path app/src-tauri/vendor/tauri-cef/crates/tauri-cli
- name: Enable Corepack
run: corepack enable
- name: Install dependencies
run: pnpm install --frozen-lockfile
run: bash scripts/ci-cancel-aware.sh pnpm install --frozen-lockfile

# vite build runs via tauri.conf.json's beforeBuildCommand during the
# "Build Tauri app" step below — no separate frontend build needed.
Expand Down Expand Up @@ -103,7 +103,7 @@ jobs:
VITE_LATEST_APP_DOWNLOAD_URL: ${{ vars.VITE_LATEST_APP_DOWNLOAD_URL }}
TAURI_CONFIG_OVERRIDE: ${{ steps.config-overrides.outputs.json }}
run: |
NODE_OPTIONS="--max-old-space-size=8192" cargo tauri build -c "$TAURI_CONFIG_OVERRIDE" --target x86_64-pc-windows-msvc
NODE_OPTIONS="--max-old-space-size=8192" bash ../scripts/ci-cancel-aware.sh cargo tauri build -c "$TAURI_CONFIG_OVERRIDE" --target x86_64-pc-windows-msvc
- name: Upload MSI artifact
uses: actions/upload-artifact@v5
with:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ jobs:
restore-keys: |
pnpm-store-${{ runner.os }}-
- name: Install dependencies
run: pnpm install --frozen-lockfile
run: bash scripts/ci-cancel-aware.sh pnpm install --frozen-lockfile
# Core is linked into the Tauri binary as a path dep — no separate
# sidecar build / stage step needed.
- name: Build Tauri app (CEF default)
Expand All @@ -67,7 +67,7 @@ jobs:
# Skip tsc in beforeBuildCommand — typechecking runs in the dedicated
# `typecheck` workflow, so doing it again here is duplicated CI time.
TAURI_CONFIG_OVERRIDE='{"build":{"beforeBuildCommand":"npx vite build"},"plugins":{"updater":{"active":false}}}'
cargo tauri build -c "$TAURI_CONFIG_OVERRIDE" --bundles deb
bash ../scripts/ci-cancel-aware.sh cargo tauri build -c "$TAURI_CONFIG_OVERRIDE" --bundles deb
env:
NODE_ENV: production
# CI builds should point at staging, not production.
Expand Down
76 changes: 76 additions & 0 deletions .github/workflows/e2e-playwright.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
name: E2E Playwright

on:
workflow_dispatch: {}

permissions:
contents: read
packages: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
e2e-playwright:
name: E2E (Playwright / web lane)
runs-on: ubuntu-22.04
container:
image: ghcr.io/tinyhumansai/openhuman_ci:latest
timeout-minutes: 90
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 1
persist-credentials: false
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
app/src-tauri -> target
cache-on-failure: true
key: e2e-playwright-linux

- name: Install JS dependencies
run: bash scripts/ci-cancel-aware.sh pnpm install --frozen-lockfile

- name: Ensure .env exists for E2E build
run: |
touch .env
touch app/.env

- name: Build Playwright web E2E bundle + standalone core
run: bash scripts/ci-cancel-aware.sh pnpm --filter openhuman-app test:e2e:web:build

- name: Install Playwright Chromium headless shell
run: bash scripts/ci-cancel-aware.sh pnpm --filter openhuman-app exec playwright install chromium-headless-shell

- name: Run Playwright web E2E suite
env:
OPENHUMAN_WORKSPACE: ${{ runner.temp }}/openhuman-playwright-workspace
run: |
mkdir -p "$OPENHUMAN_WORKSPACE"
bash scripts/ci-cancel-aware.sh bash app/scripts/e2e-web-session.sh

- name: Upload Playwright E2E failure artifacts
if: failure()
uses: actions/upload-artifact@v5
with:
name: e2e-playwright-failure-logs-${{ github.run_id }}
path: |
${{ runner.temp }}/openhuman-playwright-workspace/**
retention-days: 7
if-no-files-found: ignore
Loading
Loading