初めに
自動化しないままにしてしまった課題を解決し、メモしていきたいと思う。
本記事では複数のアカウントのやり取りで進むシナリオを検証する方法を考える。
(手動テストを繰り返すのは大変…)
記事の対象
REST APIの実行を含むシナリオのCodeceptJSを用いたE2Eテストをしたい方
この記事のゴール
- CodeceptJSを用いてREST APIを実行する
- その結果を検証する
- システムを通して正しい挙動をしているかを検証する
CodeceptJSでREST APIをテストする
公式ドキュメントを参考にする。
設定
codecept.conf.js
にあるexports.config
のhelpers
にドキュメントを参考に設定を追記する。
各プロパティの説明はこちら。
// REST APIの設定
REST: {
// REST APIのエンドポイントを設定
endpoint: 'https://{Domain}/{Path}',
// ログ出力を整形する
prettyPrintJson: true,
},
テストを作成する
REST APIのPOSTメソッドでメッセージを送信し、送信されたメッセージがシステムから閲覧できることをテストするコードを作成する。
Feature("API実行");
const ScenarioPost = "POST";
Scenario(ScenarioPost, async ({ autoLogin }) => {
// メッセージをAPIで送信
await I.sendPostRequest('/message/post', { "message": "I want this book." });
// エラーなく終了することを確認
I.seeResponseCodeIsSuccessful();
// システムにログイン
await autoLogin("hiraUser");
// メッセージ確認画面へ遷移
I.amOnPage(sendMessageUrl);
I.waitForText("メッセージ送信", 10);
// 最新のメッセージが送信されたメッセージと一致していることを確認
I.see("I want this book.", "$message-0");
});
最後に
APIを実行しシステム上に正しく反映されることのテストを自動化することができた。
過去に課題とは思っていたものの、調査コストを惜しんでしまい手動テストで済ませてしまった。
こういった技術的負債が残ることで開発スピードが著しく損なわれる。
次は各メソッドの設定方法、レスポンスの内容の確認方法をまとめていきたい。