forked from jsnbuchanan/crowd-funder-for-time-pwa
test: add a check that the newly invited person can indeed log a claim
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
* - Custom expiration date
|
||||
* 2. The invitation appears in the list after creation
|
||||
* 3. A new user can accept the invitation and become connected
|
||||
* 4. The new user can create gift records from the front page
|
||||
*
|
||||
* Test Flow:
|
||||
* 1. Imports User 0 (test account)
|
||||
@@ -19,6 +20,8 @@
|
||||
* 4. Creates a new user with Ethr DID
|
||||
* 5. Accepts the invitation as the new user
|
||||
* 6. Verifies the connection is established
|
||||
* 7. Tests that the new user can create gift records from the front page
|
||||
* 8. Verifies the gift appears in the home view
|
||||
*
|
||||
* Related Files:
|
||||
* - Frontend invite handling: src/libs/endorserServer.ts
|
||||
@@ -29,7 +32,7 @@
|
||||
* @requires ./testUtils - For user management utilities
|
||||
*/
|
||||
import { test, expect } from '@playwright/test';
|
||||
import { deleteContact, generateNewEthrUser, generateRandomString, importUser, switchToUser } from './testUtils';
|
||||
import { createGiftFromFrontPageForNewUser, deleteContact, generateNewEthrUser, generateRandomString, importUser, switchToUser } from './testUtils';
|
||||
|
||||
test('Check User 0 can invite someone', async ({ page }) => {
|
||||
await importUser(page, '00');
|
||||
@@ -58,4 +61,7 @@ test('Check User 0 can invite someone', async ({ page }) => {
|
||||
await page.locator('button:has-text("Save")').click();
|
||||
await expect(page.locator('button:has-text("Save")')).toBeHidden();
|
||||
await expect(page.locator(`li:has-text("My pal User #0")`)).toBeVisible();
|
||||
|
||||
// Verify the new user can create a gift record from the front page
|
||||
const giftTitle = await createGiftFromFrontPageForNewUser(page, `Gift from new user ${neighborNum}`);
|
||||
});
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { expect, Page } from "@playwright/test";
|
||||
import { UNNAMED_ENTITY_NAME } from '../src/constants/entities';
|
||||
|
||||
// Get test user data based on the ID.
|
||||
// '01' -> user 111
|
||||
@@ -239,3 +240,44 @@ export function isResourceIntensiveTest(testPath: string): boolean {
|
||||
testPath.includes("40-add-contact")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a gift record from the front page
|
||||
* @param page - Playwright page object
|
||||
* @param giftTitle - Optional custom title, defaults to "Gift " + random string
|
||||
* @param amount - Optional amount, defaults to random 1-99
|
||||
* @returns Promise resolving to the created gift title
|
||||
*/
|
||||
export async function createGiftFromFrontPageForNewUser(
|
||||
page: Page,
|
||||
giftTitle?: string,
|
||||
amount?: number
|
||||
): Promise<void> {
|
||||
// Generate random values if not provided
|
||||
const randomString = Math.random().toString(36).substring(2, 6);
|
||||
const finalTitle = giftTitle || `Gift ${randomString}`;
|
||||
const finalAmount = amount || Math.floor(Math.random() * 99) + 1;
|
||||
|
||||
// Navigate to home page and close onboarding
|
||||
await page.goto('./');
|
||||
await page.getByTestId('closeOnboardingAndFinish').click();
|
||||
|
||||
// Start gift creation flow
|
||||
await page.getByRole('button', { name: 'Person' }).click();
|
||||
await page.getByRole('listitem').filter({ hasText: UNNAMED_ENTITY_NAME }).locator('svg').click();
|
||||
|
||||
// Fill gift details
|
||||
await page.getByPlaceholder('What was given').fill(finalTitle);
|
||||
await page.getByRole('spinbutton').fill(finalAmount.toString());
|
||||
|
||||
// Submit gift
|
||||
await page.getByRole('button', { name: 'Sign & Send' }).click();
|
||||
|
||||
// Verify success
|
||||
await expect(page.getByText('That gift was recorded.')).toBeVisible();
|
||||
await page.locator('div[role="alert"] button > svg.fa-xmark').click(); // dismiss info alert
|
||||
|
||||
// Verify the gift appears in the home view
|
||||
await page.goto('./');
|
||||
await expect(page.locator('ul#listLatestActivity li').filter({ hasText: giftTitle })).toBeVisible();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user