diff --git a/release-gate/impact.mjs b/release-gate/impact.mjs index cde615d..ef3b728 100644 --- a/release-gate/impact.mjs +++ b/release-gate/impact.mjs @@ -88,7 +88,7 @@ const IMPACT_RULES = Object.freeze([ { groups: ['AUTH'], pattern: /(?:auth|access-policy|account|user-permission)/i }, { groups: ['CFG'], pattern: /(?:config|provider|model-catalog|orchestrator|analytics|disclosure)/i }, { groups: ['CFG'], pattern: /(?:^|\/)\.env(?:\.example)?$/i }, - { groups: ['UI'], pattern: /^(?:src\/|public\/)|\.(?:css|scss|tsx|vue)$/i }, + { groups: ['UI'], pattern: /^(?:src\/|public\/|index\.html$)|\.(?:css|scss|tsx|vue)$/i }, ]); const GROUP_DEPENDENCIES = Object.freeze({ diff --git a/release-gate/impact.test.mjs b/release-gate/impact.test.mjs index a012e31..642a630 100644 --- a/release-gate/impact.test.mjs +++ b/release-gate/impact.test.mjs @@ -17,6 +17,17 @@ test('docs-only changes use the compact core gate', async () => { assert.equal(selection.unmapped_paths.length, 0); }); +test('H5 shell index.html maps to the UI domain', async () => { + const catalog = await loadScenarioCatalog(); + const selection = selectImpactScenarios({ + catalog, + changedPaths: ['index.html'], + }); + assert.equal(selection.strategy, 'impact'); + assert.deepEqual(selection.impact_groups, ['UI']); + assert.equal(selection.unmapped_paths.length, 0); +}); + test('domain changes select the domain and dependency closure', async () => { const catalog = await loadScenarioCatalog(); const selection = selectImpactScenarios({