// FE-SHARED-PWCHECK-001 to FE-SHARED-PWCHECK-004 import { describe, expect, it } from 'vitest' import { render, screen } from '../../../tests/helpers/render' import PasswordChecklist from './PasswordChecklist' import { passwordErrorKey } from '../../utils/passwordError' describe('PasswordChecklist (#1200)', () => { it('FE-SHARED-PWCHECK-001: stays out of the way until something is typed', () => { const { container } = render() expect(container).toBeEmptyDOMElement() }) it('FE-SHARED-PWCHECK-002: ticks off each rule the password meets', () => { render() const list = screen.getByRole('list', { name: 'Password requirements' }) const met = Array.from(list.querySelectorAll('li[data-met]')).map(li => li.textContent) expect(met).toEqual(['At least 8 characters', 'A lowercase letter', 'A number']) expect(list.querySelectorAll('li')).toHaveLength(5) }) it('FE-SHARED-PWCHECK-003: the always-light sign-in card keeps fixed colours', () => { render() const upper = screen.getByText('An uppercase letter').closest('li') as HTMLElement expect(upper.getAttribute('data-met')).toBe('true') expect(upper.style.background).not.toBe('') }) }) describe('passwordErrorKey (#1200)', () => { it('FE-SHARED-PWCHECK-004: names the problem the server would answer with, or nothing', () => { expect(passwordErrorKey('Ab1!')).toBe('settings.passwordTooShort') expect(passwordErrorKey('zzzzzzzzzz')).toBe('settings.passwordRepetitive') expect(passwordErrorKey('Password')).toBe('settings.passwordCommon') expect(passwordErrorKey('longenough1')).toBe('settings.passwordWeak') expect(passwordErrorKey('Longenough1!')).toBeNull() }) })