[WEB] Fixear 25 errores TS preexistentes en main (MedioForm + SeccionForm + pagination + tests) #26

Closed
opened 2026-04-18 13:55:16 +00:00 by dmolinari · 0 comments
Owner

Contexto

Descubierto durante smoke E2E de UDT-011 (PR #25). npm run build (tsc -b) falla con 25 errores en main — todos preexistentes, no introducidos por UDT-011.

Archivos afectados

Archivo Errores Naturaleza
src/web/src/features/medios/components/MedioForm.tsx 5 Zod v4: z.coerce.number() sin <number> → resolver infiere unknown (TS2322 cascading)
src/web/src/features/secciones/components/SeccionForm.tsx 8 Zod v4: z.coerce.number() sin <number> + z.enum() usa errorMap (v3 API) → TS2322 + TS2769
src/web/src/components/ui/pagination.tsx 1 ButtonProps importado como valor, debe ser import type (TS1484)
src/web/src/tests/features/auth/ProtectedRoute.test.tsx 2 HomePage y renderProtected declarados pero no usados (TS6133)
src/web/src/tests/features/fiscal/iva/TipoDeIvaFormModal.test.tsx 3 beforeAll, afterAll, afterEach importados pero no usados (TS6133)
src/web/src/tests/features/medios/MedioForm.test.tsx 3 beforeAll, afterAll, afterEach importados pero no usados (TS6133)
src/web/src/tests/features/secciones/SeccionesListPage.test.tsx 1 userEvent importado pero no usado (TS6133)
src/web/src/tests/features/users/updateUserPermisosOverrides.test.ts 1 result.grant accede campo inexistente — UsuarioPermisos tiene overrides.grant (TS2339)
src/web/src/tests/features/users/UsersListPage.test.tsx 1 within importado pero no usado (TS6133)

Naturaleza del bug

Dos categorías:

1. Zod v4 syntax (patrón idéntico a issue #21 / PR #23)

  • z.coerce.number() sin genérico <number> → Zod v4 infiere tipo unknown, rompe el tipo del zodResolver de @hookform/resolvers
  • z.enum(values, { errorMap: ... }) → en Zod v4 el parámetro se llama error, no errorMap

2. TypeScript strict mode violations

  • verbatimModuleSyntax requiere import type para tipos (TS1484)
  • noUnusedLocals + noUnusedParameters detecta imports no usados en tests (TS6133)
  • Interface UsuarioPermisos tiene overrides.grant pero test accede grant directamente (TS2339 — mismatch de shape)

Impacto

  • main no buildea limpio con tsc -b
  • Cualquier CI que corra npm run build falla
  • Runtime no afectado (Vite dev server usa esbuild sin typecheck)
  • Vitest pasa porque no ejecuta typecheck

Fix

Este issue se cierra con el PR que fixea los 9 archivos afectados.

Branch: fix/ADM-011-web-ts-cleanup

Relacionado

  • PR #23: fix similar para PuntoDeVentaForm.tsx (ADM-008) — mismo patrón Zod v4
  • PR #25: descubierto durante smoke de UDT-011

Criterios de cierre

  • cd src/web && npm run build → 0 errores
  • npm run test -- --run → 275/275 passing (sin regresión)
  • PR independiente con Closes #N en body mergeado a main
## Contexto Descubierto durante smoke E2E de UDT-011 (PR #25). `npm run build` (tsc -b) falla con 25 errores en `main` — todos preexistentes, no introducidos por UDT-011. ## Archivos afectados | Archivo | Errores | Naturaleza | |---------|---------|------------| | `src/web/src/features/medios/components/MedioForm.tsx` | 5 | Zod v4: `z.coerce.number()` sin `<number>` → resolver infiere `unknown` (TS2322 cascading) | | `src/web/src/features/secciones/components/SeccionForm.tsx` | 8 | Zod v4: `z.coerce.number()` sin `<number>` + `z.enum()` usa `errorMap` (v3 API) → TS2322 + TS2769 | | `src/web/src/components/ui/pagination.tsx` | 1 | `ButtonProps` importado como valor, debe ser `import type` (TS1484) | | `src/web/src/tests/features/auth/ProtectedRoute.test.tsx` | 2 | `HomePage` y `renderProtected` declarados pero no usados (TS6133) | | `src/web/src/tests/features/fiscal/iva/TipoDeIvaFormModal.test.tsx` | 3 | `beforeAll`, `afterAll`, `afterEach` importados pero no usados (TS6133) | | `src/web/src/tests/features/medios/MedioForm.test.tsx` | 3 | `beforeAll`, `afterAll`, `afterEach` importados pero no usados (TS6133) | | `src/web/src/tests/features/secciones/SeccionesListPage.test.tsx` | 1 | `userEvent` importado pero no usado (TS6133) | | `src/web/src/tests/features/users/updateUserPermisosOverrides.test.ts` | 1 | `result.grant` accede campo inexistente — `UsuarioPermisos` tiene `overrides.grant` (TS2339) | | `src/web/src/tests/features/users/UsersListPage.test.tsx` | 1 | `within` importado pero no usado (TS6133) | ## Naturaleza del bug Dos categorías: **1. Zod v4 syntax (patrón idéntico a issue #21 / PR #23)** - `z.coerce.number()` sin genérico `<number>` → Zod v4 infiere tipo `unknown`, rompe el tipo del `zodResolver` de `@hookform/resolvers` - `z.enum(values, { errorMap: ... })` → en Zod v4 el parámetro se llama `error`, no `errorMap` **2. TypeScript strict mode violations** - `verbatimModuleSyntax` requiere `import type` para tipos (TS1484) - `noUnusedLocals` + `noUnusedParameters` detecta imports no usados en tests (TS6133) - Interface `UsuarioPermisos` tiene `overrides.grant` pero test accede `grant` directamente (TS2339 — mismatch de shape) ## Impacto - `main` no buildea limpio con `tsc -b` - Cualquier CI que corra `npm run build` falla - Runtime no afectado (Vite dev server usa esbuild sin typecheck) - Vitest pasa porque no ejecuta typecheck ## Fix Este issue se cierra con el PR que fixea los 9 archivos afectados. Branch: `fix/ADM-011-web-ts-cleanup` ## Relacionado - PR #23: fix similar para `PuntoDeVentaForm.tsx` (ADM-008) — mismo patrón Zod v4 - PR #25: descubierto durante smoke de UDT-011 ## Criterios de cierre - [ ] `cd src/web && npm run build` → 0 errores - [ ] `npm run test -- --run` → 275/275 passing (sin regresión) - [ ] PR independiente con `Closes #N` en body mergeado a main
dmolinari added the followup label 2026-04-18 13:55:16 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dmolinari/SIG-CM2.0#26