UNPKG

@helpscout/cyan

Version:

Cypress-like Testing for React + JSDOM

68 lines (48 loc) 2.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.gadget = void 0; var _fs = _interopRequireDefault(require("fs")); var _path = _interopRequireDefault(require("path")); var _render = require("../../utils/render.utils"); var _css = require("../../utils/css.utils"); var _pretty = _interopRequireDefault(require("../../utils/pretty.utils")); var _gadget = _interopRequireDefault(require("./gadget.css")); var _gadgetEditorTheme = _interopRequireDefault(require("./gadget.editor.theme.ayu")); var _gadget2 = _interopRequireDefault(require("./gadget.editor")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* global jasmine */ var currentTest; // @ts-ignore jasmine.getEnv().addReporter({ specStarted: function specStarted(result) { currentTest = result; } }); var getFilePath = function (filename) { if (filename === void 0) { filename = 'index'; } var base = _path.default.join(process.cwd(), '/node_modules/.cyan/'); if (!_fs.default.existsSync(base)) { _fs.default.mkdirSync(base); } return _path.default.join(base, filename + ".html"); }; var generateHTML = function (filename, lineNumber) { var css = (0, _css.getDocumentCSS)(); var html = (0, _pretty.default)((0, _render.getDocumentHTML)()); var _currentTest = currentTest, fullName = _currentTest.fullName; var template = "\n <!DOCTYPE html>\n <html>\n <head>\n <title>" + fullName + " | Cyan Inspector</title>\n <style>" + _gadget.default + "</style>\n </head>\n <body>\n <div id=\"bar\">\n <div>\n <strong>" + fullName + "</strong>\n <span style=\"opacity: 0.5\">" + lineNumber + "</span>\n <button id=\"done\">Done</button>\n </div>\n </div>\n <iframe id=\"iframe\"></iframe>\n <div id=\"editor\"></div>\n <div id=\"dragHandle\"><div id=\"dragHandleLine\"></div></div>\n <div id=\"dragOverlay\"></div>\n <script>window.markup = `" + html + "`</script>\n <script>window.css = `" + css + "`</script>\n <script src=\"https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.4/ace.js\"></script>\n " + _gadgetEditorTheme.default + "\n <script>\n const initializeEditor = " + _gadget2.default.toString() + "\n initializeEditor()\n </script>\n </body>\n </html>\n "; _fs.default.writeFileSync(getFilePath(filename), template); }; var gadget = function (filename) { // @ts-ignore var lineNumber = new Error().stack.match(/\(.*\)/g)[2]; jest.runAllTimers(); generateHTML(filename, lineNumber); }; exports.gadget = gadget; var _default = gadget; exports.default = _default;