B102 — pin layout TooltipProvider wrap + mark plan done

Conventions guard prevents regressing provider under CampaignAppScrollChrome.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
This commit is contained in:
Cursor Agent 2026-08-01 17:59:30 +00:00
parent 653f04062b
commit 0174ae25db
No known key found for this signature in database
2 changed files with 22 additions and 3 deletions

View file

@ -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

View file

@ -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(
/<TooltipProvider[^>]*>\s*<CampaignAppScrollChrome[\s\S]*?<\/CampaignAppScrollChrome>\s*<\/TooltipProvider>/,
)
expect(source).not.toMatch(
/<CampaignAppScrollChrome[^>]*>\s*<TooltipProvider[\s\S]*?<\/TooltipProvider>\s*<\/CampaignAppScrollChrome>/,
)
})
})