@ -2,6 +2,27 @@ import { test, expect } from '@playwright/test';
import { importUser } from './testUtils' ;
import { importUser } from './testUtils' ;
test ( 'Add contact' , async ( { page } ) = > {
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
// Import user 01
await importUser ( page , '01' ) ;
await importUser ( page , '01' ) ;
@ -20,11 +41,23 @@ test('Add contact', async ({ page }) => {
// Rename contact
// Rename contact
await page . locator ( 'li.border-b h2 > button[title="Edit"]' ) . click ( ) ;
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 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 ( ) ;
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 page . goto ( './' ) ;
await expect ( page . locator ( '#sectionRecordSomethingGiven ul li' ) . filter ( { hasText : 'Contact 00' } ) . nth ( 0 ) ) . toBeVisible ( ) ;
await page . locator ( 'li' ) . filter ( { hasText : finalTitle } ) . locator ( 'a' ) . click ( ) ;
await expect ( page . locator ( 'ul#listLatestActivity li' ) . filter ( { hasText : 'Contact 00 received' } ) . nth ( 0 ) ) . toBeVisible ( ) ;
await expect ( page . getByRole ( 'heading' , { name : 'Verifiable Claim Details' } ) ) . toBeVisible ( ) ;
await expect ( page . getByText ( finalTitle , { exact : true } ) ) . toBeVisible ( ) ;
} ) ;
} ) ;