✔ las subentradas de Personas conservan contexto y reemplazan el filtro de la vista (25.937714ms) ✔ el dashboard no ofrece selector de compañía y conserva las métricas de cada ámbito (49.547507ms) ✔ el resumen de compañía es la entrada por defecto y ofrece destinos reales (82.401977ms) ✔ los índices de catálogos distinguen definiciones globales y variantes de compañía (8.083466ms) ✔ el listado presenta estado vacío y acceso al alta sin formularios visibles (44.398465ms) ✖ la ficha presenta datos de la compañía, contactos y acceso a sedes (53.636941ms) ✔ el formulario de sede ofrece dirección y teléfono opcionales (8.145767ms) ✖ el formulario de persona distingue contactos de cuentas de acceso y permite datos opcionales (10.261584ms) ✔ asignar un departamento permite añadir el primero y conserva el selector en edición (21.754179ms) ✔ el tablero de compañía tiene composición propia, acciones arriba y métricas limitadas a su ámbito (16.052132ms) ✔ el menú de compañía ordena trabajo y personas por grupos sin repetir las acciones de usuario (27.868629ms) ✔ el menú muestra el contador de infraestructura: ready (36.208298ms) ✔ el menú muestra el contador de infraestructura: pending (41.612742ms) ✔ el menú muestra el contador de infraestructura: error (49.576607ms) ✔ sedes: listado traducido con filtro de archivadas y solo sedes activas por defecto (41.406941ms) ✔ la navegación de compañía conserva 21 enlaces reales, sección activa y contexto es/en (77.86574ms) ✔ Personas conserva búsqueda por nombre, contactos, consulta y distinción ñ/n en es/en (195.641108ms) ✔ Personas admite actividad en listado y ficha, con los demás criterios de contexto (7.528762ms) ✔ el catálogo de aplicaciones de compañía conserva cursor, filtros y retorno a ficha (1.445512ms) ✔ las funcionalidades archivadas no tienen rutas activas (0.535804ms) ✔ el filtro de plantilla permite abrir listados y fichas de activos y recursos (0.682706ms) ✔ el filtro de plantilla se limita a los inventarios que conocen sus definiciones (0.323303ms) ✔ todas las secciones de compañía tienen una ruta propia y el índice es el resumen (1.748815ms) ✔ los índices de catálogos y los cinco catálogos globales son destinos independientes (0.356003ms) ✔ las configuraciones conservan la compañía y el UUID del perfil (0.531005ms) ✔ las rutas desconocidas y los parámetros inválidos no abren una sección por defecto (2.520721ms) ✔ la ficha de puesto tiene ruta propia, conserva el UUID y rechaza identificadores inválidos (0.809107ms) ✔ dominios: enlaces a cuentas y grupos limitados al entorno de la compañía (0.672306ms) ✔ los parámetros de contexto llegan al consumidor sin crear rutas nuevas ni aceptar claves ajenas (0.626605ms) ✔ catálogo de aplicaciones: UUID global y criterios propios sin compañía ficticia (0.527704ms) ✔ catálogo SO: ruta específica y filtros, sin confundir con aplicaciones (0.401103ms) ℹ tests 31 ℹ suites 0 ℹ pass 29 ℹ fail 2 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 6447.052094 ✖ failing tests: test at src/web/companies/shared/companies-page.test.tsx:1:6023 ✖ la ficha presenta datos de la compañía, contactos y acceso a sedes (53.636941ms) AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value: assert.ok(markup.includes("Personas (1)")) at TestContext. (/home/david/dev/metis-desk/modules/companies/src/web/companies/shared/companies-page.test.tsx:229:10) at async Test.run (node:internal/test_runner/test:1404:7) at async Test.processPendingSubtests (node:internal/test_runner/test:969:7) { generatedMessage: true, code: 'ERR_ASSERTION', actual: false, expected: true, operator: '==', diff: 'simple' } test at src/web/companies/shared/companies-page.test.tsx:1:7439 ✖ el formulario de persona distingue contactos de cuentas de acceso y permite datos opcionales (10.261584ms) AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value: assert.ok(markup.includes("Esta persona no tiene acceso a Metis Desk")) at TestContext. (/home/david/dev/metis-desk/modules/companies/src/web/companies/shared/companies-page.test.tsx:259:10) at async Test.run (node:internal/test_runner/test:1404:7) at async Test.processPendingSubtests (node:internal/test_runner/test:969:7) { generatedMessage: true, code: 'ERR_ASSERTION', actual: false, expected: true, operator: '==', diff: 'simple' }