diff --git a/docs/plans/crash-busca-bottom-drawer.md b/docs/plans/crash-busca-bottom-drawer.md index 9195e00f..60942981 100644 --- a/docs/plans/crash-busca-bottom-drawer.md +++ b/docs/plans/crash-busca-bottom-drawer.md @@ -1,8 +1,8 @@ # Crash — busca no bottom drawer (focus / digitação) -Status: em implementação +Status: done Atualizado em: 2026-08-01 -Issue: #129 (file-miss #133) +Issue: #129 (file-miss plan #133 · delivery #135) Priority: P0 Model: cursor-grok-4.5-medium Impeccable: B — `CampaignQuickActionsDrawer` + `CampaignGlobalSearchBody` @@ -76,7 +76,7 @@ Diagnóstico preliminar (código em `main`): ## Questões em aberto -- **Causa raiz exata antes do claim?** **Opções:** A) fechar no `work-issue` com repro primeiro | B) bipartir plan/exec. **Recomendação:** **A** — appetite cabe; hypothese já estreita. _(assumido — fechado no freshness/repro)_ +- _(nenhuma — root cause fechada no repro unit; fix as-built acima)_ ## Abordagem proposta diff --git a/tests/unit/codebaseConventions.unit.spec.ts b/tests/unit/codebaseConventions.unit.spec.ts index 432ccc9a..7789c165 100644 --- a/tests/unit/codebaseConventions.unit.spec.ts +++ b/tests/unit/codebaseConventions.unit.spec.ts @@ -667,3 +667,22 @@ describe('public site metadata global access', () => { expect(offenders, 'import and call resolveSiteMetadata from @/utilities/seo').toEqual([]) }) }) + +describe('campaign TooltipProvider wraps quick-actions chrome (B102)', () => { + // B91/B100 mount the drawer as a sibling of the scrollport inside + // CampaignAppScrollChrome. Nesting TooltipProvider only around {children} + // left focus→suggest priority hits (CampaignHoverTooltip) without a + // provider and crashed the page. + it('lifts TooltipProvider around CampaignAppScrollChrome in the app layout', () => { + const layoutPath = resolve(repoRoot, 'src/app/(campaign)/campanha/(app)/layout.tsx') + expect(existsSync(layoutPath)).toBe(true) + const source = readFileSync(layoutPath, 'utf8') + + expect(source).toMatch( + /]*>\s*\s*<\/TooltipProvider>/, + ) + expect(source).not.toMatch( + /]*>\s*\s*<\/CampaignAppScrollChrome>/, + ) + }) +})