Files
pikasTech-HWLAB/web/hwlab-cloud-web/scripts/i18n-fallback.test.ts
T

33 lines
1.2 KiB
TypeScript

import assert from "node:assert/strict";
import test from "node:test";
import { isLocaleChunkLoadError, loadLocaleModuleWithRetry } from "../src/i18n/index.ts";
test("i18n locale loader retries transient dynamic import failures", async () => {
let calls = 0;
const waits: number[] = [];
const result = await loadLocaleModuleWithRetry(
async () => {
calls += 1;
if (calls < 3) throw new Error("Failed to fetch dynamically imported module: https://hwlab.pikapython.com/assets/en.js");
return { default: { nav: { dashboard: "Dashboard" } } };
},
[1, 2],
async (ms) => {
waits.push(ms);
}
);
assert.equal(result.attempts, 3);
assert.equal(calls, 3);
assert.deepEqual(waits, [1, 2]);
assert.deepEqual(result.module.default, { nav: { dashboard: "Dashboard" } });
});
test("i18n chunk error classifier covers Vite dynamic import failures", () => {
assert.equal(isLocaleChunkLoadError(new Error("Failed to fetch dynamically imported module: https://hwlab.pikapython.com/assets/en.js")), true);
assert.equal(isLocaleChunkLoadError(new Error("Importing a module script failed.")), true);
assert.equal(isLocaleChunkLoadError(new Error("ordinary locale parse error")), false);
});