2016-06-16 2 views
0

現在CasperJSを掘り下げて本当に楽しんでいます。しかし、多分それは私がドキュメントで逃した何か、私はcasper.capture()に問題があるようだ。私は現在、テストが失敗したときにキャプチャし、CasperJSの複数のキャプチャスクリーンショット:最新のスクリーンショットは、以前のすべてのオブジェクトを上書きします

function captureFailure(filename){ 
    casper.test.on("fail", function(failure){ 
     casper.viewport(1280, 1024); 
     casper.capture("failedScreenshots/Failure-"+filename+".jpg", { 
      top: 0, 
      left: 0, 
      width: 1280, 
      height: 1024 
     }); 
    }); 
} 

exports.captureFailure = captureFailure; 

以下のように別のセットアップモジュールでそれを置くために地雷を装備しました。この後、そのように私のテストに入れている:については

. . . 
// setup 
setup.login(); 

// test 
casper.test.begin("Complete new social campaign flow with image as a  signed in user.", 16, function suite(test) { 
// setup captureFailure 
    setup.captureFailure("SocialFlowImage"); 

    casper.start(data.baseURL+'/campaigns/', function(){ 
     console.log("Campaign page loaded"); 
     this.click(campaignCreate); 
     casper.waitForSelector(socialCampaignCreateModal, function(){ 
      test.assertExists(socialCampaignCreateModal, 'Modal pops up'); 
      test.assertTextExists('Deal', 'Deal button exists'); 
      test.assertTextExists('Marketing Email', 'Marketing Email button exists'); 
      test.assertTextExists('Facebook', 'Facebook button exists'); 
     }); 
    }); 
. . . 

これは大部分が独立して動作していましたが、複数の失敗をテストするためにすべてのテストを並行して実行すると、スクリーンショットは上書きされました。 >テスト1失敗 - - >キャプチャスクリーンショット1 - >テスト2 - >テスト2失敗 - >スクリーンショット2をキャプチャし、その後スクリーンショット1

を上書き

テスト1:年代順では、このようなものを見てそして、これは同じスクリーンショットの2つをもたらしたが、異なる命名規則の結果となった。

アイデア?

答えて

0

「失敗」イベントで重複するイベントハンドラがあることがわかりました。これを解決するには、セットアップとティアダウン機能を備えたテスト・オブジェクトが含まれるように、私のcasperjsテストのスタイルを変更し、イベントが実行してハンドルを取り外し

ビットハックですが、私のカスタムイベントハンドラがfilename引数を持っているcasper.test.removeListener("fail", casper.test.listeners("fail")[0]);

一意のスクリーンショット名を渡し、どのテストが何を実行したかをデバッグ/識別することが容易になりました。その結果、setUpには実際に匿名の機能が付いているので、私はジムリグにする必要があります。

関連する問題