import React from 'react';
import { test, expect } from '@playwright/experimental-ct-react';

import { GroupingButtonsAndLinks } from '@digigov/ui/form/Button/__stories__/GroupingButtonsAndLinks';
import { Primary } from '@digigov/ui/form/Button/__stories__/Primary';
import { Secondary } from '@digigov/ui/form/Button/__stories__/Secondary';
import { ThemeToggle } from '@digigov/ui/form/Button/__stories__/ThemeToggle';
import { Warning } from '@digigov/ui/form/Button/__stories__/Warning';

test('renders the GroupingButtonsAndLinks Keyboard navigation', async ({
  mount,
  page,
}) => {
  await mount(<GroupingButtonsAndLinks />);
  await page.evaluate(() => document.fonts.ready);

  // Move the mouse to the top-left corner to avoid random hover issues
  await page.mouse.move(0, 0);

  await page.keyboard.press('Tab');
  await page.keyboard.press('Tab');

  const screenshot = await page.screenshot({
    fullPage: true,
    animations: 'disabled',
  });
  expect(screenshot).toMatchSnapshot();
});

test('renders the Primary Hover and click', async ({ mount, page }) => {
  await mount(<Primary />);
  await page.evaluate(() => document.fonts.ready);

  // Move the mouse to the top-left corner to avoid random hover issues
  await page.mouse.move(0, 0);

  await page.locator('#root>button').hover();
  await page.locator('#root>button').click();

  const screenshot = await page.screenshot({
    fullPage: true,
    animations: 'disabled',
  });
  expect(screenshot).toMatchSnapshot();
});

test('renders the Secondary Hover and click', async ({ mount, page }) => {
  await mount(<Secondary />);
  await page.evaluate(() => document.fonts.ready);

  // Move the mouse to the top-left corner to avoid random hover issues
  await page.mouse.move(0, 0);

  await page.locator('#root>button').hover();
  await page.locator('#root>button').click();

  const screenshot = await page.screenshot({
    fullPage: true,
    animations: 'disabled',
  });
  expect(screenshot).toMatchSnapshot();
});

test('renders the ThemeToggle change theme', async ({ mount, page }) => {
  await mount(<ThemeToggle />);
  await page.evaluate(() => document.fonts.ready);

  // Move the mouse to the top-left corner to avoid random hover issues
  await page.mouse.move(0, 0);

  await page.locator('#root>button').click();
  const screenshot = await page.screenshot({
    fullPage: true,
    animations: 'disabled',
  });
  expect(screenshot).toMatchSnapshot();
});

test('renders the Warning Hover and click', async ({ mount, page }) => {
  await mount(<Warning />);
  await page.evaluate(() => document.fonts.ready);

  // Move the mouse to the top-left corner to avoid random hover issues
  await page.mouse.move(0, 0);

  await page.locator('#root>button').hover();
  await page.locator('#root>button').click();

  const screenshot = await page.screenshot({
    fullPage: true,
    animations: 'disabled',
  });
  expect(screenshot).toMatchSnapshot();
});
