summaryrefslogtreecommitdiff
path: root/packages/integrations/vercel
diff options
context:
space:
mode:
authorGravatar Matthew Phillips <matthew@skypack.dev> 2024-07-18 11:03:39 -0400
committerGravatar GitHub <noreply@github.com> 2024-07-18 16:03:39 +0100
commitfe3afebd652289ec1b65eed983e804dbb37ed092 (patch)
treea91e6f3d0c548294ce87541511e610ccf003f9d2 /packages/integrations/vercel
parent1a26c6dfe5fb0c339da5ba6fc6e18b2b9955ebb3 (diff)
downloadastro-fe3afebd652289ec1b65eed983e804dbb37ed092.tar.gz
astro-fe3afebd652289ec1b65eed983e804dbb37ed092.tar.zst
astro-fe3afebd652289ec1b65eed983e804dbb37ed092.zip
Fix Server Islands in Vercel (#11491)
* Fix Server Islands in Vercel * Add a changeset * Get server islands pattern from the segments * Move getPattern so it can be used at runtime * Fix build
Diffstat (limited to 'packages/integrations/vercel')
-rw-r--r--packages/integrations/vercel/test/fixtures/server-islands/astro.config.mjs10
-rw-r--r--packages/integrations/vercel/test/fixtures/server-islands/package.json10
-rw-r--r--packages/integrations/vercel/test/fixtures/server-islands/src/components/Island.astro1
-rw-r--r--packages/integrations/vercel/test/fixtures/server-islands/src/pages/index.astro12
-rw-r--r--packages/integrations/vercel/test/server-islands.test.js29
5 files changed, 62 insertions, 0 deletions
diff --git a/packages/integrations/vercel/test/fixtures/server-islands/astro.config.mjs b/packages/integrations/vercel/test/fixtures/server-islands/astro.config.mjs
new file mode 100644
index 000000000..534197429
--- /dev/null
+++ b/packages/integrations/vercel/test/fixtures/server-islands/astro.config.mjs
@@ -0,0 +1,10 @@
+import vercel from '@astrojs/vercel/serverless';
+import { defineConfig } from 'astro/config';
+
+export default defineConfig({
+ output: "server",
+ adapter: vercel(),
+ experimental: {
+ serverIslands: true,
+ }
+});
diff --git a/packages/integrations/vercel/test/fixtures/server-islands/package.json b/packages/integrations/vercel/test/fixtures/server-islands/package.json
new file mode 100644
index 000000000..a21ff176a
--- /dev/null
+++ b/packages/integrations/vercel/test/fixtures/server-islands/package.json
@@ -0,0 +1,10 @@
+{
+ "name": "@test/vercel-server-islands",
+ "version": "0.0.0",
+ "private": true,
+ "dependencies": {
+ "@astrojs/vercel": "workspace:*",
+ "astro": "workspace:*"
+ }
+}
+
diff --git a/packages/integrations/vercel/test/fixtures/server-islands/src/components/Island.astro b/packages/integrations/vercel/test/fixtures/server-islands/src/components/Island.astro
new file mode 100644
index 000000000..9d2832bc1
--- /dev/null
+++ b/packages/integrations/vercel/test/fixtures/server-islands/src/components/Island.astro
@@ -0,0 +1 @@
+<h1>I'm an island</h1>
diff --git a/packages/integrations/vercel/test/fixtures/server-islands/src/pages/index.astro b/packages/integrations/vercel/test/fixtures/server-islands/src/pages/index.astro
new file mode 100644
index 000000000..835126c2b
--- /dev/null
+++ b/packages/integrations/vercel/test/fixtures/server-islands/src/pages/index.astro
@@ -0,0 +1,12 @@
+---
+import Island from '../components/Island.astro';
+---
+<html>
+ <head>
+ <title>One</title>
+ </head>
+ <body>
+ <h1>One</h1>
+ <Island server:defer />
+ </body>
+</html>
diff --git a/packages/integrations/vercel/test/server-islands.test.js b/packages/integrations/vercel/test/server-islands.test.js
new file mode 100644
index 000000000..060492584
--- /dev/null
+++ b/packages/integrations/vercel/test/server-islands.test.js
@@ -0,0 +1,29 @@
+import assert from 'node:assert/strict';
+import { before, describe, it } from 'node:test';
+import { loadFixture } from './test-utils.js';
+
+describe('Server Islands', () => {
+ /** @type {import('./test-utils.js').Fixture} */
+ let fixture;
+
+ before(async () => {
+ fixture = await loadFixture({
+ root: './fixtures/server-islands/',
+ });
+ await fixture.build();
+ });
+
+ it('server islands route is in the config', async () => {
+ const config = JSON.parse(
+ await fixture.readFile('../.vercel/output/config.json')
+ );
+ let found = null;
+ for(let route of config.routes) {
+ if(route.src?.includes('_server-islands')) {
+ found = route;
+ break;
+ }
+ }
+ assert.notEqual(found, null, 'Default server islands route included');
+ });
+});