タスク:
- Selenium、webdriver、cucumberjs を使用して自動受け入れテストを実行します。
- 失敗した受け入れテストのシナリオを見つけて、ページのスクリーンショットを撮る
- これをアーティファクトとして go パイプラインに保存します。
それがその日の私の仕事でした。私は、シナリオ テスト、セレンのセットアップ、パイプラインへの移行、およびその他の必要なすべてを作成して、そのすべてを行いました。
唯一の問題は、失敗したシナリオ ステップを見つけてページのスクリーン ショットを撮る方法を理解する方法が見つからなかったことです。
問題の詳細: ステップ定義に次のコードを配置しました。これは、すべてのシナリオ ステップで実行されます。
//file: features/setpdefinitions/common.step.js
var commonWrapper = function commonWrapper() {
this.World = require('../support/world').World;
this.Before(function (next) {
this.initBrowser(next);
});
this.After(function (next) {
this.browser.quit(next);
});
this.StepResult(function (event, callback) {
var stepResult = event.getPayloadItem('stepResult');
console.log(stepResult.isFailed());
callback();
});
};
module.exports = commonWrapper;
これWorld
には、ブラウザの開始方法が含まれています。
そして、これは私がテストしているサンプル機能シナリオです
Feature: Forgot Password
As a user of Booking My account
I want to reset my password
So that I can login to my account when I forget my password
Scenario: On unsuccessful entering invalid email id
Given I am on forgot password page
When I enter invalid email "invalidemail-someDomain.com"
And click submit button
Then I should see validation message "Please enter a valid email."
問題はコンテキスト データにあります。どういうわけかscenario
、最初の引数として after/before メソッドに渡されたものを取得できませんでした。cucumberjs ソースにあるコードを試しましたが、成功しませんでした。stepResult
そこで、ステップが完了するたびに実行されるメソッドの追加に移りました。比較的似たアプローチ。
ドキュメントに従って、isFailed()
メソッドはステップの結果に基づいてブール値を返します。false
しかし、ステップが失敗したか合格したかに関係なく、私は常に取得します。何isSuccessful()
があっても を返す分身を試してみました。true
それで、
- ここで何が間違っている可能性がありますか?
- 実際にシナリオを after() メソッドに渡すにはどうすればよいですか?
私はTDDに比較的慣れていませんが、これまでのところ素晴らしい経験でした.