summaryrefslogtreecommitdiff
path: root/packages/integrations/netlify/test
diff options
context:
space:
mode:
authorGravatar Matthew Phillips <matthew@skypack.dev> 2022-04-19 11:22:15 -0400
committerGravatar GitHub <noreply@github.com> 2022-04-19 11:22:15 -0400
commit4cf54c60aa63bd614b242da0602790015005673d (patch)
tree25fcec1da64890044742a1090b1773076a0d43e9 /packages/integrations/netlify/test
parentc35e94f5443d4ade07ff787d39b042eb3b9004fb (diff)
downloadastro-4cf54c60aa63bd614b242da0602790015005673d.tar.gz
astro-4cf54c60aa63bd614b242da0602790015005673d.tar.zst
astro-4cf54c60aa63bd614b242da0602790015005673d.zip
Netlify Edge function support (#3148)
* Netlify Edge function support * Update readme with edge function information * Adds a changeset * Disable running edge function test in CI for now
Diffstat (limited to 'packages/integrations/netlify/test')
-rw-r--r--packages/integrations/netlify/test/edge-functions/deps.ts3
-rw-r--r--packages/integrations/netlify/test/edge-functions/edge-basic.test.ts18
-rw-r--r--packages/integrations/netlify/test/edge-functions/fixtures/edge-basic/astro.config.mjs11
-rw-r--r--packages/integrations/netlify/test/edge-functions/fixtures/edge-basic/package.json9
-rw-r--r--packages/integrations/netlify/test/edge-functions/fixtures/edge-basic/src/pages/index.astro10
-rw-r--r--packages/integrations/netlify/test/edge-functions/fixtures/edge-basic/src/pages/two.astro6
-rw-r--r--packages/integrations/netlify/test/edge-functions/test-utils.ts13
-rw-r--r--packages/integrations/netlify/test/functions/cookies.test.js (renamed from packages/integrations/netlify/test/cookies.test.js)14
-rw-r--r--packages/integrations/netlify/test/functions/dynamic-route.test.js (renamed from packages/integrations/netlify/test/dynamic-route.test.js)19
-rw-r--r--packages/integrations/netlify/test/functions/fixtures/.gitignore (renamed from packages/integrations/netlify/test/fixtures/.gitignore)0
-rw-r--r--packages/integrations/netlify/test/functions/fixtures/cookies/src/pages/index.astro (renamed from packages/integrations/netlify/test/fixtures/cookies/src/pages/index.astro)0
-rw-r--r--packages/integrations/netlify/test/functions/fixtures/cookies/src/pages/login.js (renamed from packages/integrations/netlify/test/fixtures/cookies/src/pages/login.js)0
-rw-r--r--packages/integrations/netlify/test/functions/fixtures/dynamic-route/src/pages/products/[id].astro (renamed from packages/integrations/netlify/test/fixtures/dynamic-route/src/pages/products/[id].astro)0
-rw-r--r--packages/integrations/netlify/test/functions/test-utils.js29
14 files changed, 106 insertions, 26 deletions
diff --git a/packages/integrations/netlify/test/edge-functions/deps.ts b/packages/integrations/netlify/test/edge-functions/deps.ts
new file mode 100644
index 000000000..f3e46181a
--- /dev/null
+++ b/packages/integrations/netlify/test/edge-functions/deps.ts
@@ -0,0 +1,3 @@
+// @ts-nocheck
+export { fromFileUrl } from 'https://deno.land/std@0.110.0/path/mod.ts';
+export { assertEquals, assert } from 'https://deno.land/std@0.132.0/testing/asserts.ts';
diff --git a/packages/integrations/netlify/test/edge-functions/edge-basic.test.ts b/packages/integrations/netlify/test/edge-functions/edge-basic.test.ts
new file mode 100644
index 000000000..a99125980
--- /dev/null
+++ b/packages/integrations/netlify/test/edge-functions/edge-basic.test.ts
@@ -0,0 +1,18 @@
+// @ts-ignore
+import { runBuild } from './test-utils.ts';
+// @ts-ignore
+import { assertEquals, assert } from './deps.ts';
+
+// @ts-ignore
+Deno.test({
+ name: 'Edge Basics',
+ async fn() {
+ let close = await runBuild('./fixtures/edge-basic/');
+ const { default: handler } = await import('./fixtures/edge-basic/dist/edge-functions/entry.mjs');
+ const response = await handler(new Request('http://example.com/'));
+ assertEquals(response.status, 200);
+ const html = await response.text();
+ assert(html, 'got some html');
+ await close();
+ },
+});
diff --git a/packages/integrations/netlify/test/edge-functions/fixtures/edge-basic/astro.config.mjs b/packages/integrations/netlify/test/edge-functions/fixtures/edge-basic/astro.config.mjs
new file mode 100644
index 000000000..c55135e43
--- /dev/null
+++ b/packages/integrations/netlify/test/edge-functions/fixtures/edge-basic/astro.config.mjs
@@ -0,0 +1,11 @@
+import { defineConfig } from 'astro/config';
+import { netlifyEdgeFunctions } from '@astrojs/netlify';
+
+export default defineConfig({
+ adapter: netlifyEdgeFunctions({
+ dist: new URL('./dist/', import.meta.url),
+ }),
+ experimental: {
+ ssr: true
+ }
+})
diff --git a/packages/integrations/netlify/test/edge-functions/fixtures/edge-basic/package.json b/packages/integrations/netlify/test/edge-functions/fixtures/edge-basic/package.json
new file mode 100644
index 000000000..bbda2476b
--- /dev/null
+++ b/packages/integrations/netlify/test/edge-functions/fixtures/edge-basic/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "@test/netlify-edge-astro-basic",
+ "version": "0.0.0",
+ "private": true,
+ "dependencies": {
+ "astro": "workspace:*",
+ "@astrojs/netlify": "workspace:*"
+ }
+}
diff --git a/packages/integrations/netlify/test/edge-functions/fixtures/edge-basic/src/pages/index.astro b/packages/integrations/netlify/test/edge-functions/fixtures/edge-basic/src/pages/index.astro
new file mode 100644
index 000000000..a87de65db
--- /dev/null
+++ b/packages/integrations/netlify/test/edge-functions/fixtures/edge-basic/src/pages/index.astro
@@ -0,0 +1,10 @@
+<html>
+<head><title>Testing</title></head>
+<body>
+ <h1>Test page</h1>
+ <h2>Links</h2>
+ <ul>
+ <li><a href="/two/">Two</a></li>
+ </ul>
+</body>
+</html>
diff --git a/packages/integrations/netlify/test/edge-functions/fixtures/edge-basic/src/pages/two.astro b/packages/integrations/netlify/test/edge-functions/fixtures/edge-basic/src/pages/two.astro
new file mode 100644
index 000000000..b5a031be3
--- /dev/null
+++ b/packages/integrations/netlify/test/edge-functions/fixtures/edge-basic/src/pages/two.astro
@@ -0,0 +1,6 @@
+<html>
+<head><title>Page Two</title></head>
+<body>
+ <h1>Page two</h1>
+</body>
+</html>
diff --git a/packages/integrations/netlify/test/edge-functions/test-utils.ts b/packages/integrations/netlify/test/edge-functions/test-utils.ts
new file mode 100644
index 000000000..826f64d37
--- /dev/null
+++ b/packages/integrations/netlify/test/edge-functions/test-utils.ts
@@ -0,0 +1,13 @@
+// @ts-ignore
+import { fromFileUrl } from './deps.ts';
+const dir = new URL('./', import.meta.url);
+
+export async function runBuild(fixturePath: string) {
+ // @ts-ignore
+ let proc = Deno.run({
+ cmd: ['node', '../../../../../../astro/astro.js', 'build', '--silent'],
+ cwd: fromFileUrl(new URL(fixturePath, dir)),
+ });
+ await proc.status();
+ return async () => await proc.close();
+}
diff --git a/packages/integrations/netlify/test/cookies.test.js b/packages/integrations/netlify/test/functions/cookies.test.js
index 0fdc126e8..93cc05229 100644
--- a/packages/integrations/netlify/test/cookies.test.js
+++ b/packages/integrations/netlify/test/functions/cookies.test.js
@@ -1,7 +1,7 @@
import { expect } from 'chai';
import { load as cheerioLoad } from 'cheerio';
-import { loadFixture } from '../../../astro/test/test-utils.js';
-import netlifyAdapter from '../dist/index.js';
+import { loadFixture, testIntegration } from './test-utils.js';
+import netlifyAdapter from '../../dist/index.js';
import { fileURLToPath } from 'url';
describe('Cookies', () => {
@@ -18,15 +18,7 @@ describe('Cookies', () => {
dist: new URL('./fixtures/cookies/dist/', import.meta.url),
}),
site: `http://example.com`,
- vite: {
- resolve: {
- alias: {
- '@astrojs/netlify/netlify-functions.js': fileURLToPath(
- new URL('../dist/netlify-functions.js', import.meta.url)
- ),
- },
- },
- },
+ integrations: [ testIntegration() ]
});
await fixture.build();
});
diff --git a/packages/integrations/netlify/test/dynamic-route.test.js b/packages/integrations/netlify/test/functions/dynamic-route.test.js
index 18d8b8ec2..279982767 100644
--- a/packages/integrations/netlify/test/dynamic-route.test.js
+++ b/packages/integrations/netlify/test/functions/dynamic-route.test.js
@@ -1,12 +1,9 @@
import { expect } from 'chai';
-import { load as cheerioLoad } from 'cheerio';
-import { loadFixture } from '../../../astro/test/test-utils.js';
-import netlifyAdapter from '../dist/index.js';
-import { fileURLToPath } from 'url';
+import netlifyAdapter from '../../dist/index.js';
+import { loadFixture, testIntegration } from './test-utils.js';
-// Asset bundling
describe('Dynamic pages', () => {
- /** @type {import('../../../astro/test/test-utils').Fixture} */
+ /** @type {import('./test-utils').Fixture} */
let fixture;
before(async () => {
@@ -19,15 +16,7 @@ describe('Dynamic pages', () => {
dist: new URL('./fixtures/dynamic-route/dist/', import.meta.url),
}),
site: `http://example.com`,
- vite: {
- resolve: {
- alias: {
- '@astrojs/netlify/netlify-functions.js': fileURLToPath(
- new URL('../dist/netlify-functions.js', import.meta.url)
- ),
- },
- },
- },
+ integrations: [ testIntegration() ]
});
await fixture.build();
});
diff --git a/packages/integrations/netlify/test/fixtures/.gitignore b/packages/integrations/netlify/test/functions/fixtures/.gitignore
index 916f60644..916f60644 100644
--- a/packages/integrations/netlify/test/fixtures/.gitignore
+++ b/packages/integrations/netlify/test/functions/fixtures/.gitignore
diff --git a/packages/integrations/netlify/test/fixtures/cookies/src/pages/index.astro b/packages/integrations/netlify/test/functions/fixtures/cookies/src/pages/index.astro
index 53e029f04..53e029f04 100644
--- a/packages/integrations/netlify/test/fixtures/cookies/src/pages/index.astro
+++ b/packages/integrations/netlify/test/functions/fixtures/cookies/src/pages/index.astro
diff --git a/packages/integrations/netlify/test/fixtures/cookies/src/pages/login.js b/packages/integrations/netlify/test/functions/fixtures/cookies/src/pages/login.js
index a9ca52f69..a9ca52f69 100644
--- a/packages/integrations/netlify/test/fixtures/cookies/src/pages/login.js
+++ b/packages/integrations/netlify/test/functions/fixtures/cookies/src/pages/login.js
diff --git a/packages/integrations/netlify/test/fixtures/dynamic-route/src/pages/products/[id].astro b/packages/integrations/netlify/test/functions/fixtures/dynamic-route/src/pages/products/[id].astro
index 5ed06d251..5ed06d251 100644
--- a/packages/integrations/netlify/test/fixtures/dynamic-route/src/pages/products/[id].astro
+++ b/packages/integrations/netlify/test/functions/fixtures/dynamic-route/src/pages/products/[id].astro
diff --git a/packages/integrations/netlify/test/functions/test-utils.js b/packages/integrations/netlify/test/functions/test-utils.js
new file mode 100644
index 000000000..19cd7ef66
--- /dev/null
+++ b/packages/integrations/netlify/test/functions/test-utils.js
@@ -0,0 +1,29 @@
+// @ts-check
+import { fileURLToPath } from 'url';
+
+export * from '../../../../astro/test/test-utils.js';
+
+/**
+ *
+ * @returns {import('../../../../astro/dist/types/@types/astro').AstroIntegration}
+ */
+export function testIntegration() {
+ return {
+ name: '@astrojs/netlify/test-integration',
+ hooks: {
+ 'astro:config:setup':({ updateConfig }) => {
+ updateConfig({
+ vite: {
+ resolve: {
+ alias: {
+ '@astrojs/netlify/netlify-functions.js': fileURLToPath(
+ new URL('../../dist/netlify-functions.js', import.meta.url)
+ ),
+ },
+ },
+ },
+ });
+ }
+ }
+ };
+}