1*d2483622Sjason westover// How to run this test in isolation: 2*d2483622Sjason westover// npm run test:unit -- i18n.vendor.spec.js 3*d2483622Sjason westover// This verifies vendor overlays (e.g., nvidia shared folder) and vendor-root fallback 4*d2483622Sjason westover// without requiring component mounts or full app boot. 5*d2483622Sjason westoverdescribe('i18n vendor overlays', () => { 6*d2483622Sjason westover const ORIGINAL_ENV = process.env; 7*d2483622Sjason westover beforeEach(() => { 8*d2483622Sjason westover jest.resetModules(); 9*d2483622Sjason westover process.env = { ...ORIGINAL_ENV }; 10*d2483622Sjason westover // Ensure default locale is deterministic for the test 11*d2483622Sjason westover window.localStorage.setItem('storedLanguage', 'en-US'); 12*d2483622Sjason westover }); 13*d2483622Sjason westover 14*d2483622Sjason westover afterEach(() => { 15*d2483622Sjason westover process.env = ORIGINAL_ENV; 16*d2483622Sjason westover }); 17*d2483622Sjason westover 18*d2483622Sjason westover test('falls back to vendor root overlays when env has hyphenated suffix', async () => { 19*d2483622Sjason westover // Simulate running in nvidia-gb but having overlays only in src/env/locales/nvidia 20*d2483622Sjason westover process.env.VUE_APP_ENV_NAME = 'nvidia-gb'; 21*d2483622Sjason westover 22*d2483622Sjason westover const { createI18nInstance } = await import('@/i18n'); 23*d2483622Sjason westover const vendorEn = require('@/env/locales/nvidia/en-US.json'); 24*d2483622Sjason westover const stubLoader = () => ({ 'en-US': vendorEn.default || vendorEn }); 25*d2483622Sjason westover const i18nInstance = createI18nInstance('nvidia-gb', 'en-US', stubLoader); 26*d2483622Sjason westover 27*d2483622Sjason westover // System HGX dump is NVIDIA-specific and defined in src/env/locales/nvidia/en-US.json 28*d2483622Sjason westover const translated = i18nInstance.global.t( 29*d2483622Sjason westover 'pageDumps.dumpTypes.systemHgxDump', 30*d2483622Sjason westover ); 31*d2483622Sjason westover expect(translated).toBe('System [HGX] dump (disruptive)'); 32*d2483622Sjason westover }); 33*d2483622Sjason westover 34*d2483622Sjason westover test('base locales do not contain vendor-only keys', async () => { 35*d2483622Sjason westover process.env.VUE_APP_ENV_NAME = undefined; 36*d2483622Sjason westover const { createI18nInstance } = await import('@/i18n'); 37*d2483622Sjason westover const i18nInstance = createI18nInstance(undefined, 'en-US'); 38*d2483622Sjason westover const translated = i18nInstance.global.t( 39*d2483622Sjason westover 'pageDumps.dumpTypes.systemHgxDump', 40*d2483622Sjason westover ); 41*d2483622Sjason westover // When no env overlays are loaded, accessing vendor-only keys should return the key path 42*d2483622Sjason westover expect(translated).toBe('pageDumps.dumpTypes.systemHgxDump'); 43*d2483622Sjason westover }); 44*d2483622Sjason westover}); 45