Browse Source

test: add a check that the newly invited person can indeed log a claim

pull/194/head
Trent Larson 2 weeks ago
parent
commit
4fa8c8f4cb
  1. 8
      test-playwright/05-invite.spec.ts
  2. 42
      test-playwright/testUtils.ts

8
test-playwright/05-invite.spec.ts

@ -8,6 +8,7 @@
* - Custom expiration date * - Custom expiration date
* 2. The invitation appears in the list after creation * 2. The invitation appears in the list after creation
* 3. A new user can accept the invitation and become connected * 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: * Test Flow:
* 1. Imports User 0 (test account) * 1. Imports User 0 (test account)
@ -19,6 +20,8 @@
* 4. Creates a new user with Ethr DID * 4. Creates a new user with Ethr DID
* 5. Accepts the invitation as the new user * 5. Accepts the invitation as the new user
* 6. Verifies the connection is established * 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: * Related Files:
* - Frontend invite handling: src/libs/endorserServer.ts * - Frontend invite handling: src/libs/endorserServer.ts
@ -29,7 +32,7 @@
* @requires ./testUtils - For user management utilities * @requires ./testUtils - For user management utilities
*/ */
import { test, expect } from '@playwright/test'; 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 }) => { test('Check User 0 can invite someone', async ({ page }) => {
await importUser(page, '00'); 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 page.locator('button:has-text("Save")').click();
await expect(page.locator('button:has-text("Save")')).toBeHidden(); await expect(page.locator('button:has-text("Save")')).toBeHidden();
await expect(page.locator(`li:has-text("My pal User #0")`)).toBeVisible(); 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}`);
}); });

42
test-playwright/testUtils.ts

@ -1,4 +1,5 @@
import { expect, Page } from "@playwright/test"; import { expect, Page } from "@playwright/test";
import { UNNAMED_ENTITY_NAME } from '../src/constants/entities';
// Get test user data based on the ID. // Get test user data based on the ID.
// '01' -> user 111 // '01' -> user 111
@ -239,3 +240,44 @@ export function isResourceIntensiveTest(testPath: string): boolean {
testPath.includes("40-add-contact") 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();
}

Loading…
Cancel
Save