mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-02 20:43:36 +00:00
Change description field to textarea in Add New Feature modal
The description field in the Add New Feature modal is now a textarea instead of an input, allowing users to enter multi-line feature descriptions more easily. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
104
app/tests/new-session.spec.ts
Normal file
104
app/tests/new-session.spec.ts
Normal file
@@ -0,0 +1,104 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
|
||||
test.describe("New Chat Session Auto Focus", () => {
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await page.goto("/");
|
||||
|
||||
// Create a new project first
|
||||
await page.getByTestId("new-project-card").click();
|
||||
await expect(page.getByTestId("new-project-dialog")).toBeVisible();
|
||||
|
||||
// Enter project details
|
||||
await page.getByTestId("project-name-input").fill("test-session-project");
|
||||
await page.getByTestId("project-path-input").fill("/Users/test/session-projects");
|
||||
|
||||
// Click create
|
||||
await page.getByTestId("confirm-create-project").click();
|
||||
|
||||
// Should navigate to board view
|
||||
await expect(page.getByTestId("board-view")).toBeVisible();
|
||||
|
||||
// Navigate to Agent view
|
||||
await page.getByTestId("nav-agent").click();
|
||||
await expect(page.getByTestId("agent-view")).toBeVisible();
|
||||
});
|
||||
|
||||
test("clicking new session button creates a session with random name", async ({ page }) => {
|
||||
// Click the "New" session button
|
||||
const newSessionButton = page.getByTestId("new-session-button");
|
||||
await expect(newSessionButton).toBeVisible();
|
||||
await newSessionButton.click();
|
||||
|
||||
// Wait for the session to be created - check for session item in the list
|
||||
const sessionList = page.getByTestId("session-list");
|
||||
await expect(sessionList).toBeVisible();
|
||||
|
||||
// The session should appear in the list
|
||||
await expect(sessionList.locator('[data-testid^="session-item-"]').first()).toBeVisible({ timeout: 5000 });
|
||||
|
||||
// The session name should follow the pattern of random names (contains letters and numbers)
|
||||
const sessionName = sessionList.locator('[data-testid^="session-item-"]').first().locator("h3");
|
||||
await expect(sessionName).toBeVisible();
|
||||
const nameText = await sessionName.textContent();
|
||||
expect(nameText).toBeTruthy();
|
||||
// Verify the name follows our pattern: "Adjective Noun Number"
|
||||
expect(nameText).toMatch(/^[A-Z][a-z]+ [A-Z][a-z]+ \d+$/);
|
||||
});
|
||||
|
||||
test("verify session was created and selected", async ({ page }) => {
|
||||
// Click the "New" session button
|
||||
const newSessionButton = page.getByTestId("new-session-button");
|
||||
await newSessionButton.click();
|
||||
|
||||
// Wait for session to be created
|
||||
const sessionList = page.getByTestId("session-list");
|
||||
await expect(sessionList.locator('[data-testid^="session-item-"]').first()).toBeVisible({ timeout: 5000 });
|
||||
|
||||
// Verify the session is selected (has the primary border class)
|
||||
const sessionItem = sessionList.locator('[data-testid^="session-item-"]').first();
|
||||
await expect(sessionItem).toHaveClass(/border-primary/);
|
||||
|
||||
// Verify the message list is visible (session is active)
|
||||
await expect(page.getByTestId("message-list")).toBeVisible();
|
||||
});
|
||||
|
||||
test("verify chat input is focused after creating new session", async ({ page }) => {
|
||||
// Click the "New" session button
|
||||
const newSessionButton = page.getByTestId("new-session-button");
|
||||
await newSessionButton.click();
|
||||
|
||||
// Wait for session to be created
|
||||
const sessionList = page.getByTestId("session-list");
|
||||
await expect(sessionList.locator('[data-testid^="session-item-"]').first()).toBeVisible({ timeout: 5000 });
|
||||
|
||||
// Wait for the input to be focused (there's a 200ms delay in the code)
|
||||
await page.waitForTimeout(300);
|
||||
|
||||
// Verify the chat input is focused
|
||||
const chatInput = page.getByTestId("agent-input");
|
||||
await expect(chatInput).toBeVisible();
|
||||
await expect(chatInput).toBeFocused();
|
||||
});
|
||||
|
||||
test("complete flow: click new session, verify session created, verify input focused", async ({ page }) => {
|
||||
// Step 1: Click new session
|
||||
const newSessionButton = page.getByTestId("new-session-button");
|
||||
await expect(newSessionButton).toBeVisible();
|
||||
await newSessionButton.click();
|
||||
|
||||
// Step 2: Verify session was created
|
||||
const sessionList = page.getByTestId("session-list");
|
||||
await expect(sessionList.locator('[data-testid^="session-item-"]').first()).toBeVisible({ timeout: 5000 });
|
||||
|
||||
// Verify the session has a randomly generated name
|
||||
const sessionName = sessionList.locator('[data-testid^="session-item-"]').first().locator("h3");
|
||||
const nameText = await sessionName.textContent();
|
||||
expect(nameText).toBeTruthy();
|
||||
expect(nameText).toMatch(/^[A-Z][a-z]+ [A-Z][a-z]+ \d+$/);
|
||||
|
||||
// Step 3: Verify chat input focused
|
||||
await page.waitForTimeout(300);
|
||||
const chatInput = page.getByTestId("agent-input");
|
||||
await expect(chatInput).toBeFocused();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user