abort(419)); $this->get('/__test-419') ->assertStatus(419) ->assertSee('Erro 419') ->assertSee('Sessão expirada') ->assertSee('Voltar para a home'); } public function test_429_renders_branded_rate_limited_page(): void { Route::get('/__test-429', fn (): never => abort(429)); $this->get('/__test-429') ->assertStatus(429) ->assertSee('Erro 429') ->assertSee('Muitas solicitações') ->assertSee('Voltar para a home'); } public function test_503_renders_branded_maintenance_page(): void { Route::get('/__test-503', fn (): never => abort(503)); $this->get('/__test-503') ->assertStatus(503) ->assertSee('Erro 503') ->assertSee('Em manutenção') ->assertSee('Voltar para a home'); } public function test_error_pages_never_leak_debug_stack_traces(): void { config(['app.debug' => false]); Route::get('/__test-503', fn (): never => abort(503)); $this->get('/__test-503') ->assertStatus(503) ->assertDontSee('segredo-interno-amare') ->assertDontSee('Exception'); } public function test_all_branded_error_pages_expose_progressive_motion_hooks(): void { foreach ([419, 429, 500, 503] as $status) { Route::get('/__test-motion-'.$status, fn (): never => abort($status)); $this->get('/__test-motion-'.$status) ->assertStatus($status) ->assertSee('data-motion="page-open"', false) ->assertSee('data-motion-beat', false) ->assertSee('data-reveal-group', false) ->assertSee('data-reveal', false); } $this->get('/__missing-motion-page') ->assertNotFound() ->assertSee('data-motion="page-open"', false) ->assertSee('data-motion-beat', false) ->assertSee('data-reveal-group', false) ->assertSee('data-reveal', false); } }