jest-html
Version:
Preview Jest snapshots right in your browser
128 lines (97 loc) • 3.89 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getSocketioServer = exports.init = undefined;
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _http = require('http');
var _http2 = _interopRequireDefault(_http);
var _storyboard = require('storyboard');
var _express = require('express');
var _express2 = _interopRequireDefault(_express);
var _bodyParser = require('body-parser');
var _bodyParser2 = _interopRequireDefault(_bodyParser);
var _socket = require('socket.io');
var _socket2 = _interopRequireDefault(_socket);
var _extractor = require('./extractor');
var extractor = _interopRequireWildcard(_extractor);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var ASSET_PATH = '../public';
/* eslint-disable import/prefer-default-export */
var ABS_ASSET_PATH = _path2.default.resolve(__dirname, ASSET_PATH);
var _socketioServer = void 0;
// Returns the final port that was found free
function init(options) {
// Disable flow on Express
var expressApp = (0, _express2.default)();
expressApp.use(_bodyParser2.default.json());
expressApp.use(_express2.default.static(ABS_ASSET_PATH));
// API
expressApp.post('/api/folder', function (req, res) {
_storyboard.mainStory.debug('http', 'REQ: ' + _storyboard.chalk.cyan('/api/folder'), {
attach: req.body,
attachInline: true
});
var folderPath = req.body.folderPath;
res.json(extractor.getFolder(folderPath));
});
expressApp.post('/api/suite', function (req, res) {
_storyboard.mainStory.debug('http', 'REQ: ' + _storyboard.chalk.cyan('/api/suite '), {
attach: req.body,
attachInline: true
});
var filePath = req.body.filePath;
res.json(extractor.getSnapshotSuite(filePath));
});
expressApp.post('/api/saveAsBaseline', function (req, res) {
_storyboard.mainStory.debug('http', 'REQ: ' + _storyboard.chalk.cyan('/api/saveAsBaseline '), {
attach: req.body,
attachInline: true
});
var _req$body = req.body,
filePath = _req$body.filePath,
id = _req$body.id;
extractor.saveAsBaseline(filePath, id);
res.json({});
});
// All other routes
expressApp.use('*', function (req, res) {
res.sendFile(_path2.default.join(ABS_ASSET_PATH, 'index.html'));
});
// Create HTTP server
var httpServer = _http2.default.createServer(expressApp);
// Create socket.io server
_socketioServer = (0, _socket2.default)(httpServer);
_socketioServer.on('connection', function () {
_storyboard.mainStory.debug('http', 'Socket connected');
});
// Look for a suitable port and start listening
return new Promise(function (resolve, reject) {
var port = options.port;
httpServer.on('error', function () {
_storyboard.mainStory.warn('http', 'Port ' + port + ' busy');
port += 1;
if (port >= options.port + 20) {
_storyboard.mainStory.error('http', 'Cannot open port (tried 20 times)');
reject(new Error('Could not open HTTP port'));
return;
}
httpServer.listen(port);
});
httpServer.on('listening', function () {
_storyboard.mainStory.info('http', 'Listening on port ' + _storyboard.chalk.cyan.bold(port));
resolve(port);
});
httpServer.listen(port);
});
}
var getSocketioServer = function getSocketioServer() {
return _socketioServer;
};
// =============================================
// Public API
// =============================================
exports.init = init;
exports.getSocketioServer = getSocketioServer;
;