summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/integrations/cloudflare/package.json1
-rw-r--r--packages/integrations/cloudflare/src/index.ts2
-rw-r--r--packages/integrations/cloudflare/test/fixtures/prerender/src/pages/one.astro2
-rw-r--r--packages/integrations/cloudflare/test/prerender.test.js45
-rw-r--r--packages/integrations/cloudflare/test/test-utils.js4
5 files changed, 50 insertions, 4 deletions
diff --git a/packages/integrations/cloudflare/package.json b/packages/integrations/cloudflare/package.json
index 9eddb2f60..4991ee196 100644
--- a/packages/integrations/cloudflare/package.json
+++ b/packages/integrations/cloudflare/package.json
@@ -50,6 +50,7 @@
"chai": "^4.3.6",
"cheerio": "^1.0.0-rc.11",
"mocha": "^9.2.2",
+ "slash": "^4.0.0",
"wrangler": "^2.0.23"
}
}
diff --git a/packages/integrations/cloudflare/src/index.ts b/packages/integrations/cloudflare/src/index.ts
index 46deee2f8..2f6b36e87 100644
--- a/packages/integrations/cloudflare/src/index.ts
+++ b/packages/integrations/cloudflare/src/index.ts
@@ -60,7 +60,7 @@ export default function createIntegration(args?: Options): AstroIntegration {
if (config.output === 'static') {
throw new Error(`
- [@astrojs/cloudflare] \`output: "server"\` is required to use this adapter. Otherwise, this adapter is not necessary to deploy a static site to Cloudflare.
+ [@astrojs/cloudflare] \`output: "server"\` or \`output: "hybrid"\` is required to use this adapter. Otherwise, this adapter is not necessary to deploy a static site to Cloudflare.
`);
}
diff --git a/packages/integrations/cloudflare/test/fixtures/prerender/src/pages/one.astro b/packages/integrations/cloudflare/test/fixtures/prerender/src/pages/one.astro
index 30386a625..e11de7add 100644
--- a/packages/integrations/cloudflare/test/fixtures/prerender/src/pages/one.astro
+++ b/packages/integrations/cloudflare/test/fixtures/prerender/src/pages/one.astro
@@ -1,5 +1,5 @@
---
-export const prerender = true;
+export const prerender = import.meta.env.PRERENDER;
---
<html>
<head>
diff --git a/packages/integrations/cloudflare/test/prerender.test.js b/packages/integrations/cloudflare/test/prerender.test.js
index a3ce50d08..5d3ff9f10 100644
--- a/packages/integrations/cloudflare/test/prerender.test.js
+++ b/packages/integrations/cloudflare/test/prerender.test.js
@@ -1,19 +1,60 @@
import { loadFixture } from './test-utils.js';
import { expect } from 'chai';
+import slash from 'slash';
describe('Prerendering', () => {
/** @type {import('./test-utils').Fixture} */
let fixture;
before(async () => {
+ process.env.PRERENDER = true;
fixture = await loadFixture({
root: './fixtures/prerender/',
});
await fixture.build();
});
+ after(() => {
+ delete process.env.PRERENDER;
+ fixture.clean();
+ });
+
+ it('includes prerendered routes in the routes.json config', async () => {
+ const foundRoutes = JSON.parse(await fixture.readFile('/_routes.json')).exclude.map((r) =>
+ slash(r)
+ );
+ const expectedExcludedRoutes = ['/_worker.js', '/one/index.html', '/one/'];
+
+ expect(foundRoutes.every((element) => expectedExcludedRoutes.includes(element))).to.be.true;
+ });
+});
+
+describe('Hybrid rendering', () => {
+ /** @type {import('./test-utils').Fixture} */
+ let fixture;
+
+ before(async () => {
+ process.env.PRERENDER = false;
+ fixture = await loadFixture({
+ root: './fixtures/prerender/',
+ output: 'hybrid',
+ experimental: {
+ hybridOutput: true,
+ },
+ });
+ await fixture.build();
+ });
+
+ after(() => {
+ delete process.env.PRERENDER;
+ });
+
it('includes prerendered routes in the routes.json config', async () => {
- const routes = JSON.parse(await fixture.readFile('/_routes.json'));
- expect(routes.exclude).to.include('/one/');
+ const foundRoutes = JSON.parse(await fixture.readFile('/_routes.json')).exclude.map((r) =>
+ slash(r)
+ );
+ const expectedExcludedRoutes = ['/_worker.js', '/index.html', '/'];
+
+ expect(foundRoutes.every((element) => expectedExcludedRoutes.includes(element))).to.be.true;
});
});
diff --git a/packages/integrations/cloudflare/test/test-utils.js b/packages/integrations/cloudflare/test/test-utils.js
index 58cb8f9dd..b4628825c 100644
--- a/packages/integrations/cloudflare/test/test-utils.js
+++ b/packages/integrations/cloudflare/test/test-utils.js
@@ -4,6 +4,10 @@ import { fileURLToPath } from 'url';
export { fixLineEndings } from '../../../astro/test/test-utils.js';
+/**
+ * @typedef {import('../../../astro/test/test-utils').Fixture} Fixture
+ */
+
export function loadFixture(config) {
if (config?.root) {
config.root = new URL(config.root, import.meta.url);