2017-01-24 4 views
1

テストの実行が完了した後、結果をメールで送信しようとしています。 sendgridコールをonCompleteセクションに置くと、電子メールが送信されます。ただし、保存が完了していないため、レポートは空です。投射器:afterLaunchのコマンドが実行されない

sendgridコールをafterLaunchセクションに置くと、ファイルが保存されます。しかし、sendgridコマンドを実行していないようです。

これは、私が使用していconfigです:

var HtmlReporter = require ('protractor-jasmine2-html-reporter'); 
var browser = "chrome"; 
var environment = "dev"; 
var pname = ""; 
var pversion = ""; 
var dname = ""; 
var selenium_address = "http://localhost:4444/wd/hub"; 
var folder_name = (new Date()).toString().split(' ').splice(0,3).join(''); 
var report_folder = "./test/e2e/reports/" + folder_name + "_" + browser + "_" + environment + "/"; 
var reporter = new HtmlReporter({ 
    savePath: report_folder, 
    takeScreenshots: false, 
    cleanDestination: true, 
    fileName: 'CE_Smoketest' 
}); 

function test_function() { 
    var report = report_folder + 'CE_Smoketest.html' 
    var sendgrid = require('sendgrid')('xxxxx', 'xxxxxxxxx'); 
    var email = new sendgrid.Email(); 
    email.addTo("[email protected]"); 
    email.setFrom("[email protected]"); 
    email.setSubject("Smoketest"); 
    email.setHtml("Smoketest results"); 
    email.addFile({filename: report}); 
    sendgrid.send(email); 
} 

exports.config = { 
//appium setup 
seleniumAddress: selenium_address, 
multiCapabilities: [ 
{ 
    'browserName' : browser, 
    platformName : pname, 
    platformVersion : pversion, 
    deviceName: dname 
} 
], 

getPageTimeout: 50000, 
allScriptsTimeout: 50000, 
jasmineNodeOpts: { 
    defaultTimeoutInterval: 50000, 
    isVerbose: true 
}, 

onPrepare: function() { 

    jasmine.getEnv().addReporter(reporter); 
     }, 
onComplete: function(exitCode) { 
    test_function(); 

}, 
afterLaunch: function(exitCode) { 
    test_function(); 
} 
} 

任意のアイデアをafterLaunchが電子メールを送信しない理由として?

答えて

0

あなたはプログラムが

これを試してみてくださいを終了する前に、非同期のコードが実行されるようにしたい場合、あなたは約束を返す必要がありますあなたのafterLaunchリファクタリング新しいVAR

var q = require('q'); 

2-宣言

afterLaunch: function(exitCode) { 
    return q.fcall(function() { 
    test_function(); 
    }).delay(1000); 
} 
+1

ありがとう、アドルフォ、私が必要としていたものです。 –

1

afterLaunchメソッドでは、Webdriverインスタンスがシャットダウンされました(利用できません)。これでコードが実行されます。下のafterLaunch()メソッドの説明を確認してください:

の1-:スレシュが正しい

/** 
* A callback function called once all tests have finished running and 
* the WebDriver instance has been shut down. It is passed the exit 
    code 
* (0 if the tests passed). afterLaunch must return a promise if you 
    want 
* asynchronous code to be executed before the program exits. 
* This is called only once before the program exits (after onCleanUp). 
*/ 
関連する問題