mirror of
https://github.com/cloudflare/vinext.git
synced 2026-09-14 19:04:59 +08:00
fb233b0a34
* Improve dev overlay stack source mapping * Polish dev error overlay stack display * Add dev overlay code frames * Align dev overlay message spacing * Add dev overlay error copy action * Fix dev overlay knip exports * Polish dev overlay layout * Polish dev error overlay spacing * Fix dev overlay coverage and source frame metadata * Fix dev overlay recovery for RSC HMR errors * Handle Vite HMR build errors in dev overlay * Fix knip * Use Shadow DOM for dev error overlay
24 lines
1.0 KiB
TypeScript
24 lines
1.0 KiB
TypeScript
import { describe, expect, it } from "vite-plus/test";
|
|
import { createInitialDevServerErrorScript } from "../packages/vinext/src/server/dev-initial-server-error.js";
|
|
|
|
describe("initial dev server error script", () => {
|
|
it("serializes server errors into an HTML-safe nonce-bearing script in development", () => {
|
|
const error = new Error('</script><script>alert("xss")</script>');
|
|
error.stack = "Error: boom\n at SiteFooter (/app/site-footer.tsx:2:9)";
|
|
|
|
const html = createInitialDevServerErrorScript(error, "vinext-nonce", "development");
|
|
|
|
expect(html).toContain('<script nonce="vinext-nonce">');
|
|
expect(html).toContain('self["__VINEXT_INITIAL_DEV_ERRORS__"].push');
|
|
expect(html).toContain("\\u003c/script\\u003e");
|
|
expect(html).not.toContain("</script><script");
|
|
expect(html).toContain("/app/site-footer.tsx:2:9");
|
|
});
|
|
|
|
it("does not emit anything in production", () => {
|
|
const html = createInitialDevServerErrorScript(new Error("secret"), undefined, "production");
|
|
|
|
expect(html).toBe("");
|
|
});
|
|
});
|