test(coverage): drive browser tests to 80% on all metrics (#496) #505

Merged
marcel merged 189 commits from feat/issue-496-browser-coverage-tests into main 2026-05-11 21:50:39 +02:00
Showing only changes of commit 1229c80faa - Show all commits

View File

@@ -84,4 +84,49 @@ describe('admin/users/[id] page', () => {
await expect.element(page.getByRole('button', { name: /löschen/i })).toBeVisible();
});
it('does not show success banner when form is undefined', async () => {
render(AdminUserEditPage, { props: { data: baseData(), form: undefined } });
const banner = document.querySelector('.bg-green-50');
expect(banner).toBeNull();
});
it('does not show error banner when form.error is undefined', async () => {
render(AdminUserEditPage, { props: { data: baseData(), form: { success: false } } });
// The error banner has both border-red-200 AND text-red-700 — the delete button has red-50
// background but is a button, not a div. Look for the specific error <div>.
const banner = document.querySelector('div.bg-red-50');
expect(banner).toBeNull();
});
it('handles a user with empty groups list (selectedGroupIds defaults to [])', async () => {
render(AdminUserEditPage, {
props: {
data: baseData({ editUser: { ...baseEditUser, groups: [] } }),
form: undefined
}
});
const checkboxes = Array.from(
document.querySelectorAll('input[name="groupIds"]')
) as HTMLInputElement[];
const checked = checkboxes.filter((c) => c.checked);
expect(checked.length).toBe(0);
});
it('handles a user with no groups field at all (defaults to [])', async () => {
const editUser = { ...baseEditUser } as typeof baseEditUser & { groups?: undefined };
delete (editUser as { groups?: unknown }).groups;
render(AdminUserEditPage, {
props: { data: baseData({ editUser }), form: undefined }
});
const checkboxes = Array.from(
document.querySelectorAll('input[name="groupIds"]')
) as HTMLInputElement[];
const checked = checkboxes.filter((c) => c.checked);
expect(checked.length).toBe(0);
});
});