mirror of
https://github.com/SecurityBrewery/catalyst.git
synced 2025-12-08 00:02:49 +01:00
83 lines
2.7 KiB
TypeScript
83 lines
2.7 KiB
TypeScript
import { expect } from '@playwright/test'
|
|
import { randomUUID } from 'crypto'
|
|
import { login, test } from './util'
|
|
|
|
const createUser = async (page, username: string) => {
|
|
await page.goto('users')
|
|
await page.getByRole('button', { name: 'New User' }).click()
|
|
await page.waitForURL('**/users/new')
|
|
await page.locator('#username').fill(username)
|
|
await page.locator('#email').fill(`${username}@example.com`)
|
|
await page.locator('#name').fill(username)
|
|
const saveBtn = page.getByRole('button', { name: 'Save' }).last()
|
|
await expect(saveBtn).toBeEnabled()
|
|
await saveBtn.click()
|
|
await page.waitForURL('**/users/u*')
|
|
}
|
|
|
|
test('users list shows existing users', async ({ page }) => {
|
|
await login(page)
|
|
await page.goto('users')
|
|
await expect(page.getByRole('heading', { name: 'Users' })).toBeVisible()
|
|
await expect(page.getByText('admin', { exact: true })).toBeVisible()
|
|
})
|
|
|
|
test('can create a user', async ({ page }) => {
|
|
await login(page)
|
|
const username = `playwright-${randomUUID()}`
|
|
await createUser(page, username)
|
|
await expect(page.locator('#username')).toHaveValue(username)
|
|
})
|
|
|
|
test.describe('update a user', () => {
|
|
const updates = [
|
|
{
|
|
field: 'email',
|
|
selector: '#email',
|
|
value: 'updated@example.com'
|
|
},
|
|
{
|
|
field: 'name',
|
|
selector: '#name',
|
|
value: 'Updated Name'
|
|
}
|
|
]
|
|
|
|
for (const { field, selector, value } of updates) {
|
|
test(`can update ${field}`, async ({ page }) => {
|
|
await login(page)
|
|
const username = `playwright-${randomUUID()}`
|
|
await createUser(page, username)
|
|
await page.waitForSelector(selector)
|
|
await page.locator(selector).fill(value)
|
|
const saveBtn = page.getByRole('button', { name: 'Save' }).last()
|
|
await expect(saveBtn).toBeEnabled()
|
|
await saveBtn.click()
|
|
await expect(page.locator(selector)).toHaveValue(value)
|
|
})
|
|
}
|
|
})
|
|
|
|
test('can update username', async ({ page }) => {
|
|
await login(page)
|
|
const username = `playwright-${randomUUID()}`
|
|
await createUser(page, username)
|
|
await page.waitForSelector('#username')
|
|
const newUsername = `playwright-${randomUUID()}`
|
|
await page.locator('#username').fill(newUsername)
|
|
const saveBtn = page.getByRole('button', { name: 'Save' }).last()
|
|
await expect(saveBtn).toBeEnabled()
|
|
await saveBtn.click()
|
|
await expect(page.locator('#username')).toHaveValue(newUsername)
|
|
})
|
|
|
|
test('can delete a user', async ({ page }) => {
|
|
await login(page)
|
|
const username = `playwright-${randomUUID()}`
|
|
await createUser(page, username)
|
|
await page.getByRole('button', { name: 'Delete User' }).click()
|
|
await page.getByRole('dialog').getByRole('button', { name: 'Delete' }).click()
|
|
await page.waitForURL('**/users')
|
|
await expect(page.locator(`text=${username}`)).toHaveCount(0)
|
|
})
|