0
0
mirror of https://github.com/go-gitea/gitea.git synced 2026-04-23 11:41:16 +02:00
gitea/tests/e2e/project-column-picker.test.ts
Myers Carpenter 26c8ed0328 Add Go integration tests and improve E2E assertions for column picker
Integration tests for UpdateIssueProjectColumn endpoint:
- MoveToColumn: verify column change persists
- InvalidColumn: reject column from wrong project (404)
- NonexistentColumn: reject missing column (404)
- IssueFromOtherRepo: reject cross-repo issue (404)

E2E test improvements:
- Assert dropdown closes after selection
- Assert sidebar shows new column name
- Assert timeline event appears for column move
- Use specific selector for reload verification
2026-03-30 03:06:09 +00:00

48 lines
2.2 KiB
TypeScript

import {env} from 'node:process';
import {test, expect} from '@playwright/test';
import {login, apiCreateRepo, apiCreateIssue, apiDeleteRepo} from './utils.ts';
test('project column picker', async ({page}) => {
const repoName = `e2e-colpicker-${Date.now()}`;
const owner = env.GITEA_TEST_E2E_USER;
await login(page);
await apiCreateRepo(page.request, {name: repoName});
await apiCreateIssue(page.request, owner, repoName, {title: 'Test Issue'});
// Create a project with board type
await page.goto(`/${owner}/${repoName}/projects/new`);
await page.getByPlaceholder('Title').fill('Test Board');
await page.locator('#project_template').selectOption('Basic Kanban');
await page.getByRole('button', {name: 'Create Project'}).click();
await expect(page.locator('.project-column')).toHaveCount(3); // Basic Kanban: To Do, In Progress, Done
// Assign the issue to the project via the issue sidebar
await page.goto(`/${owner}/${repoName}/issues/1`);
await page.locator('.issue-sidebar-combo[data-update-url*="/issues/projects?"] .ui.dropdown').click();
await page.locator('.issue-sidebar-combo[data-update-url*="/issues/projects?"] .menu .item').filter({hasText: 'Test Board'}).click();
// Wait for the column picker to appear
await expect(page.locator('#sidebar-project-column .ui.dropdown')).toBeVisible();
// Verify the column dropdown has items
await page.locator('#sidebar-project-column .ui.dropdown').click();
const columnItems = page.locator('#sidebar-project-column .menu .item');
await expect(columnItems).toHaveCount(3);
// Select a different column
await columnItems.filter({hasText: 'In Progress'}).click();
// Verify the dropdown closed and shows the new selection
await expect(page.locator('#sidebar-project-column .menu')).toBeHidden();
await expect(page.locator('#sidebar-project-column .default.text')).toHaveText('In Progress');
// Verify a timeline event appeared for the column move
await expect(page.locator('.timeline-item').last()).toContainText('moved this to In Progress');
// Reload and verify the column persisted
await page.reload();
await expect(page.locator('#sidebar-project-column .default.text')).toHaveText('In Progress');
await apiDeleteRepo(page.request, owner, repoName);
});