-
Notifications
You must be signed in to change notification settings - Fork 0
89 lines (78 loc) · 3.28 KB
/
e2e-isolated.yml
File metadata and controls
89 lines (78 loc) · 3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
name: E2E Isolated Test
on:
workflow_dispatch:
inputs:
agent:
description: "Agent to test"
required: true
default: "gemini-cli"
type: choice
options: [claude-code, opencode, gemini-cli, cursor-cli, factoryai-droid, copilot-cli, roger-roger, codex]
test:
description: "Test name filter (regex)"
required: true
default: "TestInteractiveMultiStep"
jobs:
e2e-isolated:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Setup mise
uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y tmux
- name: Build trace CLI
run: go build -o /usr/local/bin/trace ./cmd/trace
- name: Install agent CLI
run: |
case "${{ inputs.agent }}" in
claude-code) curl -fsSL https://claude.ai/install.sh | bash ;;
opencode) curl -fsSL https://opencode.ai/install | bash ;;
gemini-cli) npm install -g @google/gemini-cli ;;
codex) npm install -g @openai/codex ;;
cursor-cli) curl https://cursor.com/install -fsS | bash ;;
factoryai-droid) curl -fsSL https://app.factory.ai/cli | sh ;;
copilot-cli) npm install -g @github/copilot ;;
roger-roger) ;; # installed by mise (see mise.toml)
esac
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Verify roger-roger agent
if: inputs.agent == 'roger-roger'
run: |
set -euo pipefail
echo "Verifying roger-roger binaries on PATH..."
command -v roger-roger
command -v trace-agent-roger-roger
- name: Bootstrap agent
if: inputs.agent != 'roger-roger'
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
FACTORY_API_KEY: ${{ secrets.FACTORY_API_KEY }}
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
run: go run ./e2e/bootstrap
- name: Run isolated test
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
E2E_CODEX_MODEL: ${{ inputs.agent == 'codex' && 'gpt-5.4-mini' || '' }}
CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
FACTORY_API_KEY: ${{ secrets.FACTORY_API_KEY }}
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
E2E_ARTIFACT_DIR: ${{ github.workspace }}/e2e-artifacts
E2E_TRACE_BIN: /usr/local/bin/trace
run: |
mkdir -p "$E2E_ARTIFACT_DIR"
mise run test:e2e --agent ${{ inputs.agent }} "${{ inputs.test }}"
- name: Upload artifacts
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: e2e-isolated-${{ inputs.agent }}-${{ inputs.test }}
path: e2e-artifacts/
retention-days: 7