From f7f2d2638e9e8dc4679d2bc5b5c73c1eb0de5e5b Mon Sep 17 00:00:00 2001 From: Pete Bacon Darwin Date: Mon, 19 Oct 2026 11:56:34 +0100 Subject: [PATCH] [vite-plugin] Backport October 19 SDK release coverage to v1 --- .changeset/v1-sdk-release-16313.md | 7 ++ .../src/__tests__/sdk-release.spec.ts | 73 +++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 .changeset/v1-sdk-release-16313.md create mode 100644 packages/vite-plugin-cloudflare/src/__tests__/sdk-release.spec.ts diff --git a/.changeset/v1-sdk-release-16313.md b/.changeset/v1-sdk-release-16313.md new file mode 100644 index 0000000000..6f9cdf8ced --- /dev/null +++ b/.changeset/v1-sdk-release-16313.md @@ -0,0 +1,7 @@ +--- +"@cloudflare/vite-plugin": patch +--- + +Align local development and preview with the October 19 Miniflare release + +Use the compatible SDK release with Miniflare 5.20261019.0-beta for Vite development and generated preview output. Earlier backports supply its coupled runtime and deployment helper versions; this release retains its own dev and preview regression coverage. diff --git a/packages/vite-plugin-cloudflare/src/__tests__/sdk-release.spec.ts b/packages/vite-plugin-cloudflare/src/__tests__/sdk-release.spec.ts new file mode 100644 index 0000000000..841e0baa81 --- /dev/null +++ b/packages/vite-plugin-cloudflare/src/__tests__/sdk-release.spec.ts @@ -0,0 +1,73 @@ +import { realpath, writeFile } from "node:fs/promises"; +import { runInTempDir } from "@cloudflare/workers-utils/test-helpers"; +import { createBuilder, createServer, preview } from "vite"; +import { test, vi } from "vitest"; +import { cloudflare } from "../../dist/index.mjs"; + +runInTempDir(); + +test.for(["dev", "preview"] as const)( + "runs the published v1 plugin with the October 19 SDK in %s", + async (mode, { expect, onTestFinished }) => { + const root = await realpath(process.cwd()); + process.chdir(root); + vi.stubEnv("PWD", root); + onTestFinished(() => { + vi.unstubAllEnvs(); + }); + await writeFile("package.json", JSON.stringify({ type: "module" })); + await writeFile( + "wrangler.json", + JSON.stringify({ + name: "v1-sdk-release", + main: "index.js", + compatibility_date: "2026-10-19", + vars: { RELEASE: "october-19" }, + }) + ); + await writeFile( + "index.js", + ` +export default { + fetch(request, env) { + return Response.json({ release: env.RELEASE, path: new URL(request.url).pathname }); + }, +}; +` + ); + const config = { + root, + configFile: false as const, + logLevel: "silent" as const, + plugins: [ + cloudflare({ + inspectorPort: false, + persistState: false, + remoteBindings: false, + }), + ], + server: { port: 0 }, + preview: { port: 0 }, + }; + if (mode === "preview") { + const builder = await createBuilder(config); + await builder.buildApp(); + } + const server = + mode === "dev" ? await createServer(config) : await preview(config); + onTestFinished(() => server.close()); + if ("listen" in server) { + await server.listen(); + } + const url = server.resolvedUrls?.local[0]; + if (!url) { + throw new Error("The v1 plugin did not start a local server"); + } + const response = await fetch(new URL("/release-check", url)); + expect(response.status).toBe(200); + expect(await response.json()).toEqual({ + release: "october-19", + path: "/release-check", + }); + } +);