diff --git a/packages/http-recorder/README.md b/packages/http-recorder/README.md index ab1d39436e..f527dd0cca 100644 --- a/packages/http-recorder/README.md +++ b/packages/http-recorder/README.md @@ -196,8 +196,8 @@ type RecordReplayOptions = { ## Layout -| File | Purpose | -| -------------- | -------------------------------------------------------------------------------- | +| File | Purpose | +| -------------- | --------------------------------------------------------------------------- | | `effect.ts` | `cassetteLayer` / `recordingLayer` — the `HttpClient` adapter. | | `websocket.ts` | `makeWebSocketExecutor` — WebSocket record/replay. | | `cassette.ts` | `Cassette.Service` — `fileSystem` / `memory` adapters, error types. | diff --git a/packages/http-recorder/src/cassette.ts b/packages/http-recorder/src/cassette.ts index d2e37dd61a..331f3d4b60 100644 --- a/packages/http-recorder/src/cassette.ts +++ b/packages/http-recorder/src/cassette.ts @@ -120,7 +120,12 @@ export const fileSystem = ( Effect.map((files) => files .filter((file) => file.endsWith(".json")) - .map((file) => path.relative(directory, file).replace(/\\/g, "/").replace(/\.json$/, "")) + .map((file) => + path + .relative(directory, file) + .replace(/\\/g, "/") + .replace(/\.json$/, ""), + ) .toSorted((a, b) => a.localeCompare(b)), ), ), diff --git a/packages/http-recorder/src/effect.ts b/packages/http-recorder/src/effect.ts index 8170b99976..e9cb60cc2e 100644 --- a/packages/http-recorder/src/effect.ts +++ b/packages/http-recorder/src/effect.ts @@ -102,7 +102,9 @@ export const recordingLayer = ( } yield* cassetteService .append(name, interaction, options.metadata) - .pipe(Effect.catchTag("UnsafeCassetteError", (error) => Effect.fail(transportError(request, error.message)))) + .pipe( + Effect.catchTag("UnsafeCassetteError", (error) => Effect.fail(transportError(request, error.message))), + ) return HttpClientResponse.fromWeb( request, new Response(decodeResponseBody(interaction.response), interaction.response), diff --git a/packages/http-recorder/test/record-replay.test.ts b/packages/http-recorder/test/record-replay.test.ts index 0538f897f1..72512868ee 100644 --- a/packages/http-recorder/test/record-replay.test.ts +++ b/packages/http-recorder/test/record-replay.test.ts @@ -326,7 +326,10 @@ describe("http-recorder", () => { test("auto mode records to disk when the cassette is missing", async () => { const directory = fs.mkdtempSync(path.join(os.tmpdir(), "http-recorder-auto-record-")) - using server = Bun.serve({ port: 0, fetch: () => new Response('{"reply":"recorded"}', { headers: { "content-type": "application/json" } }) }) + using server = Bun.serve({ + port: 0, + fetch: () => new Response('{"reply":"recorded"}', { headers: { "content-type": "application/json" } }), + }) const url = `http://127.0.0.1:${server.port}/echo` // CI=true forces replay; clear it so we exercise the local-dev auto-record path. const previous = process.env.CI @@ -370,10 +373,18 @@ describe("http-recorder", () => { test("Cassette.list enumerates recorded cassette names", async () => { const directory = fs.mkdtempSync(path.join(os.tmpdir(), "http-recorder-list-")) await seedCassetteDirectory(directory, "alpha/one", [ - { transport: "http", request: { method: "GET", url: "https://x.test/a", headers: {}, body: "" }, response: { status: 200, headers: {}, body: "a" } }, + { + transport: "http", + request: { method: "GET", url: "https://x.test/a", headers: {}, body: "" }, + response: { status: 200, headers: {}, body: "a" }, + }, ]) await seedCassetteDirectory(directory, "beta", [ - { transport: "http", request: { method: "GET", url: "https://x.test/b", headers: {}, body: "" }, response: { status: 200, headers: {}, body: "b" } }, + { + transport: "http", + request: { method: "GET", url: "https://x.test/b", headers: {}, body: "" }, + response: { status: 200, headers: {}, body: "b" }, + }, ]) const names = await Effect.runPromise( @@ -415,7 +426,9 @@ describe("http-recorder", () => { transport: "websocket", open: { url: "wss://example.test/binary", headers: {} }, client: [], - server: [{ kind: "binary", body: Buffer.from(binaryServer).toString("base64"), bodyEncoding: "base64" }], + server: [ + { kind: "binary", body: Buffer.from(binaryServer).toString("base64"), bodyEncoding: "base64" }, + ], }, ], }),