|
@ -1,6 +1,9 @@ |
|
|
import { expect, Page } from '@playwright/test'; |
|
|
import { expect, Page } from '@playwright/test'; |
|
|
|
|
|
|
|
|
export async function importUser(page: Page, id?: string): Promise<void> { |
|
|
// 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<string> { |
|
|
let seedPhrase, userName, did; |
|
|
let seedPhrase, userName, did; |
|
|
|
|
|
|
|
|
// Set seed phrase and DID based on user ID
|
|
|
// Set seed phrase and DID based on user ID
|
|
@ -21,14 +24,45 @@ export async function importUser(page: Page, id?: string): Promise<void> { |
|
|
await page.getByText('You have a seed').click(); |
|
|
await page.getByText('You have a seed').click(); |
|
|
await page.getByPlaceholder('Seed Phrase').fill(seedPhrase); |
|
|
await page.getByPlaceholder('Seed Phrase').fill(seedPhrase); |
|
|
await page.getByRole('button', { name: 'Import' }).click(); |
|
|
await page.getByRole('button', { name: 'Import' }).click(); |
|
|
await expect(page.locator('#sectionUsageLimits')).toContainText('You have done'); |
|
|
|
|
|
await expect(page.locator('#sectionUsageLimits')).toContainText('You have uploaded'); |
|
|
|
|
|
|
|
|
|
|
|
// Set name
|
|
|
|
|
|
await page.getByRole('link', { name: 'Set Your Name' }).click(); |
|
|
|
|
|
await page.getByPlaceholder('Name').fill(userName); |
|
|
|
|
|
await page.getByRole('button', { name: 'Save Changes' }).click(); |
|
|
|
|
|
|
|
|
|
|
|
// Check DID
|
|
|
// Check DID
|
|
|
await expect(page.getByRole('code')).toContainText(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<void> { |
|
|
|
|
|
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<string> { |
|
|
|
|
|
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; |
|
|
} |
|
|
} |