browser-title.client.spec.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. // @vitest-environment jsdom
  2. import { describe, expect, it } from 'vitest'
  3. import { render } from '@testing-library/react'
  4. import type { TabId } from '@deepseek-ai/dsh-client-ui-dockkit'
  5. import { BrowserNavigation } from '../src/client/browser/BrowserNavigation.ts'
  6. import type { BrowserTitleProps } from '../src/client/view/BrowserTitle.tsx'
  7. import { BrowserTitle } from '../src/client/view/BrowserTitle.tsx'
  8. const TAB = 'tab' as TabId
  9. function props(entry = false): BrowserTitleProps {
  10. const state = entry
  11. ? {
  12. ...BrowserNavigation.empty(),
  13. entries: [{ kind: 'https' as const, url: 'https://example.test/', title: 'Loaded page' }],
  14. index: 0,
  15. }
  16. : BrowserNavigation.empty()
  17. return {
  18. useTabInfo: () => ({ tab: { id: TAB, title: 'Browser' } }),
  19. useStore: selector => selector({ byTab: { [TAB]: state } }),
  20. } as BrowserTitleProps
  21. }
  22. describe('BrowserTitle', () => {
  23. it('uses the current page title and falls back to the tab title', () => {
  24. const view = render(<BrowserTitle {...props(true)} />)
  25. expect(view.getByText('Loaded page')).toBeDefined()
  26. view.rerender(<BrowserTitle {...props()} />)
  27. expect(view.getByText('Browser')).toBeDefined()
  28. })
  29. })