toBe('support') ->and($lane['parallelMode'])->toBe('forbidden') ->and($lane['artifacts'])->toContain('profile-top', 'junit-xml', 'summary', 'budget-report') ->and($command)->toContain('--profile') ->and($command)->not->toContain('--parallel') ->and($command)->toContain('--configuration='.$configurationPath) ->and($configurationContents)->toContain('tests/Feature/Filament/PolicyResourceAdminSearchParityTest.php') ->and($configurationContents)->not->toContain('tests/Browser/Spec190BaselineCompareMatrixSmokeTest.php'); }); it('builds top 10 attribution-rich profiling reports for mixed workflow and governance files', function (): void { $durationsByFile = [ 'tests/Feature/Baselines/BaselineCompareMatrixCompareAllActionTest.php' => 22.4, 'tests/Feature/Baselines/BaselineCompareMatrixBuilderTest.php' => 20.1, 'tests/Feature/Rbac/OnboardingWizardUiEnforcementTest.php' => 18.5, 'tests/Feature/Guards/ActionSurfaceContractTest.php' => 17.3, 'tests/Feature/Filament/PolicyResourceAdminSearchParityTest.php' => 16.2, 'tests/Feature/Filament/PolicyVersionAdminSearchParityTest.php' => 15.1, 'tests/Feature/Rbac/BackupItemsRelationManagerUiEnforcementTest.php' => 13.7, 'tests/Feature/Rbac/WorkspaceMembershipsRelationManagerUiEnforcementTest.php' => 12.8, 'tests/Feature/Filament/TenantReviewHeaderDisciplineTest.php' => 11.4, 'tests/Feature/Filament/BackupSetAdminTenantParityTest.php' => 9.6, ]; $slowestEntries = collect($durationsByFile) ->map(static fn (float $seconds, string $file): array => [ 'label' => $file.'::synthetic', 'subject' => $file.'::synthetic', 'filePath' => $file, 'durationSeconds' => $seconds, 'wallClockSeconds' => $seconds, 'laneId' => 'profiling', ]) ->values() ->all(); $report = TestLaneReport::buildReport( laneId: 'profiling', wallClockSeconds: 181.7, slowestEntries: $slowestEntries, durationsByFile: $durationsByFile, ); expect($report['slowestEntries'])->toHaveCount(10) ->and($report['slowestEntries'][0]['wallClockSeconds'])->toBeGreaterThanOrEqual($report['slowestEntries'][1]['wallClockSeconds']) ->and(collect($report['classificationAttribution'])->pluck('classificationId')->all()) ->toContain('ui-light', 'ui-workflow', 'surface-guard', 'discovery-heavy') ->and(collect($report['familyAttribution'])->pluck('familyId')->all()) ->toContain('baseline-compare-matrix-workflow', 'action-surface-contract', 'backup-set-admin-tenant-parity'); });