toBeGreaterThanOrEqual(2); expect($heading) ->not->toContain('name="play-circle" class="size-3.5 text-warning"') ->not->toContain('name="play-circle" class="size-3.5 text-orange-500'); } }); it('uses full-width split action menus on mobile resource headings', function () { $headings = [ 'application' => file_get_contents(resource_path('views/livewire/project/application/heading.blade.php')), 'database' => file_get_contents(resource_path('views/livewire/project/database/heading.blade.php')), 'service' => file_get_contents(resource_path('views/livewire/project/service/heading.blade.php')), ]; foreach ($headings as $resource => $heading) { expect(mobileActionsAreBeforeDesktopActions($heading, "{$resource}-mobile-actions", "{$resource}-desktop-actions"))->toBeTrue(); expect($heading) ->toContain('
') ->toContain("") ->not->toContain("{$resource}-mobile-section") ->not->toContain('not->toContain('not->toContain('@selected'); expect(mobileActionsMarkup($heading, "{$resource}-mobile-actions")) ->toContain('toContain('listbox-option justify-start! gap-2.5!') ->toContain('role="menuitem"') ->toContain('name="play-circle" class="size-3.5"') ->toContain('name="restart" class="size-3.5') ->toContain('name="stop-circle" class="size-3.5 text-error"'); } expect(mobileActionsMarkup($headings['application'], 'application-mobile-actions')) ->toContain('wire:click="deploy"') ->toContain('wire:click="deploy(true)"') ->toContain('force_deploy_without_cache') ->toContain('Deploy (without cache)') ->toContain("document.getElementById('application-mobile-stop-trigger')?.click()") ->toContain("document.getElementById('application-mobile-restart-trigger')?.click()"); expect($headings['application']) ->toContain('