Skip to content
test-infrastructure logo

test-infrastructure

Core test infrastructure patterns for monorepo Vitest setup including global configuration, mocking patterns, and test standards

elevanaltd/HestAI-MCP0installs0stars

SKILL.md

Full skill instructions

===TEST_INFRASTRUCTURE=== META: TYPE::SKILL VERSION::1.0 STATUS::ACTIVE COMPRESSION_TIER::AGGRESSIVE DOMAIN::ATHENA[quality]⊕HEPHAESTUS[craftsmanship]

§1::PRIMARY_SOURCE_MANDATORY_FIRST

SOURCE::.hestai/​state/​context/​test-context/​RULES.md PRINCIPLE::"POC-proven pattern post-it note - ALWAYS consult BEFORE infrastructure decisions"

CONTAINS::[ file_organization[co-located_tests], test_types[unit_vs_integration], TDD_discipline[RED->GREEN->REFACTOR], vitest_configuration, browser_api_polyfills, test_cleanup_patterns, coverage_targets[diagnostic≠blocking], TRACED_protocol ]

§2::DETAILED_DOCUMENTATION

TEST_STANDARDS::.hestai/​state/​context/​test-context/​STANDARDS.md->[file_naming[src/​X.test.ts], coverage_thresholds[70%_min+80%_aspirational+90%_critical], test_categorization[unit/​integration/​e2e], violation_detection]

MOCKING_PATTERNS::.hestai/​state/​context/​test-context/​MOCKING-PATTERNS.md->[vitest_shared_config, testing_library_setup, supabase_client_mocking[unit], shared_utilities, mock_factories]

§3::POC_REFERENCE_WHEN_NEEDED

POC_INFRASTRUCTURE::/​Volumes/​HestAI-Projects/​eav-ops/​eav-apps/​scripts-web/​src/​test/ FILES::[ setup.ts::"Global Vitest setup (BroadcastChannel polyfill, conditional mocks, cleanup)", factories.ts::"Test data factories" ]

§4::CORE_PATTERNS_POC_PROVEN

PATTERN_1::BROWSER_API_POLYFILLS::[ STUB::BroadcastChannel_for_supabase_auth, BECAUSE::"Node.js BroadcastChannel incompatible with Supabase Auth MessageEvent", IMPLEMENTATION::custom_EventTarget_stub_in_setup.ts, EVIDENCE::POC_src/​test/​setup.ts:41-71 ]

PATTERN_2::REALTIME_CLEANUP::[ PATTERN::afterAll[disconnect_realtime+removeAllChannels], BECAUSE::"Prevents CI hangs from orphaned WebSocket connections", CODE::"afterAll(async()=>{if(isIntegrationTest){await testSupabase.realtime.disconnect(); testSupabase.removeAllChannels()}})", EVIDENCE::POC_src/​test/​setup.ts:212-222 ]

PATTERN_3::CONDITIONAL_MOCK_SCOPE::[ FLAG::VITEST_INTEGRATION=true[real_supabase] VERSUS unset[mocked], BECAUSE::"Unit tests (mocked, fast) vs Integration tests (real DB, RLS validation)", CODE::"const isIntegrationTest=process.env.VITEST_INTEGRATION==='true'; if(!isIntegrationTest){vi.mock('@workspace/​shared/​client',...)}", EVIDENCE::POC_src/​test/​setup.ts:94-111 ]

§5::DIRECTORY_STRUCTURE_THREE_TIER

TIER_3::VITEST_TEST_INFRASTRUCTURE::[ packages/​shared/​src/​test/::[ setup.ts::"Global Vitest setup (imported by vitest.config)", factories.ts::"Test data factories", vitest.config.base.ts::"Shared Vitest config" ], apps/​*/​src/​test/​*-factories.ts::"App-specific test data", PURPOSE::vitest_infrastructure_utilities[NOT_test_files] ]

TIER_4::COLOCATED_TEST_FILES::[ PATTERN::src/​components/​Header.tsx+Header.test.tsx, PATTERN::src/​core/​state/​useScriptMutations.tsx+useScriptMutations.test.tsx, PURPOSE::individual_test_files_next_to_source ]

§6::VITEST_CONFIGURATION

SHARED_BASE::packages/​shared/​src/​test/​vitest.config.base.ts::[ test::{globals:true, environment:jsdom, setupFiles:['./​src/​test/​setup.ts']}, coverage::{provider:v8, reporter:[text,html], exclude:[**/​*.config.ts, */​.d.ts, /​test/​]} ]

APP_CONFIG::apps/​*/​vitest.config.ts->mergeConfig(baseConfig,{test:{app_specific_overrides}})

§7::COVERAGE_PHILOSOPHY_POC_PROVEN

PRINCIPLE::"Coverage is DIAGNOSTIC METRIC, not blocking gate"

RATIONALE::[ coverage_validates_tests_exist[NOT_tests_good], can_achieve_100%_with_bad_assertions, encourages_coverage_theater[tests≠behavior_validation] ]

TARGETS::[ 70%::minimum[aspirational≠blocking], 80%+::recommended[project_health_indicator], 90%+::critical_paths[auth+mutations+RLS]->enforced_via_code_review ]

SOURCE::.hestai/​state/​context/​test-context/​RULES.md

§8::TURBOREPO_CONFIGURATION

PIPELINE::[ typecheck::{dependsOn:[^typecheck]}, lint::{dependsOn:[^lint,typecheck]}, test::{dependsOn:[^test,lint], outputs:[coverage/​**]}, build::{dependsOn:[^build,test], outputs:[dist/​**]} ]

QUALITY_GATE_SEQUENCE::typecheck->lint->test->build[ALL_BLOCKING]

§9::AGENT_CONSULTATION

CONSULT::[ test-methodology-guardian::"TDD workflow alignment, RED->GREEN->REFACTOR compliance", technical-architect::"Test harness architecture decisions, shared utilities structure", universal-test-engineer::"Actual test writing (delegate, don't implement)" ]

§10::KNOWLEDGE_BASE_REFERENCES

PRIMARY::.hestai/​state/​context/​test-context/​RULES.md[POC_proven_patterns]->CONSULT_FIRST

DOCUMENTATION::[ .hestai/​state/​context/​test-context/​STANDARDS.md, .hestai/​state/​context/​test-context/​MOCKING-PATTERNS.md ]

POC_REFERENCE::/​Volumes/​HestAI-Projects/​eav-ops/​eav-apps/​scripts-web/​src/​test/

NORTH_STAR::.hestai/​north-star/​000-UNIVERSAL-EAV_SYSTEM-D1-NORTH-STAR.md[I7:TDD_RED_discipline, I8:production_grade_quality]

§11::WISDOM

CORE_RULE::"POC-proven patterns are post-it notes - consult BEFORE infrastructure decisions" INTEGRATION::[test-ci-pipeline, test-coverage, supabase-test-harness] RELATED_SKILLS::[testing, test-coverage]

===END===