Files
hyperframes/packages/studio/vite.preview-config.test.ts
Miguel Ángel 9da422fd7f feat(cli): run a managed background preview in every launch mode (#3310)
`--background` was rejected outside the embedded server. It now re-execs the
CLI in foreground, which makes it mode-agnostic by construction: whichever
server the child resolves to serves the config endpoint the readiness probe
looks for. `--foreground` is its counterpart, for a non-interactive shell that
wants to stay attached, and a bare launch keeps the same promise — attached in
an interactive terminal, managed in an agent session.

That generalization exposed an existing hole. Local-studio mode runs Vite with
the studio package as its cwd and needs that package's own Vite config, which
the published tarball does not carry, but resolving the package was treated as
proof the mode was usable. An npm-installed studio therefore took a path that
can never come up — previously a clear error, now a ten-second silent timeout.
The predicate becomes "can this studio actually be served", so a published
install falls back to embedded mode, which works.

Over the 1k line budget at ~1.3k. The overage is one command file and its
tests carrying one invariant, and the seam that would split it further is
inside a single request-handling function — a split there would produce two
PRs neither of which starts a preview on its own.
2026-08-19 17:02:44 -04:00

31 lines
854 B
TypeScript

import { describe, expect, it } from "vitest";
import { previewConfigPayload } from "./vite.preview-config";
describe("previewConfigPayload", () => {
it("identifies a detached Vite preview to the CLI lifecycle scanner", () => {
expect(
previewConfigPayload(
{
HYPERFRAMES_PREVIEW_PROJECT_DIR: "/tmp/video",
HYPERFRAMES_PREVIEW_PROJECT_NAME: "video",
HYPERFRAMES_PREVIEW_BROWSER_GPU_MODE: "software",
},
4321,
"0.7.109",
),
).toEqual({
isHyperframes: true,
pid: 4321,
projectName: "video",
projectDir: "/tmp/video",
serverBuildSignature: null,
browserGpuMode: "software",
version: "0.7.109",
});
});
it("does not claim unrelated direct Vite sessions", () => {
expect(previewConfigPayload({})).toBeNull();
});
});