diff --git a/.changeset/fresh-balloons-glow.md b/.changeset/fresh-balloons-glow.md new file mode 100644 index 000000000000..5c71e9879824 --- /dev/null +++ b/.changeset/fresh-balloons-glow.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes an issue where HMR would not trigger when modifying files while using @astrojs/cloudflare with prerenderEnvironment: 'node' enabled. diff --git a/packages/astro/e2e/cloudflare-node-prerender-hmr.test.js b/packages/astro/e2e/cloudflare-node-prerender-hmr.test.js new file mode 100644 index 000000000000..c616de3fc5c5 --- /dev/null +++ b/packages/astro/e2e/cloudflare-node-prerender-hmr.test.js @@ -0,0 +1,34 @@ +import { expect } from '@playwright/test'; +import { testFactory } from './test-utils.js'; + +const test = testFactory(import.meta.url, { + root: './fixtures/cloudflare-node-prerender-hmr/', + devToolbar: { + enabled: false, + }, +}); + +let devServer; + +test.beforeAll(async ({ astro }) => { + devServer = await astro.startDevServer(); +}); + +test.afterAll(async () => { + await devServer.stop(); +}); + +test.describe('Astro page', () => { + test('refresh with HMR', async ({ page, astro }) => { + await page.goto(astro.resolveUrl('/')); + + const h = page.locator('h1'); + await expect(h, 'original text set').toHaveText('Original content'); + + await astro.editFile('./src/pages/index.astro', (original) => + original.replaceAll('Original', 'Updated'), + ); + + await expect(h, 'text changed').toHaveText('Updated content'); + }); +}); diff --git a/packages/astro/e2e/fixtures/cloudflare-node-prerender-hmr/astro.config.mjs b/packages/astro/e2e/fixtures/cloudflare-node-prerender-hmr/astro.config.mjs new file mode 100644 index 000000000000..18c994a1f265 --- /dev/null +++ b/packages/astro/e2e/fixtures/cloudflare-node-prerender-hmr/astro.config.mjs @@ -0,0 +1,9 @@ +// @ts-check +import cloudflare from '@astrojs/cloudflare'; +import { defineConfig } from 'astro/config'; + +export default defineConfig({ + adapter: cloudflare({ + prerenderEnvironment: 'node', + }), +}); diff --git a/packages/astro/e2e/fixtures/cloudflare-node-prerender-hmr/package.json b/packages/astro/e2e/fixtures/cloudflare-node-prerender-hmr/package.json new file mode 100644 index 000000000000..1f02c5468057 --- /dev/null +++ b/packages/astro/e2e/fixtures/cloudflare-node-prerender-hmr/package.json @@ -0,0 +1,13 @@ +{ + "name": "@test/astro-cloudflare-node-prerender-mdx", + "version": "0.0.0", + "private": true, + "scripts": { + "dev": "astro dev", + "build": "astro build" + }, + "dependencies": { + "@astrojs/cloudflare": "workspace:*", + "astro": "workspace:*" + } +} diff --git a/packages/astro/e2e/fixtures/cloudflare-node-prerender-hmr/src/pages/index.astro b/packages/astro/e2e/fixtures/cloudflare-node-prerender-hmr/src/pages/index.astro new file mode 100644 index 000000000000..d7467b5195c7 --- /dev/null +++ b/packages/astro/e2e/fixtures/cloudflare-node-prerender-hmr/src/pages/index.astro @@ -0,0 +1,6 @@ +--- +--- + +