From 5015df5131d149d24f2687453ba987acb80e2b78 Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Fri, 21 Aug 2026 14:57:03 +0200 Subject: [PATCH 1/4] 01a02039 - Add call-queue outcome screenshot baseline (#1419) * Add Playwright baseline for the call-queue outcome signature * Assert call-queue signature comes from the clerk endpoint * Pin Zurich timezone and declare the call-queue outcome fake * Crop the outcome baseline to the signature form * Declare the synthetic JWT and use a German handbook title --- docs/test-architecture.md | 9 + e2e/compliance-call-queue-outcome.spec.ts | 201 ++++++++++++++++++ ...ueue-outcome-signature-chromium-darwin.png | Bin 0 -> 24808 bytes scripts/handbook/metadata.json | 4 + 4 files changed, 214 insertions(+) create mode 100644 e2e/compliance-call-queue-outcome.spec.ts create mode 100644 e2e/screenshots/baseline/compliance-call-queue-outcome.spec.ts-compliance-call-queue-outcome-signature-chromium-darwin.png diff --git a/docs/test-architecture.md b/docs/test-architecture.md index 82eb0acf7..833ea4c84 100644 --- a/docs/test-architecture.md +++ b/docs/test-architecture.md @@ -131,6 +131,15 @@ run does not prove for each one; the taxonomy and cross-repository entries live fixture with `{ userData: { verifiedName } }`. A green run proves that the review screen accepts that name, not that the API returns the logged-in staff member's `verifiedName`. The spec stays on the AML reset path and does not assert the Editor label. +- **The call-queue outcome spec answers staff identity and the dossier itself.** + `e2e/compliance-call-queue-outcome.spec.ts` fulfils `GET /v1/support/issue/clerk` with + `{ clerk }`, a differently named fallback on `GET /v1/support/{staffAccount}`, + `GET /v1/support/{customer}` with a synthetic dossier, empty lookup lists, a null + info banner, and `GET /v2/user` with a synthetic account. A green run proves the + outcome form renders that clerk name as a read-only signature and does not request a + clerks list, not that the API returns those records or the logged-in staff member's + `verifiedName`. The session is a synthetic unsigned JWT, so a green run also does not + prove login or token verification. - **Full-stack guest assign/refund specs SQL-write `transaction.actionSecretHash`.** `e2e-stack/specs/transactions.spec.ts` (`seedActionSecret`) updates the hash directly. A green run does **not** prove that the mail/API path creates, hashes, or delivers the action secret. diff --git a/e2e/compliance-call-queue-outcome.spec.ts b/e2e/compliance-call-queue-outcome.spec.ts new file mode 100644 index 000000000..2154707b3 --- /dev/null +++ b/e2e/compliance-call-queue-outcome.spec.ts @@ -0,0 +1,201 @@ +import { expect, Page, Route, test } from '@playwright/test'; + +const USER_DATA_ID = 2001; +const STAFF_ACCOUNT = 9001; +const QUEUE = 'ManualCheckPhone'; +const SIGNATURE = 'Jane Clerk'; + +const userFixture = { + userData: { + id: USER_DATA_ID, + created: '2026-07-31T08:00:00.000Z', + status: 'Active', + riskStatus: 'Normal', + kycStatus: 'Completed', + kycLevel: 50, + accountType: 'Personal', + firstname: 'Test', + surname: 'Customer', + verifiedName: 'Test Customer', + mail: 'test.customer@example.com', + phone: '+41791234567', + language: { name: 'German', symbol: 'DE' }, + nationality: { name: 'Switzerland', symbol: 'CH' }, + country: { name: 'Switzerland', symbol: 'CH' }, + phoneCallStatus: 'Pending', + phoneCallCheckDate: '2026-07-31T09:00:00.000Z', + }, + kycFiles: [], + kycSteps: [], + kycLogs: [], + transactions: [ + { + id: 101, + uid: 'synthetic-buy-crypto-42', + buyCryptoId: 42, + type: 'Buy', + sourceType: 'BuyCrypto', + inputAmount: 500, + inputAsset: 'EUR', + outputAsset: 'BTC', + amountInChf: 480, + amlCheck: 'Pass', + amlReason: 'NA', + isCompleted: false, + buyCryptoIsComplete: false, + buyCryptoStatus: 'AMLPending', + buyCryptoHasBatch: false, + buyCryptoHasChargeback: false, + buyCryptoReviewResetBlocked: false, + created: '2026-07-31T08:30:00.000Z', + }, + ], + bankTxs: [], + cryptoInputs: [], + ipLogs: [], + supportIssues: [], + users: [ + { + id: 1, + address: '0x0000000000000000000000000000000000000001', + role: 'User', + status: 'Active', + walletName: 'Synthetic wallet', + created: '2026-07-31T08:00:00.000Z', + }, + ], + bankDatas: [], + buyRoutes: [], + sellRoutes: [], + swapRoutes: [], + virtualIbans: [], + refRewards: [], + notifications: [], + notes: [], + permissions: { + viewKycFiles: true, + viewKycLogs: true, + viewIpLogs: true, + viewSupportIssues: true, + canRequestLimit: true, + canPerformTransactionActions: true, + viewRecommendation: true, + }, +}; + +function jwt(): string { + const encode = (value: object) => Buffer.from(JSON.stringify(value)).toString('base64url'); + return `${encode({ alg: 'none', typ: 'JWT' })}.${encode({ + account: STAFF_ACCOUNT, + user: STAFF_ACCOUNT, + role: 'Compliance', + exp: Math.floor(Date.now() / 1000) + 3600, + })}.synthetic`; +} + +async function fulfillJson(route: Route, body: unknown): Promise { + await route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify(body) }); +} + +async function installSyntheticApi(page: Page): Promise<{ unexpectedRequests: string[]; seenGets: string[] }> { + const unexpectedRequests: string[] = []; + const seenGets: string[] = []; + + await page.route('**/v1/**', async (route) => { + const request = route.request(); + const path = new URL(request.url()).pathname; + if (request.method() === 'GET') seenGets.push(path); + + if (request.method() === 'GET' && path === `/v1/support/${USER_DATA_ID}`) { + await fulfillJson(route, userFixture); + return; + } + + if (request.method() === 'GET' && path === '/v1/support/issue/clerk') { + await fulfillJson(route, { clerk: SIGNATURE }); + return; + } + + if (request.method() === 'GET' && path === `/v1/support/${STAFF_ACCOUNT}`) { + await fulfillJson(route, { userData: { verifiedName: 'Fallback Name' } }); + return; + } + + if ( + request.method() === 'GET' && + ['/v1/language', '/v1/fiat', '/v1/asset', '/v1/bankAccount', '/v1/country'].includes(path) + ) { + await fulfillJson(route, []); + return; + } + + if (request.method() === 'GET' && path === '/v1/setting/infoBanner') { + await fulfillJson(route, null); + return; + } + + unexpectedRequests.push(`${request.method()} ${path}`); + await route.fulfill({ + status: 501, + contentType: 'application/json', + body: JSON.stringify({ error: 'Unexpected test request' }), + }); + }); + + await page.route('**/v2/**', async (route) => { + const request = route.request(); + const path = new URL(request.url()).pathname; + + if (request.method() === 'GET' && path === '/v2/user') { + await fulfillJson(route, { + id: STAFF_ACCOUNT, + activeAddress: { address: '0x0000000000000000000000000000000000000001' }, + addresses: [], + kyc: { level: 50, status: 'Completed' }, + language: { id: 1, name: 'German', symbol: 'DE' }, + }); + return; + } + + unexpectedRequests.push(`${request.method()} ${path}`); + await route.fulfill({ + status: 501, + contentType: 'application/json', + body: JSON.stringify({ error: 'Unexpected test request' }), + }); + }); + + return { unexpectedRequests, seenGets }; +} + +test.describe('Call-queue outcome form signature', () => { + // Fixture timestamps are UTC; the screen formats them in the browser locale without an + // explicit timeZone, so pin Zurich like the other fullPage compliance screenshots. + test.use({ timezoneId: 'Europe/Zurich' }); + + test('shows the logged-in staff verified name and no clerk select', async ({ page }) => { + await page.setViewportSize({ width: 1280, height: 1400 }); + const { unexpectedRequests, seenGets } = await installSyntheticApi(page); + + await page.goto(`/compliance/call-queues/${QUEUE}/${USER_DATA_ID}?session=${jwt()}&txId=101`); + + await expect(page.getByText('Signature', { exact: true })).toBeVisible(); + const signatureBlock = page.locator('label', { hasText: 'Signature' }).locator('..'); + await expect(signatureBlock.getByRole('combobox')).toHaveCount(0); + await expect(signatureBlock.getByText(SIGNATURE)).toBeVisible(); + await expect( + page.getByRole('combobox').filter({ has: page.locator('option', { hasText: SIGNATURE }) }), + ).toHaveCount(0); + + const form = signatureBlock.locator('xpath=ancestor::div[contains(@class,"rounded-lg")][1]'); + await form.scrollIntoViewIfNeeded(); + await expect(form).toHaveScreenshot('compliance-call-queue-outcome-signature.png', { + maxDiffPixels: 5000, + }); + + expect(seenGets).toContain('/v1/support/issue/clerk'); + expect(seenGets).not.toContain(`/v1/support/${STAFF_ACCOUNT}`); + expect(unexpectedRequests.filter((r) => r.includes('clerk'))).toEqual([]); + expect(unexpectedRequests).toEqual([]); + }); +}); diff --git a/e2e/screenshots/baseline/compliance-call-queue-outcome.spec.ts-compliance-call-queue-outcome-signature-chromium-darwin.png b/e2e/screenshots/baseline/compliance-call-queue-outcome.spec.ts-compliance-call-queue-outcome-signature-chromium-darwin.png new file mode 100644 index 0000000000000000000000000000000000000000..f22622bbd2d7b013ed57f943ac9c2c0552a6fa3a GIT binary patch literal 24808 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 Date: Sat, 22 Aug 2026 22:05:19 +0200 Subject: [PATCH 2/4] 01a0246b - Hide deactivated RealUnit quotes and show user id and name (#1422) * Show user id and name on pending RealUnit quotes and hide deactivated rows * Assert the Name column in the RealUnit quotes full-stack list test * Avoid a non-null assertion in the RealUnit home screen test * Add RealUnit pending-quotes visual baselines and handbook coverage * Screenshot the dashboard pending table and declare staff GET mocks --- docs/test-architecture.md | 9 + e2e-stack/specs/realunit.spec.ts | 1 + e2e/realunit-dashboard.spec.ts | 141 ++++++++ e2e/realunit-quotes.spec.ts | 95 ++--- ...t-dashboard-01-pending-chromium-darwin.png | Bin 0 -> 16182 bytes ...ealunit-quotes-01-list-chromium-darwin.png | Bin 26928 -> 22789 bytes ...ail-deactivate-overlay-chromium-darwin.png | Bin 45264 -> 44323 bytes scripts/handbook/metadata.json | 4 + src/__tests__/realunit-quotes.screen.test.tsx | 47 ++- src/__tests__/realunit.screen.test.tsx | 338 ++++++++++++++++++ src/dto/realunit.dto.ts | 2 + src/screens/realunit-quotes.screen.tsx | 17 +- src/screens/realunit.screen.tsx | 16 +- src/translations/languages/de.json | 1 + src/translations/languages/fr.json | 1 + src/translations/languages/it.json | 1 + 16 files changed, 586 insertions(+), 87 deletions(-) create mode 100644 e2e/realunit-dashboard.spec.ts create mode 100644 e2e/screenshots/baseline/realunit-dashboard.spec.ts-realunit-dashboard-01-pending-chromium-darwin.png create mode 100644 src/__tests__/realunit.screen.test.tsx diff --git a/docs/test-architecture.md b/docs/test-architecture.md index 833ea4c84..e1de96849 100644 --- a/docs/test-architecture.md +++ b/docs/test-architecture.md @@ -106,6 +106,15 @@ run does not prove for each one; the taxonomy and cross-repository entries live `**/v1/buy/paymentInfos` with static payloads, so a green run proves that the screen renders those payloads, not that the API produces them. Unit tests against the utility pin the payload shapes instead. +- **The RealUnit quotes and dashboard visual specs answer the admin list themselves.** + `e2e/realunit-quotes.spec.ts` and `e2e/realunit-dashboard.spec.ts` fulfil + `GET /v1/realunit/admin/quotes` (and, on the dashboard, holders, token info, price history and + transactions) with synthetic fixtures that include `userId`, `userName` and `deactivatedAt`. + They also fulfil staff/bootstrap GETs (`/v1/language`, `/v1/fiat`, `/v1/asset`, `/v1/bankAccount`, + `/v1/country`, `/v1/setting/infoBanner`, `/v2/user`) so a synthetic unsigned JWT does not 401. + A green run proves the screens render those fixtures, not that the API returns them, not that + login or token verification works, and not that those staff/settings endpoints return real + payloads. - **Two specs force KYC completeness.** Both collection-invoice cases — the refused QR and the stored-detail error — override `**/v2/user` so that `kyc.dataComplete` is read as `true`, because the invoice button is gated on that value. A green run therefore proves nothing about the gate for diff --git a/e2e-stack/specs/realunit.spec.ts b/e2e-stack/specs/realunit.spec.ts index 1aa69aef9..8b16754ad 100644 --- a/e2e-stack/specs/realunit.spec.ts +++ b/e2e-stack/specs/realunit.spec.ts @@ -202,6 +202,7 @@ test.describe('RealUnit area', () => { await expect(tableHeader(page, 'Type')).toBeVisible(); await expect(tableHeader(page, 'Amount')).toBeVisible(); await expect(tableHeader(page, 'User')).toBeVisible(); + await expect(tableHeader(page, 'Name')).toBeVisible(); await expect(tableHeader(page, 'Created')).toBeVisible(); // Empty success → "No pending transactions found"; fetch failure → ErrorHint with quotesError copy. diff --git a/e2e/realunit-dashboard.spec.ts b/e2e/realunit-dashboard.spec.ts new file mode 100644 index 000000000..40dcefccc --- /dev/null +++ b/e2e/realunit-dashboard.spec.ts @@ -0,0 +1,141 @@ +import { test, expect, Page, Route } from '@playwright/test'; + +/** + * Visual regression: RealUnit dashboard home (`/realunit`) pending-quotes table. + * + * Auth is a synthetic Admin JWT. Holders, token info, price history, quotes and + * transactions are mocked. A green run does not prove the live API returns these fields. + */ + +function jwt(): string { + const encode = (value: object) => Buffer.from(JSON.stringify(value)).toString('base64url'); + return `${encode({ alg: 'none', typ: 'JWT' })}.${encode({ + account: 1, + user: 1, + role: 'Admin', + exp: Math.floor(Date.now() / 1000) + 3600, + })}.synthetic`; +} + +async function json(route: Route, body: unknown): Promise { + await route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify(body) }); +} + +const QUOTE = { + id: 8001, + uid: 'RQ8001FAKE', + type: 'Buy', + status: 'WaitingForPayment', + amount: 10000, + estimatedAmount: 9.87, + created: '2026-02-01T12:00:00.000Z', + userAddress: '0xabc0000000000000000000000000000000008001', + userId: 8001, + userName: 'Active Buyer', +}; + +const DEACTIVATED = { + ...QUOTE, + id: 8002, + uid: 'RQ8002FAKE', + amount: 2500, + deactivatedAt: '2026-02-02T12:00:00.000Z', + userId: 8002, + userName: 'Deactivated Buyer', +}; + +async function installDashboardRoutes(page: Page): Promise { + await page.route('**/v1/**', async (route: Route) => { + const request = route.request(); + const url = request.url(); + const path = new URL(url).pathname; + + if (/\/v1\/realunit\/admin\/quotes\/\d+\/(?:deactivate|confirm-payment)(?:\?|$)/.test(url)) { + return json(route, {}); + } + if (/\/v1\/realunit\/admin\/quotes(?:\?|$)/.test(url)) { + return json(route, [QUOTE, DEACTIVATED]); + } + if (/\/v1\/realunit\/admin\/transactions(?:\?|$)/.test(url)) { + return json(route, [ + { + id: 9001, + uid: 'RT9001FAKE', + type: 'BuyCrypto', + amountInChf: 500, + assets: 'REALU', + created: '2026-02-01T12:00:00.000Z', + userAddress: '0xabc0000000000000000000000000000000008001', + }, + ]); + } + if (path === '/v1/realunit/holders') { + return json(route, { + holders: [{ address: '0xabc0000000000000000000000000000000008001', balance: '100', percentage: 1.5 }], + pageInfo: { hasNextPage: false, hasPreviousPage: false, startCursor: '', endCursor: '' }, + totalCount: 1, + }); + } + if (path === '/v1/realunit/tokenInfo') { + return json(route, { + totalShares: { total: '1000', timestamp: '2026-02-01T12:00:00.000Z', txHash: '0x1' }, + totalSupply: { value: '2000', timestamp: '2026-02-01T12:00:00.000Z' }, + }); + } + if (path === '/v1/realunit/price/history') { + return json(route, [{ timestamp: '2026-02-01T12:00:00.000Z', chf: 10, eur: 10, usd: 11 }]); + } + if (path === '/v1/realunit/price') { + return json(route, { timestamp: '2026-02-01T12:00:00.000Z', chf: 10, eur: 10, usd: 11 }); + } + + if ( + request.method() === 'GET' && + ['/v1/language', '/v1/fiat', '/v1/asset', '/v1/bankAccount', '/v1/country'].includes(path) + ) { + return json(route, []); + } + if (request.method() === 'GET' && path === '/v1/setting/infoBanner') { + return json(route, null); + } + + await route.continue(); + }); + + await page.route('**/v2/**', async (route: Route) => { + const request = route.request(); + const path = new URL(request.url()).pathname; + if (request.method() === 'GET' && path === '/v2/user') { + return json(route, { + id: 1, + activeAddress: { + address: '0x0000000000000000000000000000000000000001', + wallet: 'DFX', + }, + addresses: [], + kyc: { level: 50, status: 'Completed' }, + language: { id: 1, name: 'English', symbol: 'EN' }, + }); + } + await route.continue(); + }); +} + +test.describe('RealUnit dashboard - Visual Regression Tests', () => { + test('home pending table shows user id and name and hides deactivated quotes', async ({ page }) => { + await installDashboardRoutes(page); + await page.goto(`/realunit?session=${encodeURIComponent(jwt())}&lang=en`); + await page.waitForLoadState('networkidle'); + await page.waitForTimeout(1000); + + await expect(page.getByRole('heading', { name: 'Pending Transactions' })).toBeVisible(); + await expect(page.getByRole('cell', { name: 'Active Buyer' }).first()).toBeVisible(); + await expect(page.getByText('Deactivated Buyer')).toHaveCount(0); + + const pendingSection = page.getByRole('heading', { name: 'Pending Transactions' }).locator('xpath=..'); + await pendingSection.scrollIntoViewIfNeeded(); + await expect(pendingSection).toHaveScreenshot('realunit-dashboard-01-pending.png', { + maxDiffPixels: 5000, + }); + }); +}); diff --git a/e2e/realunit-quotes.spec.ts b/e2e/realunit-quotes.spec.ts index d6cf21907..49e2367de 100644 --- a/e2e/realunit-quotes.spec.ts +++ b/e2e/realunit-quotes.spec.ts @@ -1,7 +1,4 @@ -import { test, expect, APIRequestContext, Page, Route } from '@playwright/test'; -import * as fs from 'fs'; -import * as path from 'path'; -import { createTestCredentials } from './test-wallet'; +import { test, expect, Page, Route } from '@playwright/test'; /** * E2E Visual Regression Tests: RealUnit quote list + detail variants @@ -10,13 +7,12 @@ import { createTestCredentials } from './test-wallet'; * - /realunit/quotes (pending quote list) * - /realunit/quotes/:id (quote detail: active actions, deactivate overlay, deactivated) * - * Auth is REAL (same admin-token flow as realunit-compliance.spec.ts): the api must be reachable for `/v1/auth` - * and the frontend's own user/role fetch. The admin user has the ADMIN role, which can see both Confirm Payment - * and Deactivate on an active WaitingForPayment Buy. + * Auth is a synthetic Admin/Support JWT. Staff GETs and the quotes admin endpoints are mocked, so + * the suite does not need a live API. A green run does not prove production auth or that the API + * returns these quote fields. * * Feature data is MOCKED with synthetic fixtures via page.route(...), so the baselines are deterministic AND contain - * NO real production data. Only the RealUnit quotes admin endpoints are intercepted; everything else - * (auth/role/user/settings) is passed through via route.continue(). + * NO real production data. * * Intercepted endpoints (base `/v1/` is prepended by useApi): * - GET realunit/admin/quotes[?limit=&offset=] (list — detail screen also loads this and finds by id) @@ -26,44 +22,6 @@ import { createTestCredentials } from './test-wallet'; * Synthetic fixtures: fake ids (8000+), fixed ISO dates, fake addresses — no production data. */ -const API_URL = process.env.REACT_APP_API_URL! + '/v1'; - -/** - * Read ADMIN_SEED from the API .env file - */ -function getAdminSeed(): string { - const apiEnvPath = path.join(__dirname, '../../api/.env'); - if (!fs.existsSync(apiEnvPath)) { - throw new Error(`API .env file not found at ${apiEnvPath}. Run 'npm run setup' in the API directory first.`); - } - const content = fs.readFileSync(apiEnvPath, 'utf8'); - const match = content.match(/^ADMIN_SEED=(.*)$/m); - if (!match || !match[1]) { - throw new Error('ADMIN_SEED not found in API .env file. Run "npm run setup" in the API directory first.'); - } - return match[1]; -} - -/** - * Authenticate with admin credentials - */ -async function getAdminAuth(request: APIRequestContext): Promise { - const adminSeed = getAdminSeed(); - const credentials = await createTestCredentials(adminSeed); - - const response = await request.post(`${API_URL}/auth`, { - data: credentials, - }); - - if (!response.ok()) { - const body = await response.text().catch(() => 'unknown'); - throw new Error(`Admin auth failed: ${response.status()} - ${body}`); - } - - const data = await response.json(); - return data.accessToken; -} - // --------------------------------------------------------------------------- // Synthetic fixtures (mirror RealUnitQuote from the admin quotes list/detail screens). // --------------------------------------------------------------------------- @@ -77,6 +35,8 @@ interface RealUnitQuote { estimatedAmount: number; created: string; userAddress?: string; + userId?: number; + userName?: string; deactivatedAt?: string; } @@ -89,6 +49,8 @@ const ACTIVE_BUY: RealUnitQuote = { estimatedAmount: 9.87, created: '2026-02-01T12:00:00.000Z', userAddress: '0xabc0000000000000000000000000000000008001', + userId: 8001, + userName: 'Active Buyer', }; const DEACTIVATED_BUY: RealUnitQuote = { @@ -101,6 +63,8 @@ const DEACTIVATED_BUY: RealUnitQuote = { created: '2026-02-01T12:00:00.000Z', deactivatedAt: '2026-02-02T12:00:00.000Z', userAddress: '0xdef0000000000000000000000000000000008002', + userId: 8002, + userName: 'Deactivated Buyer', }; // Stable order for the GET list mock (detail screens also consume this list and find by id). @@ -129,20 +93,7 @@ function jwt(role: 'Admin' | 'Support'): string { })}.synthetic`; } -async function installQuotesRoutes(page: Page): Promise { - await page.route('**/v1/**', async (route: Route) => { - const url = route.request().url(); - - if (DEACTIVATE_RE.test(url)) return json(route, {}); - if (CONFIRM_PAYMENT_RE.test(url)) return json(route, {}); - if (LIST_RE.test(url)) return json(route, QUOTES); - - // everything else (auth, role, user, settings) hits the real api - await route.continue(); - }); -} - -/** Quotes mocks plus staff GETs so a synthetic Support JWT does not 401-clear the session. */ +/** Quotes mocks plus staff GETs so a synthetic JWT does not 401-clear the session. */ async function installQuotesRoutesWithStaffMocks(page: Page): Promise { await page.route('**/v1/**', async (route: Route) => { const request = route.request(); @@ -189,14 +140,10 @@ async function installQuotesRoutesWithStaffMocks(page: Page): Promise { } test.describe('RealUnit Quotes - Visual Regression Tests', () => { - let token: string; - - test.beforeAll(async ({ request }) => { - token = await getAdminAuth(request); - }); + const token = jwt('Admin'); - test('list shows active and deactivated WaitingForPayment Buy rows', async ({ page }) => { - await installQuotesRoutes(page); + test('list shows only pending WaitingForPayment Buy rows', async ({ page }) => { + await installQuotesRoutesWithStaffMocks(page); // lang=en: selectors and baselines are English; without it user.language decides the UI locale. await page.goto(`/realunit/quotes?session=${encodeURIComponent(token)}&lang=en`); @@ -204,9 +151,9 @@ test.describe('RealUnit Quotes - Visual Regression Tests', () => { await page.waitForTimeout(1000); await expect(page.getByRole('heading', { name: 'Pending Transactions' })).toBeVisible(); - // blanked addresses uniquely identify each fixture row (list does not render uid) - await expect(page.getByText(/0xabc00\.\.\.08001/)).toBeVisible(); - await expect(page.getByText(/0xdef00\.\.\.08002/)).toBeVisible(); + await expect(page.getByText('Active Buyer')).toBeVisible(); + await expect(page.getByText('8001')).toBeVisible(); + await expect(page.getByText('Deactivated Buyer')).toHaveCount(0); await expect(page).toHaveScreenshot('realunit-quotes-01-list.png', { fullPage: true, @@ -215,7 +162,7 @@ test.describe('RealUnit Quotes - Visual Regression Tests', () => { }); test('active WaitingForPayment Buy detail shows Confirm Payment and Deactivate', async ({ page }) => { - await installQuotesRoutes(page); + await installQuotesRoutesWithStaffMocks(page); await page.goto(`/realunit/quotes/${ACTIVE_BUY.id}?session=${encodeURIComponent(token)}&lang=en`); await page.waitForLoadState('networkidle'); @@ -231,7 +178,7 @@ test.describe('RealUnit Quotes - Visual Regression Tests', () => { }); test('Deactivate Quote opens the confirmation overlay', async ({ page }) => { - await installQuotesRoutes(page); + await installQuotesRoutesWithStaffMocks(page); await page.goto(`/realunit/quotes/${ACTIVE_BUY.id}?session=${encodeURIComponent(token)}&lang=en`); await page.waitForLoadState('networkidle'); @@ -249,7 +196,7 @@ test.describe('RealUnit Quotes - Visual Regression Tests', () => { }); test('deactivated quote detail shows Deactivated At and no action buttons', async ({ page }) => { - await installQuotesRoutes(page); + await installQuotesRoutesWithStaffMocks(page); await page.goto(`/realunit/quotes/${DEACTIVATED_BUY.id}?session=${encodeURIComponent(token)}&lang=en`); await page.waitForLoadState('networkidle'); diff --git a/e2e/screenshots/baseline/realunit-dashboard.spec.ts-realunit-dashboard-01-pending-chromium-darwin.png b/e2e/screenshots/baseline/realunit-dashboard.spec.ts-realunit-dashboard-01-pending-chromium-darwin.png new file mode 100644 index 0000000000000000000000000000000000000000..0f68ceb4346240c483aec16094865bcff8c25574 GIT binary patch literal 16182 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 literal 0 HcmV?d00001 diff --git a/e2e/screenshots/baseline/realunit-quotes.spec.ts-realunit-quotes-01-list-chromium-darwin.png b/e2e/screenshots/baseline/realunit-quotes.spec.ts-realunit-quotes-01-list-chromium-darwin.png index a0b18c92a61a9764a85ec106a5e49eadf80720d2..6309462c661220b3ff67ebd992e92b919fffba16 100644 GIT binary patch literal 22789 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

Dc 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 ceWS7qdN^S$H!y6h0iJ<$we^3?)3Ocv8AP7J?$Z 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