This keeps failing even after supporting pasteboard custom data. It needs more investigation: PASS htmlInNullOrigin.includes("dangerousCode") is false PASS parsedTree = (new DOMParser).parseFromString(htmlInNullOrigin, "text/html"); !!parsedTree.querySelector("b"); is true PASS parsedTree.querySelector("b").textContent is "16th President of the United States:" -PASS (new URL(parsedTree.querySelector("img").src)).protocol is "blob:" +FAIL (new URL(parsedTree.querySelector("img").src)).protocol should be blob:. Threw exception TypeError: Type error PASS parsedTree.querySelector("img").src.includes("resources/abe.png") is false PASS itemsInNullOrigin.some((item) => item.kind == "string" && item.type == "text/html") is true PASS typesInNullOrigin.includes("text/html") is true @@ -16,7 +16,7 @@ PASS htmlInSameDocument.includes("dangerousCode") is false PASS parsedTree = (new DOMParser).parseFromString(htmlInNullOrigin, "text/html"); !!parsedTree.querySelector("b"); is true PASS parsedTree.querySelector("b").textContent is "16th President of the United States:" -FAIL (new URL(parsedTree.querySelector("img").src)).protocol should be file:. Was blob:. +FAIL (new URL(parsedTree.querySelector("img").src)).protocol should be file:. Threw exception TypeError: Type error FAIL parsedTree.querySelector("img").src.includes("resources/abe.png") should be true. Was false. PASS itemsInSameDocument.some((item) => item.kind == "string" && item.type == "text/html") is true PASS successfullyParsed is true