Open smptmhr opened 2 years ago
テスト中でclick_on
を2回以上使用すると、
ページ要素の更新が追いつかずにStaleElementError
が発生する場合があり、
テストがランダムに落ちる。
click_on
の後ろにsleep
を挟み、ページが読み込まれるのを待っていた。
sleep
の時間は1秒や3秒など適当に決めており、その待ち時間で過不足ないと断言できず、
これでも不安定にテストは落ちてしまう。
要素の更新が間に合わず、StaleElementError
が発生するブロックに対して、
テストが落ちた場合はその箇所を1度だけリトライする。
この際、要素を再取得するため、テストは安定して通るようになった。
Rails アプリケーションの不安定なテストを撲滅したい 〜system spec のデバッグ方法とテストを不安定にさせる要因〜 : テストを実行しているサーバの高負荷
StaleElementError
を伴わない箇所についてはこの方法では対応できないため、
その箇所は仮でsleep
を使用する必要がある。
問題点
Rspec中でページURLが更新されるのを待つのに
sleep
を使っている箇所がある。sleep
を使うと待ち時間でURLが更新される保証がなければ、更新されているのに無駄に待ちが発生する可能性もあり、 テストガチャが発生する可能性がある。ページURLが更新されたことを必要十分に確認する実装に改良する必要がある。