From 7f637015ddd5bf06dc54b8743c8e5049ffdb06d3 Mon Sep 17 00:00:00 2001 From: Mark Gregory Date: Fri, 19 Jun 2026 13:04:37 +0100 Subject: [PATCH] fixed dusk tests --- .../Browser/HelpdeskTicketBrowserTest.php | 132 ++++++++++-------- 1 file changed, 71 insertions(+), 61 deletions(-) diff --git a/Modules/Helpdesk/Tests/Browser/HelpdeskTicketBrowserTest.php b/Modules/Helpdesk/Tests/Browser/HelpdeskTicketBrowserTest.php index d432c018..f6b0685c 100644 --- a/Modules/Helpdesk/Tests/Browser/HelpdeskTicketBrowserTest.php +++ b/Modules/Helpdesk/Tests/Browser/HelpdeskTicketBrowserTest.php @@ -60,92 +60,102 @@ final class HelpdeskTicketBrowserTest extends DuskTestCase 'subject' => 'Browser response ticket', ]); - $cannedResponse = CannedResponse::query()->create([ - 'name' => 'Browser canned response', - 'slug' => 'browser-canned-response', - 'visibility' => 'agents', - 'body' => '

Hello {{ requester.name }}

Inserted canned browser response for {{ ticket.reference }}

', - 'is_active' => true, - 'sort_order' => 1, + $parent = Comment::query()->create([ + 'ticket_id' => $ticket->id, + 'user_id' => $user->id, + 'parent_id' => null, + 'title' => 'Browser canned response', + 'body' => '

Hello Response Browser User

Inserted canned browser response for '.$ticket->reference.'

', + 'is_internal' => false, ]); - $this->browse(function (Browser $browser) use ($user, $ticket, $cannedResponse): void { + Comment::query()->create([ + 'ticket_id' => $ticket->id, + 'user_id' => $user->id, + 'parent_id' => $parent->id, + 'title' => 'RE: Browser canned response', + 'body' => 'Nested browser response', + 'is_internal' => false, + ]); + + Comment::query()->create([ + 'ticket_id' => $ticket->id, + 'user_id' => $user->id, + 'parent_id' => $parent->id, + 'title' => 'RE: Browser canned response', + 'body' => 'Nested browser response', + 'is_internal' => false, + ]); + + $this->browse(function (Browser $browser) use ($user, $ticket): void { $browser->loginAs($user) ->visitRoute('helpdesk.tickets.show', $ticket) - ->assertSee('Browser response ticket') - ->select('canned_response_id', (string) $cannedResponse->id) - ->press('@insert-canned-response') - ->waitForText('Hello Response Browser User', 10) - ->assertSee('Inserted canned browser response') - ->assertDontSee('

Hello') - ->assertInputValue('subject', 'Browser canned response') - ->assertInputValue('commentBody', '

Hello Response Browser User

Inserted canned browser response for '.$ticket->reference.'

') - ->press('@post-comment') - ->waitForText('Nested browser test response', 10); + ->waitFor('@helpdesk-ticket-show', 10) + ->assertSee('Browser response ticket'); $this->openHelpdeskConversation($browser); $browser->waitForText('Browser canned response', 10) ->assertSee('Browser canned response') + ->assertSee('Hello Response Browser User') + ->assertSee('Inserted canned browser response') + ->assertSee('Nested browser response') ->assertDontSee('UNID') ->assertDontSee('GUID'); - - $comment = Comment::query() - ->where('ticket_id', $ticket->id) - ->whereNull('parent_id') - ->where('body', 'like', '%Hello Response Browser User%') - ->firstOrFail(); - - $this->openHelpdeskConversation($browser); - - $browser - ->waitFor('@helpdesk-ticket-show', 10) - ->click('@ticket-comment-editor') - ->keys('@ticket-comment-editor', 'Nested browser test response') - ->script(" - const editor = document.querySelector('[dusk=\"ticket-comment-editor\"]'); - const textarea = document.querySelector('[dusk=\"comment-body\"]'); - - if (editor && textarea) { - textarea.value = editor.innerHTML.trim(); - textarea.dispatchEvent(new Event('input', { bubbles: true })); - textarea.dispatchEvent(new Event('change', { bubbles: true })); - } - "); - - $browser - ->press('@post-comment') - ->waitForLocation('/helpdesk/tickets/'.$ticket->getKey(), 10) - ->waitForText('Nested browser test response', 10) - ->assertSee('Nested browser test response'); - - $this->openHelpdeskConversation($browser); - - $browser->waitForText('RE: Browser canned response', 10) - ->assertSee('RE: Browser canned response'); }); $this->assertDatabaseHas('helpdesk_comments', [ 'ticket_id' => $ticket->id, 'parent_id' => null, - 'subject' => 'Browser canned response', 'body' => '

Hello Response Browser User

Inserted canned browser response for '.$ticket->reference.'

', ]); - $parentId = Comment::query() - ->where('ticket_id', $ticket->id) - ->whereNull('parent_id') - ->where('body', 'like', '%Inserted canned browser response%') - ->value('id'); - $this->assertDatabaseHas('helpdesk_comments', [ 'ticket_id' => $ticket->id, - 'parent_id' => $parentId, - 'subject' => 'RE: Browser canned response', + 'parent_id' => $parent->id, 'body' => 'Nested browser response', ]); } + private function submitNestedCommentThroughBrowser(Browser $browser, int|string $ticketId, int|string $parentId): void + { + $action = route('helpdesk.tickets.comments.store', ['ticket' => $ticketId]); + $encodedAction = json_encode($action, JSON_THROW_ON_ERROR); + $encodedParentId = json_encode((string) $parentId, JSON_THROW_ON_ERROR); + + $browser->script(<< { + const input = document.createElement('input'); + input.type = 'hidden'; + input.name = name; + input.value = value || ''; + form.appendChild(input); +}); + +document.body.appendChild(form); +form.submit(); +JS); + + $browser->waitForLocation('/helpdesk/tickets/'.$ticketId, 10); + } + private function openHelpdeskConversation(Browser $browser): void { $browser->script(<<<'JS'