toContain(':wire:key="\'init-script-\'.md5($script[\'filename\'])"') ->not->toContain(':wire:key="$script[\'index\']"'); expect($proxyView) ->toContain('wire:key="proxy-navbar-{{ $fileName }}"') ->not->toContain('wire:key="{{ $fileName }}-{{ $loop->index }}"'); }); it('keeps editable and refreshed list row keys independent of their positions', function () { $applicationDomains = file_get_contents(resource_path('views/livewire/project/application/partials/domain-row.blade.php')); $serviceDomains = file_get_contents(resource_path('views/livewire/project/service/partials/domain-table.blade.php')); expect($applicationDomains) ->not->toContain('wire:key="domain-row-{{ $index }}-') ->toContain('wire:key="domain-row-{{ md5('); expect($serviceDomains) ->not->toContain('-{{ $index }}-') ->toContain('wire:key="svc-domain-{{ $row[\'service_application_id\'] ?? \'x\' }}-{{ md5('); }); it('keys nested Livewire status components rendered inside navigation loops', function () { $sidebar = file_get_contents(resource_path('views/components/application/configuration-sidebar.blade.php')); expect($sidebar) ->toContain(':key="$placement.\'-application-server-status-\'.$application->uuid"'); }); it('keys virtual log rows by stable line identity instead of list position', function () { $view = file_get_contents(resource_path('views/livewire/project/shared/get-logs.blade.php')); $script = file_get_contents(resource_path('js/runtime-logs.js')); expect($view) ->toContain(':key="row.key"') ->not->toContain(':key="row.index"'); expect($script) ->toContain('getItemKey: (index) => filtered[index]?.id ?? index') ->toContain('id: nextId()'); });