diff options
author | 2022-07-27 16:15:19 -0400 | |
---|---|---|
committer | 2022-07-27 16:15:19 -0400 | |
commit | a198028b04234d0b8dcb0b6bcb47c5831d7a15f9 (patch) | |
tree | 6bc03ee0f68c823880cca458206d3e938df832b8 /packages/integrations/cloudflare/test | |
parent | 13b4f8ad887d0d4e8efbf9f74185432f9cdf264e (diff) | |
download | astro-a198028b04234d0b8dcb0b6bcb47c5831d7a15f9.tar.gz astro-a198028b04234d0b8dcb0b6bcb47c5831d7a15f9.tar.zst astro-a198028b04234d0b8dcb0b6bcb47c5831d7a15f9.zip |
Fixes cloudflare throwing over process (#4072)
* Fixes cloudflare throwing over process
* Up the timeout for slower CI servers
* Fix linting
* Up the timeout a bit
Diffstat (limited to 'packages/integrations/cloudflare/test')
5 files changed, 108 insertions, 0 deletions
diff --git a/packages/integrations/cloudflare/test/basics.test.js b/packages/integrations/cloudflare/test/basics.test.js new file mode 100644 index 000000000..67215374d --- /dev/null +++ b/packages/integrations/cloudflare/test/basics.test.js @@ -0,0 +1,32 @@ +import { loadFixture, runCLI } from './test-utils.js'; +import { expect } from 'chai'; +import * as cheerio from 'cheerio'; + +describe('Basic app', () => { + /** @type {import('./test-utils').Fixture} */ + let fixture; + + before(async () => { + fixture = await loadFixture({ + root: './fixtures/basics/', + }); + await fixture.build(); + }); + + it('can render', async () => { + const { ready, stop } = runCLI('./fixtures/basics/', { silent: true }); + + try { + await ready; + + let res = await fetch(`http://localhost:8787/`); + expect(res.status).to.equal(200); + let html = await res.text(); + let $ = cheerio.load(html); + expect($('h1').text()).to.equal('Testing'); + } finally { + await stop(); + } + }); +}); + diff --git a/packages/integrations/cloudflare/test/fixtures/basics/astro.config.mjs b/packages/integrations/cloudflare/test/fixtures/basics/astro.config.mjs new file mode 100644 index 000000000..bf47a0a33 --- /dev/null +++ b/packages/integrations/cloudflare/test/fixtures/basics/astro.config.mjs @@ -0,0 +1,7 @@ +import { defineConfig } from 'astro/config'; +import cloudflare from '@astrojs/cloudflare'; + +export default defineConfig({ + adapter: cloudflare(), + output: 'server', +}); diff --git a/packages/integrations/cloudflare/test/fixtures/basics/package.json b/packages/integrations/cloudflare/test/fixtures/basics/package.json new file mode 100644 index 000000000..c7cc97455 --- /dev/null +++ b/packages/integrations/cloudflare/test/fixtures/basics/package.json @@ -0,0 +1,9 @@ +{ + "name": "@test/astro-cloudflare-basics", + "version": "0.0.0", + "private": true, + "dependencies": { + "@astrojs/cloudflare": "workspace:*", + "astro": "workspace:*" + } +} diff --git a/packages/integrations/cloudflare/test/fixtures/basics/src/pages/index.astro b/packages/integrations/cloudflare/test/fixtures/basics/src/pages/index.astro new file mode 100644 index 000000000..9c077e2a3 --- /dev/null +++ b/packages/integrations/cloudflare/test/fixtures/basics/src/pages/index.astro @@ -0,0 +1,8 @@ +<html> + <head> + <title>Testing</title> + </head> + <body> + <h1>Testing</h1> + </body> +</html> diff --git a/packages/integrations/cloudflare/test/test-utils.js b/packages/integrations/cloudflare/test/test-utils.js index 6bb3e7c25..41cc8a2c9 100644 --- a/packages/integrations/cloudflare/test/test-utils.js +++ b/packages/integrations/cloudflare/test/test-utils.js @@ -1,4 +1,6 @@ import { loadFixture as baseLoadFixture } from '../../../astro/test/test-utils.js'; +import { spawn } from 'child_process'; +import { fileURLToPath } from 'url'; export { fixLineEndings } from '../../../astro/test/test-utils.js'; @@ -8,3 +10,53 @@ export function loadFixture(config) { } return baseLoadFixture(config); } + +const wranglerPath = fileURLToPath(new URL('../node_modules/wrangler/bin/wrangler.js', import.meta.url)); + +export function runCLI(basePath, { silent }) { + const script = fileURLToPath(new URL(`${basePath}/dist/_worker.js`, import.meta.url)); + const p = spawn('node', [wranglerPath, 'dev', '-l', script]); + + p.stderr.setEncoding('utf-8'); + p.stdout.setEncoding('utf-8'); + + const timeout = 10000; + + const ready = new Promise(async (resolve, reject) => { + const failed = setTimeout(() => reject(new Error(`Timed out starting the wrangler CLI`)), timeout); + + (async function () { + for(const msg of p.stderr) { + if(!silent) { + // eslint-disable-next-line + console.error(msg); + } + } + })(); + + for await(const msg of p.stdout) { + if(!silent) { + // eslint-disable-next-line + console.log(msg); + } + if(msg.includes(`Listening on`)) { + break; + } + } + + clearTimeout(failed); + resolve(); + }); + + return { + ready, + stop() { + p.kill(); + return new Promise(resolve => { + p.addListener('exit', () => { + resolve(); + }); + }) + } + } +} |