marko/packages/runtime-class/test/__util__/create-marko-jsdom-module.js

64 lines
1.4 KiB
JavaScript

"use strict";
const { createBrowser } = require("jsdom-context-require");
const compiler = require("../../compiler");
const globals = [
"console",
"__coverage__",
"Error",
"describe",
"before",
"after",
"beforeEach",
"afterEach",
"it",
];
const browserExtensions = {
".marko": compileMarkoModule,
".html": compileMarkoModule,
};
module.exports = function (dir, html, options) {
options = options || {};
return createBrowser({
dir: dir,
html: html,
extensions: browserExtensions,
// runScripts: 'dangerously', // JSDOM 10+
beforeParse(window, browser) {
window.global = window;
window.alert = () => {};
window.addEventListener("error", (e) => {
browser.error = browser.error || e.error;
});
browser.require("complain").log = (...args) =>
require("complain").log(...args);
globals.forEach(function (k) {
window[k] = global[k];
});
if (options.beforeParse) {
options.beforeParse(window, browser);
}
},
});
};
function compileMarkoModule(module, filename) {
return module._compile(
compiler.compileFile(filename, {
writeToDisk: false,
output: "vdom",
browser: true,
meta: true,
modules: "cjs",
babelConfig: {
babelrc: false,
configFile: false,
browserslistConfigFile: false,
},
}),
filename,
);
}