S-09: Openbaar Register portal — public lookup (#76)
All checks were successful
CI / lint (push) Successful in 1m9s
CI / build (push) Successful in 53s
CI / unit (push) Successful in 1m4s
CI / frontend (push) Successful in 1m57s
CI / mutation (push) Successful in 5m19s
CI / verify-stack (push) Successful in 6m31s

Anonymous openbaar portal completing the walking skeleton (submit → projection → public visibility).

closes #10
This commit was merged in pull request #76.
This commit is contained in:
2026-07-13 14:35:34 +00:00
parent 7e8c5d7b51
commit bc9831c113
26 changed files with 537 additions and 11 deletions

View File

@@ -1,8 +1,9 @@
import { expect, test } from '@playwright/test';
// Walking-skeleton happy path (S-08d): a zorgprofessional logs in via mock DigiD and submits a
// registration through the self-service portal → BFF → domain. The confirmation shows the reference.
test('DigiD login → submit → confirmation', async ({ page }) => {
// 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('/');
@@ -18,4 +19,16 @@ test('DigiD login → submit → confirmation', async ({ page }) => {
// 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);
});