mirror of https://github.com/lukechilds/docs.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.3 KiB
53 lines
1.3 KiB
'use strict';
|
|
|
|
var os = require('os');
|
|
var Promise = require('bluebird');
|
|
var Xvfb = require('@cypress/xvfb');
|
|
var R = require('ramda');
|
|
var debug = require('debug')('cypress:cli');
|
|
var debugXvfb = require('debug')('cypress:xvfb');
|
|
|
|
var _require = require('../errors'),
|
|
throwFormErrorText = _require.throwFormErrorText,
|
|
errors = _require.errors;
|
|
|
|
var xvfb = Promise.promisifyAll(new Xvfb({
|
|
onStderrData: function onStderrData(data) {
|
|
if (debugXvfb.enabled) {
|
|
debugXvfb(data.toString());
|
|
}
|
|
}
|
|
}));
|
|
|
|
module.exports = {
|
|
_debugXvfb: debugXvfb, // expose for testing
|
|
|
|
_xvfb: xvfb, // expose for testing
|
|
|
|
start: function start() {
|
|
debug('Starting XVFB');
|
|
return xvfb.startAsync().catch({ nonZeroExitCode: true }, throwFormErrorText(errors.nonZeroExitCodeXvfb)).catch(function (err) {
|
|
if (err.known) {
|
|
throw err;
|
|
}
|
|
|
|
return throwFormErrorText(errors.missingXvfb)(err);
|
|
});
|
|
},
|
|
stop: function stop() {
|
|
debug('Stopping XVFB');
|
|
return xvfb.stopAsync();
|
|
},
|
|
isNeeded: function isNeeded() {
|
|
return os.platform() === 'linux' && !process.env.DISPLAY;
|
|
},
|
|
|
|
|
|
// async method, resolved with Boolean
|
|
verify: function verify() {
|
|
return xvfb.startAsync().then(R.T).catch(function (err) {
|
|
debug('Could not verify xvfb: %s', err.message);
|
|
return false;
|
|
}).finally(xvfb.stopAsync);
|
|
}
|
|
};
|