From d38e0721cd3f9af3aec601d1b6cbb147c7ff60ae Mon Sep 17 00:00:00 2001 From: Lifei Zhou Date: Wed, 25 Mar 2026 11:22:17 +1100 Subject: [PATCH] make provider, model, api key for testing configurable --- .agents/skills/e2e-app/SKILL.md | 4 ++-- .github/workflows/pr-smoke-test.yml | 2 +- .../tests/e2e-tests/scripts/e2e-start.sh | 24 ++++++++++++++++--- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/.agents/skills/e2e-app/SKILL.md b/.agents/skills/e2e-app/SKILL.md index 31f540cff4..e5192e1de6 100644 --- a/.agents/skills/e2e-app/SKILL.md +++ b/.agents/skills/e2e-app/SKILL.md @@ -14,7 +14,7 @@ The script self-activates hermit for `pnpm`/`node`, but needs `ANTHROPIC_API_KEY ```bash TEST_SESSION_NAME=$(date +"%y%m%d-%H%M%S") -screen -dmS $TEST_SESSION_NAME bash -c "source ~/.zshrc 2>/dev/null; bash ui/desktop/tests/e2e-tests/scripts/e2e-start.sh $TEST_SESSION_NAME" +screen -dmS $TEST_SESSION_NAME bash -c "bash ui/desktop/tests/e2e-tests/scripts/e2e-start.sh $TEST_SESSION_NAME" ``` Then wait for the port file and verify the app is listening: @@ -40,7 +40,7 @@ screen -r $TEST_SESSION_NAME # attach to see errors (Ctrl-A D to detach) ``` Common startup failures: -- `ANTHROPIC_API_KEY must be set` — key not in environment; ensure `~/.zshrc` exports it +- `ANTHROPIC_API_KEY must be set` — create `~/.config/goose/e2e.env` with your provider config (see e2e-start.sh) - `pnpm: not found` — hermit activation failed; the script does this automatically now - Screen session dies immediately — check `screen -ls`; if no session, run the script directly to see errors diff --git a/.github/workflows/pr-smoke-test.yml b/.github/workflows/pr-smoke-test.yml index f889206897..9b6f2114ba 100644 --- a/.github/workflows/pr-smoke-test.yml +++ b/.github/workflows/pr-smoke-test.yml @@ -115,7 +115,7 @@ jobs: with: name: e2e-test-results path: ui/desktop/tests/e2e-tests/results/ - retention-days: 7 + retention-days: 1 smoke-tests: name: Smoke Tests diff --git a/ui/desktop/tests/e2e-tests/scripts/e2e-start.sh b/ui/desktop/tests/e2e-tests/scripts/e2e-start.sh index 06b3ff6882..2c490d4da6 100755 --- a/ui/desktop/tests/e2e-tests/scripts/e2e-start.sh +++ b/ui/desktop/tests/e2e-tests/scripts/e2e-start.sh @@ -61,14 +61,32 @@ echo "" # Clean up lock file when Electron exits trap 'rm -f "$BASE_DIR/.port-locks/$CDP_PORT"' EXIT +# Load local e2e config (CI sets env vars directly and doesn't need this file). +# Create ~/.config/goose/e2e.env for local dev with your provider config, e.g.: +# GOOSE_PROVIDER=anthropic +# GOOSE_MODEL=claude-haiku-4-5-20251001 +# ANTHROPIC_API_KEY=sk-ant-... +E2E_ENV="${HOME}/.config/goose/e2e.env" +if [[ -f "$E2E_ENV" ]]; then + # Warn if the file is readable by others (it contains secrets) + if [[ "$(stat -f %Lp "$E2E_ENV" 2>/dev/null)" != "600" ]]; then + echo "Warning: $E2E_ENV should be chmod 600 (currently $(stat -f %Lp "$E2E_ENV"))" + fi + echo "Loading e2e config from $E2E_ENV" + set -a + source "$E2E_ENV" + set +a +fi + # Start the app in foreground (Ctrl+C to stop) export GOOSE_ALLOWLIST_BYPASS=true export GOOSE_DISABLE_KEYRING=1 export GOOSE_PATH_ROOT="$SESSION_DIR/root" export GOOSE_WORKING_DIR="$SESSION_DIR/workspace" -export GOOSE_PROVIDER=anthropic -export GOOSE_MODEL=claude-haiku-4-5-20251001 -export ANTHROPIC_API_KEY="${ANTHROPIC_API_KEY:?ANTHROPIC_API_KEY must be set}" +export GOOSE_PROVIDER="${GOOSE_PROVIDER:-anthropic}" +export GOOSE_MODEL="${GOOSE_MODEL:-claude-haiku-4-5-20251001}" +# API key is provider-specific (e.g. ANTHROPIC_API_KEY, OPENAI_API_KEY). +# Set it in ~/.config/goose/e2e.env for local dev, or via env vars in CI. export GOOSE_TELEMETRY_ENABLED=false export ENABLE_PLAYWRIGHT=true export PLAYWRIGHT_DEBUG_PORT="$CDP_PORT"