browse(function (Browser $browser): void { $browser->visit('/login') ->assertSee('Log in') ->assertPresent('input[name="email"]') ->assertPresent('input[name="password"]') ->assertPresent('[data-test="login-button"]'); }); } public function test_invalid_login_stays_on_login_page(): void { $this->platformAdminUser(); $this->browse(function (Browser $browser): void { $browser->visit('/login') ->type('email', 'platform.admin@example.test') ->type('password', 'wrong-password') ->press('Log in') ->waitForLocation('/login', 10) ->assertPathIs('/login'); }); } public function test_platform_admin_session_reaches_admin_shell_and_can_logout(): void { $admin = $this->platformAdminUser(); $this->seedPlatformDashboardData(); $this->browse(function (Browser $browser) use ($admin): void { $browser->loginAs($admin) ->visit('/admin') ->waitFor('.wms-app-shell', 10) ->assertSee('Platform') ->assertPresent('form[action$="/logout"]') ->script('document.querySelector("form[action$=\\"/logout\\"]").submit();'); $browser->waitForLocation('/', 10); }); } public function test_tenant_user_session_reaches_warehouse_dashboard(): void { $user = $this->tenantUser(); $this->seedWarehouse($user->company); $this->browse(function (Browser $browser) use ($user): void { $browser->loginAs($user) ->visit('/dashboard') ->waitFor('.wms-page-hero', 10) ->assertSee('Main Warehouse'); }); } }