mirror of
https://github.com/go-gitea/gitea.git
synced 2026-04-23 11:41:16 +02:00
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
48 lines
2.2 KiB
TypeScript
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);
|
|
});
|