1
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 テストをデバッグできますか?

4

1 に答える 1

2

4日間、答えはありません、自分で考え出しました:

  .then( ->
    @open("theUrl")    
    @waitUntilVisible("DIV.alpha",
    ->
      test.assertExists("DIV.alpha") # doesnt hurt to check
      test.assertExists("DIV#beta")
      @capture('./test/screencaps/waitUntilVisible.png')
    ->
      test.fail('failed to find div.alpha')
    3000
    )
  )
于 2013-11-12T21:25:52.247 に答える