| 1 | import { providers } from "@/Neon/Providers.ts"; |
| 2 | import * as Test from "@/Test/Alchemy.ts"; |
| 3 | import { Server } from "@/Website/Server.ts"; |
| 4 | import { expect } from "alchemy-test"; |
| 5 | import * as Effect from "effect/Effect"; |
| 6 | import { browserRoundtrip } from "./Browser.ts"; |
| 7 | import { bodyContaining, exampleRoot } from "./Fixture.ts"; |
| 8 | |
| 9 | const { test } = Test.make({ providers: providers(), dev: true }); |
| 10 | |
| 11 | test.provider( |
| 12 | "Vocs source target isolates its dev cwd and supports interactive MDX", |
| 13 | (stack) => |
| 14 | Effect.gen(function* () { |
| 15 | yield* stack.destroy(); |
| 16 | const root = yield* exampleRoot("vocs"); |
| 17 | const framework = new URL( |
| 18 | "../../../../../packages/frontend-frameworks/src/vocs/neon.ts", |
| 19 | import.meta.url, |
| 20 | ).href; |
| 21 | const server = yield* stack.deploy( |
| 22 | Server("Build", { root, framework, target: framework }), |
| 23 | ); |
| 24 | expect(server.url).toMatch(/^http:\/\/(localhost|127\.0\.0\.1):\d+/); |
| 25 | yield* bodyContaining(`${server.url}/counter`, "count:"); |
| 26 | yield* browserRoundtrip(String(server.url), "vocs"); |
| 27 | yield* stack.destroy(); |
| 28 | }), |
| 29 | { |
| 30 | tags: ["provider:neon", "provider:neon:website", "local"], |
| 31 | timeout: 120_000, |
| 32 | }, |
| 33 | ); |