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:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user