import { test, expect } from '@playwright/test' import { E2E_EMAIL, E2E_FIRST_NAME, E2E_PIN } from '../../e2e-constants' test.describe('Parent profile button – permanent parent mode', () => { test.beforeEach(async ({ page }) => { await page.goto('/parent') }) test('Badge – shows 🔒 in permanent parent mode', async ({ page }) => { await expect(page.getByLabel('Persistent parent mode active')).toBeVisible() await expect(page.getByLabel('Persistent parent mode active')).toHaveText('🔒') }) test('Menu – shows user name and email', async ({ page }) => { await page.getByRole('button', { name: 'Parent menu' }).click() await expect(page.getByText(E2E_FIRST_NAME, { exact: true })).toBeVisible() await expect(page.getByText(E2E_EMAIL, { exact: true })).toBeVisible() }) test('Menu – Profile option navigates to the User Profile page', async ({ page }) => { await page.getByRole('button', { name: 'Parent menu' }).click() await page.getByRole('menuitem', { name: 'Profile' }).click() await expect(page).toHaveURL(/\/parent\/profile/) await expect(page.getByRole('heading', { name: 'User Profile' })).toBeVisible() }) test('Menu – Child Mode exits parent mode', async ({ page }) => { await page.getByRole('button', { name: 'Parent menu' }).click() await page.getByRole('menuitem', { name: 'Child Mode' }).click() // View-selector navigation buttons disappear after exiting parent mode await expect(page.getByRole('button', { name: 'Children' })).not.toBeVisible() // Profile button changes label to "Parent login" when not in parent mode await expect(page.getByRole('button', { name: 'Parent login' })).toBeVisible() }) test('Menu – Child Mode re-entry without checkbox enters temporary mode', async ({ page }) => { await page.getByRole('button', { name: 'Parent menu' }).click() await page.getByRole('menuitem', { name: 'Child Mode' }).click() // Click profile button to open PIN modal await page.getByRole('button', { name: 'Parent login' }).click() const pinInput = page.getByPlaceholder('4–6 digits') await pinInput.waitFor({ timeout: 5000 }) await pinInput.fill(E2E_PIN) // Do NOT check "Stay in parent mode" await page.getByRole('button', { name: 'OK' }).click() await page.waitForURL(/\/parent(\/|$)/) // No persistent badge — temporary mode await expect(page.getByLabel('Persistent parent mode active')).not.toBeVisible() }) test('Menu – Child Mode re-entry with checkbox enters permanent mode', async ({ page }) => { await page.getByRole('button', { name: 'Parent menu' }).click() await page.getByRole('menuitem', { name: 'Child Mode' }).click() // Click profile button to open PIN modal await page.getByRole('button', { name: 'Parent login' }).click() const pinInput = page.getByPlaceholder('4–6 digits') await pinInput.waitFor({ timeout: 5000 }) await pinInput.fill(E2E_PIN) await page.getByLabel('Stay in parent mode on this device').check() await page.getByRole('button', { name: 'OK' }).click() await page.waitForURL(/\/parent(\/|$)/) // Persistent badge visible — permanent mode await expect(page.getByLabel('Persistent parent mode active')).toBeVisible() }) test('Menu – Sign Out navigates to landing page', async ({ page }) => { await page.getByRole('button', { name: 'Parent menu' }).click() await page.getByRole('menuitem', { name: 'Sign out' }).click() await expect(page).toHaveURL('/') await expect( page.getByRole('navigation').getByRole('button', { name: 'Sign In' }), ).toBeVisible() }) })