import { test, expect } from '@playwright/test';
import { BASE_URL, USER, loginAs } from '../helpers';

test.describe('Login', () => {

    test.beforeEach(async ({ page }) => {
        await page.goto(`${BASE_URL}/login`);
    });

    test('login page loads with required fields', async ({ page }) => {
        await expect(page).toHaveTitle(/Sign In/i);
        await expect(page.locator('[data-testid="login-form"]')).toBeVisible();
        await expect(page.locator('[data-testid="input-mobile"]')).toBeVisible();
        await expect(page.locator('[data-testid="input-password"]')).toBeVisible();
        await expect(page.locator('[data-testid="btn-login"]')).toBeVisible();
        await expect(page.locator('[data-testid="checkbox-remember-me"]')).toBeVisible();
    });

    test('invalid credentials show error', async ({ page }) => {
        await page.fill('[data-testid="input-mobile"]',   '+10000000099');
        await page.fill('[data-testid="input-password"]', 'WrongPassword1!');
        await page.click('[data-testid="btn-login"]');

        await expect(page.locator('[data-testid="login-error"]')).toBeVisible();
        await expect(page).toHaveURL(`${BASE_URL}/login`);
    });

    test('valid credentials redirect to home', async ({ page }) => {
        await loginAs(page, USER.mobile, USER.password);
        await expect(page).toHaveURL(`${BASE_URL}/`);
    });

    test('register link navigates to registration page', async ({ page }) => {
        await page.click('[data-testid="link-register"]');
        await expect(page).toHaveURL(`${BASE_URL}/register`);
    });

});
