table-control.spec.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { test, expect } from '@playwright/test'
  2. import { setupApiMocks, resetMockStatus } from './mocks/api'
  3. test.describe('Table Control E2E', () => {
  4. test.beforeEach(async ({ page }) => {
  5. resetMockStatus()
  6. await setupApiMocks(page)
  7. // Add route for send_home
  8. await page.route('**/send_home', async route => {
  9. await route.fulfill({ json: { success: true } })
  10. })
  11. })
  12. test('displays control page with buttons', async ({ page }) => {
  13. await page.goto('/table-control')
  14. // Should show control buttons
  15. await expect(page.getByRole('button', { name: /home/i })).toBeVisible()
  16. await expect(page.getByRole('button', { name: /stop/i })).toBeVisible()
  17. })
  18. test('can trigger home action', async ({ page }) => {
  19. await page.goto('/table-control')
  20. // Find and click home button
  21. const homeButton = page.getByRole('button', { name: /home/i })
  22. await expect(homeButton).toBeVisible()
  23. // Click should not throw error
  24. await homeButton.click()
  25. // Button should still be visible (action completed)
  26. await expect(homeButton).toBeVisible()
  27. })
  28. test('navigation bar shows all pages', async ({ page }) => {
  29. await page.goto('/table-control')
  30. // All nav items should be visible
  31. await expect(page.getByRole('link', { name: /browse/i })).toBeVisible()
  32. await expect(page.getByRole('link', { name: /playlists/i })).toBeVisible()
  33. await expect(page.getByRole('link', { name: /control/i })).toBeVisible()
  34. await expect(page.getByRole('link', { name: /led/i })).toBeVisible()
  35. await expect(page.getByRole('link', { name: /settings/i })).toBeVisible()
  36. })
  37. })