import { test, expect } from '@playwright/test' import { resetDb } from './helpers/api' /** * Scénarios /parametres : forms account + organization + signature. * * Chaque form est isolé (son propre Save button). On valide la * persistence après reload page — pas juste l'UI optimiste. */ async function signupAndOnboard(page: import('@playwright/test').Page) { const email = `set+${Date.now()}@rubis.test` await page.goto('/signup') await page.getByLabel(/Prénom \/ Nom/i).fill('Settings Test') await page.getByLabel(/Email professionnel/i).fill(email) await page.getByLabel(/Mot de passe/i).fill('motdepasse-fort-123') await page.getByRole('button', { name: /créer mon compte/i }).click() await page.waitForURL(/\/onboarding\/compte/, { timeout: 10_000 }) await page.getByRole('button', { name: /continuer/i }).click() await page.waitForURL(/\/onboarding\/entreprise/) await page.getByLabel(/nom de l'entreprise/i).fill('Atelier Settings') await page.getByRole('button', { name: /continuer/i }).click() await page.waitForURL(/\/onboarding\/signature/) await page.getByRole('button', { name: /terminer/i }).click() await page.waitForURL('/', { timeout: 10_000 }) } test.describe('Settings', () => { test.beforeEach(async () => { await resetDb() }) test('page /parametres affiche les sections principales', async ({ page }) => { await signupAndOnboard(page) await page.goto('/parametres') await expect(page.getByRole('heading', { name: /paramètres/i })).toBeVisible() // Les sections AccountForm, OrganizationForm, SignatureForm sont // toutes visibles (rendues par /parametres). Le scroll est long mais // tous les labels sont dans le DOM dès le mount. await expect(page.getByText(/^compte$/i).first()).toBeVisible() await expect(page.getByText(/^entreprise$/i).first()).toBeVisible() await expect(page.getByText(/signature email/i).first()).toBeVisible() }) test('modifier "Prénom et nom" → toast + persistence après reload', async ({ page, }) => { await signupAndOnboard(page) await page.goto('/parametres') const fullNameInput = page.getByLabel(/^Prénom et nom$/i) await expect(fullNameInput).toBeVisible({ timeout: 5_000 }) // L'initial du onboarding était "Settings Test" await expect(fullNameInput).toHaveValue('Settings Test') await fullNameInput.fill('Pierre Modifié') // Le bouton passe de "Aucune modification" à "Enregistrer" const saveButton = page.getByRole('button', { name: /^enregistrer$/i }).first() await saveButton.click() // Confirmation : le bouton revient à "Aucune modification" après save await expect( page.getByRole('button', { name: /aucune modification/i }).first(), ).toBeVisible({ timeout: 5_000 }) // Reload : la valeur persiste await page.reload() await expect(page.getByLabel(/^Prénom et nom$/i)).toHaveValue('Pierre Modifié') }) })