import { expect, test } from '@playwright/test'; // Walking-skeleton happy path (S-08d + S-09): a zorgprofessional logs in via mock DigiD and submits a // registration through the self-service portal → BFF → domain; the projection is updated via NRC → the // event-subscriber, and the entry becomes publicly visible in the openbaar register portal. test('DigiD login → submit → confirmation → public visibility', async ({ page }) => { // Visiting the guarded page redirects to the Keycloak (mock DigiD) login. await page.goto('/'); // Keycloak's default login form (stable ids across themes). await page.locator('#username').fill('jan-burger'); await page.locator('#password').fill('test123'); await page.locator('#kc-login').click(); // Back on the portal, authenticated. await expect(page.getByRole('heading', { name: /Zelfservice/i })).toBeVisible(); await page.getByRole('button', { name: /indienen/i }).click(); // The BFF accepted it and the page shows the confirmation. await expect(page.getByText(/ontvangen/i)).toBeVisible(); // The openbaar register (anonymous, its own origin) shows the submitted entry once the projection // catches up. The projection updates asynchronously (NRC → event-subscriber), and the register loads // on open, so reload until a submitted (INGEDIEND) row appears. await page.goto('http://openbaar/'); await expect(page.getByRole('heading', { name: /Openbaar BIG-register/i })).toBeVisible(); await expect .poll(async () => { await page.reload(); return page.getByRole('cell', { name: 'INGEDIEND' }).count(); }, { timeout: 30_000, intervals: [1_000, 2_000, 3_000, 5_000] }) .toBeGreaterThan(0); });