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 ( 'https://test.timesafari.app/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 . locator ( '#QuickNav' ) . getByRole ( 'link' ) . nth ( 2 ) . click ( ) ;
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 ) ;
} ) ;