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

test('test', async ({ page }) => {
  // Generate a random string of 16 characters
  let randomString = Math.random().toString(36).substring(2, 18);

  // In case the string is shorter than 16 characters, generate more characters until it is 16 characters long
  while (randomString.length < 16) {
    randomString += Math.random().toString(36).substring(2, 18);
  }
  const finalRandomString = randomString.substring(0, 16);

  // Standard texts
  const standardTitle = "Idea ";
  const standardDescription = "Description of Idea ";

  // Combine texts with the random string
  const finalTitle = standardTitle + finalRandomString;
  const finalDescription = standardDescription + finalRandomString;

  // Create new ID using seed phrase "rigid shrug mobileā€¦"
  await page.goto('./start');
  await page.getByText('You have a seed').click();
  await page.getByPlaceholder('Seed Phrase').click();
  await page.getByPlaceholder('Seed Phrase').fill('rigid shrug mobile smart veteran half all pond toilet brave review universe ship congress found yard skate elite apology jar uniform subway slender luggage');
  await page.getByRole('button', { name: 'Import' }).click();

  // Set name
  await page.getByRole('link', { name: 'Set Your Name' }).click();
  await page.getByPlaceholder('Name').click();
  await page.getByPlaceholder('Name').fill('User Zero');
  await page.getByRole('button', { name: 'Save Changes' }).click();

  // Check DID
  await expect(page.getByRole('code')).toContainText('did:ethr:0x0000694B58C2cC69658993A90D3840C560f2F51F');

  // Pause for 5 seconds
  await page.waitForTimeout(5000); // I have to wait, otherwise the (+) button to add a new project doesn't appear

  // Create new project
  await page.goto('./projects');
  await page.getByRole('link', { name: 'Projects', exact: true }).click();
  await page.getByRole('button').click();
  await page.getByPlaceholder('Idea Name').click();
  await page.getByPlaceholder('Idea Name').fill(finalTitle); // Add random suffix
  await page.getByPlaceholder('Description').click();
  await page.getByPlaceholder('Description').fill(finalDescription);
  await page.getByPlaceholder('Website').click();
  await page.getByPlaceholder('Website').fill('https://example.com');
  await page.getByPlaceholder('Start Date').click();
  await page.getByPlaceholder('Start Date').fill('2025-12-01');
  await page.getByPlaceholder('Start Time').click();
  await page.getByPlaceholder('Start Time').fill('12:00');
  await page.getByRole('button', { name: 'Save Project' }).click();

  // Check texts
  await expect(page.locator('h2')).toContainText(finalTitle);
  await expect(page.locator('#Content')).toContainText(finalDescription);
});