diff --git a/packages/telemetry/package.json b/packages/telemetry/package.json index dfaa652d6019..d03ef1d10b2a 100644 --- a/packages/telemetry/package.json +++ b/packages/telemetry/package.json @@ -23,7 +23,8 @@ "build": "astro-scripts build \"src/**/*.ts\" && tsc", "build:ci": "astro-scripts build \"src/**/*.ts\"", "dev": "astro-scripts dev \"src/**/*.ts\"", - "test": "astro-scripts test \"test/**/*.test.js\"" + "test": "astro-scripts test \"test/**/*.test.ts\"", + "typecheck:tests": "tsc --build tsconfig.test.json" }, "files": [ "dist" diff --git a/packages/telemetry/test/config.test.js b/packages/telemetry/test/config.test.ts similarity index 100% rename from packages/telemetry/test/config.test.js rename to packages/telemetry/test/config.test.ts diff --git a/packages/telemetry/test/index.test.js b/packages/telemetry/test/index.test.ts similarity index 72% rename from packages/telemetry/test/index.test.js rename to packages/telemetry/test/index.test.ts index 2bfc353614de..d2c3f5c95dd3 100644 --- a/packages/telemetry/test/index.test.js +++ b/packages/telemetry/test/index.test.ts @@ -3,19 +3,22 @@ import { after, before, describe, it } from 'node:test'; import { AstroTelemetry } from '../dist/index.js'; function setup() { - const config = new Map(); - const telemetry = new AstroTelemetry({ astroVersion: '0.0.0-test.1', viteVersion: '0.0.0' }); - const logs = []; + const config = new Map(); + const telemetry = new AstroTelemetry({ + astroVersion: '0.0.0-test.1', + viteVersion: '0.0.0', + }); + const logs: unknown[][] = []; // Stub isCI to false so we can test user-facing behavior - telemetry.isCI = false; + telemetry['isCI'] = false; // Stub process.env to properly test in Astro's own CI - telemetry.env = {}; + telemetry['env'] = {}; // Override config so we can inspect it - telemetry.config = config; + telemetry['config'] = config; // Mock the global debug function to capture logs - const originalDebug = globalThis._astroGlobalDebug; - globalThis._astroGlobalDebug = (type, ...args) => { + const originalDebug = (globalThis as any)._astroGlobalDebug; + (globalThis as any)._astroGlobalDebug = (type: string, ...args: unknown[]) => { if (type === 'telemetry') { logs.push(args); } @@ -34,13 +37,13 @@ function setup() { config, logs, cleanup: () => { - globalThis._astroGlobalDebug = originalDebug; + (globalThis as any)._astroGlobalDebug = originalDebug; process.env.DEBUG = oldDebug; }, }; } describe('AstroTelemetry', () => { - let oldCI; + let oldCI: string | undefined; before(() => { oldCI = process.env.CI; // Stub process.env.CI to `false` @@ -60,9 +63,9 @@ describe('AstroTelemetry', () => { const [key] = Array.from(config.keys()); assert.notEqual(key, undefined); assert.equal(config.get(key), false); - assert.equal(telemetry.enabled, false); - assert.equal(telemetry.isDisabled, true); - const result = await telemetry.record(['TEST']); + assert.equal(telemetry['enabled'], false); + assert.equal(telemetry['isDisabled'], true); + const result = await telemetry.record([{ eventName: 'TEST', payload: {} }]); assert.equal(result, undefined); const [log] = logs; assert.notEqual(log, undefined); @@ -75,9 +78,9 @@ describe('AstroTelemetry', () => { const [key] = Array.from(config.keys()); assert.notEqual(key, undefined); assert.equal(config.get(key), true); - assert.equal(telemetry.enabled, true); - assert.equal(telemetry.isDisabled, false); - await telemetry.record(['TEST']); + assert.equal(telemetry['enabled'], true); + assert.equal(telemetry['isDisabled'], false); + await telemetry.record([{ eventName: 'TEST', payload: {} }]); assert.equal(logs.length, 2); cleanup(); }); @@ -87,8 +90,8 @@ describe('AstroTelemetry', () => { const [key] = Array.from(config.keys()); assert.notEqual(key, undefined); assert.equal(config.get(key), false); - assert.equal(telemetry.enabled, false); - assert.equal(telemetry.isDisabled, true); + assert.equal(telemetry['enabled'], false); + assert.equal(telemetry['isDisabled'], true); const [log] = logs; assert.notEqual(log, undefined); assert.match(logs.join(''), /disabled/); @@ -100,8 +103,8 @@ describe('AstroTelemetry', () => { const [key] = Array.from(config.keys()); assert.notEqual(key, undefined); assert.equal(config.get(key), true); - assert.equal(telemetry.enabled, true); - assert.equal(telemetry.isDisabled, false); + assert.equal(telemetry['enabled'], true); + assert.equal(telemetry['isDisabled'], false); const [log] = logs; assert.notEqual(log, undefined); assert.match(logs.join(''), /enabled/); diff --git a/packages/telemetry/tsconfig.test.json b/packages/telemetry/tsconfig.test.json new file mode 100644 index 000000000000..c94db9d8553c --- /dev/null +++ b/packages/telemetry/tsconfig.test.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.base.json", + "include": ["test/**/*.ts"], + "exclude": ["test/fixtures/**"], + "compilerOptions": { + "noEmit": true, + "allowJs": true, + "noUnusedLocals": false, + "noUnusedParameters": false, + "rewriteRelativeImportExtensions": true + }, + "references": [{ "path": "../astro/tsconfig.test.json" }] +}