UNPKG

jest-html

Version:

Preview Jest snapshots right in your browser

128 lines (97 loc) 3.89 kB
'use strict'; 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;