feat: consolidate shared UI and harden browser authority for release
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { dirname, relative, resolve, sep } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { resolveConfig } from "vite";
|
||||
|
||||
const webuiRoot = fileURLToPath(new URL("..", import.meta.url));
|
||||
|
||||
function contains(parent, candidate) {
|
||||
const suffix = relative(parent, candidate);
|
||||
return suffix === "" || (!suffix.startsWith(`..${sep}`) && suffix !== ".." && !suffix.startsWith(sep));
|
||||
}
|
||||
|
||||
// Resolve the real Vite configurations without creating a server, optimizing
|
||||
// dependencies, or changing any existing development/browser-test cache.
|
||||
const app = await resolveConfig({
|
||||
root: webuiRoot,
|
||||
configFile: resolve(webuiRoot, "vite.config.ts")
|
||||
}, "serve");
|
||||
const conformance = await resolveConfig({
|
||||
root: webuiRoot,
|
||||
configFile: resolve(webuiRoot, "vite.conformance.config.ts")
|
||||
}, "serve");
|
||||
|
||||
assert.notEqual(app.cacheDir, conformance.cacheDir,
|
||||
"Browser conformance must never replace the running application's optimized dependencies.");
|
||||
assert.ok(!contains(app.cacheDir, conformance.cacheDir) && !contains(conformance.cacheDir, app.cacheDir),
|
||||
"Neither cache may own the other cache's directory: optimizer cleanup must remain isolated.");
|
||||
assert.equal(dirname(app.cacheDir), dirname(conformance.cacheDir),
|
||||
"Product and conformance use explicit sibling cache directories.");
|
||||
assert.ok(contains(resolve(webuiRoot, "node_modules"), app.cacheDir),
|
||||
"The application cache remains generated local dependency state.");
|
||||
assert.ok(contains(resolve(webuiRoot, "node_modules"), conformance.cacheDir),
|
||||
"The conformance cache remains generated local dependency state.");
|
||||
assert.ok(app.optimizeDeps.include.includes("@xyflow/react"),
|
||||
"Lazy Workflow and Dataflow graph imports are prebundled before their first visit.");
|
||||
assert.ok(app.optimizeDeps.include.includes("read-excel-file/browser"),
|
||||
"Deferred spreadsheet imports remain prebundled.");
|
||||
assert.ok(app.optimizeDeps.include.includes("@tiptap/react"),
|
||||
"Deferred rich-text editors remain prebundled.");
|
||||
|
||||
console.log("Vite product/conformance dependency-cache isolation passed.");
|
||||
Reference in New Issue
Block a user