私には少し過ぎているようです。分権者は、通常の場合には同期実行を既に処理しているはずです。
あなたのコマンドがリストされた順番で実行されている限り、そのようなピラミッドを構築する必要はありません。
then()
を使用するとすぐにプロミスを解決できますが、新しい非同期タスクを開始して、then()
以外の線で分度器を続けることもできます。したがって、最初のthen()
を2行目に入力すると、関数の2番目の部分は最初の部分と並行して実行されます。
ケースの真ん中にあるexpect
について:それはうまくいっていますが、うまくいきます。途中であなたの期待が失敗した場合、テストケースは最後まで続きますが、テストケースのステータスは失敗したままです。おそらく1つではなく2つのテストケースが必要です。
this.Then(/^I should see a pane on the right with an Interactions and Remarks tab$/,() => {
waitForPresence(mobileQADashboard.getTabPanel());
mobileQADashboard.selectInteractionsTab();
waitForPresence(mobileQADashboard.pageElements.viewAllInteractionsLink);
expect(mobileQADashboard.pageElements.viewAllInteractionsLink.isDisplayed()).to.eventually.be.true;
//gets now executed after the firt expect. In your code it's executed in parallel to the first.
waitForPresence(mobileQADashboard.getTabPanel());
mobileQADashboard.selectRemarksTab();
waitForLoader();
waitForPresence(mobileQADashboard.pageElements.addRemarkButton);
expect(mobileQADashboard.pageElements.addRemarkButton.isDisplayed()).to.eventually.be.true;
});
また、ページオブジェクト内にexpect
があることは望ましくありません。テストケース(it()
-block)を書くには、a)合格/不合格を維持し、b)同時にpageObjectを調べる必要はありません。それがなければテストケースを理解するはずです。
したがって、すべてのすべての適切な方法は、このようなもっと何かようだ:
it(/first case/,function(){
this.ThenFirst();
expect(mobileQADashboard.pageElements.viewAllInteractionsLink.isDisplayed()).to.eventually.be.true;
});
it(/second case/,function(){
this.ThenSecond();
expect(mobileQADashboard.pageElements.addRemarkButton.isDisplayed()).to.eventually.be.true;
});
し、これらのページオブジェクト:
this.ThenFirst(/^I should see a pane on the right with an Interactions and Remarks tab$/,() => {
waitForPresence(mobileQADashboard.getTabPanel());
mobileQADashboard.selectInteractionsTab();
waitForPresence(mobileQADashboard.pageElements.viewAllInteractionsLink);
};
this.ThenSecond(/^I should see a pane on the right with an Interactions and Remarks tab$/,() => {
waitForPresence(mobileQADashboard.getTabPanel());
mobileQADashboard.selectRemarksTab();
waitForLoader();
waitForPresence(mobileQADashboard.pageElements.addRemarkButton);
});