tester-army/e2e
テストの手順を言葉で書き、AI が一度通した操作は次から記録で再生する
どういうものか
ウェブアプリとスマホアプリの E2E テスト(利用者と同じように画面を操作して、最後まで通るかを確かめるテスト)を書くための、TypeScript の枠組みだ。ふつうの E2E テストは「このボタンを押す」「この欄に入力する」と操作を1つずつ書く。e2e では「ワークスペースを Pro プランに上げる」のような目的を文で書くと、AI エージェントがアプリを操作してそこまで進める。結果の確かめ方は2通りあり、AI に文で判定させることも、従来どおり画面の要素を指定して中身を照合することも、同じテストの中でできる。
ブラウザは Playwright を通して Chromium・Firefox・WebKit を動かし、スマホは iOS シミュレーターと Android エミュレーターを動かす。結果をプルリクエストにコメントで書き込む部品や、クラウド上のブラウザやシミュレーターを使う部品は、別のパッケージで用意されている。
AI を毎回呼ぶわけではない。エージェントが操作した手順は、そのあとの確認で正しさが確かめられると記録され、次の実行からはアプリが変わるまで、モデルを呼ばずに記録を再生する。ただし再生できるのは操作の手順だけで、AI に文で判定させる確認は毎回モデルを呼ぶ。エージェントの手順を含まないテストなら、モデルはまったく要らない。モデルは自分で用意する方式で、サブスクリプション、API キー、手元で動かすモデルのいずれかを使う。
どんなときに使うか
テストを書きたいが、ボタンや入力欄を1つずつ指定するのが手間なとき
途中の操作は目的を文で書いて AI に任せ、最後に確かめたい表示だけを要素で厳密に照合する、という分け方ができる。
ウェブ版とスマホ版を、同じ枠組みでテストしたいとき
ブラウザ用と iOS・Android 用のエンジンがあり、どちらも同じ e2e の中で扱える。
注意点
まだ 1.0 の前。 マイナーリリースの間でも、API や設定が変わることがあると README に明記されている。
記録は、そのままでは機械ごとに別になる。 初期設定で記録の置き場が .gitignore に入るため、それぞれの機械が自分で記録を作る。CI では、設定を変えない限り記録を読むだけで新しく書き込まない。
CLI は匿名の利用データを送る。 テストやアプリの中身、認証情報は送らないとしている。止めるには npx e2e telemetry disable を実行するか、環境変数 E2E_TELEMETRY_DISABLED=1 を設定する。