import { test, expect } from './coverage-fixtures.js'

test.describe('Backend Logs', () => {
  test('model detail page shows title', async ({ page }) => {
    await page.goto('/app/backend-logs/mock-model')
    await expect(page.locator('.page-title')).toContainText('mock-model')
  })

  test('no back arrow link on detail page', async ({ page }) => {
    await page.goto('/app/backend-logs/mock-model')
    await expect(page.locator('a[href="/app/backend-logs"]')).not.toBeVisible()
  })

  test('filter buttons are visible', async ({ page }) => {
    await page.goto('/app/backend-logs/mock-model')
    await expect(page.locator('button', { hasText: 'All' })).toBeVisible()
    await expect(page.locator('button', { hasText: 'stdout' })).toBeVisible()
    await expect(page.locator('button', { hasText: 'stderr' })).toBeVisible()
  })

  test('filter buttons toggle active state', async ({ page }) => {
    await page.goto('/app/backend-logs/mock-model')

    const allBtn = page.locator('button', { hasText: 'All' })
    const stdoutBtn = page.locator('button', { hasText: 'stdout' })

    // All is active by default
    await expect(allBtn).toHaveClass(/btn-primary/)

    // Click stdout
    await stdoutBtn.click()
    await expect(stdoutBtn).toHaveClass(/btn-primary/)
    await expect(allBtn).not.toHaveClass(/btn-primary/)
  })

  test('export button is present', async ({ page }) => {
    await page.goto('/app/backend-logs/mock-model')
    await expect(page.locator('button', { hasText: 'Export' })).toBeVisible()
  })

  test('auto-scroll checkbox is present', async ({ page }) => {
    await page.goto('/app/backend-logs/mock-model')
    await expect(page.locator('text=Auto-scroll')).toBeVisible()
  })

  test('clear button is present', async ({ page }) => {
    await page.goto('/app/backend-logs/mock-model')
    await expect(page.locator('button', { hasText: 'Clear' })).toBeVisible()
  })

  test('details toggle button is present and toggles', async ({ page }) => {
    await page.goto('/app/backend-logs/mock-model')

    // "Text only" button visible by default (details are shown)
    const toggleBtn = page.locator('button', { hasText: 'Text only' })
    await expect(toggleBtn).toBeVisible()

    // Click to hide details
    await toggleBtn.click()

    // Button label changes to "Show details"
    await expect(page.locator('button', { hasText: 'Show details' })).toBeVisible()
  })
})
