diff options
Diffstat (limited to 'packages/integrations/cloudflare/test/wasm.test.js')
-rw-r--r-- | packages/integrations/cloudflare/test/wasm.test.js | 120 |
1 files changed, 36 insertions, 84 deletions
diff --git a/packages/integrations/cloudflare/test/wasm.test.js b/packages/integrations/cloudflare/test/wasm.test.js index 279a00cd1..7f440922e 100644 --- a/packages/integrations/cloudflare/test/wasm.test.js +++ b/packages/integrations/cloudflare/test/wasm.test.js @@ -1,85 +1,37 @@ -import { loadFixture, runCLI } from './test-utils.js'; -import { expect } from 'chai'; -import cloudflare from '../dist/index.js'; - -describe('Wasm import', () => { - describe('in cloudflare workerd', () => { - /** @type {import('./test-utils.js').Fixture} */ - let fixture; - /** @type {import('./test-utils.js').WranglerCLI} */ - let cli; - - before(async function () { - fixture = await loadFixture({ - root: './fixtures/wasm/', - }); - await fixture.build(); - - cli = await runCLI('./fixtures/wasm/', { - silent: true, - onTimeout: (ex) => { - console.log(ex); - // if fail to start, skip for now as it's very flaky - this.skip(); - }, - }); - }); - - after(async () => { - await cli?.stop(); - }); - - it('can render', async () => { - let res = await fetch(`http://127.0.0.1:${cli.port}/add/40/2`); - expect(res.status).to.equal(200); - const json = await res.json(); - expect(json).to.deep.equal({ answer: 42 }); - }); - }); - describe('astro dev server', () => { - /** @type {import('./test-utils').Fixture} */ - let fixture; - let devServer; - - before(async () => { - fixture = await loadFixture({ - root: './fixtures/wasm/', - }); - devServer = undefined; - }); - - after(async () => { - await devServer?.stop(); - }); - - it('can serve wasm', async () => { - devServer = await fixture.startDevServer(); - let res = await fetch(`http://localhost:${devServer.address.port}/add/60/3`); - expect(res.status).to.equal(200); - const json = await res.json(); - expect(json).to.deep.equal({ answer: 63 }); - }); - - it('fails to build intelligently when wasm is disabled', async () => { - let ex; - try { - await fixture.build({ - adapter: cloudflare({ - wasmModuleImports: false, - }), - }); - } catch (err) { - ex = err; - } - expect(ex?.message).to.have.string('add `wasmModuleImports: true` to your astro config'); - }); - - it('can import wasm in both SSR and SSG pages', async () => { - await fixture.build({ output: 'hybrid' }); - const staticContents = await fixture.readFile('./hybrid'); - expect(staticContents).to.be.equal('{"answer":21}'); - const assets = await fixture.readdir('./_astro'); - expect(assets.map((x) => x.slice(x.lastIndexOf('.')))).to.contain('.wasm'); - }); - }); +import { expect } from "chai"; +import { fileURLToPath } from "node:url"; +import { astroCli, wranglerCli } from "./_test-utils.js"; + +const root = new URL("./fixtures/wasm/", import.meta.url); + +describe("Wasm import", () => { + before(async function () { + await astroCli(fileURLToPath(root), "build"); + + wrangler = wranglerCli(fileURLToPath(root)); + await new Promise((resolve) => { + wrangler.stdout.on("data", (data) => { + console.log("[stdout]", data.toString()); + if (data.toString().includes("http://127.0.0.1:8788")) resolve(); + }); + wrangler.stderr.on("data", (data) => { + console.log("[stderr]", data.toString()); + }); + }); + }); + + after((done) => { + wrangler.kill(); + setTimeout(() => { + console.log("CLEANED"); + done(); + }, 1000); + }); + + it("can render", async () => { + let res = await fetch(`http://127.0.0.1:8788/add/40/2`); + expect(res.status).to.equal(200); + const json = await res.json(); + expect(json).to.deep.equal({ answer: 42 }); + }); }); |