diff options
author | 2024-02-13 21:23:07 +0800 | |
---|---|---|
committer | 2024-02-13 13:23:07 +0000 | |
commit | 37c75108e7b4b0c8feacadc0a1e49f58ebf8905d (patch) | |
tree | 7092c1bc786cd2267c23aa606b8897c9fae468a4 | |
parent | a326124f5a1267361b3d36af24bf042b2f1ac41f (diff) | |
download | astro-37c75108e7b4b0c8feacadc0a1e49f58ebf8905d.tar.gz astro-37c75108e7b4b0c8feacadc0a1e49f58ebf8905d.tar.zst astro-37c75108e7b4b0c8feacadc0a1e49f58ebf8905d.zip |
chore(@astrojs/vercel): migrate tests to `node:test` (#10010)
Co-authored-by: Emanuele Stoppa <my.burning@gmail.com>
17 files changed, 100 insertions, 81 deletions
diff --git a/packages/integrations/vercel/package.json b/packages/integrations/vercel/package.json index 195194445..1b110b831 100644 --- a/packages/integrations/vercel/package.json +++ b/packages/integrations/vercel/package.json @@ -46,8 +46,9 @@ "build": "astro-scripts build \"src/**/*.ts\" && tsc", "build:ci": "astro-scripts build \"src/**/*.ts\"", "dev": "astro-scripts dev \"src/**/*.ts\"", - "test": "mocha --exit --timeout 20000 --file \"./test/setup.js\" test/ --ignore test/hosted --ignore **/*.nodetest.js", - "test:hosted": "mocha --exit --timeout 30000 test/hosted" + "test": "astro-scripts test --timeout 50000 \"test/**/!(hosted|edge-middleware).test.js\" && pnpm run test:edge-middleware", + "test:hosted": "astro-scripts test --timeout 30000 \"test/hosted/*.test.js\"", + "test:edge-middleware": "mocha --exit --timeout 20000 --file \"./test/setup.js\" \"test/edge-middleware.test.js\"" }, "dependencies": { "@astrojs/internal-helpers": "workspace:*", diff --git a/packages/integrations/vercel/test/hosted/hosted.test.js b/packages/integrations/vercel/test/hosted/hosted.test.js index f53daa85e..547138b8c 100644 --- a/packages/integrations/vercel/test/hosted/hosted.test.js +++ b/packages/integrations/vercel/test/hosted/hosted.test.js @@ -1,4 +1,5 @@ -import { expect } from 'chai'; +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; const VERCEL_TEST_URL = 'https://astro-vercel-image-test.vercel.app'; @@ -8,6 +9,6 @@ describe('Hosted Vercel Tests', () => { VERCEL_TEST_URL + '/_image?href=%2F_astro%2Fpenguin.e9c64733.png&w=300&f=webp' ); - expect(image.status).to.equal(200); + assert.equal(image.status, 200); }); }); diff --git a/packages/integrations/vercel/test/image.test.js b/packages/integrations/vercel/test/image.test.js index b8bc3af95..af99afab1 100644 --- a/packages/integrations/vercel/test/image.test.js +++ b/packages/integrations/vercel/test/image.test.js @@ -1,5 +1,6 @@ -import { expect } from 'chai'; import * as cheerio from 'cheerio'; +import assert from 'node:assert/strict'; +import { after, before, describe, it } from 'node:test'; import { loadFixture } from './test-utils.js'; describe('Image', () => { @@ -14,7 +15,7 @@ describe('Image', () => { }); it('build successful', async () => { - expect(await fixture.readFile('../.vercel/output/static/index.html')).to.be.ok; + assert.ok(await fixture.readFile('../.vercel/output/static/index.html')); }); it('has link to vercel in build with proper attributes', async () => { @@ -22,15 +23,15 @@ describe('Image', () => { const $ = cheerio.load(html); const img = $('#basic-image img'); - expect(img.attr('src').startsWith('/_vercel/image?url=_astr')).to.be.true; - expect(img.attr('loading')).to.equal('lazy'); - expect(img.attr('width')).to.equal('225'); + assert.equal(img.attr('src').startsWith('/_vercel/image?url=_astr'), true); + assert.equal(img.attr('loading'), 'lazy'); + assert.equal(img.attr('width'), '225'); }); it('has proper vercel config', async () => { const vercelConfig = JSON.parse(await fixture.readFile('../.vercel/output/config.json')); - expect(vercelConfig.images).to.deep.equal({ + assert.deepEqual(vercelConfig.images, { sizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840], domains: ['astro.build'], remotePatterns: [ @@ -58,9 +59,9 @@ describe('Image', () => { const $ = cheerio.load(html); const img = $('#basic-image img'); - expect(img.attr('src').startsWith('/_image?href=')).to.be.true; - expect(img.attr('loading')).to.equal('lazy'); - expect(img.attr('width')).to.equal('225'); + assert.equal(img.attr('src').startsWith('/_image?href='), true); + assert.equal(img.attr('loading'), 'lazy'); + assert.equal(img.attr('width'), '225'); }); it('supports SVGs', async () => { @@ -70,8 +71,8 @@ describe('Image', () => { const src = img.attr('src'); const res = await fixture.fetch(src); - expect(res.status).to.equal(200); - expect(res.headers.get('content-type')).to.equal('image/svg+xml'); + assert.equal(res.status, 200); + assert.equal(res.headers.get('content-type'), 'image/svg+xml'); }); }); }); diff --git a/packages/integrations/vercel/test/isr.test.js b/packages/integrations/vercel/test/isr.test.js index f2881972c..f6687e960 100644 --- a/packages/integrations/vercel/test/isr.test.js +++ b/packages/integrations/vercel/test/isr.test.js @@ -1,5 +1,6 @@ import { loadFixture } from './test-utils.js'; -import { expect } from 'chai'; +import assert from 'node:assert/strict'; +import { before, describe, it } from 'node:test'; describe('ISR', () => { /** @type {import('./test-utils.js').Fixture} */ @@ -16,7 +17,7 @@ describe('ISR', () => { const vcConfig = JSON.parse( await fixture.readFile('../.vercel/output/functions/_isr.prerender-config.json') ); - expect(vcConfig).to.deep.include({ + assert.deepEqual(vcConfig, { expiration: 120, bypassToken: '1c9e601d-9943-4e7c-9575-005556d774a8', allowQuery: ['x_astro_path'], @@ -27,7 +28,7 @@ describe('ISR', () => { it('generates expected routes', async () => { const deploymentConfig = JSON.parse(await fixture.readFile('../.vercel/output/config.json')); // the first two are /_astro/*, and filesystem routes - expect(deploymentConfig.routes.slice(2)).to.deep.equal([ + assert.deepEqual(deploymentConfig.routes.slice(2), [ { src: '^/two$', dest: '_render', diff --git a/packages/integrations/vercel/test/max-duration.test.js b/packages/integrations/vercel/test/max-duration.test.js index 799912905..188b4211d 100644 --- a/packages/integrations/vercel/test/max-duration.test.js +++ b/packages/integrations/vercel/test/max-duration.test.js @@ -1,5 +1,6 @@ import { loadFixture } from './test-utils.js'; -import { expect } from 'chai'; +import assert from 'node:assert/strict'; +import { before, describe, it } from 'node:test'; describe('maxDuration', () => { /** @type {import('./test-utils.js').Fixture} */ @@ -16,6 +17,6 @@ describe('maxDuration', () => { const vcConfig = JSON.parse( await fixture.readFile('../.vercel/output/functions/_render.func/.vc-config.json') ); - expect(vcConfig).to.deep.include({ maxDuration: 60 }); + assert.equal(vcConfig.maxDuration, 60); }); }); diff --git a/packages/integrations/vercel/test/no-output.test.js b/packages/integrations/vercel/test/no-output.test.js index 3894ee779..31708754b 100644 --- a/packages/integrations/vercel/test/no-output.test.js +++ b/packages/integrations/vercel/test/no-output.test.js @@ -1,5 +1,6 @@ import { loadFixture } from './test-utils.js'; -import { expect } from 'chai'; +import assert from 'node:assert/strict'; +import { before, describe, it } from 'node:test'; describe('Missing output config', () => { /** @type {import('./test-utils').Fixture} */ @@ -18,7 +19,7 @@ describe('Missing output config', () => { } catch (err) { error = err; } - expect(error).to.not.be.equal(undefined); - expect(error.message).to.include('output: "server"'); + assert.notEqual(error, undefined); + assert.match(error.message, /output: "server"/); }); }); diff --git a/packages/integrations/vercel/test/prerendered-error-pages.test.js b/packages/integrations/vercel/test/prerendered-error-pages.test.js index 908566223..d528972ec 100644 --- a/packages/integrations/vercel/test/prerendered-error-pages.test.js +++ b/packages/integrations/vercel/test/prerendered-error-pages.test.js @@ -1,5 +1,6 @@ import { loadFixture } from './test-utils.js'; -import { expect } from 'chai'; +import assert from 'node:assert/strict'; +import { before, describe, it } from 'node:test'; describe('prerendered error pages routing', () => { /** @type {import('./test-utils.js').Fixture} */ @@ -14,7 +15,7 @@ describe('prerendered error pages routing', () => { it('falls back to 404.html', async () => { const deploymentConfig = JSON.parse(await fixture.readFile('../.vercel/output/config.json')); - expect(deploymentConfig.routes.at(-1)).to.deep.include({ + assert.deepEqual(deploymentConfig.routes.at(-1), { src: '/.*', dest: '/404.html', status: 404, diff --git a/packages/integrations/vercel/test/redirects-serverless.test.js b/packages/integrations/vercel/test/redirects-serverless.test.js index f3a1a5daa..8d7dcf75b 100644 --- a/packages/integrations/vercel/test/redirects-serverless.test.js +++ b/packages/integrations/vercel/test/redirects-serverless.test.js @@ -1,4 +1,5 @@ -import { expect } from 'chai'; +import assert from 'node:assert/strict'; +import { before, describe, it } from 'node:test'; import { loadFixture } from './test-utils.js'; describe('Redirects Serverless', () => { @@ -23,6 +24,6 @@ describe('Redirects Serverless', () => { } catch { hasErrored = true; } - expect(hasErrored).to.equal(true, 'this file should not exist'); + assert.equal(hasErrored, true, 'this file should not exist'); }); }); diff --git a/packages/integrations/vercel/test/redirects.test.js b/packages/integrations/vercel/test/redirects.test.js index 795529ece..625f175b8 100644 --- a/packages/integrations/vercel/test/redirects.test.js +++ b/packages/integrations/vercel/test/redirects.test.js @@ -1,4 +1,5 @@ -import { expect } from 'chai'; +import assert from 'node:assert/strict'; +import { before, describe, it } from 'node:test'; import { loadFixture } from './test-utils.js'; describe('Redirects', () => { @@ -34,46 +35,46 @@ describe('Redirects', () => { const config = await getConfig(); const oneRoute = config.routes.find((r) => r.src === '/one'); - expect(oneRoute.headers.Location).to.equal('/'); - expect(oneRoute.status).to.equal(301); + assert.equal(oneRoute.headers.Location, '/'); + assert.equal(oneRoute.status, 301); const twoRoute = config.routes.find((r) => r.src === '/two'); - expect(twoRoute.headers.Location).to.equal('/'); - expect(twoRoute.status).to.equal(301); + assert.equal(twoRoute.headers.Location, '/'); + assert.equal(twoRoute.status, 301); const threeRoute = config.routes.find((r) => r.src === '/three'); - expect(threeRoute.headers.Location).to.equal('/'); - expect(threeRoute.status).to.equal(302); + assert.equal(threeRoute.headers.Location, '/'); + assert.equal(threeRoute.status, 302); }); it('define redirects for static files', async () => { const config = await getConfig(); const staticRoute = config.routes.find((r) => r.src === '/Basic/http-2-0.html'); - expect(staticRoute).to.not.be.undefined; - expect(staticRoute.headers.Location).to.equal('/posts/http2'); - expect(staticRoute.status).to.equal(301); + assert.notEqual(staticRoute, undefined) + assert.equal(staticRoute.headers.Location, '/posts/http2'); + assert.equal(staticRoute.status, 301); }); it('defines dynamic routes', async () => { const config = await getConfig(); const blogRoute = config.routes.find((r) => r.src.startsWith('/blog')); - expect(blogRoute).to.not.be.undefined; - expect(blogRoute.headers.Location.startsWith('/team/articles')).to.equal(true); - expect(blogRoute.status).to.equal(301); + assert.notEqual(blogRoute, undefined); + assert.equal(blogRoute.headers.Location.startsWith('/team/articles'), true); + assert.equal(blogRoute.status, 301); }); it('define trailingSlash redirect for sub pages', async () => { const config = await getConfig(); const subpathRoute = config.routes.find((r) => r.src === '/subpage'); - expect(subpathRoute).to.not.be.undefined; - expect(subpathRoute.headers.Location).to.equal('/subpage/'); + assert.notEqual(subpathRoute, undefined); + assert.equal(subpathRoute.headers.Location, '/subpage/'); }); it('does not define trailingSlash redirect for root page', async () => { const config = await getConfig(); - expect(config.routes.find((r) => r.src === '/')).to.be.undefined; + assert.equal(config.routes.find((r) => r.src === '/'), undefined); }); }); diff --git a/packages/integrations/vercel/test/serverless-prerender.test.js b/packages/integrations/vercel/test/serverless-prerender.test.js index 5a3c7dd70..475df477f 100644 --- a/packages/integrations/vercel/test/serverless-prerender.test.js +++ b/packages/integrations/vercel/test/serverless-prerender.test.js @@ -1,4 +1,5 @@ -import { expect } from 'chai'; +import assert from 'node:assert/strict'; +import { before, describe, it } from 'node:test'; import { loadFixture } from './test-utils.js'; describe('Serverless prerender', () => { @@ -14,16 +15,16 @@ describe('Serverless prerender', () => { }); it('build successful', async () => { - expect(await fixture.readFile('../.vercel/output/static/index.html')).to.be.ok; + assert.ok(await fixture.readFile('../.vercel/output/static/index.html')); }); // TODO: The path here seems to be inconsistent? it.skip('includeFiles work', async () => { - expect( + assert.ok( await fixture.readFile( '../.vercel/output/functions/render.func/packages/integrations/vercel/test/fixtures/serverless-prerender/dist/middleware.mjs' ) - ).to.be.ok; + ); }); }); @@ -41,6 +42,6 @@ describe('Serverless hybrid rendering', () => { }); it('build successful', async () => { - expect(await fixture.readFile('../.vercel/output/static/index.html')).to.be.ok; + assert.ok(await fixture.readFile('../.vercel/output/static/index.html')); }); }); diff --git a/packages/integrations/vercel/test/serverless-with-dynamic-routes.test.js b/packages/integrations/vercel/test/serverless-with-dynamic-routes.test.js index fae3aef95..0967f864b 100644 --- a/packages/integrations/vercel/test/serverless-with-dynamic-routes.test.js +++ b/packages/integrations/vercel/test/serverless-with-dynamic-routes.test.js @@ -1,4 +1,5 @@ -import { expect } from 'chai'; +import assert from 'node:assert/strict'; +import { before, describe, it } from 'node:test'; import { loadFixture } from './test-utils.js'; describe('Serverless with dynamic routes', () => { @@ -15,11 +16,12 @@ describe('Serverless with dynamic routes', () => { }); it('build successful', async () => { - expect(await fixture.readFile('../.vercel/output/static/index.html')).to.be.ok; - expect( + assert.ok(await fixture.readFile('../.vercel/output/static/index.html')); + assert.ok( await fixture.readFile('../.vercel/output/functions/[id]/index.astro.func/.vc-config.json') - ).to.be.ok; - expect(await fixture.readFile('../.vercel/output/functions/api/[id].js.func/.vc-config.json')) - .to.be.ok; + ); + assert.ok( + await fixture.readFile('../.vercel/output/functions/api/[id].js.func/.vc-config.json') + ); }); }); diff --git a/packages/integrations/vercel/test/speed-insights.test.js b/packages/integrations/vercel/test/speed-insights.test.js index 7cf2ae778..4da6597e1 100644 --- a/packages/integrations/vercel/test/speed-insights.test.js +++ b/packages/integrations/vercel/test/speed-insights.test.js @@ -1,5 +1,6 @@ import { loadFixture } from './test-utils.js'; -import { expect } from 'chai'; +import assert from 'node:assert/strict'; +import { before, describe, it } from 'node:test'; describe('Vercel Speed Insights', () => { describe('output: server', () => { @@ -19,7 +20,7 @@ describe('Vercel Speed Insights', () => { const bundle = await fixture.readFile(`../.vercel/output/static/_astro/${page}`); - expect(bundle).to.contain('https://vitals.vercel-analytics.com/v1/vitals'); + assert.match(bundle, /https:\/\/vitals.vercel-analytics.com\/v1\/vitals/) }); }); @@ -40,7 +41,7 @@ describe('Vercel Speed Insights', () => { const bundle = await fixture.readFile(`../.vercel/output/static/_astro/${page}`); - expect(bundle).to.contain('https://vitals.vercel-analytics.com/v1/vitals'); + assert.match(bundle, /https:\/\/vitals.vercel-analytics.com\/v1\/vitals/); }); }); }); diff --git a/packages/integrations/vercel/test/split.test.js b/packages/integrations/vercel/test/split.test.js index 3f4e75d1b..172c27775 100644 --- a/packages/integrations/vercel/test/split.test.js +++ b/packages/integrations/vercel/test/split.test.js @@ -1,5 +1,6 @@ import { loadFixture } from './test-utils.js'; -import { expect } from 'chai'; +import assert from 'node:assert/strict'; +import { before, describe, it } from 'node:test'; describe('build: split', () => { /** @type {import('./test-utils').Fixture} */ @@ -15,12 +16,12 @@ describe('build: split', () => { it('creates separate functions for each page', async () => { const files = await fixture.readdir('../.vercel/output/functions/'); - expect(files.length).to.equal(3); + assert.equal(files.length, 3); }); it('creates the route definitions in the config.json', async () => { const json = await fixture.readFile('../.vercel/output/config.json'); const config = JSON.parse(json); - expect(config.routes).to.have.a.lengthOf(5); + assert.equal(config.routes.length, 5); }); }); diff --git a/packages/integrations/vercel/test/static-assets.test.js b/packages/integrations/vercel/test/static-assets.test.js index 606addfb3..37d3a0577 100644 --- a/packages/integrations/vercel/test/static-assets.test.js +++ b/packages/integrations/vercel/test/static-assets.test.js @@ -1,4 +1,5 @@ -import { expect } from 'chai'; +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; import { loadFixture } from './test-utils.js'; describe('Static Assets', () => { @@ -32,39 +33,40 @@ describe('Static Assets', () => { async function checkValidCacheControl(assets) { const config = await getConfig(); + const theAssets = assets ?? (await getAssets()); - const route = config.routes.find((r) => r.src === `^/${assets ?? getAssets()}/(.*)$`); - expect(route.headers['cache-control']).to.equal(VALID_CACHE_CONTROL); - expect(route.continue).to.equal(true); + const route = config.routes.find((r) => r.src === `^/${theAssets}/(.*)$`); + assert.equal(route.headers['cache-control'], VALID_CACHE_CONTROL); + assert.equal(route.continue, true); } - describe('static adapter', async () => { - const { default: vercel } = await import('@astrojs/vercel/static'); - + describe('static adapter', () => { it('has cache control', async () => { + const { default: vercel } = await import('@astrojs/vercel/static'); await build({ adapter: vercel() }); - checkValidCacheControl(); + await checkValidCacheControl(); }); it('has cache control other assets', async () => { + const { default: vercel } = await import('@astrojs/vercel/static'); const assets = '_foo'; await build({ adapter: vercel(), assets }); - checkValidCacheControl(assets); + await checkValidCacheControl(assets); }); }); - describe('serverless adapter', async () => { - const { default: vercel } = await import('@astrojs/vercel/serverless'); - + describe('serverless adapter', () => { it('has cache control', async () => { + const { default: vercel } = await import('@astrojs/vercel/serverless'); await build({ output: 'server', adapter: vercel() }); - checkValidCacheControl(); + await checkValidCacheControl(); }); it('has cache control other assets', async () => { + const { default: vercel } = await import('@astrojs/vercel/serverless'); const assets = '_foo'; await build({ output: 'server', adapter: vercel(), assets }); - checkValidCacheControl(assets); + await checkValidCacheControl(assets); }); }); }); diff --git a/packages/integrations/vercel/test/static.test.js b/packages/integrations/vercel/test/static.test.js index a3d0ea738..7547d2475 100644 --- a/packages/integrations/vercel/test/static.test.js +++ b/packages/integrations/vercel/test/static.test.js @@ -1,5 +1,6 @@ import { loadFixture } from './test-utils.js'; -import { expect } from 'chai'; +import assert from 'node:assert/strict'; +import { before, describe, it } from 'node:test'; describe('static routing', () => { /** @type {import('./test-utils.js').Fixture} */ @@ -15,7 +16,7 @@ describe('static routing', () => { it('falls back to 404.html', async () => { const deploymentConfig = JSON.parse(await fixture.readFile('../.vercel/output/config.json')); // change the index if necesseary - expect(deploymentConfig.routes[2]).to.deep.include({ + assert.deepEqual(deploymentConfig.routes[2], { src: '/.*', dest: '/404.html', status: 404, diff --git a/packages/integrations/vercel/test/streaming.test.js b/packages/integrations/vercel/test/streaming.test.js index 205946973..3d231478d 100644 --- a/packages/integrations/vercel/test/streaming.test.js +++ b/packages/integrations/vercel/test/streaming.test.js @@ -1,5 +1,6 @@ import { loadFixture } from './test-utils.js'; -import { expect } from 'chai'; +import assert from 'node:assert/strict'; +import { before, describe, it } from 'node:test'; describe('streaming', () => { /** @type {import('./test-utils.js').Fixture} */ @@ -16,6 +17,6 @@ describe('streaming', () => { const vcConfig = JSON.parse( await fixture.readFile('../.vercel/output/functions/_render.func/.vc-config.json') ); - expect(vcConfig).to.deep.include({ supportsResponseStreaming: true }); + assert.equal(vcConfig.supportsResponseStreaming, true); }); }); diff --git a/packages/integrations/vercel/test/web-analytics.test.js b/packages/integrations/vercel/test/web-analytics.test.js index b728fae4c..6b4efaedb 100644 --- a/packages/integrations/vercel/test/web-analytics.test.js +++ b/packages/integrations/vercel/test/web-analytics.test.js @@ -1,5 +1,6 @@ import { loadFixture } from './test-utils.js'; -import { expect } from 'chai'; +import assert from 'node:assert/strict'; +import { before, describe, it } from 'node:test'; describe('Vercel Web Analytics', () => { describe('output: static', () => { @@ -18,8 +19,8 @@ describe('Vercel Web Analytics', () => { const pageOne = await fixture.readFile('../.vercel/output/static/one/index.html'); const pageTwo = await fixture.readFile('../.vercel/output/static/two/index.html'); - expect(pageOne).to.contain('/_vercel/insights/script.js'); - expect(pageTwo).to.contain('/_vercel/insights/script.js'); + assert.match(pageOne, /\/_vercel\/insights\/script.js/); + assert.match(pageTwo, /\/_vercel\/insights\/script.js/); }); }); }); |