Authentication
Valid login
Demo credentials happy path that lands on the dashboard with a personalized welcome.
User story
As a returning user, I want to sign in with my credentials so that I can resume my work on the post-login dashboard.
Acceptance criteria
- Email + password fields accept valid input
- Submit fires a single auth call (no double clicks)
- Successful response redirects to /dashboard within 2s
- Welcome row shows the user's first name
Manual test steps
- 1.Open /login
- 2.Click 'Use demo account' or fill demo@hakdogan.com / Password123!
- 3.Click 'Sign in'
- 4.Wait for /dashboard
Expected result
Dashboard renders with the welcome heading and the auth-aware nav exposes Wallet + Settings tabs.
Possible bug risks
- Submit button fires twice on slow networks → duplicate sessions
- Password autofill races focus, breaking field-level validation
- Welcome name leaks the email when first name is empty
Reference Playwright spec
valid-login.spec.ts
ts12345678910
import { test, expect } from '@playwright/test';
test('valid login lands on dashboard @smoke', async ({ page }) => {
await page.goto('https://lab.hakdogan.com/login');
await page.getByRole('button', { name: /use demo account/i }).click();
await page.getByRole('button', { name: /sign in/i }).click();
await expect(page).toHaveURL(/\/dashboard$/);
await expect(page.getByRole('heading', { name: /welcome, hasan/i })).toBeVisible();
});