diff --git a/changelog.md b/changelog.md index ce54c30..6ab1ef6 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,11 @@ # Changelog +## 2026-03-26 - 3.6.1 - fix(chromium runtime) +encode Chromium test bundle names correctly for nested file paths + +- Use replaceAll() so bundle cache filenames consistently handle test paths with multiple directory separators. +- URL-encode the bundleName query parameter before opening the Chromium test page to avoid lookup issues with generated bundle filenames. + ## 2026-03-24 - 3.6.0 - feat(config) migrate project metadata to .smartconfig and refresh build configuration diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 2d7e069..38f40a9 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@git.zone/tstest', - version: '3.6.0', + version: '3.6.1', description: 'A powerful, modern test runner for TypeScript with multi-runtime support (Node.js, Deno, Bun, Chromium) and a batteries-included test framework.' } diff --git a/ts/tstest.classes.runtime.chromium.ts b/ts/tstest.classes.runtime.chromium.ts index 3f01390..2216c8c 100644 --- a/ts/tstest.classes.runtime.chromium.ts +++ b/ts/tstest.classes.runtime.chromium.ts @@ -103,7 +103,7 @@ export class ChromiumRuntimeAdapter extends RuntimeAdapter { // lets get all our paths sorted const tsbundleCacheDirPath = plugins.path.join(paths.cwd, './.nogit/tstest_cache'); - const bundleFileName = testFile.replace('/', '__') + '.js'; + const bundleFileName = testFile.replaceAll('/', '__') + '.js'; const bundleFilePath = plugins.path.join(tsbundleCacheDirPath, bundleFileName); // lets bundle the test @@ -159,7 +159,7 @@ export class ChromiumRuntimeAdapter extends RuntimeAdapter { await this.smartbrowserInstance.start(); const evaluatePromise = this.smartbrowserInstance.evaluateOnPage( - `http://localhost:${httpPort}/test?bundleName=${bundleFileName}`, + `http://localhost:${httpPort}/test?bundleName=${encodeURIComponent(bundleFileName)}`, async () => { // lets enable real time comms const ws = new WebSocket(`ws://localhost:${globalThis.wsPort}`); diff --git a/ts/tstest.classes.tstest.ts b/ts/tstest.classes.tstest.ts index 8aec65b..363a47f 100644 --- a/ts/tstest.classes.tstest.ts +++ b/ts/tstest.classes.tstest.ts @@ -531,7 +531,7 @@ import '${absoluteTestFile.replace(/\\/g, '/')}'; // lets get all our paths sorted const tsbundleCacheDirPath = plugins.path.join(paths.cwd, './.nogit/tstest_cache'); - const bundleFileName = fileNameArg.replace('/', '__') + '.js'; + const bundleFileName = fileNameArg.replaceAll('/', '__') + '.js'; const bundleFilePath = plugins.path.join(tsbundleCacheDirPath, bundleFileName); // lets bundle the test @@ -587,7 +587,7 @@ import '${absoluteTestFile.replace(/\\/g, '/')}'; await this.smartbrowserInstance.start(); const evaluatePromise = this.smartbrowserInstance.evaluateOnPage( - `http://localhost:${httpPort}/test?bundleName=${bundleFileName}`, + `http://localhost:${httpPort}/test?bundleName=${encodeURIComponent(bundleFileName)}`, async () => { // lets enable real time comms const ws = new WebSocket(`ws://localhost:${globalThis.wsPort}`);