instance(); $instance->cacheInteractsWithHeaderActions(); foreach ($instance->getCachedHeaderActions() as $action) { if ($action instanceof Action && $action->getName() === $name) { return $action; } } return null; } it('shows sync in header and empty state when policies table is empty', function (): void { [$user, $tenant] = createUserWithTenant(role: 'owner'); $this->actingAs($user); $tenant->makeCurrent(); Filament::setTenant($tenant, true); $component = Livewire::test(ListPolicies::class) ->assertTableEmptyStateActionsExistInOrder(['sync']); $headerSync = getPolicySyncHeaderAction($component, 'sync'); expect($headerSync)->not->toBeNull(); expect($headerSync?->isVisible())->toBeTrue(); }); it('shows sync only in header when policies table is not empty', function (): void { [$user, $tenant] = createUserWithTenant(role: 'owner'); $this->actingAs($user); $tenant->makeCurrent(); Filament::setTenant($tenant, true); Policy::factory()->create([ 'tenant_id' => (int) $tenant->getKey(), 'ignored_at' => null, ]); $component = Livewire::test(ListPolicies::class); $headerSync = getPolicySyncHeaderAction($component, 'sync'); expect($headerSync)->not->toBeNull(); expect($headerSync?->isVisible())->toBeTrue(); });