creevey
Version:
creevey is a tool for automated visual testing, that tightly integrated with storybook
69 lines (57 loc) • 5.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = creeveyApi;
var _ws = _interopRequireDefault(require("ws"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function broadcast(wss, message) {
wss.clients.forEach(ws => {
if (ws.readyState === _ws.default.OPEN) {
ws.send(JSON.stringify(message));
}
});
}
function creeveyApi(runner) {
return {
subscribe(wss) {
runner.on('update', payload => broadcast(wss, {
type: 'update',
payload
}));
},
handleMessage(ws, message) {
if (typeof message != 'string') {
console.log('[WebSocket]:', 'unhandled message', message);
return;
}
const command = JSON.parse(message); // console.log("[WebSocket]:", "message", message);
switch (command.type) {
case 'status':
{
ws.send(JSON.stringify({
type: 'status',
payload: runner.status
}));
return;
}
case 'start':
{
runner.start(command.payload);
return;
}
case 'stop':
{
runner.stop();
return;
}
case 'approve':
{
runner.approve(command.payload);
return;
}
}
}
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2ZXIvbWFzdGVyL2FwaS50cyJdLCJuYW1lcyI6WyJicm9hZGNhc3QiLCJ3c3MiLCJtZXNzYWdlIiwiY2xpZW50cyIsImZvckVhY2giLCJ3cyIsInJlYWR5U3RhdGUiLCJXZWJTb2NrZXQiLCJPUEVOIiwic2VuZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJjcmVldmV5QXBpIiwicnVubmVyIiwic3Vic2NyaWJlIiwib24iLCJwYXlsb2FkIiwidHlwZSIsImhhbmRsZU1lc3NhZ2UiLCJjb25zb2xlIiwibG9nIiwiY29tbWFuZCIsInBhcnNlIiwic3RhdHVzIiwic3RhcnQiLCJzdG9wIiwiYXBwcm92ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBU0EsU0FBU0EsU0FBVCxDQUFtQkMsR0FBbkIsRUFBMENDLE9BQTFDLEVBQW1FO0FBQ2pFRCxFQUFBQSxHQUFHLENBQUNFLE9BQUosQ0FBWUMsT0FBWixDQUFxQkMsRUFBRCxJQUFRO0FBQzFCLFFBQUlBLEVBQUUsQ0FBQ0MsVUFBSCxLQUFrQkMsWUFBVUMsSUFBaEMsRUFBc0M7QUFDcENILE1BQUFBLEVBQUUsQ0FBQ0ksSUFBSCxDQUFRQyxJQUFJLENBQUNDLFNBQUwsQ0FBZVQsT0FBZixDQUFSO0FBQ0Q7QUFDRixHQUpEO0FBS0Q7O0FBRWMsU0FBU1UsVUFBVCxDQUFvQkMsTUFBcEIsRUFBZ0Q7QUFDN0QsU0FBTztBQUNMQyxJQUFBQSxTQUFTLENBQUNiLEdBQUQsRUFBd0I7QUFDL0JZLE1BQUFBLE1BQU0sQ0FBQ0UsRUFBUCxDQUFVLFFBQVYsRUFBcUJDLE9BQUQsSUFBNEJoQixTQUFTLENBQUNDLEdBQUQsRUFBTTtBQUFFZ0IsUUFBQUEsSUFBSSxFQUFFLFFBQVI7QUFBa0JELFFBQUFBO0FBQWxCLE9BQU4sQ0FBekQ7QUFDRCxLQUhJOztBQUtMRSxJQUFBQSxhQUFhLENBQUNiLEVBQUQsRUFBZ0JILE9BQWhCLEVBQXlDO0FBQ3BELFVBQUksT0FBT0EsT0FBUCxJQUFrQixRQUF0QixFQUFnQztBQUM5QmlCLFFBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLGNBQVosRUFBNEIsbUJBQTVCLEVBQWlEbEIsT0FBakQ7QUFDQTtBQUNEOztBQUVELFlBQU1tQixPQUFnQixHQUFHWCxJQUFJLENBQUNZLEtBQUwsQ0FBV3BCLE9BQVgsQ0FBekIsQ0FOb0QsQ0FPcEQ7O0FBRUEsY0FBUW1CLE9BQU8sQ0FBQ0osSUFBaEI7QUFDRSxhQUFLLFFBQUw7QUFBZTtBQUNiWixZQUFBQSxFQUFFLENBQUNJLElBQUgsQ0FBUUMsSUFBSSxDQUFDQyxTQUFMLENBQWU7QUFBRU0sY0FBQUEsSUFBSSxFQUFFLFFBQVI7QUFBa0JELGNBQUFBLE9BQU8sRUFBRUgsTUFBTSxDQUFDVTtBQUFsQyxhQUFmLENBQVI7QUFDQTtBQUNEOztBQUNELGFBQUssT0FBTDtBQUFjO0FBQ1pWLFlBQUFBLE1BQU0sQ0FBQ1csS0FBUCxDQUFhSCxPQUFPLENBQUNMLE9BQXJCO0FBQ0E7QUFDRDs7QUFDRCxhQUFLLE1BQUw7QUFBYTtBQUNYSCxZQUFBQSxNQUFNLENBQUNZLElBQVA7QUFDQTtBQUNEOztBQUNELGFBQUssU0FBTDtBQUFnQjtBQUNkWixZQUFBQSxNQUFNLENBQUNhLE9BQVAsQ0FBZUwsT0FBTyxDQUFDTCxPQUF2QjtBQUNBO0FBQ0Q7QUFoQkg7QUFrQkQ7O0FBaENJLEdBQVA7QUFrQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgV2ViU29ja2V0IGZyb20gJ3dzJztcbmltcG9ydCBSdW5uZXIgZnJvbSAnLi9ydW5uZXInO1xuaW1wb3J0IHsgUmVxdWVzdCwgUmVzcG9uc2UsIENyZWV2ZXlVcGRhdGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlZXZleUFwaSB7XG4gIHN1YnNjcmliZTogKHdzczogV2ViU29ja2V0LlNlcnZlcikgPT4gdm9pZDtcbiAgaGFuZGxlTWVzc2FnZTogKHdzOiBXZWJTb2NrZXQsIG1lc3NhZ2U6IFdlYlNvY2tldC5EYXRhKSA9PiB2b2lkO1xufVxuXG5mdW5jdGlvbiBicm9hZGNhc3Qod3NzOiBXZWJTb2NrZXQuU2VydmVyLCBtZXNzYWdlOiBSZXNwb25zZSk6IHZvaWQge1xuICB3c3MuY2xpZW50cy5mb3JFYWNoKCh3cykgPT4ge1xuICAgIGlmICh3cy5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgd3Muc2VuZChKU09OLnN0cmluZ2lmeShtZXNzYWdlKSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlZXZleUFwaShydW5uZXI6IFJ1bm5lcik6IENyZWV2ZXlBcGkge1xuICByZXR1cm4ge1xuICAgIHN1YnNjcmliZSh3c3M6IFdlYlNvY2tldC5TZXJ2ZXIpIHtcbiAgICAgIHJ1bm5lci5vbigndXBkYXRlJywgKHBheWxvYWQ6IENyZWV2ZXlVcGRhdGUpID0+IGJyb2FkY2FzdCh3c3MsIHsgdHlwZTogJ3VwZGF0ZScsIHBheWxvYWQgfSkpO1xuICAgIH0sXG5cbiAgICBoYW5kbGVNZXNzYWdlKHdzOiBXZWJTb2NrZXQsIG1lc3NhZ2U6IFdlYlNvY2tldC5EYXRhKSB7XG4gICAgICBpZiAodHlwZW9mIG1lc3NhZ2UgIT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1tXZWJTb2NrZXRdOicsICd1bmhhbmRsZWQgbWVzc2FnZScsIG1lc3NhZ2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbW1hbmQ6IFJlcXVlc3QgPSBKU09OLnBhcnNlKG1lc3NhZ2UpO1xuICAgICAgLy8gY29uc29sZS5sb2coXCJbV2ViU29ja2V0XTpcIiwgXCJtZXNzYWdlXCIsIG1lc3NhZ2UpO1xuXG4gICAgICBzd2l0Y2ggKGNvbW1hbmQudHlwZSkge1xuICAgICAgICBjYXNlICdzdGF0dXMnOiB7XG4gICAgICAgICAgd3Muc2VuZChKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdzdGF0dXMnLCBwYXlsb2FkOiBydW5uZXIuc3RhdHVzIH0pKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnc3RhcnQnOiB7XG4gICAgICAgICAgcnVubmVyLnN0YXJ0KGNvbW1hbmQucGF5bG9hZCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3N0b3AnOiB7XG4gICAgICAgICAgcnVubmVyLnN0b3AoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnYXBwcm92ZSc6IHtcbiAgICAgICAgICBydW5uZXIuYXBwcm92ZShjb21tYW5kLnBheWxvYWQpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG4iXX0=