From 95c5a72294e9eed016711e53364791a84be8627d Mon Sep 17 00:00:00 2001 From: myrmidex Date: Thu, 20 Aug 2026 21:45:28 +0200 Subject: [PATCH] 56 - Add browser test for logout --- tests/Browser/Auth/LogoutTest.php | 31 +++++++++++++++++++++++++++++++ tests/Pest.php | 13 +++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 tests/Browser/Auth/LogoutTest.php diff --git a/tests/Browser/Auth/LogoutTest.php b/tests/Browser/Auth/LogoutTest.php new file mode 100644 index 0000000..32d7a9e --- /dev/null +++ b/tests/Browser/Auth/LogoutTest.php @@ -0,0 +1,31 @@ +assertPathIs('/login') + ->assertSee('Sign In'); +}); + +it('blocks protected routes after logging out', function (string $path) { + $page = loginAs(createPlanner()); + + logout($page) + ->assertPathIs('/login') + ->navigate($path) + ->assertPathIs('/login') + ->assertSee('Sign In'); +})->with(['/dashboard', '/dishes', '/schedule', '/users']); + +it('does not restore an authenticated view via the back button', function () { + $planner = createPlanner(); + + $page = loginAs($planner)->assertSee($planner->name); + + logout($page) + ->assertPathIs('/login') + ->back() + ->assertPathIs('/login') + ->assertDontSee('Logout'); +}); diff --git a/tests/Pest.php b/tests/Pest.php index 7963c18..3a1d216 100644 --- a/tests/Pest.php +++ b/tests/Pest.php @@ -3,6 +3,7 @@ use App\Models\Planner; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Facades\Hash; +use Pest\Browser\Api\AwaitableWebpage; use Pest\Browser\Api\Webpage; use Tests\BrowserTestCase; use Tests\TestCase; @@ -62,3 +63,15 @@ function loginAndGoToSchedule() { return loginAs(createPlanner(), '/schedule'); } + +/** + * Open the account dropdown and submit the logout form. + * + * @return Webpage + */ +function logout(Webpage|AwaitableWebpage $page) +{ + return $page + ->click('button[\@click="open = !open"]') + ->click('.sm\:flex form[action$="/logout"] button[type="submit"]'); +}