@helpscout/cyan
Version:
Cypress-like Testing for React + JSDOM
68 lines (48 loc) • 2.79 kB
JavaScript
"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;