summaryrefslogtreecommitdiff
path: root/packages/integrations/cloudflare/test/exclude-prerender-only-chunks.test.js
diff options
context:
space:
mode:
authorGravatar Luiz Ferraz <luiz@lferraz.com> 2024-04-18 02:38:24 -0300
committerGravatar GitHub <noreply@github.com> 2024-04-18 07:38:24 +0200
commit12e922d26c2a31d371e29b5621f4dfe3d5f03c3b (patch)
tree1b2bc8628f38a0c699157fb9437e12948c445c8f /packages/integrations/cloudflare/test/exclude-prerender-only-chunks.test.js
parentc39dc343add1f1438dc40f8c71b64ff14aae2503 (diff)
downloadastro-12e922d26c2a31d371e29b5621f4dfe3d5f03c3b.tar.gz
astro-12e922d26c2a31d371e29b5621f4dfe3d5f03c3b.tar.zst
astro-12e922d26c2a31d371e29b5621f4dfe3d5f03c3b.zip
feat(cloudflare): remove unnecessary code from the server output (#222)
Diffstat (limited to 'packages/integrations/cloudflare/test/exclude-prerender-only-chunks.test.js')
-rw-r--r--packages/integrations/cloudflare/test/exclude-prerender-only-chunks.test.js86
1 files changed, 86 insertions, 0 deletions
diff --git a/packages/integrations/cloudflare/test/exclude-prerender-only-chunks.test.js b/packages/integrations/cloudflare/test/exclude-prerender-only-chunks.test.js
new file mode 100644
index 000000000..5a142f429
--- /dev/null
+++ b/packages/integrations/cloudflare/test/exclude-prerender-only-chunks.test.js
@@ -0,0 +1,86 @@
+import * as assert from 'node:assert/strict';
+import { readFile, readdir } from 'node:fs/promises';
+import { join, relative } from 'node:path';
+import { before, describe, it } from 'node:test';
+import { fileURLToPath } from 'node:url';
+import { astroCli } from './_test-utils.js';
+
+const root = new URL('./fixtures/prerender-optimizations/', import.meta.url);
+
+async function lookForCodeInServerBundle(code) {
+ const serverBundleRoot = fileURLToPath(new URL('./dist/_worker.js/', root));
+
+ const entries = await readdir(serverBundleRoot, {
+ withFileTypes: true,
+ recursive: true,
+ }).catch((err) => {
+ console.log('Failed to read server bundle directory:', err);
+
+ throw err;
+ });
+
+ for (const entry of entries) {
+ if (!entry.isFile()) continue;
+
+ const filePath = join(entry.path, entry.name);
+ const fileContent = await readFile(filePath, 'utf-8').catch((err) => {
+ console.log(`Failed to read file ${filePath}:`, err);
+
+ throw err;
+ });
+
+ if (fileContent.includes(code)) {
+ return relative(serverBundleRoot, filePath);
+ }
+ }
+
+ return null;
+}
+
+describe('worker.js cleanup after pre-rendering', () => {
+ before(async () => {
+ const res = await astroCli(fileURLToPath(root), 'build');
+ });
+
+ it('should not include code from pre-rendered pages in the server bundle', async () => {
+ assert.equal(
+ await lookForCodeInServerBundle('frontmatter of prerendered page'),
+ null,
+ 'Code from pre-rendered pages should not be included in the server bundle.'
+ );
+
+ assert.equal(
+ await lookForCodeInServerBundle('Body of Prerendered Page'),
+ null,
+ 'Code from pre-rendered pages should not be included in the server bundle.'
+ );
+ });
+
+ it('should not include markdown content used only in pre-rendered pages in the server bundle', async () => {
+ assert.equal(
+ await lookForCodeInServerBundle('Sample Post Title'),
+ null,
+ 'Markdown frontmatter used only on pre-rendered pages should not be included in the server bundle.'
+ );
+
+ assert.equal(
+ await lookForCodeInServerBundle('Sample Post Content'),
+ null,
+ 'Markdown content used only on pre-rendered pages should not be included in the server bundle.'
+ );
+ });
+
+ it('should include code for on-demand pages in the server bundle', async () => {
+ assert.notEqual(
+ await lookForCodeInServerBundle('frontmatter of SSR page'),
+ null,
+ 'Code from pre-rendered pages should not be included in the server bundle.'
+ );
+
+ assert.notEqual(
+ await lookForCodeInServerBundle('Body of SSR Page'),
+ null,
+ 'Code from pre-rendered pages should not be included in the server bundle.'
+ );
+ });
+});