casper.test.begin "Can open the homepage", (test) ->
casper.options.viewportSize = {width: 1024, height: 768}
casper.start("http://localhost:4000/", ->
@wait(1000, ->
test.assertHttpStatus 200
test.assertTitle("XYZ Corp")
test.assertExists('DIV.links')
test.assertElementCount('DIV.links', 1)
test.assertExists('IMG#companyLogo')
@capture('./test/screencaps/homepage.png')
)
).run ->
test.done()
OK ですので、テストは問題なくパスします。私が改善したいのは @wait 呼び出しです。@waitFor を実行する方が賢明に思えました。
@waitFor(
->
document.querySelectorAll('DIV.links').length > 0
->
test.assertHttpStatus 200
test.assertTitle("XYZ Corp")
ただし、これは常にタイムアウトします。document
オブジェクトが存在し、関数を実行できますが、querySelectorAll
結果が返されません。最初のDIV.links
ケースではテストに合格しているため、オブジェクトはページに存在する必要があります (スクリーンショットで確認できます)。しかし、2 番目のケースでは、条件は常に false です。waitFor
ドキュメントはこちらです。
おまけの質問: casper テストをデバッグできますか?