From 5d47eab6d8794a0ed962164f9235c054498c82d0 Mon Sep 17 00:00:00 2001 From: Trent Larson Date: Sat, 24 Aug 2024 07:23:49 -0600 Subject: [PATCH] add test for new name-entry & copy-to-clipboard flow --- playwright.config-local.ts | 2 +- src/views/AccountViewView.vue | 4 +- src/views/HomeView.vue | 14 ++-- test-playwright/00-noid-tests.spec.ts | 68 ++++++++++++------- test-playwright/10-check-usage-limits.spec.ts | 4 +- 5 files changed, 56 insertions(+), 36 deletions(-) diff --git a/playwright.config-local.ts b/playwright.config-local.ts index c3bd2a5cb..323c64118 100644 --- a/playwright.config-local.ts +++ b/playwright.config-local.ts @@ -74,7 +74,7 @@ export default defineConfig({ /* Configure global timeout; default is 30000 milliseconds */ // the image upload will often not succeed at 5 seconds - // timeout: 10000, + // timeout: 5000, /* Run your local dev server before starting the tests */ /** diff --git a/src/views/AccountViewView.vue b/src/views/AccountViewView.vue index bc847e9f5..8020dafaf 100644 --- a/src/views/AccountViewView.vue +++ b/src/views/AccountViewView.vue @@ -57,14 +57,14 @@ v-else class="block w-full text-center text-md bg-amber-200 border border-dashed border-slate-400 px-1.5 py-2 rounded-md mb-2" > - Set Your Name - +
diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index 422a2946b..04a4d7fbc 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -86,12 +86,14 @@ > To share, someone must register you. -
- Show Them {{ PASSKEYS_ENABLED ? "Default" : "Your" }} Identifier - Info +
+
diff --git a/test-playwright/00-noid-tests.spec.ts b/test-playwright/00-noid-tests.spec.ts index cbb08e7ce..977525e74 100644 --- a/test-playwright/00-noid-tests.spec.ts +++ b/test-playwright/00-noid-tests.spec.ts @@ -1,22 +1,6 @@ import { test, expect } from '@playwright/test'; import { generateEthrUser, importUser } from './testUtils'; -test('Confirm usage of test API (may fail if you are running your own Time Safari)', async ({ page }, testInfo) => { - // Load account view - await page.goto('./account'); - await page.getByRole('heading', { name: 'Advanced' }).click(); - - // look into the config file: if it starts Time Safari, it might say which server it should set by default - const webServer = testInfo.config.webServer; - const endorserWords = webServer?.command.split(' '); - const ENDORSER_ENV_NAME = 'VITE_DEFAULT_ENDORSER_API_SERVER'; - const endorserTerm = endorserWords?.find(word => word.startsWith(ENDORSER_ENV_NAME + '=')); - const endorserTermInConfig = endorserTerm?.substring(ENDORSER_ENV_NAME.length + 1); - - const endorserServer = endorserTermInConfig || 'https://test-api.endorser.ch'; - await expect(page.getByRole('textbox').nth(1)).toHaveValue(endorserServer); -}); - test('Check activity feed', async ({ page }) => { // Load app homepage await page.goto('./'); @@ -39,14 +23,6 @@ test('Check discover results', async ({ page }) => { await page.locator('ul#listDiscoverResults li.border-b:nth-child(20)').scrollIntoViewIfNeeded(); }); -test('Check no-ID messaging in homepage', async ({ page }) => { - // Load app homepage - await page.goto('./'); - - // Check 'someone must register you' notice - await expect(page.getByText('To share, someone must register you.')).toBeVisible(); -}); - test('Check no-ID messaging in account', async ({ page }) => { // Load account view await page.goto('./account'); @@ -74,6 +50,9 @@ test('Check ID generation', async ({ page }) => { // Wait for activity feed to start loading, as a delay await expect(page.locator('ul#listLatestActivity li:nth-child(10)')).toBeVisible(); + // Check 'someone must register you' notice + await expect(page.getByText('To share, someone must register you.')).toBeVisible(); + // Go back to Account view await page.goto('./account'); @@ -81,7 +60,46 @@ test('Check ID generation', async ({ page }) => { await expect(page.locator('#sectionIdentityDetails code.truncate')).toContainText('did:ethr:'); }); -test('Check User 0 can register random person', async ({ page }) => { + +test('Check setting name & sharing info', async ({ page }) => { + // Load homepage to trigger ID generation (?) + await page.goto('./'); + // Check 'someone must register you' notice + await expect(page.getByText('someone must register you.')).toBeVisible(); + await page.getByRole('button', { name: /Show them/}).click(); + // fill in a name + await expect(page.getByText('Set Your Name')).toBeVisible(); + await page.getByRole('textbox').fill('Me Test User'); + await page.locator('button:has-text("Save")').click(); + await expect(page.getByText('share another way')).toBeVisible(); + await page.getByRole('button', { name: /share another way/ }).click(); + await expect(page.getByRole('button', { name: 'copy to clipboard' })).toBeVisible(); + await page.getByRole('button', { name: 'copy to clipboard' }).click(); + await expect(page.getByText('contact info was copied')).toBeVisible(); + // dismiss alert and wait for it to go away + await page.locator('div[role="alert"] button > svg.fa-xmark').click(); + await expect(page.getByText('contact info was copied')).toBeHidden(); + // check that they're on the Contacts screen + await expect(page.getByText('your contacts')).toBeVisible(); +}); + +test('Confirm usage of test API (may fail if you are running your own Time Safari)', async ({ page }, testInfo) => { + // Load account view + await page.goto('./account'); + await page.getByRole('heading', { name: 'Advanced' }).click(); + + // look into the config file: if it starts Time Safari, it might say which server it should set by default + const webServer = testInfo.config.webServer; + const endorserWords = webServer?.command.split(' '); + const ENDORSER_ENV_NAME = 'VITE_DEFAULT_ENDORSER_API_SERVER'; + const endorserTerm = endorserWords?.find(word => word.startsWith(ENDORSER_ENV_NAME + '=')); + const endorserTermInConfig = endorserTerm?.substring(ENDORSER_ENV_NAME.length + 1); + + const endorserServer = endorserTermInConfig || 'https://test-api.endorser.ch'; + await expect(page.getByRole('textbox').nth(1)).toHaveValue(endorserServer); +}); + +test('Check User 0 can register a random person', async ({ page }) => { await importUser(page, '00'); const newDid = await generateEthrUser(page); expect(newDid).toContain('did:ethr:'); diff --git a/test-playwright/10-check-usage-limits.spec.ts b/test-playwright/10-check-usage-limits.spec.ts index 9bf9c448b..7669af740 100644 --- a/test-playwright/10-check-usage-limits.spec.ts +++ b/test-playwright/10-check-usage-limits.spec.ts @@ -20,9 +20,9 @@ test('Check usage limits', async ({ page }) => { await expect(page.getByRole('button', { name: 'Recheck Limits' })).toBeVisible(); // Set name - await page.getByRole('link', { name: 'Set Your Name' }).click(); + await page.getByRole('button', { name: 'Set Your Name' }).click(); const name = 'User ' + did.slice(11, 14); await page.getByPlaceholder('Name').fill(name); - await page.getByRole('button', { name: 'Save Changes' }).click(); + await page.getByRole('button', { name: 'Save' }).click(); }); \ No newline at end of file