in('Feature', 'Unit'); uses(BrowserTestCase::class, RefreshDatabase::class)->in('Browser'); // Livewire round-trips can be slower than the default 5s auto-wait budget. pest()->browser()->timeout(10000); /** * Create a planner with a known password for browser logins. */ function createPlanner(?string $email = null): Planner { return Planner::factory()->create([ 'email' => $email ?? fake()->unique()->safeEmail(), 'password' => Hash::make('password'), ]); } /** * Log in as the given planner and navigate to the target page. * * @return \Pest\Browser\Api\Webpage */ function loginAs(Planner $planner, string $page = '/dashboard') { return visit('/login') ->type('input[id="email"]', $planner->email) ->type('input[id="password"]', 'password') ->press('Sign In') ->assertPathIs('/dashboard') ->navigate($page); } /** * @return \Pest\Browser\Api\Webpage */ function loginAndGoToDishes() { return loginAs(createPlanner(), '/dishes'); } /** * @return \Pest\Browser\Api\Webpage */ function loginAndGoToUsers() { return loginAs(createPlanner(), '/users'); } /** * @return \Pest\Browser\Api\Webpage */ function loginAndGoToSchedule() { return loginAs(createPlanner(), '/schedule'); }