```typescript
import { describe, it, expect, vi, beforeEach } from 'vitest';
import { render, screen } from '@testing-library/react';
// import { PlaysChart } from './PlaysChart'; // Component doesn't exist yet
import * as trackService from '../services/trackService';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import userEvent from '@testing-library/user-event';

vi.mock('../services/trackService');

describe.skip('PlaysChart - SKIPPED: Component not implemented', () => {
  beforeEach(() => {
    vi.clearAllMocks();
  });

  it('should render loading state', () => {
    vi.mocked(trackService.getPlaysOverTime).mockImplementation(
      () => new Promise(() => { }), // Never resolves
    );

    render(<PlaysChart trackId={1} />);
    expect(screen.getByRole('status')).toBeInTheDocument();
  });

  it('should render chart when data is loaded', async () => {
    const mockData = [
      { date: '2024-01-01T00:00:00Z', count: 10 },
      { date: '2024-01-02T00:00:00Z', count: 15 },
      { date: '2024-01-03T00:00:00Z', count: 20 },
    ];

    vi.mocked(trackService.getPlaysOverTime).mockResolvedValue(mockData);

    render(<PlaysChart trackId={1} />);

    await waitFor(() => {
      expect(screen.getByText('Lectures dans le temps')).toBeInTheDocument();
    });
  });

  it('should change interval when button is clicked', async () => {
    const mockData: { date: string; count: number }[] = [];
    vi.mocked(trackService.getPlaysOverTime).mockResolvedValue(mockData);

    render(<PlaysChart trackId={1} />);

    await waitFor(() => {
      expect(screen.getByText('Semaine')).toBeInTheDocument();
    });

    const weekButton = screen.getByText('Semaine');
    await userEvent.click(weekButton);

    await waitFor(() => {
      expect(trackService.getPlaysOverTime).toHaveBeenCalledWith(
        expect.any(Number),
        expect.any(String),
        expect.any(String),
        'week',
      );
    });
  });

  it('should display error message on failure', async () => {
    vi.mocked(trackService.getPlaysOverTime).mockRejectedValue(
      new Error('Failed'),
    );

    render(<PlaysChart trackId={1} />);

    await waitFor(() => {
      expect(
        screen.getByText('Impossible de charger les données'),
      ).toBeInTheDocument();
    });
  });

  it('should reload data when trackId changes', async () => {
    const mockData: { date: string; count: number }[] = [];
    vi.mocked(trackService.getPlaysOverTime).mockResolvedValue(mockData);

    const { rerender } = render(<PlaysChart trackId={1} />);

    await waitFor(() => {
      expect(trackService.getPlaysOverTime).toHaveBeenCalledWith(
        1,
        expect.any(String),
        expect.any(String),
        'day',
      );
    });

    rerender(<PlaysChart trackId={2} />);

    await waitFor(() => {
      expect(trackService.getPlaysOverTime).toHaveBeenCalledWith(
        2,
        expect.any(String),
        expect.any(String),
        'day',
      );
    });
  });
});
