summaryrefslogtreecommitdiff
path: root/packages/integrations/cloudflare/test
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/cloudflare/test')
-rw-r--r--packages/integrations/cloudflare/test/basics.test.js32
-rw-r--r--packages/integrations/cloudflare/test/fixtures/basics/astro.config.mjs7
-rw-r--r--packages/integrations/cloudflare/test/fixtures/basics/package.json9
-rw-r--r--packages/integrations/cloudflare/test/fixtures/basics/src/pages/index.astro8
-rw-r--r--packages/integrations/cloudflare/test/test-utils.js52
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();
+ });
+ })
+ }
+ }
+}