test(e2e): drive the new deactivate confirm modal

Cancels once to assert the modal can be dismissed without side
effects, then confirms to flip the user to inactive, then reactivates
to assert that direction remains one-click.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
MechaCat02
2026-05-28 19:40:52 +02:00
parent b459b99fe9
commit f4cd883d76

View File

@@ -114,7 +114,7 @@ test.describe('B6 instance users', () => {
await expect(page.locator('.row', { hasText: decoy })).toHaveCount(0); await expect(page.locator('.row', { hasText: decoy })).toHaveCount(0);
}); });
test('deactivate then reactivate toggles the inactive indicator', async ({ test('deactivate confirm modal: Cancel keeps active, Deactivate flips, reactivate is one click', async ({
page, page,
uniqueUsername uniqueUsername
}) => { }) => {
@@ -127,10 +127,25 @@ test.describe('B6 instance users', () => {
const row = page.locator('.row:not(.head-row):not(.empty-row)', { hasText: username }); const row = page.locator('.row:not(.head-row):not(.empty-row)', { hasText: username });
await expect(row).toBeVisible(); await expect(row).toBeVisible();
// Deactivate opens the confirm modal.
await row.getByRole('button', { name: new RegExp(`User actions for ${username}`) }).click(); await row.getByRole('button', { name: new RegExp(`User actions for ${username}`) }).click();
await page.getByRole('menuitem', { name: /^Deactivate$/ }).click(); await page.getByRole('menuitem', { name: /^Deactivate$/ }).click();
const dialog = page.getByRole('dialog');
await expect(dialog).toBeVisible();
await expect(dialog).toContainText(username);
// Cancel leaves the user active.
await dialog.getByRole('button', { name: /^Cancel$/ }).click();
await expect(dialog).toHaveCount(0);
await expect(row).not.toContainText(/inactive/i);
// Open again and confirm — user becomes inactive.
await row.getByRole('button', { name: new RegExp(`User actions for ${username}`) }).click();
await page.getByRole('menuitem', { name: /^Deactivate$/ }).click();
await page.getByRole('dialog').getByRole('button', { name: /^Deactivate$/ }).click();
await expect(row).toContainText(/inactive/i); await expect(row).toContainText(/inactive/i);
// Reactivate is still one-click (non-destructive — no modal).
await row.getByRole('button', { name: new RegExp(`User actions for ${username}`) }).click(); await row.getByRole('button', { name: new RegExp(`User actions for ${username}`) }).click();
await page.getByRole('menuitem', { name: /^Reactivate$/ }).click(); await page.getByRole('menuitem', { name: /^Reactivate$/ }).click();
await expect(row).not.toContainText(/inactive/i); await expect(row).not.toContainText(/inactive/i);