add e2e for opencode

This commit is contained in:
nrslib 2026-02-11 13:01:50 +09:00
parent 2a678f3a75
commit ee7f7365db
3 changed files with 17 additions and 3 deletions

View File

@ -5,7 +5,8 @@ E2Eテストを追加・変更した場合は、このドキュメントも更
## 前提条件
- `gh` CLI が利用可能で、対象GitHubアカウントでログイン済みであること。
- `takt-testing` リポジトリが対象アカウントに存在することE2Eがクローンして使用
- 必要に応じて `TAKT_E2E_PROVIDER` を設定すること(例: `claude` / `codex`)。
- 必要に応じて `TAKT_E2E_PROVIDER` を設定すること(例: `claude` / `codex` / `opencode`)。
- `TAKT_E2E_PROVIDER=opencode` の場合は `TAKT_E2E_MODEL` が必須(例: `opencode/big-pickle`)。
- 実行時間が長いテストがあるため、タイムアウトに注意すること。
- E2Eは `e2e/helpers/test-repo.ts``gh` でリポジトリをクローンし、テンポラリディレクトリで実行する。
- 対話UIを避けるため、E2E環境では `TAKT_NO_TTY=1` を設定してTTYを無効化する。
@ -26,9 +27,11 @@ E2Eテストを追加・変更した場合は、このドキュメントも更
- `npm run test:e2e:provider`: `claude``codex` の両方で実行。
- `npm run test:e2e:provider:claude`: `TAKT_E2E_PROVIDER=claude` で実行。
- `npm run test:e2e:provider:codex`: `TAKT_E2E_PROVIDER=codex` で実行。
- `npm run test:e2e:provider:opencode`: `TAKT_E2E_PROVIDER=opencode` で実行(`TAKT_E2E_MODEL` 必須)。
- `npm run test:e2e:all`: `mock` + `provider` を通しで実行。
- `npm run test:e2e:claude`: `test:e2e:provider:claude` の別名。
- `npm run test:e2e:codex`: `test:e2e:provider:codex` の別名。
- `npm run test:e2e:opencode`: `test:e2e:provider:opencode` の別名。
- `npx vitest run e2e/specs/add-and-run.e2e.ts`: 単体実行の例。
## シナリオ一覧

View File

@ -95,8 +95,17 @@ export function createIsolatedEnv(): IsolatedEnv {
// Create TAKT config directory and config.yaml
mkdirSync(taktDir, { recursive: true });
const baseConfig = readE2EFixtureConfig();
const config = process.env.TAKT_E2E_PROVIDER
? { ...baseConfig, provider: process.env.TAKT_E2E_PROVIDER }
const provider = process.env.TAKT_E2E_PROVIDER;
const model = process.env.TAKT_E2E_MODEL;
if (provider === 'opencode' && !model) {
throw new Error('TAKT_E2E_PROVIDER=opencode requires TAKT_E2E_MODEL (e.g. opencode/big-pickle)');
}
const config = provider
? {
...baseConfig,
provider,
...(provider === 'opencode' && model ? { model } : {}),
}
: baseConfig;
writeConfigFile(taktDir, config);

View File

@ -20,8 +20,10 @@
"test:e2e:provider": "npm run test:e2e:provider:claude && npm run test:e2e:provider:codex",
"test:e2e:provider:claude": "TAKT_E2E_PROVIDER=claude vitest run --config vitest.config.e2e.provider.ts --reporter=verbose",
"test:e2e:provider:codex": "TAKT_E2E_PROVIDER=codex vitest run --config vitest.config.e2e.provider.ts --reporter=verbose",
"test:e2e:provider:opencode": "TAKT_E2E_PROVIDER=opencode vitest run --config vitest.config.e2e.provider.ts --reporter=verbose",
"test:e2e:claude": "npm run test:e2e:provider:claude",
"test:e2e:codex": "npm run test:e2e:provider:codex",
"test:e2e:opencode": "npm run test:e2e:provider:opencode",
"lint": "eslint src/",
"prepublishOnly": "npm run lint && npm run build && npm run test"
},