mancha
Version:
Javscript HTML rendering engine
63 lines • 2.44 kB
JavaScript
import * as chai from "chai";
import chaiAsPromised from "chai-as-promised";
import { DomUtils } from "htmlparser2";
import { hasProperty } from "./dome.js";
export function innerHTML(elem) {
if (hasProperty(elem, "innerHTML"))
return elem.innerHTML;
else
return DomUtils.getInnerHTML(elem);
}
export function getTextContent(elem) {
if (hasProperty(elem, "textContent"))
return elem.textContent;
else
return DomUtils.textContent(elem);
}
export async function setupGlobalTestEnvironment() {
// Set up global test environment for DOM manipulation.
// Fall back to JSDOM for DOM manipulation during testing.
if (!globalThis.window) {
// Import JSDOM dynamically, because it's not available in browser context.
const { JSDOM } = await import("jsdom");
const dom = new JSDOM(``, { url: "http://localhost/" });
// Types.
globalThis.Document = globalThis.Document || dom.window.Document;
globalThis.DocumentFragment = globalThis.DocumentFragment || dom.window.DocumentFragment;
// Objects and Classes.
globalThis.window = globalThis.window || dom.window;
globalThis.document = globalThis.document || dom.window.document;
globalThis.DOMParser = globalThis.DOMParser || dom.window.DOMParser;
globalThis.XMLSerializer = globalThis.XMLSerializer || dom.window.XMLSerializer;
globalThis.PopStateEvent = globalThis.PopStateEvent || dom.window.PopStateEvent;
}
}
// Map the assert methods using Chai.
chai.use(chaiAsPromised);
export const assert = {
equal: (actual, expected, message) => {
chai.expect(actual, message).to.equal(expected);
},
deepEqual: (actual, expected, message) => {
chai.expect(actual, message).to.deep.equal(expected);
},
notEqual: (actual, expected, message) => {
chai.expect(actual, message).to.not.equal(expected);
},
greaterEqual: (actual, expected, message) => {
chai.expect(actual, message).to.be.gte(expected);
},
ok: (value, message) => {
chai.expect(value, message).to.be.ok;
},
fail: (message) => {
throw new Error(message);
},
throws: (fn, message) => {
chai.expect(fn, message).to.throw();
},
rejects: async (p, message) => {
await chai.expect(p, message).to.eventually.be.rejected;
},
};
//# sourceMappingURL=test_utils.js.map