Wagby Testing Framework の変更履歴をまとめています。

テストシナリオを日本語で記述する方式の提供

Javaを使わず、日本語でテストシナリオを作成する方法を提供しました。[マニュアルページへのリンク...]

WTFモデルクラスの自動生成

テストシナリオからテストコードを自動生成したとき、同時に WTF モデルクラスも自動生成されるようになりました。

インポートとエクスポート画面の操作

インポートとエクスポート画面を操作できるようになりました。テストシナリオ中に、テスト用データのインポート操作を記述できます。

pageTitle().shouldHave(exactText("インポートとエクスポート"));

// インポートとエクスポート画面を操作する PageObject を取得
ImportExport page = Operations.importExport();
// "すべて選択する" ボタンをクリック
page.selectAllModels();
// "エクスポート" ボタンをクリック
page.exportData();
pageTitle().shouldHave(exactText("インポートとエクスポート"));

// 処理対象のモデル(チェックボックス)を指定する
page.targetModels.val("顧客", "お知らせ");
// 処理対象のモデルの確認
page.targetModels.shouldHave("顧客", "お知らせ");

// インポートフォルダ名 に"data_test01.zip" を選択し、"旧データインポート" ボタンをクリック
page.importOldData("data_test01.zip");
pageTitle().shouldHave(exactText("インポートとエクスポート"));

// インポートフォルダ名 に"data_test01.zip" を選択し、"インポート" ボタンをクリック
page.importData("data_test01.zip");
pageTitle().shouldHave(exactText("インポートとエクスポート"));

// インポートフォルダ名 に"data_test01.zip" を選択し、"ダウンロード" ボタンをクリック
page.download("data_test01.zip");
pageTitle().shouldHave(exactText("インポートとエクスポート"));

// インポートフォルダ名 に"data_test01.zip" を選択し、"削除" ボタンをクリック
page.delete("data_test01.zip");
pageTitle().shouldHave(exactText("インポートとエクスポート"));

// "すべて解除する" ボタンをクリック
page.deselectAllModels();
pageTitle().shouldHave(exactText("インポートとエクスポート"));

制約

  • "テーブルを初期化する" 操作には対応していません。
  • "Zip形式で扱う" 操作には対応していません。

その他の改善

  • 他モデル参照項目のクリアボタンAPI clickClearButton(), clickToggleButton() を用意しました。
  • 編集系画面にて他モデル参照項目で shouldHave() メソッドが使えるようになりました。
  • Operations.clickNewButton() で一覧更新画面の「新規」ボタンをクリックできるようになりました。
  • ログオン画面のエラーメッセージチェックを errors().shouldHave(exactTexts("xxxx")); で行えるようにしました。同様にinfos(), warns() も使えるようにしています。
  • コンテナの数を確認するためのメソッド WebContainerModelitem#size() が詳細画面でも動作するようになりました。

ファイル型項目の対応

ファイル型項目へのファイルアップロード/ダウンロードのテストを記述できるようになりました。

// ファイルのアップロード。
// アップロードするファイルは $(DEVHOME)に配置。
new FileType(model, "avatarImage").uploadFile(new File("a.png"));
 
// こちらでも可。
// アップロードするファイルは customize/test/resources に配置。
new FileType(model, "avatarImage").uploadFromClasspath("b.pdf");
 
// アップロードしたファイルクリア(クリアボタンをクリック)
//new FileType(model, "avatarImage").clear();

// ファイル名の確認。
new FileType(model, "avatarImage").shouldHave("a.png");

// ファイルのダウンロード。        
File downloadFile = new FileType(model, "avatarImage").download();

// アップ前後のファイルが同じかを確認。
assertThat(FileUtils.contentEquals(new File("a.png"), downloadFile), is(true));

制約

  • 繰り返しコンテナ内のファイル型項目は未対応。(繰り返しコンテナ内のファイル型項目は複数ファイルのアップロードが行えるが、WTFではこれを操作できない。)

画面キャプチャ

全画面キャプチャができる fullscreenshot() メソッドを用意しました。サブメニュー有、サブメニュー無、サイドバーメニュー利用のいずれの状態にも対応しています。ファイル形式は png です。

なお fullscreenshot メソッド利用時はヘッドレスモードを true にしてください。

利用する WebDriver を、これまで使っていた 1.7.2 から 3.6.1 にバージョンアップしました。これにあわせて selenide を 4系から5系 (5.2.8) にバージョンアップしました。

開発者が考慮すべき影響

selenide 4 系にあった Selenide#assertNoJavascriptErrors() メソッドが、5 系ではサポート終了となっています。(selenide の開発チームによると、動作が安定しないというのが理由のようです。)

これまでのテストで同メソッドを利用したテストを作成している場合は、この部分のコードを削除してください。