5 changed files with 109 additions and 10 deletions
			
			
		| @ -0,0 +1,79 @@ | |||||
|  | import { test, expect } from '@playwright/test'; | ||||
|  | import { importUser, generateNewEthrUser, switchToUser } from './testUtils'; | ||||
|  | 
 | ||||
|  | test('New offers for another user', async ({ page }) => { | ||||
|  |   const user01Did = await generateNewEthrUser(page); | ||||
|  |   await page.goto('./'); | ||||
|  |   expect(page.getByTestId('newDirectOffersActivityNumber')).toBeHidden(); | ||||
|  | 
 | ||||
|  |   await importUser(page, '00'); | ||||
|  |   await page.goto('./contacts'); | ||||
|  |   await page.getByPlaceholder('URL or DID, Name, Public Key').fill(user01Did + ', A Friend'); | ||||
|  |   await page.locator('button > svg.fa-plus').click(); | ||||
|  |   await expect(page.locator('div[role="alert"] span:has-text("Contact Added")')).toBeVisible(); | ||||
|  |   await page.locator('div[role="alert"] button:has-text("No")').click(); // don't register
 | ||||
|  |   await page.locator('div[role="alert"] button > svg.fa-xmark').click(); // dismiss info alert
 | ||||
|  |   await expect(page.locator('div[role="alert"] button > svg.fa-xmark')).toBeHidden(); // ensure alert is gone
 | ||||
|  | 
 | ||||
|  |   // show buttons to make offers directly to people
 | ||||
|  |   await page.getByRole('button').filter({ hasText: /Show Given Hours/i }).click(); | ||||
|  | 
 | ||||
|  |   // make an offer directly to user 1
 | ||||
|  |   // Generate a random string of 3 characters, skipping the "0." at the beginning
 | ||||
|  |   const randomString1 = Math.random().toString(36).substring(2, 5); | ||||
|  |   await page.getByTestId('offerButton').click(); | ||||
|  |   await page.getByTestId('inputDescription').fill(`help of ${randomString1} from #000`); | ||||
|  |   await page.getByTestId('inputOfferAmount').fill('1'); | ||||
|  |   await page.getByRole('button', { name: 'Sign & Send' }).click(); | ||||
|  |   await expect(page.getByText('That offer was recorded.')).toBeVisible(); | ||||
|  |   await page.locator('div[role="alert"] button > svg.fa-xmark').click(); // dismiss info alert
 | ||||
|  |   await expect(page.locator('div[role="alert"] button > svg.fa-xmark')).toBeHidden(); // ensure alert is gone
 | ||||
|  | 
 | ||||
|  |   // make another offer to user 1
 | ||||
|  |   const randomString2 = Math.random().toString(36).substring(2, 5); | ||||
|  |   await page.getByTestId('offerButton').click(); | ||||
|  |   await page.getByTestId('inputDescription').fill(`help of ${randomString2} from #000`); | ||||
|  |   await page.getByTestId('inputOfferAmount').fill('3'); | ||||
|  |   await page.getByRole('button', { name: 'Sign & Send' }).click(); | ||||
|  |   await expect(page.getByText('That offer was recorded.')).toBeVisible(); | ||||
|  |   await page.locator('div[role="alert"] button > svg.fa-xmark').click(); // dismiss info alert
 | ||||
|  |   await expect(page.locator('div[role="alert"] button > svg.fa-xmark')).toBeHidden(); // ensure alert is gone
 | ||||
|  | 
 | ||||
|  |   // as user 1, go to the home page and check that two offers are shown as new
 | ||||
|  |   await switchToUser(page, user01Did); | ||||
|  |   await page.goto('./'); | ||||
|  |   await page.getByTestId('closeOnboardingAndFinish').click(); | ||||
|  |   let offerNumElem = page.getByTestId('newDirectOffersActivityNumber'); | ||||
|  |   await expect(offerNumElem).toHaveText('2'); | ||||
|  |   await offerNumElem.click(); | ||||
|  | 
 | ||||
|  |   await expect(page.getByText('New Offers To You')).toBeVisible(); | ||||
|  |   await page.getByTestId('showOffersToUser').click(); | ||||
|  |   // note that they show in reverse chronologicalorder
 | ||||
|  |   await expect(page.getByText(`help of ${randomString2} from #000`)).toBeVisible(); | ||||
|  |   await expect(page.getByText(`help of ${randomString1} from #000`)).toBeVisible(); | ||||
|  | 
 | ||||
|  |   // click on the latest offer to keep it as "unread"
 | ||||
|  |   await page.hover(`li:has-text("help of ${randomString2} from #000")`); | ||||
|  |   // await page.locator('li').filter({ hasText: `help of ${randomString2} from #000` }).click();
 | ||||
|  |   // await page.locator('div').filter({ hasText: /keep all above/ }).click();
 | ||||
|  |   // now find the "Click to keep all above as new offers" after that list item and click it
 | ||||
|  |   const liElem = page.locator('li').filter({ hasText: `help of ${randomString2} from #000` }); | ||||
|  |   await liElem.hover(); | ||||
|  |   const keepAboveAsNew = liElem.locator('div').filter({ hasText: /keep all above/ }); | ||||
|  |   await keepAboveAsNew.click(); | ||||
|  | 
 | ||||
|  |   // now see that only one offer is shown as new
 | ||||
|  |   await page.goto('./'); | ||||
|  |   offerNumElem = page.getByTestId('newDirectOffersActivityNumber'); | ||||
|  |   await expect(offerNumElem).toHaveText('1'); | ||||
|  |   await offerNumElem.click(); | ||||
|  |   await expect(page.getByText('New Offer To You')).toBeVisible(); | ||||
|  |   await page.getByTestId('showOffersToUser').click(); | ||||
|  | 
 | ||||
|  |   // now see that no offers are shown as new
 | ||||
|  |   await page.goto('./'); | ||||
|  |   // wait until the list with ID listLatestActivity has at least one visible item
 | ||||
|  |   await page.locator('#listLatestActivity li').first().waitFor({ state: 'visible' }); | ||||
|  |   await expect(page.getByTestId('newDirectOffersActivityNumber')).toBeHidden(); | ||||
|  | }); | ||||
					Loading…
					
					
				
		Reference in new issue