2016-04-15 41 views
0

我一直在爭論這個問題一段時間,似乎無法找到解決方案。當在服務器上運行NightmareJS + mocha測試時,它們會失敗。我試着運行:用服務器上的Mocha運行NightmareJS(Bamboo代理)

DEBUG=nightmare:* env ENV=staging mocha --harmony tests.js 

但是看不到任何日誌/操作錯誤等只是測試失敗(超時)。

Error: timeout of 30000ms exceeded. Ensure the done() callback is being called in this test. 

我能夠在沒有NightmareJS的情況下只運行摩卡測試,它們工作正常。當在我的本地機器上運行nighmareJS測試時,他們也沒有任何問題。

NightmareJS安裝在服務器上,內容的package.json:

"dependencies": { 
    "chai": "^3.5.0", 
    "mocha": "^2.4.5", 
    "mocha-generators": "^1.2.0", 
    "mocha-bamboo-reporter": "*", 
    "nightmare": "^2.2.0", 
    "nodeunit" : "~0.8" 
    } 

下面是測試代碼:

require('mocha-generators').install(); 
var Nightmare = require('nightmare'); 
var expect = require('chai').expect; 

var url = null; 
var options = { 
    show: false, 
    'webPreferences': { 
     partition: 'something_xyz' 
    } 
}; 
if (process.env.ENV === 'staging') { 
    console.log("Running tests against staging environment"); 
    url = 'https://staging.something.com/app/'; 

} else { 
    console.log("Running tests against local environment"); 
    url = 'http://localhost:8080/app/'; 
} 

describe('Nightmare JS tests', function() { 
    this.timeout(30000); 

    describe('base functionality', function() { 
     var nightmare; 
     before(function*() { 
      nightmare = Nightmare(options); 
     }); 

     after(function*() { 
      var endTest = yield nightmare 
        .end() 
     }); 

     it('Should be able to login', function*() { 

      var result = yield nightmare 
        .goto(url) 
        .wait('img.google-login-btn') 
        .click('img.google-login-btn') 
        .wait('div.main-content.row h4') 
        .wait(1000) 
        .evaluate(function() { 
         return document.querySelector('div.main-content.row h4').innerText; 

        }) 

      expect(result).to.equal("Logged in!"); 

     }); 

     // here are the rest of the tests 

    }); 
}); 

如何調試呢?當我在服務器上運行時,我無法使用show:true選項。

回答

1

您有可能在無頭環境中遇到/ nightmare的一般問題。有關詳細信息,請參閱https://github.com/segmentio/nightmare/issues/224。最簡單的解決辦法是安裝的Xvfb與xvfb-run mocha ...

運行,您還可以通過DEBUG標誌用於電子,如DEBUG=nightmare*,electron*並獲得額外的調試輸出可以在這樣的情況下,在噩夢和電子從未成功啓動幫助。

+0

與xvfb運行摩卡運行不會改變任何東西。仍然沒有錯誤,除了超時和沒有其他錯誤。我將嘗試使用電子參數進行調試 –

+0

您是否試過在服務器上運行電子郵件,例如'電子 - 幫助'?你應該在'electron-prebuilt'軟件包的dist /目錄下(依賴於噩夢)。如果您從此沒有輸出,那麼導致電子無法工作的服務器環境存在問題。 – yoz

相關問題