teqo/scripts/lib/e2e-affected-manifest.mjs

175 lines
5.6 KiB
JavaScript

/**
* e2e manifest (OPS5): source path prefix → Playwright specs exercising it.
* e2e specs never import app code, so this curated table is the only source
* of truth. Granularity is the DOMAIN prefix on purpose — finer grains rot.
* Spec names exist as tests/e2e/<name>.e2e.spec.ts (pinned by unit test).
* Prefixes are repo-relative POSIX paths; matching is startsWith.
*/
const CAMPAIGN_APP = 'src/app/(campaign)/campanha/(app)'
export const E2E_AFFECTED_MANIFEST = [
{
prefixes: ['src/app/(payload)'],
specs: ['admin'],
},
{
prefixes: ['src/app/(frontend)'],
specs: ['frontend'],
},
{
prefixes: ['src/app/(campaign)/campanha/login', 'src/utilities/campaignAuth'],
specs: ['campaignAuth'],
},
{
prefixes: ['src/app/(campaign)/campanha/webauthn', 'src/utilities/webauthn'],
specs: ['campaignWebAuthn'],
},
{
prefixes: [
`${CAMPAIGN_APP}/municipios`,
`${CAMPAIGN_APP}/municipio`,
'src/components/campaign/municipality',
'src/components/campaign/map',
'src/components/campaign/shared/CampaignListOmnibox',
'src/lib/campaignListOmnibox',
'src/lib/campaignMunicipality',
'src/utilities/municipality',
],
specs: [
'campaignMunicipalities',
'campaignZoneMap',
'campaignNearestMunicipality',
'campaignSavedFilters',
'campaignColumnPicker',
],
},
{
prefixes: [
`${CAMPAIGN_APP}/agenda`,
`${CAMPAIGN_APP}/atividades`,
'src/components/campaign/activity',
'src/utilities/activity',
'src/utilities/activityOmnibox',
'src/lib/activityQuickActions',
],
specs: ['campaignActivity'],
},
{
prefixes: [
`${CAMPAIGN_APP}/liderancas`,
'src/components/campaign/leadership',
'src/utilities/leadership',
],
specs: ['campaignLeaderships'],
},
{
prefixes: [
`${CAMPAIGN_APP}/territorios`,
'src/components/campaign/tour',
'src/utilities/territory',
// OPS35+ — the network-column rungs live in this file; a rung regression
// must wake the CSS-visibility browser pin, not only the municipios specs.
'src/components/campaign/municipality/TerritoryListColumns',
],
specs: ['campaignTerritoriesHttp', 'campaignTerritoriesColumns'],
},
{
prefixes: [`${CAMPAIGN_APP}/conceitos`],
specs: ['campaignConcepts'],
},
{
prefixes: [
`${CAMPAIGN_APP}/page.tsx`,
`${CAMPAIGN_APP}/home-search`,
'src/components/campaign/dashboard',
'src/utilities/homeSearch',
'src/utilities/campaignDashboardData',
'src/lib/campaignHomeSearchHits',
'src/lib/homeSearchShare',
'src/lib/homeSearchExcludeCurrentEntity',
'src/lib/homeSearchNearestMunicipalityMerge',
'src/lib/homeSearchSuggest',
'src/lib/homeSearchUi',
],
// Home search suggest/exclude is exercised on municipality detail (B109)
// as well as the home action suite.
specs: ['campaignHomeActions', 'campaignMunicipalities'],
},
{
prefixes: [
'src/components/campaign/shell',
'src/components/ui/Drawer',
`${CAMPAIGN_APP}/layout.tsx`,
'src/utilities/campaignPwa',
'src/lib/campaignQuickAction',
'src/lib/campaignReferenceQuickActions',
'src/lib/campaignPaths.ts',
],
specs: ['campaign-pwa', 'campaignWizardChrome', 'campaignBottomNav', 'campaignMunicipalities'],
},
// Sollinha AI surfaces (B162+): the shell prefix above wakes the shell
// smoke, but the chat domain needs its own specs — the session/panel
// behavior lives in these files (OPS22 surfaced the gap).
{
prefixes: [
'src/components/campaign/shell/ai',
'src/lib/sollinhaChatSession',
`${CAMPAIGN_APP}/api/ai-chat`,
],
specs: [
'campaignSollinhaContext',
'campaignAiChatResize',
'campaignAiLinks',
'campaignAiChatOpeningChips',
'campaignSollinhaWidth',
],
},
{
prefixes: [
`${CAMPAIGN_APP}/pessoas`,
'src/components/campaign/people',
'src/utilities/people',
'src/utilities/campaignSavedFilterStore',
],
specs: ['campaignPeople'],
},
// Domains without a dedicated e2e family still wake campaign home smoke so
// the affected classifier cannot return mode=none on an unmapped domain dir.
{
prefixes: [
'src/components/campaign/advisor',
'src/components/campaign/demand',
'src/components/campaign/invite',
'src/components/campaign/organization',
'src/components/campaign/stateDeputy',
'src/components/campaign/suggestion',
'src/components/campaign/supporter',
'src/components/campaign/votePledge',
'src/components/campaign/auth',
'src/lib/searchOnlyListOmnibox',
'src/utilities/advisor',
'src/utilities/advisorData',
'src/utilities/campaignDemandData',
'src/utilities/demand',
'src/utilities/organization',
'src/utilities/organizationData',
'src/utilities/stateDeputyOmnibox',
'src/utilities/supporter/supporterOmnibox',
`${CAMPAIGN_APP}/acoes`,
'src/components/campaign/shared/WizardMunicipality',
'src/components/campaign/shared/useCampaignListFilterNavigation',
'src/components/campaign/shared/useNearestMunicipalitySlug',
'src/lib/wizardMunicipalitySuggestMerge',
`${CAMPAIGN_APP}/apoiadores`,
`${CAMPAIGN_APP}/assessores`,
`${CAMPAIGN_APP}/atualizacoes`,
`${CAMPAIGN_APP}/contatos`,
`${CAMPAIGN_APP}/demandas`,
`${CAMPAIGN_APP}/dobradinhas`,
`${CAMPAIGN_APP}/organizacoes`,
`${CAMPAIGN_APP}/perfil`,
`${CAMPAIGN_APP}/quadro`,
],
specs: ['campaignHomeActions'],
},
]