From 0174ae25db8a4db8644f77efc41addbc0091e18e Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 1 Aug 2026 17:59:30 +0000 Subject: [PATCH] =?UTF-8?q?B102=20=E2=80=94=20pin=20layout=20TooltipProvid?= =?UTF-8?q?er=20wrap=20+=20mark=20plan=20done?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Conventions guard prevents regressing provider under CampaignAppScrollChrome. Co-authored-by: Francisco Solla --- docs/plans/crash-busca-bottom-drawer.md | 6 +++--- tests/unit/codebaseConventions.unit.spec.ts | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) 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>/, + ) + }) +})