oxios 1.10.1

Oxios Agent OS — Agent Operating System powered by oxi-sdk
import { render, screen } from '@testing-library/react'
import { describe, expect, it } from 'vitest'
import { Progress } from '@/components/ui/progress'

describe('GroupProgress - Progress bar patterns', () => {
  it('renders progress bar at 50%', () => {
    render(<Progress value={50} />)

    const progressBar = screen.getByRole('progressbar')
    expect(progressBar).toBeInTheDocument()
    // Radix Progress uses CSS transform on the indicator, not aria-valuenow
    const indicator = progressBar.querySelector('[data-slot="progress-indicator"]')
    expect(indicator).toHaveStyle({ transform: 'translateX(-50%)' })
  })

  it('renders progress bar at 100%', () => {
    render(<Progress value={100} />)

    const progressBar = screen.getByRole('progressbar')
    expect(progressBar).toBeInTheDocument()
    const indicator = progressBar.querySelector('[data-slot="progress-indicator"]')
    expect(indicator).toHaveStyle({ transform: 'translateX(-0%)' })
  })

  it('renders progress bar at 0%', () => {
    render(<Progress value={0} />)

    const progressBar = screen.getByRole('progressbar')
    expect(progressBar).toBeInTheDocument()
    const indicator = progressBar.querySelector('[data-slot="progress-indicator"]')
    expect(indicator).toHaveStyle({ transform: 'translateX(-100%)' })
  })

  it('renders progress with custom class for completed state', () => {
    render(<Progress value={100} className="bg-success" />)

    const progressBar = screen.getByRole('progressbar')
    expect(progressBar).toBeInTheDocument()
  })

  it('renders progress with custom class for running state', () => {
    render(<Progress value={75} className="bg-info" />)

    const progressBar = screen.getByRole('progressbar')
    expect(progressBar).toBeInTheDocument()
  })
})