misc updates with tests failing

This commit is contained in:
Mark Gregory
2026-06-29 09:42:00 +01:00
parent 7b40a55b0e
commit eaa8c6ebe3
6 changed files with 132 additions and 183 deletions
@@ -187,34 +187,14 @@ JS);
return (bool) $browser->script(<<<'JS'
const input = document.querySelector('#attachments');
const button = document.querySelector('[dusk="ticket-create-submit"], [data-dusk="ticket-create-submit"]');
const isVisible = (element) => {
if (! element) {
return false;
}
const style = window.getComputedStyle(element);
return style.display !== 'none'
&& style.visibility !== 'hidden'
&& style.opacity !== '0'
&& element.getClientRects().length > 0;
};
const visibleUploadText = Array.from(document.querySelectorAll('div, span'))
.some((element) => {
const text = (element.textContent || '').trim();
return (text.includes('Uploading attachments...') || text === 'Uploading...')
&& isVisible(element);
});
const selected = document.querySelector('[dusk="ticket-create-selected-attachments"], [data-dusk="ticket-create-selected-attachments"]');
return Boolean(input)
&& input.files.length > 0
&& Boolean(selected)
&& Boolean(button)
&& button.disabled === false
&& visibleUploadText === false;
&& button.disabled === false;
JS)[0];
}, 'The attachment upload did not finish before submit.');
}, 'The Livewire temporary attachment upload did not finish before submit.');
}
}
@@ -8,45 +8,39 @@ use Tests\TestCase;
final class TicketCreateAttachmentBrowserSafetyTest extends TestCase
{
public function test_ticket_create_view_does_not_reinject_application_assets_inside_livewire_component(): void
public function test_ticket_create_uses_standard_livewire_temporary_uploads(): void
{
$view = file_get_contents(dirname(__DIR__, 2) . '/Resources/views/livewire/ticket-create.blade.php');
self::assertIsString($view);
self::assertStringNotContainsString("@vite(['resources/css/app.css', 'resources/js/app.js'])", $view);
self::assertStringContainsString('wire:submit.prevent="save"', $view);
}
public function test_ticket_create_attachment_input_is_owned_by_livewire_and_has_a_stable_key(): void
{
$view = file_get_contents(dirname(__DIR__, 2) . '/Resources/views/livewire/ticket-create.blade.php');
self::assertIsString($view);
self::assertStringContainsString('wire:key="ticket-create-attachments-uploader"', $view);
self::assertStringContainsString('type="file"', $view);
self::assertStringContainsString('wire:model="attachments"', $view);
self::assertStringContainsString('multiple', $view);
self::assertStringContainsString('wire:key="ticket-create-attachments-input"', $view);
self::assertStringContainsString('type="file" wire:model="attachments" multiple', $view);
self::assertStringNotContainsString('$wire.uploadMultiple', $view);
self::assertStringNotContainsString("new CustomEvent('livewire-upload-start'", $view);
self::assertStringNotContainsString("new CustomEvent('livewire-upload-finish'", $view);
}
public function test_ticket_create_attachment_script_registers_global_listeners_once(): void
public function test_ticket_create_does_not_mix_existing_ticket_upload_behaviour_into_create_form(): void
{
$view = file_get_contents(dirname(__DIR__, 2) . '/Resources/views/livewire/ticket-create.blade.php');
self::assertIsString($view);
self::assertStringContainsString('window.__helpdeskTicketCreateAttachmentListenersRegistered', $view);
self::assertStringContainsString('window.__helpdeskTicketCreateLivewireClearListenerRegistered', $view);
self::assertStringContainsString("window.dispatchEvent(new CustomEvent('helpdesk-attachments-reset'))", $view);
self::assertStringNotContainsString('@vite([\'resources/css/app.css\', \'resources/js/app.js\'])', $view);
self::assertStringNotContainsString('helpdeskAttachmentDropzone', $view);
self::assertStringNotContainsString('DataTransfer', $view);
self::assertStringNotContainsString('$wire.uploadMultiple', $view);
self::assertStringNotContainsString('input.files =', $view);
self::assertStringNotContainsString('helpdesk-editor-files-pasted', $view);
self::assertStringNotContainsString('x-bind:disabled="helpdeskAttachmentsUploading"', $view);
}
public function test_create_attachment_browser_test_does_not_use_livewire_internal_dom_selectors(): void
public function test_ticket_create_shows_uploaded_temporary_file_names_from_livewire_property(): void
{
$test = file_get_contents(dirname(__DIR__, 1) . '/Browser/HelpdeskCreateTicketAttachmentBrowserTest.php');
$view = file_get_contents(dirname(__DIR__, 2) . '/Resources/views/livewire/ticket-create.blade.php');
self::assertIsString($test);
self::assertStringNotContainsString('closest(', $test);
self::assertStringNotContainsString('Livewire.find', $test);
self::assertStringContainsString("attach('#attachments'", $test);
self::assertIsString($view);
self::assertStringContainsString('@if (count($attachments) > 0)', $view);
self::assertStringContainsString('$attachment->getClientOriginalName()', $view);
self::assertStringContainsString('wire:loading wire:target="attachments"', $view);
}
}