import { expect, test } from '@playwright/test';

test.skip('Create in Simple mode (Empty prompt)', async ({ page }) => {
  await page.goto('/create');
  const promoPortalExists = (await page.locator('.chakra-portal').count()) > 0;
  if (promoPortalExists) {
    await page.locator('.chakra-portal button[aria-label="Close"]').click();
  }

  const buttonExists =
    (await page.getByRole('button', { name: 'Not now' }).count()) > 0;
  if (buttonExists) {
    await page.getByRole('button', { name: 'Not now' }).click();
  }
  await page.getByRole('button', { name: 'Back', exact: true }).click();
  await page.getByText('New Workspace').click();
  await page
    .getByRole('textbox', { name: 'Untitled Workspace' })
    .fill('TestWorkspace');
  await page
    .getByRole('textbox', { name: 'Untitled Workspace' })
    .press('Enter');
  await page.getByTestId('create-button').click();

  await expect(page.getByTestId('song-row').first()).toBeVisible();

  await page.getByRole('button', { name: 'Back', exact: true }).click();
  await page
    .locator('div')
    .filter({ hasText: /^TestWorkspace/ })
    .first()
    .getByRole('button')
    .click();
  await page.getByText('Move to Trash').click();
});

test.skip('Create in Simple mode (with prompt)', async ({ page }) => {
  await page.goto('/create');
  const promoPortalExists = (await page.locator('.chakra-portal').count()) > 0;
  if (promoPortalExists) {
    await page.locator('.chakra-portal button[aria-label="Close"]').click();
  }
  const buttonExists =
    (await page.getByRole('button', { name: 'Not now' }).count()) > 0;
  if (buttonExists) {
    await page.getByRole('button', { name: 'Not now' }).click();
  }
  await page.getByRole('button', { name: 'Back', exact: true }).click();
  await page.getByText('New Workspace').click();
  await page
    .getByRole('textbox', { name: 'Untitled Workspace' })
    .fill('TestWorkspace');
  await page
    .getByRole('textbox', { name: 'Untitled Workspace' })
    .press('Enter');
  await page
    .getByTestId('prompt-input-textarea')
    .fill('a punk rock song about dogs');

  await page.getByTestId('create-button').click();

  await expect(page.getByTestId('song-row').first()).toBeVisible();

  await page.getByRole('button', { name: 'Back', exact: true }).click();
  await page
    .locator('div')
    .filter({ hasText: /^TestWorkspace/ })
    .first()
    .getByRole('button')
    .click();
  await page.getByText('Move to Trash').click();
});

test.skip('Create in Custom mode', async ({ page }) => {
  await page.goto('/create');
  const promoPortalExists = (await page.locator('.chakra-portal').count()) > 0;
  if (promoPortalExists) {
    await page.locator('.chakra-portal button[aria-label="Close"]').click();
  }
  const buttonExists =
    (await page.getByRole('button', { name: 'Not now' }).count()) > 0;
  if (buttonExists) {
    await page.getByRole('button', { name: 'Not now' }).click();
  }
  await page.getByRole('button', { name: 'Back', exact: true }).click();
  await page.getByText('New Workspace').click();
  await page
    .getByRole('textbox', { name: 'Untitled Workspace' })
    .fill('TestWorkspace');
  await page
    .getByRole('textbox', { name: 'Untitled Workspace' })
    .press('Enter');
  await page.getByRole('button', { name: 'Custom', exact: true }).click();
  await page
    .getByTestId('lyrics-input-textarea')
    .fill(
      'Test Test Test\n\nTest Test Test\n\nTest Test Test\n\nTest Test Test\n\nTest Test Test\n\nTest Test Test\n\nTest Test Test\n\nTest Test Test'
    );
  await page.getByTestId('tag-input-textarea').fill('rock, pop');
  await page.getByTestId('create-button').click();

  await expect(page.getByTestId('song-row').first()).toBeVisible();

  await page.getByRole('button', { name: 'Back', exact: true }).click();
  await page
    .locator('div')
    .filter({ hasText: /^TestWorkspace/ })
    .first()
    .getByRole('button')
    .click();
  await page.getByText('Move to Trash').click();
});
