66 lines
2.6 KiB
TypeScript
66 lines
2.6 KiB
TypeScript
|
|
/**
|
|||
|
|
* i18n PR11 — combobox surfaces.
|
|||
|
|
*
|
|||
|
|
* Proves the new country / timezone / phone / subdivision combobox triggers
|
|||
|
|
* actually render in the create sheets we wired in PR6–8. Doesn't exercise
|
|||
|
|
* the full data round-trip (covered by integration tests + form-spec
|
|||
|
|
* coverage); this spec just guards the wiring against regression.
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
import { test, expect } from '@playwright/test';
|
|||
|
|
|
|||
|
|
import { login, navigateTo, waitForSheet } from './helpers';
|
|||
|
|
|
|||
|
|
test.describe('i18n combobox wiring', () => {
|
|||
|
|
test.beforeEach(async ({ page }) => {
|
|||
|
|
await login(page, 'super_admin');
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
test('new residential client form exposes phone, country, timezone, subdivision pickers', async ({
|
|||
|
|
page,
|
|||
|
|
}) => {
|
|||
|
|
await navigateTo(page, '/residential/clients');
|
|||
|
|
await page.locator('main').getByRole('button', { name: /^new$/i }).first().click();
|
|||
|
|
await waitForSheet(page);
|
|||
|
|
|
|||
|
|
const sheet = page.locator('[role="dialog"]');
|
|||
|
|
// PhoneInput renders a flag dropdown + national-format input.
|
|||
|
|
await expect(sheet.locator('[data-testid="rc-phone-country"]')).toBeVisible();
|
|||
|
|
// Country / timezone combobox triggers.
|
|||
|
|
await expect(sheet.locator('[data-testid="rc-nationality"]')).toBeVisible();
|
|||
|
|
await expect(sheet.locator('[data-testid="rc-timezone"]')).toBeVisible();
|
|||
|
|
// Country of residence + subdivision (subdivision is disabled until country picked).
|
|||
|
|
await expect(sheet.locator('[data-testid="rc-residence-country"]')).toBeVisible();
|
|||
|
|
await expect(sheet.locator('[data-testid="rc-residence-subdivision"]')).toBeVisible();
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
test('new client form swaps nationality input for CountryCombobox', async ({ page }) => {
|
|||
|
|
await navigateTo(page, '/clients');
|
|||
|
|
// Sheet trigger label varies by tenant — stick to the topbar action.
|
|||
|
|
await page
|
|||
|
|
.locator('main')
|
|||
|
|
.getByRole('button', { name: /^new client$/i })
|
|||
|
|
.first()
|
|||
|
|
.click();
|
|||
|
|
await waitForSheet(page);
|
|||
|
|
|
|||
|
|
const sheet = page.locator('[role="dialog"]');
|
|||
|
|
await expect(sheet.locator('[data-testid="client-nationality"]')).toBeVisible();
|
|||
|
|
await expect(sheet.locator('[data-testid="client-timezone"]')).toBeVisible();
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
test('new company form exposes incorporation country + subdivision pickers', async ({ page }) => {
|
|||
|
|
await navigateTo(page, '/companies');
|
|||
|
|
await page
|
|||
|
|
.locator('main')
|
|||
|
|
.getByRole('button', { name: /^new company$/i })
|
|||
|
|
.first()
|
|||
|
|
.click();
|
|||
|
|
await waitForSheet(page);
|
|||
|
|
|
|||
|
|
const sheet = page.locator('[role="dialog"]');
|
|||
|
|
await expect(sheet.locator('[data-testid="company-incorp-country"]')).toBeVisible();
|
|||
|
|
await expect(sheet.locator('[data-testid="company-incorp-subdivision"]')).toBeVisible();
|
|||
|
|
});
|
|||
|
|
});
|