###前提・実現したいこと
- 前提
nightmare(https://github.com/segmentio/nightmare)を用いてE2Eテストを実装しています。
- 実現したいこと
ページAでボタンクリック後、ページBにリダイレクトされることをテストしたい。
現在、ボタンクリック後.click(selector)
に待ち時間.wait(msec)
を設け.url()
メソッドを用いてリダイレクト先のURLを取得し、意図しているURLかどうか検証しています。
###発生している問題・エラーメッセージ
テストを何度か実行すると、リダイレクト前のURLを取得してしまい(待ち時間が足りていない)、テストが落ちてしまう。
###該当のソースコード
javascript
1return nightmare 2 .goto('URLa') 3 .click('#hoge') 4 .wait(30000) //ここに充分な待ち時間(30000ms)を指定するとリダイレクト完了まで待ってくれる。 5 .url() 6 .end() 7 .then((currentURL) => { 8 assert.equal(currentURL, 'URLb'); //URLbであって欲しい。上記wait()の時間が短いと稀にURLaとなってしまう。 9 });
###試したこと
対策として、wait(msec)
に充分長い待ち時間を設定することが挙げられます。実際に適当な時間を設定すると、テストが成功します。
しかし、適当な待ち時間を指定するよりは、ページの読み込みを検知する方法があればそれを採用したく考えています。
.on(event,callback)により、goto()
のイベントdid-finish-loadedは検知できるのですが、リダイレクトのページ読み込み完了を検知する方法がわかりません。
下記issueを見つけたのですが、カスタムアクションを定義する以外の方法があれば知りたいです。
https://github.com/segmentio/nightmare/issues/481
良い解決方をご存知の方がいらっしゃいましたら、ぜひ、ご教示ください。
###補足情報(言語/FW/ツール等のバージョンなど)
"nightmare": "^2.10.0"
$node -v
v6.9.0

あなたの回答
tips
プレビュー