t3-code-android-nightly/.repos/alchemy-effect/packages/alchemy/test/Website/OptionalFrontendFrameworks.test.ts
Julius Marminge 6f9cea00ae
chore(refs): sync Effect and Alchemy references to 4.0.1 and beta.80 (#16170)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 13:22:30 -07:00

54 lines
1.9 KiB
TypeScript

import { exec } from "@/Util/exec.ts";
import { nodeLoaderArgs } from "@/Util/Node.ts";
import * as NodeServices from "@effect/platform-node/NodeServices";
import { describe, expect, it } from "alchemy-test";
import * as Effect from "effect/Effect";
import { ChildProcess } from "effect/process";
import { fileURLToPath } from "node:url";
describe(
"optional frontend-frameworks peer",
{ tags: ["unit", "local"] },
() => {
it.effect(
"imports providers without the peer and reports missing website dependencies as defects",
() =>
Effect.gen(function* () {
const fixture = fileURLToPath(
new URL(
"./fixtures/optional-frontend-frameworks.fixture.ts",
import.meta.url,
),
);
const { exitCode, stdout, stderr } = yield* exec(
ChildProcess.make("node", [...nodeLoaderArgs(fixture), fixture], {
stdout: "pipe",
stderr: "pipe",
killSignal: "SIGKILL",
}),
);
expect({ exitCode, stderr }).toEqual({ exitCode: 0, stderr: "" });
expect(JSON.parse(stdout)).toEqual({
providers: ["Prisma", "Neon", "Fly", "Hetzner", "Railway"],
providerImportAttempts: 0,
loaderImportAttempts: 1,
defect: true,
error: {
_tag: "FrameworkServerError",
framework: "@alchemy.run/frontend-frameworks/core",
message: expect.stringContaining(
"Install @alchemy.run/frontend-frameworks",
),
cause:
"Cannot find package '@alchemy.run/frontend-frameworks/core'",
},
});
}).pipe(
Effect.timeout("30 seconds"),
Effect.scoped,
Effect.provide(NodeServices.layer),
),
{ timeout: 40_000 },
);
},
);