From f2757c9b1c9dcd31a58439c5ce2463789fc4d101 Mon Sep 17 00:00:00 2001 From: Martin Herrlein Date: Wed, 5 Aug 2026 15:57:10 +0200 Subject: [PATCH] Improve desktop inspector layout --- app/Livewire/Inspector.php | 2 + resources/views/dashboard-page.blade.php | 2 +- resources/views/inspector-page.blade.php | 2 +- resources/views/layouts/app.blade.php | 4 +- resources/views/livewire/inspector.blade.php | 285 +++++++++++-------- resources/views/welcome.blade.php | 4 +- tests/Feature/WebhookInspectorTest.php | 13 + 7 files changed, 181 insertions(+), 131 deletions(-) diff --git a/app/Livewire/Inspector.php b/app/Livewire/Inspector.php index ad1595e..f47506e 100644 --- a/app/Livewire/Inspector.php +++ b/app/Livewire/Inspector.php @@ -40,6 +40,8 @@ class Inspector extends Component public bool $responseSaved = false; + public bool $showEndpointSettings = false; + public function mount(WebhookEndpoint $endpoint): void { Gate::authorize('view', $endpoint); diff --git a/resources/views/dashboard-page.blade.php b/resources/views/dashboard-page.blade.php index e6411f4..4b84063 100644 --- a/resources/views/dashboard-page.blade.php +++ b/resources/views/dashboard-page.blade.php @@ -1,7 +1,7 @@ @extends('layouts.app') @section('content') -
+
@endsection diff --git a/resources/views/inspector-page.blade.php b/resources/views/inspector-page.blade.php index 695cd58..045bffc 100644 --- a/resources/views/inspector-page.blade.php +++ b/resources/views/inspector-page.blade.php @@ -1,7 +1,7 @@ @extends('layouts.app') @section('content') -
+
@endsection diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 9bd8086..0d9a069 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -14,7 +14,7 @@
-
@if (session('status')) -
+
{{ session('status') }}
diff --git a/resources/views/livewire/inspector.blade.php b/resources/views/livewire/inspector.blade.php index a612d5c..a469640 100644 --- a/resources/views/livewire/inspector.blade.php +++ b/resources/views/livewire/inspector.blade.php @@ -1,4 +1,4 @@ -
+
@@ -12,30 +12,36 @@
+ @if ($endpoint->is_public)
@csrf @method('DELETE') - +
@else - + @endif
-
-
-
-
-

Incoming requests

-

New requests are stored immediately and appear here live.

+
+
+
+
+
+

Incoming requests

+

Live request history

+
+ {{ $webhookRequests->total() }} total
-
+
- + - @foreach (['ALL', 'GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'] as $method) @endforeach @@ -44,147 +50,176 @@
@if ($webhookRequests->isEmpty()) -
+

waiting for request...

-

Send a request to the webhook URL below to see it here.

+

Open endpoint settings to find the URL for the next request.

@else -
- - - - - - - - - - - - @foreach ($webhookRequests as $webhookRequest) - - - - - - - - @endforeach - -
MethodURITypeSizeReceived
{{ $webhookRequest->method }}{{ $webhookRequest->request_uri }}{{ $webhookRequest->content_type ?: '—' }}{{ $webhookRequest->body_size }} B{{ $webhookRequest->received_at?->diffForHumans() }}
+
+
+ @foreach ($webhookRequests as $webhookRequest) + + @endforeach +
-
{{ $webhookRequests->links() }}
+
{{ $webhookRequests->links() }}
@endif
- +
- @if ($selectedRequest) -
-
-
-
{{ $selectedRequest->method }}{{ $selectedRequest->id }}
-

{{ $selectedRequest->request_uri }}

-
-
- - -
-
+ @if ($showEndpointSettings) +
+
@endif
diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php index 557802d..1c778d9 100644 --- a/resources/views/welcome.blade.php +++ b/resources/views/welcome.blade.php @@ -4,7 +4,7 @@
-
+
@@ -53,7 +53,7 @@
-
+
@foreach ([['Temporary URLs', 'Start without an account.'], ['Full request context', 'Headers, query and raw body.'], ['Live updates', 'Requests appear as they arrive.']] as [$title, $description])

{{ $title }}

diff --git a/tests/Feature/WebhookInspectorTest.php b/tests/Feature/WebhookInspectorTest.php index 695d805..b2f6e37 100644 --- a/tests/Feature/WebhookInspectorTest.php +++ b/tests/Feature/WebhookInspectorTest.php @@ -115,6 +115,19 @@ class WebhookInspectorTest extends TestCase $this->assertSame('queued', $endpoint->response_body); } + public function test_private_endpoint_settings_are_available_in_a_modal(): void + { + $user = User::factory()->create(); + $endpoint = WebhookEndpoint::factory()->ownedBy($user)->create(); + + Livewire::actingAs($user) + ->test(Inspector::class, ['endpoint' => $endpoint]) + ->set('showEndpointSettings', true) + ->assertSee('Endpoint settings') + ->assertSee('Send requests here') + ->assertSee('Save response'); + } + public function test_request_body_is_escaped_in_the_inspector(): void { $endpoint = WebhookEndpoint::factory()->create();