56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
import { test, expect } from "@playwright/test";
|
|
import { createTestApi, loginAsDefault } from "./helpers";
|
|
import type { TestApiClient } from "./fixtures";
|
|
|
|
test.describe("Comments", () => {
|
|
let api: TestApiClient;
|
|
|
|
test.beforeEach(async ({ page }) => {
|
|
api = await createTestApi();
|
|
await api.createIssue("E2E Comment Test " + Date.now());
|
|
await loginAsDefault(page);
|
|
});
|
|
|
|
test.afterEach(async () => {
|
|
await api.cleanup();
|
|
});
|
|
|
|
test("can add a comment on an issue", async ({ page }) => {
|
|
// Wait for issues to load and click first one
|
|
const issueLink = page.locator('a[href^="/issues/"]').first();
|
|
await expect(issueLink).toBeVisible({ timeout: 5000 });
|
|
await issueLink.click();
|
|
await page.waitForURL(/\/issues\/[\w-]+/);
|
|
|
|
// Wait for issue detail to load
|
|
await expect(page.locator("text=Properties")).toBeVisible();
|
|
|
|
// Type a comment
|
|
const commentText = "E2E comment " + Date.now();
|
|
const commentInput = page.locator(
|
|
'input[placeholder="Leave a comment..."]',
|
|
);
|
|
await commentInput.fill(commentText);
|
|
|
|
// Submit the comment
|
|
await page.locator('form button[type="submit"]').last().click();
|
|
|
|
// Comment should appear in the activity section
|
|
await expect(page.locator(`text=${commentText}`)).toBeVisible({
|
|
timeout: 5000,
|
|
});
|
|
});
|
|
|
|
test("comment submit button is disabled when empty", async ({ page }) => {
|
|
const issueLink = page.locator('a[href^="/issues/"]').first();
|
|
await expect(issueLink).toBeVisible({ timeout: 5000 });
|
|
await issueLink.click();
|
|
await page.waitForURL(/\/issues\/[\w-]+/);
|
|
|
|
await expect(page.locator("text=Properties")).toBeVisible();
|
|
|
|
// Submit button should be disabled when input is empty
|
|
const submitBtn = page.locator('form button[type="submit"]').last();
|
|
await expect(submitBtn).toBeDisabled();
|
|
});
|
|
});
|