summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/brown-turtles-invite.md5
-rw-r--r--packages/integrations/vercel/src/static/adapter.ts5
-rw-r--r--packages/integrations/vercel/test/fixtures/static/astro.config.mjs6
-rw-r--r--packages/integrations/vercel/test/fixtures/static/package.json9
-rw-r--r--packages/integrations/vercel/test/fixtures/static/src/pages/404.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/static/src/pages/one.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/static/src/pages/two.astro8
-rw-r--r--packages/integrations/vercel/test/static.test.js26
-rw-r--r--pnpm-lock.yaml9
9 files changed, 84 insertions, 0 deletions
diff --git a/.changeset/brown-turtles-invite.md b/.changeset/brown-turtles-invite.md
new file mode 100644
index 000000000..9150dc0c0
--- /dev/null
+++ b/.changeset/brown-turtles-invite.md
@@ -0,0 +1,5 @@
+---
+"@astrojs/vercel": patch
+---
+
+Fixes an issue where 404.astro was not used in static mode.
diff --git a/packages/integrations/vercel/src/static/adapter.ts b/packages/integrations/vercel/src/static/adapter.ts
index 173a0d9bd..44222f945 100644
--- a/packages/integrations/vercel/src/static/adapter.ts
+++ b/packages/integrations/vercel/src/static/adapter.ts
@@ -125,6 +125,11 @@ export default function vercelStatic({
continue: true,
},
{ handle: 'filesystem' },
+ ...routes.find(route => route.pathname === "/404") ? [{
+ src: `/.*`,
+ dest: `/404.html`,
+ status: 404,
+ }] : [],
],
...(imageService || imagesConfig
? {
diff --git a/packages/integrations/vercel/test/fixtures/static/astro.config.mjs b/packages/integrations/vercel/test/fixtures/static/astro.config.mjs
new file mode 100644
index 000000000..55620c240
--- /dev/null
+++ b/packages/integrations/vercel/test/fixtures/static/astro.config.mjs
@@ -0,0 +1,6 @@
+import { defineConfig } from 'astro/config';
+import vercel from '@astrojs/vercel/static';
+
+export default defineConfig({
+ adapter: vercel()
+});
diff --git a/packages/integrations/vercel/test/fixtures/static/package.json b/packages/integrations/vercel/test/fixtures/static/package.json
new file mode 100644
index 000000000..2f2936e31
--- /dev/null
+++ b/packages/integrations/vercel/test/fixtures/static/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "@test/astro-vercel-static",
+ "version": "0.0.0",
+ "private": true,
+ "dependencies": {
+ "@astrojs/vercel": "workspace:*",
+ "astro": "workspace:*"
+ }
+}
diff --git a/packages/integrations/vercel/test/fixtures/static/src/pages/404.astro b/packages/integrations/vercel/test/fixtures/static/src/pages/404.astro
new file mode 100644
index 000000000..9e307c5c2
--- /dev/null
+++ b/packages/integrations/vercel/test/fixtures/static/src/pages/404.astro
@@ -0,0 +1,8 @@
+<html>
+ <head>
+ <title>404</title>
+ </head>
+ <body>
+ <h1>404</h1>
+ </body>
+</html>
diff --git a/packages/integrations/vercel/test/fixtures/static/src/pages/one.astro b/packages/integrations/vercel/test/fixtures/static/src/pages/one.astro
new file mode 100644
index 000000000..0c7fb90a7
--- /dev/null
+++ b/packages/integrations/vercel/test/fixtures/static/src/pages/one.astro
@@ -0,0 +1,8 @@
+<html>
+ <head>
+ <title>One</title>
+ </head>
+ <body>
+ <h1>One</h1>
+ </body>
+</html>
diff --git a/packages/integrations/vercel/test/fixtures/static/src/pages/two.astro b/packages/integrations/vercel/test/fixtures/static/src/pages/two.astro
new file mode 100644
index 000000000..e7ba9910e
--- /dev/null
+++ b/packages/integrations/vercel/test/fixtures/static/src/pages/two.astro
@@ -0,0 +1,8 @@
+<html>
+ <head>
+ <title>Two</title>
+ </head>
+ <body>
+ <h1>Two</h1>
+ </body>
+</html>
diff --git a/packages/integrations/vercel/test/static.test.js b/packages/integrations/vercel/test/static.test.js
new file mode 100644
index 000000000..db8e48a5a
--- /dev/null
+++ b/packages/integrations/vercel/test/static.test.js
@@ -0,0 +1,26 @@
+import { loadFixture } from './test-utils.js';
+import { expect } from 'chai';
+
+describe('maxDuration', () => {
+ /** @type {import('./test-utils.js').Fixture} */
+ let fixture;
+
+ before(async () => {
+ fixture = await loadFixture({
+ root: './fixtures/static/',
+ });
+ await fixture.build();
+ });
+
+ it('falls back to 404.html', async () => {
+ const deploymentConfig = JSON.parse(
+ await fixture.readFile('../.vercel/output/config.json')
+ );
+ // change the index if necesseary
+ expect(deploymentConfig.routes[2]).to.deep.include({
+ src: '/.*',
+ dest: '/404.html',
+ status: 404
+ });
+ });
+});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 260a33c04..e6ae07c7b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -4785,6 +4785,15 @@ importers:
specifier: workspace:*
version: link:../../../../../astro
+ packages/integrations/vercel/test/fixtures/static:
+ dependencies:
+ '@astrojs/vercel':
+ specifier: workspace:*
+ version: link:../../..
+ astro:
+ specifier: workspace:*
+ version: link:../../../../../astro
+
packages/integrations/vercel/test/fixtures/static-assets:
dependencies:
'@astrojs/vercel':