diff options
author | 2022-04-19 11:22:15 -0400 | |
---|---|---|
committer | 2022-04-19 11:22:15 -0400 | |
commit | 4cf54c60aa63bd614b242da0602790015005673d (patch) | |
tree | 25fcec1da64890044742a1090b1773076a0d43e9 /packages/integrations/netlify/test | |
parent | c35e94f5443d4ade07ff787d39b042eb3b9004fb (diff) | |
download | astro-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')
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) + ), + }, + }, + }, + }); + } + } + }; +} |