assertIsString($view); $this->assertStringContainsString('wire:model="body"', $view); $this->assertStringNotContainsString('wire:model.live="body"', $view); $this->assertStringContainsString('submit', $view); $this->assertTrue( str_contains($view, 'Livewire') || str_contains($view, '$wire') || str_contains($view, '@this') || str_contains($view, 'wire:model="body"'), 'Ticket create editor must keep the body field synchronised with Livewire before validation.' ); } /** * Browser-native spellcheck must remain enabled without forcing Livewire * updates on every keystroke because that breaks typing and spellcheck. */ public function test_ticket_create_editor_keeps_spellcheck_without_live_keypress_sync(): void { $component = file_get_contents(base_path('Modules/Helpdesk/Resources/views/components/html-editor.blade.php')); $view = file_get_contents(base_path('Modules/Helpdesk/Resources/views/livewire/ticket-create.blade.php')); $this->assertIsString($component); $this->assertIsString($view); $this->assertStringContainsString('spellcheck="true"', $component); $this->assertStringContainsString('autocorrect="on"', $component); $this->assertStringContainsString('lang="en-GB"', $component); $this->assertStringNotContainsString('x-on:input', $component); $this->assertStringNotContainsString('x-on:keyup', $component); $this->assertStringContainsString('x-on:submit.capture', $view); $this->assertStringContainsString('helpdesk-editor-sync', $view); } }