我一直在爭論這個問題一段時間,似乎無法找到解決方案。當在服務器上運行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選項。
與xvfb運行摩卡運行不會改變任何東西。仍然沒有錯誤,除了超時和沒有其他錯誤。我將嘗試使用電子參數進行調試 –
您是否試過在服務器上運行電子郵件,例如'電子 - 幫助'?你應該在'electron-prebuilt'軟件包的dist /目錄下(依賴於噩夢)。如果您從此沒有輸出,那麼導致電子無法工作的服務器環境存在問題。 – yoz