![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/lavocat.ca/public_html/node_modules/htmlparser2/src/ |
import { describe, it, expect } from "vitest";
import {
parseDocument,
parseDOM,
createDocumentStream,
createDomStream,
DomHandler,
DefaultHandler,
type Parser,
} from "./index.js";
import { Element } from "domhandler";
// Add an `attributes` prop to the Element for now, to make it possible for Jest to render DOM nodes.
Object.defineProperty(Element.prototype, "attributes", {
get() {
return Object.keys(this.attribs).map((name) => ({
name,
value: this.attribs[name],
}));
},
configurable: true,
enumerable: false,
});
describe("Index", () => {
it("parseDocument", () => {
const dom = parseDocument("<a foo><b><c><?foo>Yay!");
expect(dom).toMatchSnapshot();
});
it("parseDOM", () => {
const dom = parseDOM("<a foo><b><c><?foo>Yay!");
expect(dom).toMatchSnapshot();
});
it("createDocumentStream", () => {
let documentStream!: Parser;
const documentPromise = new Promise(
(resolve, reject) =>
(documentStream = createDocumentStream((error, dom) =>
error ? reject(error) : resolve(dom),
)),
);
for (const c of "&This is text<!-- and comments --><tags>") {
documentStream.write(c);
}
documentStream.end();
return expect(documentPromise).resolves.toMatchSnapshot();
});
it("createDomStream", () => {
let domStream!: Parser;
const domPromise = new Promise(
(resolve, reject) =>
(domStream = createDomStream((error, dom) =>
error ? reject(error) : resolve(dom),
)),
);
for (const c of "&This is text<!-- and comments --><tags>") {
domStream.write(c);
}
domStream.end();
return expect(domPromise).resolves.toMatchSnapshot();
});
describe("API", () => {
it("should export the appropriate APIs", () => {
expect(DomHandler).toEqual(DefaultHandler);
});
});
});