2017-11-23 2 views
0

コードはステップ定義の中でうまく機能しますが、アフターフックでは機能しません。アフターフックからのキュウリレポートにテキストまたはイメージを添付するエラー

以下は私のアフターフックコードです。私は世界にアタッチ関数を呼び出すと失敗します。以下は

var {defineSupportCode} = require('cucumber'); 

defineSupportCode(function({After, Before, BeforeStep, StepResult}) { 
    After(function(scenario,done) 
    { 
     console.log('after'); 
     const world = this; 
     if (scenario.result.status === 'failed') { 
      browser.takeScreenshot().then(function (stream) { 
       // writeScreenShot(png, 'exception.png'); 
       let decodedImage = new Buffer(stream.replace(/^data:image\/(png|gif|jpeg);base64,/, ''), 'base64'); 
       world.attach(decodedImage, 'image/png'); 
      }); 
     } 
     if(browser.browserName !== 'firefox') 
     { 
      browser.manage().logs().get('browser').then(function(browserLog){ 
       console.log('log: ' + require('util').inspect(browserLog)); 
       world.attach('Browser Log : ' + JSON.stringify(browserLog),'text/plain'); 
      }); 
     } 
     done(); 
    }); 
}); 

私はそれを実行するときに私が取得エラーメッセージです。

E/launcher - Cannot read property 'attachments' of undefined 
[12:51:19] E/launcher - TypeError: Cannot read property 'attachments' of undefined 
    at EventDataCollector.storeTestStepAttachment (C:\ProtractorTest\node_modules\cucumber\src\formatter\helpers\event_data_collector.js:59:10) 
    at emitOne (events.js:96:13) 
    at EventEmitter.emit (events.js:188:7) 
    at TestCaseRunner.emit (C:\ProtractorTest\node_modules\cucumber\src\runtime\test_case_runner.js:51:27) 
    at AttachmentManager.onAttachment (C:\ProtractorTest\node_modules\cucumber\src\runtime\test_case_runner.js:17:12) 
    at AttachmentManager.createStringAttachment (C:\ProtractorTest\node_modules\cucumber\src\runtime\attachment_manager\index.js:59:10) 
    at AttachmentManager.create (C:\ProtractorTest\node_modules\cucumber\src\runtime\attachment_manager\index.js:24:12) 
    at C:\ProtractorTest\feature_files\hooks\hooks.js:31:23 
    at ManagedPromise.invokeCallback_ (C:\ProtractorTest\node_modules\selenium-webdriver\lib\promise.js:1376:14) 
    at TaskQueue.execute_ (C:\ProtractorTest\node_modules\selenium-webdriver\lib\promise.js:3084:14) 
    at TaskQueue.executeNext_ (C:\ProtractorTest\node_modules\selenium-webdriver\lib\promise.js:3067:27) 
    at asyncRun (C:\ProtractorTest\node_modules\selenium-webdriver\lib\promise.js:2927:27) 
    at C:\ProtractorTest\node_modules\selenium-webdriver\lib\promise.js:668:7 
    at process._tickCallback (internal/process/next_tick.js:109:7) 
[12:51:19] E/launcher - Process exited with error code 199 

Process finished with exit code 199 

これは先週まで働いていた、今では、上記のエラーをスローし、それが起こっている理由を私は把握できませんでした。

詳細情報が必要な場合はお知らせください。

答えて

0

以下のコードでは、適切なコールバックが問題を解決しました。理由は分かりませんが、問題が解決しました。

After(function(scenario,done) 
{ 
    const world = this; 
    if (scenario.result.status === 'failed') { 
     browser.takeScreenshot().then(function (stream) { 
      let decodedImage = new Buffer(stream.replace(/^data:image\/(png|gif|jpeg);base64,/, ''), 'base64'); 
      world.attach(decodedImage, 'image/png'); 
     }).then(function() { 
      done(); 
     }); 
    }else { 
     done(); 
    } 
}); 
関連する問題