From 42ddc198261df0a06851d320ef8831dbfaff496f Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Sun, 6 Sep 2026 11:41:46 +0800 Subject: [PATCH] test: deduplicate acceptance coverage gaps --- scripts/admin-test-env-acceptance.mjs | 8 +++++++- .../phase4-overseas-acceptance-entry-contract.test.mjs | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/scripts/admin-test-env-acceptance.mjs b/scripts/admin-test-env-acceptance.mjs index 29ac96ba3..38023a014 100644 --- a/scripts/admin-test-env-acceptance.mjs +++ b/scripts/admin-test-env-acceptance.mjs @@ -714,7 +714,13 @@ export class AcceptanceRun { addCoverageGap(module, scenario, name, reason, category = 'not-implemented', metadata = {}) { const nonBlocking = new Set(['device', 'external-third-party', 'visual']) const blocking = metadata.blocking ?? !nonBlocking.has(category) - this.coverageGaps.push({ module, scenario, name, reason, category, blocking, ...metadata }) + const gap = { module, scenario, name, reason, category, blocking, ...metadata } + const duplicate = this.coverageGaps.some((existing) => existing.module === gap.module + && existing.scenario === gap.scenario && existing.name === gap.name + && existing.reason === gap.reason && existing.category === gap.category + && existing.blocking === gap.blocking) + if (duplicate) return + this.coverageGaps.push(gap) if (blocking) { this.addStep(module, `覆盖阻断:${name}`, null, false, reason, { scenario, deploymentBlocker: true }) diff --git a/scripts/phase4-overseas-acceptance-entry-contract.test.mjs b/scripts/phase4-overseas-acceptance-entry-contract.test.mjs index 923f434ee..7f7355b9b 100644 --- a/scripts/phase4-overseas-acceptance-entry-contract.test.mjs +++ b/scripts/phase4-overseas-acceptance-entry-contract.test.mjs @@ -144,7 +144,10 @@ test('core coverage gaps fail closed while device and external-provider gaps rem const stepCount = run.steps.length run.addCoverageGap('phase3', 'device', 'Android', 'manual device validation', 'device') run.addCoverageGap('phase3', 'provider', 'captcha', 'external captcha', 'external-third-party') + run.addCoverageGap('phase3', 'device', 'Android', 'manual device validation', 'device') + run.addCoverageGap('phase3', 'provider', 'captcha', 'external captcha', 'external-third-party') assert.equal(run.steps.length, stepCount) + assert.equal(run.coverageGaps.length, 3) }) test('PDA entry expands the real phase-three producer chain and builds an FBA/OVERSEAS/second-container matrix', () => {