| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import { describe, expect, it } from 'vitest'
- import { readFileSync } from 'node:fs'
- import { resolve } from 'node:path'
- const source = name => readFileSync(resolve(process.cwd(), `src/views/${name}`), 'utf8')
- describe('workspace navigation contracts', () => {
- it('makes the first todo the primary action without legacy stat cards', () => {
- const page = source('workspace/WorkspaceView.vue')
- expect(page).toContain('workspace-action')
- expect(page).toContain('workspace-action__title')
- expect(page).toContain('firstTodo')
- expect(page).toContain('firstTodoTarget')
- expect(page).toContain(':to="firstTodoTarget"')
- expect(page).toContain('YOUR NEXT ACTION')
- expect(page).not.toContain('class="grid-3"')
- expect(page).not.toContain('stat-card__top')
- expect(page).not.toContain('workspace-todo-metric')
- expect(page).not.toContain('DRAFT_OKR')
- })
- it('keeps period context and a responsive team pulse', () => {
- const page = source('workspace/WorkspaceView.vue')
- expect(page).toContain('workspace-pulse')
- expect(page).toContain('workspace-context')
- expect(page).toContain('teamOkrTarget')
- expect(page).toContain('workspace-team-link')
- expect(page).toContain('团队进展')
- expect(page).toContain('查看团队 OKR')
- expect(page).toContain('var(--color-text-secondary)')
- expect(page).toContain('@media (max-width: 820px)')
- expect(page).toContain('@media (max-width: 640px)')
- expect(page).not.toContain('card mt-md')
- })
- it('uses the period passed from the workspace when opening team OKR', () => {
- const page = source('okr/TeamOkrView.vue')
- expect(page).toContain('route.query.periodId')
- })
- it('keeps the selected period on personal OKR navigation', () => {
- const sidebar = readFileSync(resolve(process.cwd(), 'src/components/shell/CohereSidebar.vue'), 'utf8')
- expect(sidebar).toContain('periodAwareTarget')
- expect(sidebar).toContain('workspace.periodId')
- expect(sidebar).toContain(':to="periodAwareTarget(item)"')
- })
- })
|