import { expect, Page } from '@playwright/test'; // Import the seed and switch to the user based on the ID. // '01' -> 111 // otherwise -> 000 export async function importUser(page: Page, id?: string): Promise { let seedPhrase, userName, did; // Set seed phrase and DID based on user ID switch(id) { case '01': seedPhrase = 'island fever beef wine urban aim vacant quit afford total poem flame service calm better adult neither color gaze forum month sister imitate excite'; userName = 'User One'; did = 'did:ethr:0x111d15564f824D56C7a07b913aA7aDd03382aA39'; break; default: // to user 00 seedPhrase = 'rigid shrug mobile smart veteran half all pond toilet brave review universe ship congress found yard skate elite apology jar uniform subway slender luggage'; userName = 'User Zero'; did = 'did:ethr:0x0000694B58C2cC69658993A90D3840C560f2F51F'; } // Import ID await page.goto('./start'); await page.getByText('You have a seed').click(); await page.getByPlaceholder('Seed Phrase').fill(seedPhrase); await page.getByRole('button', { name: 'Import' }).click(); // Check DID await expect(page.getByRole('code')).toContainText(did); // ... and ensure the app retrieves the registration status await expect(page.getByText('Your claims counter resets')).toBeVisible(); return did; } // This is to switch to someone already in the identity table. It doesn't include registration. export async function switchToUser(page: Page, did: string): Promise { await page.goto('./account'); await page.getByRole('heading', { name: 'Advanced' }).click(); await page.getByRole('link', { name: 'Switch Identifier' }).click(); await page.getByRole('code', { name: did }).click(); } // Generate a new random user and register them. // Note that this makes 000 the active user. Use switchToUser to switch to this DID. export async function generateEthrUser(page: Page): Promise { await page.goto('./start'); await page.getByTestId('newSeed').click(); await expect(page.locator('span:has-text("Created")')).toBeVisible(); await page.goto('./account'); // wait until the DID shows on the page in the 'did' element const didElem = await page.getByTestId('didWrapper').locator('code:has-text("did:")'); const newDid = await didElem.innerText(); await importUser(page, '000'); // switch to user 000 await page.goto('./contacts'); const threeChars = newDid.slice(11, 14); await page.getByPlaceholder('URL or DID, Name, Public Key').fill(`${newDid}, User ${threeChars}`); await page.locator('button > svg.fa-plus').click(); await page.locator('li', { hasText: threeChars }).click(); // register them await page.locator('div[role="alert"] button:has-text("Yes")').click(); // wait for it to disappear because the next steps may depend on alerts being gone await expect(page.locator('div[role="alert"] button:has-text("Yes")')).toBeHidden(); return newDid; }