Files
pn-new-crm/tests/e2e/smoke/31-i18n-form-fields.spec.ts
Matt 221ae5784e chore(autonomous-session): consolidate uncommitted work from prior session
Bundles the prior autonomous-session output that was sitting unstaged:

- Em-dash sweep across src/ + tests/ (en-dash/em-dash to hyphen, ~2280 instances)
- country-flag-icons rollout (CountryFlag component, replaces emoji glyphs that
  never rendered on Windows; lazy-loads the 3x2 SVG index as a single chunk
  after the per-subpath dynamic-import approach silently failed in webpack)
- Admin IA Phase 1+2: 7-domain regroup, 41 to 38 pages, /admin/berths index,
  redirects (ocr to ai, reports to dashboard, invitations to users),
  docs/admin-ia-proposal.md
- Per-template email tester (registry + endpoint + UI on Email admin page)
- Cancel-document mode picker (delete-from-Documenso vs keep-for-audit)
- Dashboard PDF report: 25 widgets, SVG charts, date-range picker, 11 resolvers
- Customize-widgets per-region sortables at xl+ (charts/rails/feed); single
  flat sortable below xl when the layout stacks; per-viewport saved orders
- Audit doc updates capturing each shipped item
- Lint fixes: react-compiler immutability in DonutChart (reduce instead of
  let-reassign), set-state-in-effect disables in CountryFlag and
  UploadForSigning preview-bytes effect, unused 'confirm' destructures in
  interest contract + reservation tabs, unescaped apostrophe in test-template
  card copy
2026-05-23 00:52:59 +02:00

66 lines
2.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* i18n PR11 - combobox surfaces.
*
* Proves the new country / timezone / phone / subdivision combobox triggers
* actually render in the create sheets we wired in PR68. 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();
});
});