S-26/#162 · Werkbak refreshes itself when a registration is ready for beoordeling #164
@@ -59,12 +59,32 @@ test('DigiD submit → public INGEDIEND → documenten → behandelaar goedkeurt
|
||||
await expect(staff.getByRole('row', { name: reference }).getByRole('cell', { name: 'INGEDIEND' }))
|
||||
.toBeVisible();
|
||||
|
||||
// A behandelaar opens the behandel-portal werkbak and approves the registration (goedkeuren) — the
|
||||
// S-12 flow that replaces the temporary admin endpoint. The staff tab switches to the medewerker
|
||||
// realm (a different Keycloak realm than the citizen's digid session).
|
||||
//
|
||||
// The werkbak is opened BEFORE the citizen supplies the documents that route the registration to
|
||||
// Beoordelen, so its row cannot be there at page load: the only thing that can deliver it to this
|
||||
// already-open page is the werkbak refreshing itself (S-26/#162, ADR-0032). This spec used to
|
||||
// `staff.reload()` in a poll loop here; the absence of that reload is the live-refresh assertion.
|
||||
await staff.goto('http://behandel/');
|
||||
// That realm enforces MFA (S-15c), so the behandelaar logs in with password + TOTP.
|
||||
await loginMedewerker(staff, 'merel-behandelaar');
|
||||
|
||||
await expect(staff.getByRole('heading', { name: /Werkbak/i })).toBeVisible();
|
||||
|
||||
// Target the decide button by reference (not a generic "Goedkeuren"): the shared verify stack holds
|
||||
// other open tasks, so a positional match could act on someone else's registration.
|
||||
const goedkeuren = staff.getByRole('button', { name: `Goedkeuren ${reference}` });
|
||||
await expect(goedkeuren, 'the registration is not awaiting beoordeling yet').toBeHidden();
|
||||
|
||||
// Provide the documents the registration is waiting for (S-10a), on the still-open self-service tab.
|
||||
// The process parks at WachtOpDocumenten only after the zaak is opened; the INGEDIEND row above proves
|
||||
// the zaak exists — so the OpenZaak worker has completed and the process is now at the wait — which is
|
||||
// why we supply the documents here rather than right after submit, when the trigger would race the
|
||||
// wait and no-op. (S-10b turns this into a real file upload; here it is the trigger that unblocks
|
||||
// beoordeling.)
|
||||
await page.bringToFront();
|
||||
await page.setInputFiles('#diploma', {
|
||||
name: 'diploma.pdf',
|
||||
mimeType: 'application/pdf',
|
||||
@@ -73,22 +93,10 @@ test('DigiD submit → public INGEDIEND → documenten → behandelaar goedkeurt
|
||||
await page.getByRole('button', { name: /documenten aanleveren/i }).click();
|
||||
await expect(page.getByText(/documenten zijn aangeleverd/i)).toBeVisible();
|
||||
|
||||
// A behandelaar picks the registration up in the behandel-portal werkbak and approves it (goedkeuren)
|
||||
// — the S-12 flow that replaces the temporary admin endpoint. The staff tab switches to the
|
||||
// medewerker realm (a different Keycloak realm than the citizen's digid session).
|
||||
await staff.goto('http://behandel/');
|
||||
// That realm enforces MFA (S-15c), so the behandelaar logs in with password + TOTP.
|
||||
await loginMedewerker(staff, 'merel-behandelaar');
|
||||
|
||||
await expect(staff.getByRole('heading', { name: /Werkbak/i })).toBeVisible();
|
||||
|
||||
// The registration reaches the Beoordelen user task only after its documents are provided (above),
|
||||
// so it appears in the werkbak asynchronously. Since S-26 (#162) the werkbak refreshes itself, so
|
||||
// this waits on the row WITHOUT reloading the page — the reload here is what the slice removes, and
|
||||
// its absence is the live-refresh assertion. Target the decide button by reference (not a generic
|
||||
// "Goedkeuren"): the shared verify stack holds other open tasks, so a positional match could act on
|
||||
// someone else's registration.
|
||||
const goedkeuren = staff.getByRole('button', { name: `Goedkeuren ${reference}` });
|
||||
// Back to the werkbak — untouched since login, never reloaded. The row arrives on its own once the
|
||||
// DMN routes the registration to Beoordelen. (Foregrounded so Chromium doesn't throttle the page's
|
||||
// refresh timer as a hidden tab.)
|
||||
await staff.bringToFront();
|
||||
await expect(goedkeuren).toBeVisible({ timeout: 30_000 });
|
||||
|
||||
// Click and wait for the decide POST to finish (204) BEFORE leaving the page. `click()` only
|
||||
|
||||
Reference in New Issue
Block a user