summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Tony Sullivan <tony.f.sullivan@outlook.com> 2022-05-31 18:13:05 +0000
committerGravatar GitHub <noreply@github.com> 2022-05-31 18:13:05 +0000
commit10b2589093f23d5f92e0509f9d3eebfaae2d46a7 (patch)
tree3ee67be5784d5971ea2c36f048312b180aef21b0
parentb2f955ec1badf4d61feba9d87e512ced2b3bbcda (diff)
downloadastro-10b2589093f23d5f92e0509f9d3eebfaae2d46a7.tar.gz
astro-10b2589093f23d5f92e0509f9d3eebfaae2d46a7.tar.zst
astro-10b2589093f23d5f92e0509f9d3eebfaae2d46a7.zip
Fixing HMR for hoisted scripts (#3427)
* WIP: the leading /@fs broke script HMR * Revert "WIP: the leading /@fs broke script HMR" This reverts commit 84fce366268033261369aed48f909e59e78bf3e4. * Metadata needs to strip off /@fs from hoisted script URLs * adding a test for hoisted script HMR support * removing 2 second timeout on navigation, allow default 30 seconds * simplifying the hoisted script test sync * TEMP: bubbling up console logs to track down windows failure * removing temp logging * disabling the test on windows for now * chore: adding changeset
-rw-r--r--.changeset/quick-crabs-lay.md5
-rw-r--r--packages/astro/e2e/astro-component.test.js24
-rw-r--r--packages/astro/e2e/fixtures/astro-component/src/pages/index.astro4
-rw-r--r--packages/astro/src/runtime/server/metadata.ts3
4 files changed, 33 insertions, 3 deletions
diff --git a/.changeset/quick-crabs-lay.md b/.changeset/quick-crabs-lay.md
new file mode 100644
index 000000000..48f488797
--- /dev/null
+++ b/.changeset/quick-crabs-lay.md
@@ -0,0 +1,5 @@
+---
+'astro': patch
+---
+
+Fixes HMR support for inline scripts in Astro components on Linux and OSX
diff --git a/packages/astro/e2e/astro-component.test.js b/packages/astro/e2e/astro-component.test.js
index 65499499f..5dcf2daea 100644
--- a/packages/astro/e2e/astro-component.test.js
+++ b/packages/astro/e2e/astro-component.test.js
@@ -1,4 +1,5 @@
import { test as base, expect } from '@playwright/test';
+import os from 'os';
import { loadFixture } from './test-utils.js';
const test = base.extend({
@@ -18,8 +19,8 @@ test.afterEach(async () => {
await devServer.stop();
});
-test.describe('Astro components', () => {
- test('HMR', async ({ page, astro }) => {
+test.describe('Astro component HMR', () => {
+ test('component styles', async ({ page, astro }) => {
await page.goto(astro.resolveUrl('/'));
const hero = page.locator('section');
@@ -39,4 +40,23 @@ test.describe('Astro components', () => {
'rgb(230, 230, 230)'
);
});
+
+ // TODO: Re-enable this test on windows when #3424 is fixed
+ // https://github.com/withastro/astro/issues/3424
+ const it = os.platform() === 'win32' ? test.skip : test;
+ it('hoisted scripts', async ({ page, astro }) => {
+ const initialLog = page.waitForEvent('console', (message) => message.text() === 'Hello, Astro!');
+
+ await page.goto(astro.resolveUrl('/'));
+ await initialLog;
+
+ const updatedLog = page.waitForEvent('console', (message) => message.text() === 'Hello, updated Astro!');
+
+ // Edit the hoisted script on the page
+ await astro.editFile('./src/pages/index.astro', (content) =>
+ content.replace('Hello, Astro!', 'Hello, updated Astro!')
+ );
+
+ await updatedLog;
+ });
});
diff --git a/packages/astro/e2e/fixtures/astro-component/src/pages/index.astro b/packages/astro/e2e/fixtures/astro-component/src/pages/index.astro
index a52ee713f..76221b040 100644
--- a/packages/astro/e2e/fixtures/astro-component/src/pages/index.astro
+++ b/packages/astro/e2e/fixtures/astro-component/src/pages/index.astro
@@ -14,3 +14,7 @@ import Hero from '../components/Hero.astro';
</main>
</body>
</html>
+
+<script>
+ console.log('Hello, Astro!');
+</script>
diff --git a/packages/astro/src/runtime/server/metadata.ts b/packages/astro/src/runtime/server/metadata.ts
index 9fb23724d..9379cc3ff 100644
--- a/packages/astro/src/runtime/server/metadata.ts
+++ b/packages/astro/src/runtime/server/metadata.ts
@@ -102,7 +102,8 @@ export class Metadata {
let i = 0,
pathname = metadata.mockURL.pathname;
while (i < metadata.hoisted.length) {
- yield `${pathname}?astro&type=script&index=${i}`;
+ // Strip off the leading "/@fs" added during compilation.
+ yield `${pathname.replace('/@fs', '')}?astro&type=script&index=${i}`;
i++;
}
}