Я запускаю тесты транспортира на хром без головы в Ubuntu 16.04. Тесты работали нормально более 3 месяцев, но затем внезапно тесты начали давать сбой с ошибкой ниже:
npm run e2e console — Chrome недоступен с самого начала теста
Ошибка Chrome недоступен после успешного выполнения нескольких тестов
Protractor configuration -
// Protractor configuration file, see link for more information
//
https://github.com/angular/protractor/blob/master/docs/referenceConf.js
/*global jasmine */
var jasmineReporters = require('jasmine-reporters');
exports.config = {
allScriptsTimeout: 60000,
baseUrl: 'http://localhost:4200/',
suites: {
V3_Sanity: [
'./e2e/Flows/Sanity/**/analytics_dashboard.e2e-spec.ts',
'./e2e/Flows/Sanity/**/executive_dashboard.e2e-spec.ts',
'./e2e/Flows/Sanity/**/my_views.e2e-spec.ts',
'./e2e/Flows/Sanity/**/question_analysis.e2e-spec.ts',
'./e2e/Flows/Sanity/**/responses.e2e-spec.ts',
'./e2e/Flows/Sanity/**/login_page.e2e-spec.ts'
],
V3_e2e: [
'./e2e/Flows/E2E/**/flow1.e2e-spec.ts',
'./e2e/Flows/E2E/**/flow2.e2e-spec.ts',
'./e2e/Flows/E2E/**/flow3.e2e-spec.ts',
'./e2e/Flows/E2E/**/flow4.e2e-spec.ts',
'./e2e/Flows/E2E/**/flow5.e2e-spec.ts',
'./e2e/Flows/E2E/**/flow6.e2e-spec.ts'
],
QB_Sanity: [
'./e2e/Flows/QB Sanity/**/question_config.e2e-spec.ts',
'./e2e/Flows/QB Sanity/**/right_panel.e2e-spec.ts',
'./e2e/Flows/QB Sanity/**/question_types.e2e-spec.ts'
],
CT_Sanity: [
'./e2e/Flows/Contingency Table Sanity/**/CT_load_test.e2e-spec.ts'
],
Response_Filter: [
'./e2e/Flows/ResponsesFilter/responses_filter.e2e-spec.ts'
],
DropOff: [
'./e2e/Flows/Response DropOff/response_drop_off.e2e-spec.ts'
],
Trend_Notification: [
'./e2e/Flows/Trend Based Notification/trend_sanity.e2e-spec.ts'
],
Response_Filter: [
'./e2e/Flows/ResponsesFilter/responses_filter_analytics.e2e-spec.ts',
'./e2e/Flows/ResponsesFilter/responses_filter_responses.e2e-spec.ts'
]
},
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: ["--headless", "--disable-gpu", "--window-size=1440x900", "--no-sandbox"]
}
},
directConnect: true,
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 60000,
print: function () { }
},
useAllAngular2AppRoots: true,
beforeLaunch: function () {
require('ts-node').register({
project: 'e2e'
});
},
onPrepare: function () {
browser.manage().window().maximize();
require('ts-node').register({ project: 'e2e' });
var fs = require('fs-extra');
fs.emptyDir('./e2e/target/screenshots/', function (err) {
console.log(err);
});
jasmine.getEnv().addReporter({
specDone: function (result) {
if (result.status == 'failed') {
browser.getCapabilities().then(function (caps) {
var browserName = caps.get('browserName');
browser.takeScreenshot().then(function (png) {
console.log("taken")
var stream = fs.createWriteStream('e2e/target/screenshots/' + browserName + '-' + result.fullName + '.png');
stream.write(new Buffer(png, 'base64'));
stream.end();
}, (err) => {
console.log("screenshot error : " + err)
});
});
}
}
});
// jasmine.getEnv().addReporter(reporter);
jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
consolidateAll: true,
savePath: './e2e/target/screenshots',
filePrefix: 'xmlresults'
}));
},
afterLaunch: function (exitCode) {
},
//HTMLReport called once tests are finished
onComplete: function () {
//save browser logs
browser.manage().logs()
.get('browser').then(function (browserLog) {
console.log('log :' +
require('util').inspect(browserLog));
});
var browserName, browserVersion;
var capsPromise = browser.getCapabilities();
capsPromise.then(function (caps) {
browserName = caps.get('browserName');
browserVersion = caps.get('version');
var HTMLReport = require('protractor-html-reporter');
testConfig = {
reportTitle: 'Test Execution Report',
outputPath: 'e2e/target/screenshots',
screenshotPath: '.',
testBrowser: browserName,
browserVersion: browserVersion,
modifiedSuiteName: false,
screenshotsOnlyOnFailure: true
};
new HTMLReport().from('e2e/target/screenshots/xmlresults.xml', testConfig);
});
}
};
Случайно я имею в виду, что иногда весь тест проходит успешно, но иногда он терпит неудачу в самом начале теста или после запуска нескольких наборов тестов с сообщением об ошибке «Ошибка снимка экрана: WebDriverError: chrome недоступен».
Я столкнулся с этой проблемой на своем облачном сервере Ubuntu 16.04. Который работал нормально до недавнего времени, но вдруг он начал давать сбой.
Еще один момент, который следует отметить, заключается в том, что он успешно работает для меньшего количества тестовых наборов. Кроме того, эти тесты работают правильно на моем локальном компьютере с Ubuntu 16.04, и у меня никогда не возникало этой проблемы при работе в безголовом режиме.
Я также пробовал переустановить хром, но это не помогло.
Я также проверил использование памяти, но для запуска тестов памяти достаточно.
Я упомянул другие проблемы с переполнением стека, но все они связаны с проблемами конфигурации транспортира. Что, кажется, хорошо для меня.