@ -2,6 +2,27 @@ import { test, expect } from '@playwright/test'; 
			
		
	
		
			
				
					import  {  importUser  }  from  './testUtils' ;  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					test ( 'Add contact' ,  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 ) ;  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					  // Generate a random non-zero single-digit number
  
			
		
	
		
			
				
					  const  randomNonZeroNumber  =  Math . floor ( Math . random ( )  *  99 )  +  1 ;  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					  // Standard title prefix
  
			
		
	
		
			
				
					  const  standardTitle  =  "Gift " ;  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					  // Combine title prefix with the random string
  
			
		
	
		
			
				
					  const  finalTitle  =  standardTitle  +  finalRandomString ;  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					  // Contact name
  
			
		
	
		
			
				
					  const  contactName  =  'Contact 00' ;  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					  // Import user 01
  
			
		
	
		
			
				
					  await  importUser ( page ,  '01' ) ;  
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -20,11 +41,23 @@ test('Add contact', async ({ page }) => { 
			
		
	
		
			
				
					  // Rename contact
  
			
		
	
		
			
				
					  await  page . locator ( 'li.border-b h2 > button[title="Edit"]' ) . click ( ) ;  
			
		
	
		
			
				
					  await  expect ( page . locator ( 'div.dialog-overlay > div.dialog' ) . filter ( {  hasText :  'Edit Name'  } ) ) . toBeVisible ( ) ;  
			
		
	
		
			
				
					  await  page . getByPlaceholder ( 'Name' ,  {  exact : true  } ) . fill ( 'Contact 00' ) ;  
			
		
	
		
			
				
					  await  page . getByPlaceholder ( 'Name' ,  {  exact : true  } ) . fill ( contactName ) ;  
			
		
	
		
			
				
					  await  page . locator ( '.dialog > .flex > button' ) . first ( ) . click ( ) ;  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					  // Confirm that home shows contact in "Record Something…" and "Latest Activity"
  
			
		
	
		
			
				
					  // Confirm that home shows contact in "Record Something…"
  
			
		
	
		
			
				
					  await  page . goto ( './' ) ;  
			
		
	
		
			
				
					  await  expect ( page . locator ( '#sectionRecordSomethingGiven ul li' ) . filter ( {  hasText : contactName  } ) . nth ( 0 ) ) . toBeVisible ( ) ;  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					  // Record something given by new contact
  
			
		
	
		
			
				
					  await  page . getByRole ( 'heading' ,  {  name : contactName  } ) . click ( ) ;  
			
		
	
		
			
				
					  await  page . getByPlaceholder ( 'What was given' ) . fill ( finalTitle ) ;  
			
		
	
		
			
				
					  await  page . getByRole ( 'spinbutton' ) . fill ( randomNonZeroNumber . toString ( ) ) ;  
			
		
	
		
			
				
					  await  page . getByRole ( 'button' ,  {  name :  'Sign & Send'  } ) . click ( ) ;  
			
		
	
		
			
				
					  await  expect ( page . getByText ( 'That gift was recorded.' ) ) . toBeVisible ( ) ;  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					  // Refresh home view and check gift
  
			
		
	
		
			
				
					  await  page . goto ( './' ) ;  
			
		
	
		
			
				
					  await  expect ( page . locator ( '#sectionRecordSomethingGiven ul li' ) . filter ( {  hasText :  'Contact 00'  } ) . nth ( 0 ) ) . toBeVisible ( ) ;  
			
		
	
		
			
				
					  await  expect ( page . locator ( 'ul#listLatestActivity li' ) . filter ( {  hasText :  'Contact 00 received'  } ) . nth ( 0 ) ) . toBeVisible ( ) ;  
			
		
	
		
			
				
					  await  page . locator ( 'li' ) . filter ( {  hasText : finalTitle  } ) . locator ( 'a' ) . click ( ) ;  
			
		
	
		
			
				
					  await  expect ( page . getByRole ( 'heading' ,  {  name :  'Verifiable Claim Details'  } ) ) . toBeVisible ( ) ;  
			
		
	
		
			
				
					  await  expect ( page . getByText ( finalTitle ,  {  exact : true  } ) ) . toBeVisible ( ) ;  
			
		
	
		
			
				
					} ) ;