Files
nexu-io--open-design/scripts/web-import-isolation.test.ts
wehub-resource-sync 070959e133
landing-page-staging / Deploy landing page to staging (push) Has been skipped
landing-page-ci / Validate landing page (push) Failing after 4s
visual-baseline / Capture visual baselines (push) Has been cancelled
bake-plugin-previews / Bake plugin previews (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:00:47 +08:00

74 lines
2.3 KiB
TypeScript

import assert from "node:assert/strict";
import test from "node:test";
import {
collectWebImportIsolationViolationsFromSource,
isWebImportIsolationSourcePath,
} from "./guard.ts";
test("web import isolation rejects daemon private source imports", () => {
const violations = collectWebImportIsolationViolationsFromSource(
"apps/web/src/providers/example.ts",
[
"import { startServer } from '../../../daemon/src/server';",
"import { bypass } from '@/../daemon/src/server';",
].join("\n"),
);
assert.deepEqual(
violations.map((violation) => [violation.lineNumber, violation.specifier]),
[
[1, "../../../daemon/src/server"],
[2, "@/../daemon/src/server"],
],
);
});
test("web import isolation rejects sidecar and platform package imports", () => {
const violations = collectWebImportIsolationViolationsFromSource(
"apps/web/app/page.tsx",
[
"import { parseStamp } from '@open-design/platform';",
"type SidecarRuntime = import('@open-design/sidecar').Runtime;",
"const proto = await import('@open-design/sidecar-proto');",
"const sidecar = await import('@/../../packages/sidecar/src/index');",
].join("\n"),
);
assert.deepEqual(
violations.map((violation) => violation.specifier),
[
"@open-design/platform",
"@open-design/sidecar",
"@open-design/sidecar-proto",
"@/../../packages/sidecar/src/index",
],
);
});
test("web import isolation allows contracts and app-local imports", () => {
assert.deepEqual(
collectWebImportIsolationViolationsFromSource(
"apps/web/src/providers/example.ts",
[
"import type { ChatRunStatusResponse } from '@open-design/contracts';",
"import { requestJson } from './daemon';",
"import { latestTodoWriteInputFromMessages } from '@/src/runtime/todos';",
].join("\n"),
),
[],
);
});
test("web import isolation ignores tests and comments", () => {
assert.equal(isWebImportIsolationSourcePath("apps/web/src/providers/example.ts"), true);
assert.equal(isWebImportIsolationSourcePath("apps/web/tests/providers/example.test.ts"), false);
assert.deepEqual(
collectWebImportIsolationViolationsFromSource(
"apps/web/src/providers/example.ts",
"// import { startServer } from '../../daemon/src/server';\n",
),
[],
);
});