From c153d3c433a0bec2716cf8c37a46647d003d0e68 Mon Sep 17 00:00:00 2001 From: ocavue Date: Tue, 21 Apr 2026 04:05:29 +1000 Subject: [PATCH] refactor(astro): migrate dev tests to typescript --- packages/astro/src/core/dev/restart.ts | 2 +- .../{dev-base.test.js => dev-base.test.ts} | 6 ++--- ...ontainer.test.js => dev-container.test.ts} | 22 +++++++++---------- ...-pages.test.js => dev-error-pages.test.ts} | 11 +++++----- ...chunk.test.js => dev-render-chunk.test.ts} | 6 ++--- ....test.js => dev-render-components.test.ts} | 8 +++---- ...st-url.test.js => dev-request-url.test.ts} | 8 +++---- ...ev-restart.test.js => dev-restart.test.ts} | 11 +++++----- ...ipts.test.js => dev-route-scripts.test.ts} | 16 ++++++++------ 9 files changed, 45 insertions(+), 45 deletions(-) rename packages/astro/test/{dev-base.test.js => dev-base.test.ts} (90%) rename packages/astro/test/{dev-container.test.js => dev-container.test.ts} (91%) rename packages/astro/test/{dev-error-pages.test.js => dev-error-pages.test.ts} (90%) rename packages/astro/test/{dev-render-chunk.test.js => dev-render-chunk.test.ts} (84%) rename packages/astro/test/{dev-render-components.test.js => dev-render-components.test.ts} (92%) rename packages/astro/test/{dev-request-url.test.js => dev-request-url.test.ts} (84%) rename packages/astro/test/{dev-restart.test.js => dev-restart.test.ts} (97%) rename packages/astro/test/{dev-route-scripts.test.js => dev-route-scripts.test.ts} (86%) diff --git a/packages/astro/src/core/dev/restart.ts b/packages/astro/src/core/dev/restart.ts index cfbac745e7cd..4f1bc53fbc0b 100644 --- a/packages/astro/src/core/dev/restart.ts +++ b/packages/astro/src/core/dev/restart.ts @@ -133,7 +133,7 @@ async function restartContainerInPlace(container: Container): Promise { describe('with trailingSlash: "never"', () => { - let fixture; - let devServer; + let fixture: Fixture; + let devServer: DevServer; before(async () => { fixture = await loadFixture({ diff --git a/packages/astro/test/dev-container.test.js b/packages/astro/test/dev-container.test.ts similarity index 91% rename from packages/astro/test/dev-container.test.js rename to packages/astro/test/dev-container.test.ts index de7bb588477e..98b6c2ca100d 100644 --- a/packages/astro/test/dev-container.test.js +++ b/packages/astro/test/dev-container.test.ts @@ -1,12 +1,12 @@ import * as assert from 'node:assert/strict'; import { after, before, describe, it } from 'node:test'; import * as cheerio from 'cheerio'; -import { loadFixture } from './test-utils.js'; +import { type DevServer, type Fixture, loadFixture } from './test-utils.js'; describe('dev container', () => { describe('basic rendering', () => { - let fixture; - let devServer; + let fixture: Fixture; + let devServer: DevServer; before(async () => { fixture = await loadFixture({ @@ -29,8 +29,8 @@ describe('dev container', () => { }); describe('injected dynamic routes', () => { - let fixture; - let devServer; + let fixture: Fixture; + let devServer: DevServer; before(async () => { fixture = await loadFixture({ @@ -68,8 +68,8 @@ describe('dev container', () => { }); describe('injected 404 route', () => { - let fixture; - let devServer; + let fixture: Fixture; + let devServer: DevServer; before(async () => { fixture = await loadFixture({ @@ -118,8 +118,8 @@ describe('dev container', () => { }); describe('public/ with base', () => { - let fixture; - let devServer; + let fixture: Fixture; + let devServer: DevServer; before(async () => { fixture = await loadFixture({ @@ -145,8 +145,8 @@ describe('dev container', () => { }); describe('public/ without base', () => { - let fixture; - let devServer; + let fixture: Fixture; + let devServer: DevServer; before(async () => { fixture = await loadFixture({ diff --git a/packages/astro/test/dev-error-pages.test.js b/packages/astro/test/dev-error-pages.test.ts similarity index 90% rename from packages/astro/test/dev-error-pages.test.js rename to packages/astro/test/dev-error-pages.test.ts index 7b3e6dbdafd7..2649d04bdb2b 100644 --- a/packages/astro/test/dev-error-pages.test.js +++ b/packages/astro/test/dev-error-pages.test.ts @@ -1,13 +1,12 @@ -// @ts-check import assert from 'node:assert/strict'; import { after, before, describe, it } from 'node:test'; import * as cheerio from 'cheerio'; -import { loadFixture } from './test-utils.js'; +import { type DevServer, type Fixture, loadFixture } from './test-utils.js'; describe('Dev pipeline - error pages', () => { describe('Custom 404', () => { - let fixture; - let devServer; + let fixture: Fixture; + let devServer: DevServer; before(async () => { fixture = await loadFixture({ @@ -44,8 +43,8 @@ describe('Dev pipeline - error pages', () => { }); describe('Custom 500', () => { - let fixture; - let devServer; + let fixture: Fixture; + let devServer: DevServer; before(async () => { fixture = await loadFixture({ diff --git a/packages/astro/test/dev-render-chunk.test.js b/packages/astro/test/dev-render-chunk.test.ts similarity index 84% rename from packages/astro/test/dev-render-chunk.test.js rename to packages/astro/test/dev-render-chunk.test.ts index a167260db565..a381765b8625 100644 --- a/packages/astro/test/dev-render-chunk.test.js +++ b/packages/astro/test/dev-render-chunk.test.ts @@ -1,11 +1,11 @@ import * as assert from 'node:assert/strict'; import { after, before, describe, it } from 'node:test'; import * as cheerio from 'cheerio'; -import { loadFixture } from './test-utils.js'; +import { type DevServer, type Fixture, loadFixture } from './test-utils.js'; describe('core/render chunk', () => { - let fixture; - let devServer; + let fixture: Fixture; + let devServer: DevServer; before(async () => { fixture = await loadFixture({ diff --git a/packages/astro/test/dev-render-components.test.js b/packages/astro/test/dev-render-components.test.ts similarity index 92% rename from packages/astro/test/dev-render-components.test.js rename to packages/astro/test/dev-render-components.test.ts index 4b4a70f97a7c..29b716296e5a 100644 --- a/packages/astro/test/dev-render-components.test.js +++ b/packages/astro/test/dev-render-components.test.ts @@ -1,11 +1,11 @@ import * as assert from 'node:assert/strict'; import { after, before, describe, it } from 'node:test'; import * as cheerio from 'cheerio'; -import { loadFixture } from './test-utils.js'; +import { type DevServer, type Fixture, loadFixture } from './test-utils.js'; describe('core/render components', () => { - let fixture; - let devServer; + let fixture: Fixture; + let devServer: DevServer; before(async () => { fixture = await loadFixture({ @@ -36,7 +36,7 @@ describe('core/render components', () => { const html = await res.text(); const $ = cheerio.load(html); - const check = (name) => JSON.parse($(name).text() || '{}'); + const check = (name: string) => JSON.parse($(name).text() || '{}'); const Class = check('#class'); const ClassList = check('#class-list'); diff --git a/packages/astro/test/dev-request-url.test.js b/packages/astro/test/dev-request-url.test.ts similarity index 84% rename from packages/astro/test/dev-request-url.test.js rename to packages/astro/test/dev-request-url.test.ts index 638a08f4e2ea..cf34759d0e72 100644 --- a/packages/astro/test/dev-request-url.test.js +++ b/packages/astro/test/dev-request-url.test.ts @@ -1,13 +1,11 @@ import * as assert from 'node:assert/strict'; import { after, before, describe, it } from 'node:test'; -import { loadFixture } from './test-utils.js'; +import { type DevServer, type Fixture, loadFixture } from './test-utils.js'; describe('vite-plugin-astro-server', () => { describe('url', () => { - /** @type {import('./test-utils.js').Fixture} */ - let fixture; - /** @type {import('./test-utils.js').DevServer} */ - let devServer; + let fixture: Fixture; + let devServer: DevServer; before(async () => { fixture = await loadFixture({ diff --git a/packages/astro/test/dev-restart.test.js b/packages/astro/test/dev-restart.test.ts similarity index 97% rename from packages/astro/test/dev-restart.test.js rename to packages/astro/test/dev-restart.test.ts index 43cb771d9d55..d485a5ff2fa4 100644 --- a/packages/astro/test/dev-restart.test.js +++ b/packages/astro/test/dev-restart.test.ts @@ -1,18 +1,19 @@ import * as assert from 'node:assert/strict'; -import { describe, it } from 'node:test'; import fs from 'node:fs'; import path from 'node:path'; +import { describe, it } from 'node:test'; import { fileURLToPath } from 'node:url'; +import type { AstroInlineConfig } from 'astro'; +import type { Container } from '../dist/core/dev/container.js'; import { createContainerWithAutomaticRestart, startContainer } from '../dist/core/dev/index.js'; const fixtureDir = fileURLToPath(new URL('./fixtures/dev-container/', import.meta.url)); -/** @type {import('astro').AstroInlineConfig} */ -const defaultInlineConfig = { +const defaultInlineConfig: AstroInlineConfig = { logLevel: 'silent', }; -function isStarted(container) { +function isStarted(container: Container) { return !!container.viteServer.httpServer?.listening; } @@ -20,7 +21,7 @@ function isStarted(container) { * Safely clean up a file that a test may have created inside the fixture. * No-ops if the file doesn't exist. */ -function cleanupFile(relPath) { +function cleanupFile(relPath: string) { try { fs.unlinkSync(path.join(fixtureDir, relPath)); } catch {} diff --git a/packages/astro/test/dev-route-scripts.test.js b/packages/astro/test/dev-route-scripts.test.ts similarity index 86% rename from packages/astro/test/dev-route-scripts.test.js rename to packages/astro/test/dev-route-scripts.test.ts index 12962fadf9b0..6c31cb2360fa 100644 --- a/packages/astro/test/dev-route-scripts.test.js +++ b/packages/astro/test/dev-route-scripts.test.ts @@ -2,9 +2,11 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; import { getDevRouteScripts } from '../dist/vite-plugin-routes/index.js'; +type RouteScripts = Parameters[1]; + describe('getDevRouteScripts', () => { it('returns empty array when command is build', () => { - const scripts = [{ stage: 'page', content: 'console.log("page")' }]; + const scripts: RouteScripts = [{ stage: 'page', content: 'console.log("page")' }]; const result = getDevRouteScripts('build', scripts); assert.deepEqual(result, []); }); @@ -15,7 +17,7 @@ describe('getDevRouteScripts', () => { }); it('includes external page script entry when page-stage scripts exist', () => { - const scripts = [{ stage: 'page', content: 'import "alpinejs"' }]; + const scripts: RouteScripts = [{ stage: 'page', content: 'import "alpinejs"' }]; const result = getDevRouteScripts('dev', scripts); assert.equal(result.length, 1); @@ -26,7 +28,7 @@ describe('getDevRouteScripts', () => { }); it('collapses multiple page scripts into a single external entry', () => { - const scripts = [ + const scripts: RouteScripts = [ { stage: 'page', content: 'import "alpinejs"' }, { stage: 'page', content: 'import "other"' }, ]; @@ -37,7 +39,7 @@ describe('getDevRouteScripts', () => { }); it('includes head-inline scripts with their content', () => { - const scripts = [{ stage: 'head-inline', content: 'console.log("inline")' }]; + const scripts: RouteScripts = [{ stage: 'head-inline', content: 'console.log("inline")' }]; const result = getDevRouteScripts('dev', scripts); assert.equal(result.length, 1); @@ -48,7 +50,7 @@ describe('getDevRouteScripts', () => { }); it('includes both page and head-inline scripts together', () => { - const scripts = [ + const scripts: RouteScripts = [ { stage: 'page', content: 'import "alpinejs"' }, { stage: 'head-inline', content: 'console.log("inline1")' }, { stage: 'head-inline', content: 'console.log("inline2")' }, @@ -71,7 +73,7 @@ describe('getDevRouteScripts', () => { }); it('ignores before-hydration and page-ssr stage scripts', () => { - const scripts = [ + const scripts: RouteScripts = [ { stage: 'before-hydration', content: 'console.log("hydration")' }, { stage: 'page-ssr', content: 'console.log("ssr")' }, ]; @@ -81,7 +83,7 @@ describe('getDevRouteScripts', () => { }); it('ignores non-relevant stages while still collecting page and head-inline', () => { - const scripts = [ + const scripts: RouteScripts = [ { stage: 'before-hydration', content: 'console.log("hydration")' }, { stage: 'page', content: 'import "alpinejs"' }, { stage: 'page-ssr', content: 'console.log("ssr")' },