get('/_test/livewire-lifecycle-probe')->status())->toBe(400); }); it('returns 400 for magic-method probing instead of 500', function () { Route::get('/_test/livewire-magic-method-probe', function () { throw new MethodNotFoundException('__call'); }); expect($this->get('/_test/livewire-magic-method-probe')->status())->toBe(400); }); it('does not report Livewire exploit probes to the logs', function () { Log::spy(); Route::get('/_test/livewire-probe-log', function () { throw new DirectlyCallingLifecycleHooksNotAllowedException('dehydrate', 'auth.login'); }); $this->get('/_test/livewire-probe-log')->assertStatus(400); Log::shouldNotHaveReceived('error'); Log::shouldNotHaveReceived('critical'); Log::shouldNotHaveReceived('emergency'); }); it('still surfaces genuine method-not-found bugs', function () { Route::get('/_test/livewire-real-method-not-found', function () { throw new MethodNotFoundException('saveProfile'); }); expect($this->get('/_test/livewire-real-method-not-found')->status())->not->toBe(400); });