From 350238f84c7d548a00281da8bf794797ea5cadc9 Mon Sep 17 00:00:00 2001 From: Zhi Date: Sat, 14 Mar 2026 08:44:47 +0000 Subject: [PATCH] Fix selectors in full workflow test --- tests/full-workflow.spec.ts | 75 +++++++++++++++++++++---------------- 1 file changed, 42 insertions(+), 33 deletions(-) diff --git a/tests/full-workflow.spec.ts b/tests/full-workflow.spec.ts index 6a972cd..5076b7c 100644 --- a/tests/full-workflow.spec.ts +++ b/tests/full-workflow.spec.ts @@ -27,16 +27,15 @@ test.describe('Full Workflow', () => { await page.goto(`${BASE_URL}/projects`); await page.waitForLoadState('networkidle'); - // Click create project button - await page.click('button:has-text("Create"), button:has-text("New Project")'); - await page.waitForSelector('form', { timeout: 5000 }).catch(() => {}); + // Click create project button - it's "+ New" + await page.click('button:has-text("+ New")'); + await page.waitForSelector('form.inline-form', { timeout: 5000 }).catch(() => {}); // Fill project form - await page.fill('input[name="name"], label:has-text("Name") input', 'Test Project'); - await page.fill('input[name="description"], label:has-text("Description") input', 'Project for E2E testing'); + await page.fill('input[placeholder="Project name"]', 'Test Project'); // Submit project form - await page.click('button[type="submit"], button:has-text("Create"), button:has-text("Save")'); + await page.click('button:has-text("Create")'); // Wait for project to be created await page.waitForTimeout(2000); @@ -47,70 +46,80 @@ test.describe('Full Workflow', () => { await page.goto(`${BASE_URL}/milestones`); await page.waitForLoadState('networkidle'); - // Click create milestone button - await page.click('button:has-text("Create"), button:has-text("New Milestone")'); + // Wait for page to load + await page.waitForSelector('h2:has-text("Milestones")', { timeout: 10000 }); + + // Click create milestone button - it's "+ NewMilestones" + await page.click('button:has-text("+ NewMilestones")'); await page.waitForSelector('form', { timeout: 5000 }).catch(() => {}); // Fill milestone form - await page.fill('input[name="title"], label:has-text("Title") input', 'Test Milestone'); - await page.fill('textarea[name="description"], label:has-text("Description") textarea', 'Milestone for E2E testing'); + await page.fill('input[placeholder="Title"]', 'Test Milestone'); + await page.fill('textarea[placeholder="Description"]', 'Milestone for E2E testing'); // Submit milestone form - await page.click('button[type="submit"], button:has-text("Create"), button:has-text("Save")'); + await page.click('button:has-text("Create")'); // Wait for milestone to be created await page.waitForTimeout(2000); console.log('✅ Milestone created'); - // Step 4: Create Task (under milestone) + // Step 4: Create Task (issue type) console.log('📝 Creating task...'); await page.goto(`${BASE_URL}/issues/new`); await page.waitForLoadState('networkidle'); - // Select issue type: Task - await page.selectOption('select[name="issue_type"], select:has-text("Type")', 'task'); - await page.fill('input[name="title"], label:has-text("Title") input', 'Test Task'); - await page.fill('textarea[name="description"], label:has-text("Description") textarea', 'Task for E2E testing'); + // Wait for form to load + await page.waitForSelector('select[name="issue_type"]', { timeout: 10000 }); - await page.click('button[type="submit"], button:has-text("Create"), button:has-text("Save")'); + // Select issue type: Task + await page.selectOption('select[name="issue_type"]', 'task'); + await page.fill('input[placeholder="Title"]', 'Test Task'); + await page.fill('textarea[placeholder="Description"]', 'Task for E2E testing'); + + await page.click('button:has-text("Create")'); await page.waitForTimeout(2000); console.log('✅ Task created'); - // Step 5: Create Meeting (under milestone) + // Step 5: Create Meeting (issue type) console.log('📅 Creating meeting...'); await page.goto(`${BASE_URL}/issues/new`); await page.waitForLoadState('networkidle'); - // Select issue type: Meeting - await page.selectOption('select[name="issue_type"], select:has-text("Type")', 'meeting'); - await page.selectOption('select[name="issue_subtype"], select:has-text("Subtype")', 'recap'); - await page.fill('input[name="title"], label:has-text("Title") input', 'Test Meeting'); - await page.fill('textarea[name="description"], label:has-text("Description") textarea', 'Meeting for E2E testing'); + await page.waitForSelector('select[name="issue_type"]', { timeout: 10000 }); - await page.click('button[type="submit"], button:has-text("Create"), button:has-text("Save")'); + // Select issue type: Meeting + await page.selectOption('select[name="issue_type"]', 'meeting'); + await page.selectOption('select[name="issue_subtype"]', 'recap'); + await page.fill('input[placeholder="Title"]', 'Test Meeting'); + await page.fill('textarea[placeholder="Description"]', 'Meeting for E2E testing'); + + await page.click('button:has-text("Create")'); await page.waitForTimeout(2000); console.log('✅ Meeting created'); - // Step 6: Create Support (under milestone) + // Step 6: Create Support (issue type) console.log('🆘 Creating support...'); await page.goto(`${BASE_URL}/issues/new`); await page.waitForLoadState('networkidle'); - // Select issue type: Support - await page.selectOption('select[name="issue_type"], select:has-text("Type")', 'support'); - await page.selectOption('select[name="issue_subtype"], select:has-text("Subtype")', 'information'); - await page.fill('input[name="title"], label:has-text("Title") input', 'Test Support'); - await page.fill('textarea[name="description"], label:has-text("Description") textarea', 'Support request for E2E testing'); + await page.waitForSelector('select[name="issue_type"]', { timeout: 10000 }); - await page.click('button[type="submit"], button:has-text("Create"), button:has-text("Save")'); + // Select issue type: Support + await page.selectOption('select[name="issue_type"]', 'support'); + await page.selectOption('select[name="issue_subtype"]', 'information'); + await page.fill('input[placeholder="Title"]', 'Test Support'); + await page.fill('textarea[placeholder="Description"]', 'Support request for E2E testing'); + + await page.click('button:has-text("Create")'); await page.waitForTimeout(2000); console.log('✅ Support created'); // Step 7: Logout console.log('🚪 Logging out...'); - // Click logout button in sidebar or header - await page.click('button:has-text("Logout"), button:has-text("Sign Out")'); + // Click logout button in sidebar + await page.click('button:has-text("Logout")'); await page.waitForURL(`${BASE_URL}/login`, { timeout: 10000 }).catch(() => {}); console.log('✅ Logged out');