feat(desktop): add all-projects workbench home

This commit is contained in:
2026-07-25 22:23:34 +08:00
parent 4b3f0d9167
commit b01f14ac00
5 changed files with 84 additions and 45 deletions

View File

@@ -42,14 +42,20 @@ await page.waitForSelector('.task-row')
await page.screenshot({ path: 'test-results/app-home.png', fullPage: true })
const home = await page.evaluate(() => ({
width: document.querySelector('.app-shell')?.getBoundingClientRect().width,
selectedAll: document.querySelector('.project-pill.active span')?.textContent,
selectedAll: document.querySelector('.project-current span')?.textContent,
navCount: document.querySelectorAll('.channel-rail button').length,
statCount: document.querySelectorAll('.stat-card').length,
pending: document.querySelectorAll('.task-row:not(.done)').length,
completed: document.querySelectorAll('.task-row.done').length,
}))
await page.locator('.task-row').first().click()
const taskModal = await page.getByText('编辑任务').count()
await page.getByRole('button', { name: '取消' }).click()
await page.getByRole('button', { name: '探索' }).click()
const exploreProjects = await page.locator('.project-explore-card').count()
await page.locator('.project-current').click()
await page.getByRole('option', { name: '森林项目' }).click()
await page.waitForSelector('.channel-rail')
await page.locator('.channel-rail button[title="资料"]').click()
const documents = await page.locator('.detail-row').count()
await page.locator('.channel-rail button[title="AI"]').click()
@@ -63,13 +69,15 @@ await browser.close(); await server.close()
const failures = []
if (home.width !== 420) failures.push(`expected 420px shell, got ${home.width}`)
if (home.selectedAll !== '全部') failures.push(`default project scope must be 全部, got ${home.selectedAll}`)
if (home.navCount !== 6) failures.push(`expected six right rail menus, got ${home.navCount}`)
if (home.selectedAll !== '全部项目') failures.push(`default project scope must be 全部项目, got ${home.selectedAll}`)
if (home.navCount !== 0) failures.push(`all-projects view must hide the right rail, got ${home.navCount}`)
if (home.statCount !== 4) failures.push(`expected four summary cards, got ${home.statCount}`)
if (home.pending !== 1 || home.completed !== 1) failures.push(`task sections incorrect: ${JSON.stringify(home)}`)
if (taskModal !== 1) failures.push('task editor did not open')
if (exploreProjects !== 1) failures.push(`expected one project in explore, got ${exploreProjects}`)
if (documents !== 1) failures.push(`expected one document, got ${documents}`)
if (experts !== 1) failures.push(`expected one AI expert, got ${experts}`)
if (profileMenu !== 1) failures.push('profile menu did not open')
if (errors.length) failures.push(`console errors: ${errors.join('; ')}`)
console.log(JSON.stringify({ home, documents, experts, taskModal, profileMenu, errors }, null, 2))
console.log(JSON.stringify({ home, documents, experts, taskModal, exploreProjects, profileMenu, errors }, null, 2))
if (failures.length) throw new Error(failures.join('\n'))