Files
taskview-community/web/e2e/projects.spec.ts
T
2026-02-21 18:48:38 +01:00

72 lines
2.8 KiB
TypeScript

import { test, expect } from '@playwright/test'
import { login } from './test-helpers'
async function addProject(page: import('@playwright/test').Page, name: string) {
const input = page.getByTestId('project-add-input').first()
await input.waitFor({ state: 'visible', timeout: 15000 })
await input.fill(name)
await input.press('Enter')
await expect(page.getByText(name).first()).toBeVisible({ timeout: 10000 })
}
async function openProjectMenu(page: import('@playwright/test').Page, projectName: string) {
const row = page.getByTestId(`project-row-${projectName}`)
await row.first().waitFor({ state: 'visible', timeout: 10000 })
await row.first().getByTestId('project-menu-trigger').click()
}
test.describe('Projects', () => {
test.setTimeout(15_000)
test.beforeEach(async ({ page }) => {
await page.goto('/')
await login(page)
})
test('user can add project', async ({ page }) => {
const projectName = `Test Project ${Date.now()}`
await addProject(page, projectName)
})
test('user can edit project', async ({ page }) => {
const projectName = `Edit Me ${Date.now()}`
await addProject(page, projectName)
const newName = `Edited ${Date.now()}`
await openProjectMenu(page, projectName)
await page.getByTestId('context-menu-edit').click()
await page.getByTestId('project-edit-name').fill(newName)
await page.getByTestId('project-edit-save').click()
await expect(page.getByText(newName).first()).toBeVisible({ timeout: 5000 })
})
test('user can delete project', async ({ page }) => {
const projectName = `Delete Me ${Date.now()}`
await addProject(page, projectName)
await openProjectMenu(page, projectName)
await page.getByTestId('context-menu-delete').click()
await page.getByRole('button', { name: /^yes|^да$/i }).click()
await expect(page.getByText(projectName)).toHaveCount(0)
})
test('user can archive project', async ({ page }) => {
const projectName = `Archive Me ${Date.now()}`
await addProject(page, projectName)
await openProjectMenu(page, projectName)
await page.getByTestId('context-menu-move-to-archive').click()
await page.getByTestId('archive-list-collapsible').click()
await expect(page.getByTestId(`project-row-${projectName}`)).toBeVisible()
})
test('user can unarchive project', async ({ page }) => {
const projectName = `Unarchive Me ${Date.now()}`
await addProject(page, projectName)
await openProjectMenu(page, projectName)
await page.getByTestId('context-menu-move-to-archive').click()
await page.getByTestId('archive-list-collapsible').click()
await openProjectMenu(page, projectName)
await page.getByTestId('context-menu-restore-from-archive').click({ force: true })
await expect(page.getByText(projectName).first()).toBeVisible({ timeout: 5000 })
})
})