metis-desk/.artifacts/account-deletion/test.log

851 lines
97 KiB
Plaintext
Raw Normal View History

$ turbo run test
• turbo 2.9.14
• Packages in scope: @metis/assets, @metis/companies, @metis/core, @metis/identity, @metis/relationship-contracts, @metis/resources, @metis/server, @metis/web, @repo/rdx-ddd, @repo/rdx-ui, @repo/rdx-utils, @repo/shadcn-ui, @repo/typescript-config
• Running test in 13 packages
• Remote caching disabled
@metis/core:test: cache bypass, force executing 2283a7af50b4c3f8
@repo/rdx-ddd:test: cache bypass, force executing b722cdfdd985a9bd
@repo/rdx-ui:test: cache bypass, force executing 08ae8a00e21c47c8
@metis/relationship-contracts:test: cache bypass, force executing 97138537b462262f
@metis/core:test: $ node --import tsx --test src/common/dto/response/get-health.response.dto.test.ts src/web/navigation/shared/browser-navigation.test.ts src/web/http/shared/api/csrf-fetch.test.ts
@metis/relationship-contracts:test: $ node --import tsx --test --test-isolation=none src/*.test.ts
@repo/rdx-ui:test: $ TSX_TSCONFIG_PATH=../../tsconfig.json node --import tsx --test src/select-with-action.test.tsx src/selection-components.test.tsx src/entity-list.test.tsx src/compact-collections.test.tsx src/entity-column-visibility.test.tsx src/time-line.test.tsx src/count-badge.test.tsx src/scrollable-tabs.test.tsx src/field-sections.test.tsx src/phone-link.test.tsx src/lib/reorder-items.test.ts src/lib/text-search.test.ts src/remote-option-list.test.tsx src/dialog-help.test.tsx
@repo/rdx-ddd:test: $ node --import tsx --test src/domain-model.test.ts
@metis/relationship-contracts:test: ✔ referencias UUID estables, normalizadas, inmutables y con proveedor coherente (10.751076ms)
@metis/relationship-contracts:test: ✔ namespaces canónicos, sin identificadores de tabla, espacios ni segmentos vacíos (0.940807ms)
@metis/relationship-contracts:test: ✔ el catálogo valida propietarios, namespaces, duplicados y definiciones (7.275051ms)
@metis/relationship-contracts:test: ✔ el catálogo crea una copia profundamente inmutable sin congelar la entrada (0.695705ms)
@metis/relationship-contracts:test: ✔ relaciones dirigidas, simétricas y derivadas respetan su semántica declarativa (3.016322ms)
@metis/relationship-contracts:test: ✔ consulta estricta: límites, cursores y ausencia de privilegios del navegador (4.563332ms)
@metis/relationship-contracts:test: ✔ validación de ámbito, tipo y sentido de consulta sin conceder autorización (1.278109ms)
@metis/relationship-contracts:test: ✔ orígenes y páginas conservan referencias sin mezclar compañías (2.342216ms)
@metis/relationship-contracts:test: ✔ servicios de prueba por lotes y errores compatibles con Result de Metis (1.34711ms)
@metis/relationship-contracts:test: ✔ el grafo de dependencias del paquete es acíclico y ajeno a módulos funcionales (54.991288ms)
@metis/relationship-contracts:test: ✔ las importaciones internas de producción no contienen ciclos ni imports privados (5.841041ms)
@metis/relationship-contracts:test: ✔ capacidades semánticas explícitas sin registrar proveedores ficticios (2.374917ms)
@metis/relationship-contracts:test: ✔ rol semántico opcional conserva la compatibilidad de vistas comunes sin metadatos libres (2.252516ms)
@metis/relationship-contracts:test: ℹ tests 13
@metis/relationship-contracts:test: ℹ suites 0
@metis/relationship-contracts:test: ℹ pass 13
@metis/relationship-contracts:test: ℹ fail 0
@metis/relationship-contracts:test: ℹ cancelled 0
@metis/relationship-contracts:test: ℹ skipped 0
@metis/relationship-contracts:test: ℹ todo 0
@metis/relationship-contracts:test: ℹ duration_ms 774.233357
@repo/rdx-ddd:test: ✔ UniqueID genera UUID v7 distintos, conserva UUID existentes y rechaza identificadores inválidos (25.243278ms)
@repo/rdx-ddd:test: ✔ los Value Objects validan y comparan valores semánticos por tipo (4.19853ms)
@repo/rdx-ddd:test: ✔ entidades y agregados comparan identidad y tipo, independientemente de sus atributos (0.795806ms)
@metis/core:test: ✔ el contrato de estado exige un timestamp UTC y un estado conocido (4.047928ms)
@metis/core:test: ✔ el endpoint de estado no acepta parámetros de consulta (0.586604ms)
@repo/rdx-ddd:test: ℹ tests 3
@repo/rdx-ddd:test: ℹ suites 0
@repo/rdx-ddd:test: ℹ pass 3
@repo/rdx-ddd:test: ℹ fail 0
@repo/rdx-ddd:test: ℹ cancelled 0
@repo/rdx-ddd:test: ℹ skipped 0
@repo/rdx-ddd:test: ℹ todo 0
@repo/rdx-ddd:test: ℹ duration_ms 874.151861
@metis/core:test: ✔ las escrituras leen la sesión actual de Query y siguen su rotación y eliminación (48.513742ms)
@metis/core:test: ✔ GET, HEAD y OPTIONS funcionan sin sesión y no envían tokens suministrados por el llamador (1.636811ms)
@metis/core:test: ✔ mantiene cuerpos JSON, binarios, headers, cancelación y respuestas de error sin reintentar (3.105622ms)
@metis/core:test: ✔ rechaza tokens ausentes o inválidos y destinos externos antes de enviar una petición (1.008307ms)
@metis/core:test: ✔ estado de ficha: tablas independientes, aislamiento entre quince propietarios y metadatos ajenos conservados (18.025727ms)
@metis/core:test: ✔ estado de ficha: metadatos malformados, ámbitos externos y valores incompatibles no se restauran (5.315637ms)
@metis/core:test: ✔ History mantiene URL, filtros, Atrás/Adelante, cierre y suscripciones sin entradas duplicadas (2.050114ms)
@metis/core:test: ✔ las redirecciones internas rechazan destinos externos, barras invertidas y caracteres de control (0.363502ms)
@metis/core:test: ✔ el retorno reutiliza la entrada exacta del listado y conserva el estado ajeno (1.107208ms)
@metis/core:test: ✔ el contexto de retorno valida versión, coordenadas, ámbito y filtros sin guardar registros (3.539625ms)
@metis/core:test: ✔ las consultas Unicode válidas no pierden contexto al superar 2000 caracteres codificados (10.01097ms)
@metis/core:test: ✔ retorno de detalle y listado conviven sin aceptar el ámbito de otro propietario (0.635704ms)
@metis/core:test: ℹ tests 14
@metis/core:test: ℹ suites 0
@metis/core:test: ℹ pass 14
@metis/core:test: ℹ fail 0
@metis/core:test: ℹ cancelled 0
@metis/core:test: ℹ skipped 0
@metis/core:test: ℹ todo 0
@metis/core:test: ℹ duration_ms 1175.637486
@repo/rdx-ui:test: ✔ la tabla compacta conserva semántica y enlaces sin herramientas de exploración (31.342922ms)
@repo/rdx-ui:test: ✔ los valores ausentes comparten criterio con EntityTable y cero permanece visible (1.842213ms)
@repo/rdx-ui:test: ✔ carga y error sin datos no afirman vacío; caché obsoleta conserva registros (10.859977ms)
@repo/rdx-ui:test: ✔ la ampliación identifica el contenido controlado sin añadir controles a colecciones pequeñas (5.066836ms)
@repo/rdx-ui:test: ✔ EntityTable mantiene búsqueda, columnas y paginación con su contrato anterior (40.96499ms)
@repo/rdx-ui:test: ✔ preview controlado: recuperar la ampliación muestra el origen con identidad estable sin perder el modo local (10.919677ms)
@repo/rdx-ui:test: ✔ contador: conserva cero y formatea el total por idioma (66.789871ms)
@repo/rdx-ui:test: ✔ contador: carga y error muestran ausencia de total, conservando una cifra anterior si existe (1.592911ms)
@repo/rdx-ui:test: ✔ la ayuda breve respeta la capacidad efectiva, también con fuentes ampliadas (3.259123ms)
@repo/rdx-ui:test: ✔ auto y expanded reservan 40rem al formulario y 20rem al panel (0.848706ms)
@repo/rdx-ui:test: ✔ el contenido inline conserva descripción, ámbito, ejemplos, orientación e icono (24.857276ms)
@repo/rdx-ui:test: ✔ las columnas elegidas se restauran al volver a crear la tabla, incluidas las que llegan después (57.124704ms)
@repo/rdx-ui:test: ✔ las preferencias quedan aisladas por lista y no se aplican cuando no se solicita persistencia (9.065164ms)
@repo/rdx-ui:test: ✔ datos locales inválidos no rompen el listado y solo se aceptan valores booleanos (0.516003ms)
@repo/rdx-ui:test: ✔ almacenamiento bloqueado o sin cuota permite seguir utilizando la selección local (0.393902ms)
@repo/rdx-ui:test: ✔ buscar columnas ignora tildes y mayúsculas, conserva ñ y no modifica visibilidad (1.021207ms)
@repo/rdx-ui:test: ✔ los grupos conservan orden, omiten vacíos y deduplican IDs sin perder columnas sin grupo (0.385002ms)
@repo/rdx-ui:test: ✔ restaurar preferencias vacías recupera defaults actuales sin tocar otras tablas (7.459052ms)
@repo/rdx-ui:test: ✔ los contadores distinguen visibilidad, total y coincidencias en es/en (0.314202ms)
@repo/rdx-ui:test: ✔ listado remoto: recupera columnas por ámbito y protege nombre y acciones (16.431016ms)
@repo/rdx-ui:test: ✔ los rangos vacíos y la última página nunca muestran índices fuera del conjunto (2.441518ms)
@repo/rdx-ui:test: ✔ el listado pagina el conjunto y repite su rango conservando controles accesibles (65.227861ms)
@repo/rdx-ui:test: ✔ la búsqueda local reduce el conjunto completo antes de paginar y permite limpiarla (12.292687ms)
@repo/rdx-ui:test: ✔ el texto formado solo por espacios se puede borrar sin confundir vacío con ausencia de coincidencias (8.826163ms)
@repo/rdx-ui:test: ✔ la búsqueda genérica ignora acentos y Unicode equivalente, manteniendo ñ y el texto escrito (29.184507ms)
@repo/rdx-ui:test: ✔ el orden inicial ascendente se indica en la cabecera y se aplica antes de paginar (9.389667ms)
@repo/rdx-ui:test: ✔ una columna explícita puede establecer un orden inicial descendente (10.027871ms)
@repo/rdx-ui:test: ✔ el orden inicial ignora acciones y columnas sin valor comparable (8.131458ms)
@repo/rdx-ui:test: ✔ las tablas sin columnas ordenables conservan el orden recibido (7.082351ms)
@repo/rdx-ui:test: ✔ el orden inicial mantiene la estabilidad en empates y se indica con el listado vacío (13.236694ms)
@repo/rdx-ui:test: ✔ una búsqueda controlada conserva los resultados filtrados por la pantalla (6.829548ms)
@repo/rdx-ui:test: ✔ carga, error y búsqueda vacía se distinguen de un listado sin registros (33.999241ms)
@repo/rdx-ui:test: ✔ el rango y la configuración también se traducen en inglés (6.692848ms)
@repo/rdx-ui:test: ✔ acciones: disparador de solo icono con etiqueta accesible y menú contextual (6.555947ms)
@repo/rdx-ui:test: ✔ acciones: operación principal visible con nombre accesible y secundarias en el menú (5.095736ms)
@repo/rdx-ui:test: ✔ acciones: conserva la restricción de la principal y evita menús sin secundarias (2.884521ms)
@repo/rdx-ui:test: ✔ el estado activo se distingue en verde del inactivo (0.456903ms)
@repo/rdx-ui:test: ✔ acciones: siempre última, compacta y anclada a la derecha, aunque se declare primero (9.383666ms)
@repo/rdx-ui:test: ✔ los textos comunes mantienen claves, idiomas y parámetros del rango (0.265402ms)
@repo/rdx-ui:test: ✔ las celdas vacías muestran un guion largo en es/en y conservan cero, textos y controles (155.730602ms)
@repo/rdx-ui:test: ✔ las columnas opcionales empiezan ocultas sin ocultar identificación ni acciones obligatorias (6.316945ms)
@repo/rdx-ui:test: ✔ Nombre ordena sin tildes ni mayúsculas antes de paginar, en español e inglés (10.141872ms)
@repo/rdx-ui:test: ✔ Nombre tiene prioridad inicial aunque otra columna comparable aparezca antes (4.16733ms)
@repo/rdx-ui:test: ✔ Nombre conserva empates entre acentos, mayúsculas y Unicode compuesto al ordenar descendente (4.501932ms)
@repo/rdx-ui:test: ✔ paginación por cursor: navegación accesible y límites sin inventar totales (0.724705ms)
@repo/rdx-ui:test: ✔ estados presentacionales: carga, datos anteriores y recuperación son mutuamente distinguibles (0.307703ms)
@repo/rdx-ui:test: ✔ carga inicial conserva estructura, no anuncia cero registros y no fabrica acciones (6.377345ms)
@repo/rdx-ui:test: ✔ refetch y error posterior muestran los datos disponibles sin skeletons (10.363074ms)
@repo/rdx-ui:test: ✔ error inicial, vacío válido y filtros sin coincidencias tienen contenidos distintos en es/en (11.490481ms)
@repo/rdx-ui:test: ✔ el contrato de navegación rechaza páginas mal formadas y ordenaciones desconocidas (0.536604ms)
@repo/rdx-ui:test: ✔ navegación controlada ordena y pagina realmente sin alterar el consumidor no controlado (5.126536ms)
@repo/rdx-ui:test: ✔ quitar sección conserva todos los campos y su obligatoriedad sin mutar el origen (1.768212ms)
@repo/rdx-ui:test: ✔ copiar remapea secciones conservando campos y reglas con identidades independientes (0.454203ms)
@repo/rdx-ui:test: ✔ secciones visuales ordenadas, abiertas inicialmente y campos sin sección (10.123371ms)
@repo/rdx-ui:test: ✔ consulta compacta conserva grupos, campos sin sección y avisos sin tarjetas anidadas (3.841827ms)
@repo/rdx-ui:test: ✔ pestañas de grupos conservan controles ocultos, orden y campos sin grupo, omitiendo grupos vacíos (15.306308ms)
@repo/rdx-ui:test: ✔ el editor ofrece asas etiquetadas para secciones y campos, deshabilitadas al guardar (89.334932ms)
@repo/rdx-ui:test: ✔ soltar antes o después del destino conserva el orden de los demás elementos (5.62464ms)
@repo/rdx-ui:test: ✔ destinos inválidos y posiciones sin cambio no producen una nueva ordenación (0.316602ms)
@repo/rdx-ui:test: ✔ reordenar mantiene identidades, secciones y obligatoriedad sin modificar los objetos (0.216101ms)
@repo/rdx-ui:test: ✔ la comparación parcial pliega vocales, caja y representaciones Unicode equivalentes (9.986371ms)
@repo/rdx-ui:test: ✔ ñ conserva identidad compuesta y descompuesta y otras escrituras no se transliteran (0.401703ms)
@repo/rdx-ui:test: ✔ puntuación técnica, números y espacios interiores siguen siendo significativos (0.418203ms)
@repo/rdx-ui:test: ✔ vacíos y valores sin texto no serializan objetos arbitrarios (0.271802ms)
@repo/rdx-ui:test: ✔ formatea números españoles y conserva extensiones para visualización y llamada (1.712412ms)
@repo/rdx-ui:test: ✔ preserva números internacionales no españoles sin inventar agrupaciones (3.454924ms)
@repo/rdx-ui:test: ✔ el enlace telefónico usa el número formateado y mantiene un nombre accesible (10.479774ms)
@repo/rdx-ui:test: ✔ selector remoto: selección compacta al principio, radios etiquetados y orden recibido sin paginación local (45.15262ms)
@repo/rdx-ui:test: ✔ selector remoto: vacío, carga y error no se confunden y errores ocultan filas obsoletas (12.074485ms)
@repo/rdx-ui:test: ✔ pestañas desplazables: conserva identidad, selección y etiquetas largas sin añadir focos al SSR (38.432372ms)
@repo/rdx-ui:test: ✔ el selector agrupa la acción etiquetada sin convertirla en envío de formulario (23.383066ms)
@repo/rdx-ui:test: ✔ el selector deshabilitado protege ambas acciones y admite selección sin botón (7.740854ms)
@repo/rdx-ui:test: ✔ La capacidad contextual admite presupuestos propios sin acoplarlos al viewport (1.081008ms)
@repo/rdx-ui:test: ✔ La pérdida de capacidad cierra sin abrir modal y los eventos repetidos no publican estado (0.753806ms)
@repo/rdx-ui:test: ✔ selección visual: vacío con acciones separadas y ficha elegida sin controles de envío (13.348695ms)
@repo/rdx-ui:test: ✔ selección visual: pendiente, deshabilitado y bloqueo protegen las acciones correspondientes (4.989135ms)
@repo/rdx-ui:test: ✔ PickerList: búsqueda etiquetada, selección única y opciones indisponibles visibles (39.113777ms)
@repo/rdx-ui:test: ✔ PickerList: estados de carga y vacío no presentan opciones falsas (21.10215ms)
@repo/rdx-ui:test: ✔ el rango del selector usa la entidad y su plural, nunca el título de la acción (45.15522ms)
@repo/rdx-ui:test: ✔ acciones multipaso: requisitos bloquean avance y guardado en cada paso (5.58954ms)
@repo/rdx-ui:test: ✔ acciones multipaso: guardar pendiente impide avanzar y retroceder (1.851714ms)
@repo/rdx-ui:test: ✔ línea temporal: conserva el orden aportado, fechas semánticas, autor y contenido (13.248293ms)
@repo/rdx-ui:test: ✔ línea temporal vacía: muestra el mensaje del consumidor como estado (0.573804ms)
@repo/rdx-ui:test: ℹ tests 83
@repo/rdx-ui:test: ℹ suites 0
@repo/rdx-ui:test: ℹ pass 83
@repo/rdx-ui:test: ℹ fail 0
@repo/rdx-ui:test: ℹ cancelled 0
@repo/rdx-ui:test: ℹ skipped 0
@repo/rdx-ui:test: ℹ todo 0
@repo/rdx-ui:test: ℹ duration_ms 3207.299766
@metis/resources:test: cache bypass, force executing eecbca772cc1d2a1
@metis/identity:test: cache bypass, force executing 420e86a3143935a0
@metis/identity:test: $ node --import tsx --test src/api/domain/user.aggregate.test.ts src/api/application/global-resource-authorization.test.ts src/api/infrastructure/persistence/user-persistence.mapper.test.ts src/api/infrastructure/security/scrypt-password-hasher.test.ts src/web/shared/api/identity-api.test.ts
@metis/resources:test: $ TSX_TSCONFIG_PATH=../../tsconfig.json node --import tsx --test src/api/application/application-coincidence.test.ts src/api/domain/resource-catalog.test.ts src/api/domain/resource.test.ts src/api/domain/resource-template-propagation.test.ts src/api/application/resource-lifecycle.test.ts src/web/catalog/shared/catalog.test.tsx src/web/resources/shared/resources.test.tsx src/web/resources/list/helpers/resource-columns.test.tsx src/web/resources/list/helpers/resource-list-preferences.test.tsx src/web/resources/shared/resource-values.test.ts src/api/domain/template-sections.test.ts src/web/catalog-fields/select/catalog-field-selection.test.tsx src/api/domain/directory-domain.test.ts src/api/domain/network-share.test.ts src/api/domain/resource-scope.test.ts src/api/infrastructure/persistence/resource-scope-reader.test.ts src/api/application/resource-scope.test.ts src/api/application/resource-reference-contracts.test.ts src/api/domain/global-resource.test.ts src/web/global-applications/shared/global-applications.test.tsx src/api/domain/operating-system-identity.test.ts src/api/application/global-operating-system-contracts.test.ts src/api/application/global-operating-system-policy.test.ts src/web/resources/shared/ui/resource-characteristic-control.test.tsx
@metis/resources:test: ✔ R2.6: nombre y proveedor son señales, nunca equivalencia confirmada (5.613539ms)
@metis/resources:test: ✔ R2.6: preserva tildes, puntuación, abreviaturas, ediciones, versiones y números (0.477203ms)
@metis/resources:test: ✔ R2.6: homónimos genéricos se mantienen débiles y los UUID nunca se sustituyen (39.72538ms)
@metis/identity:test: ✔ resources.global.manage exige sesión vigente, flag persistido e identidad bootstrap (7.795755ms)
@metis/identity:test: ✔ el administrador inicial no se puede crear ni actualizar inactivo (21.745954ms)
@metis/identity:test: ✔ actualizar es idempotente, conserva identidad y cambiar contraseña invalida sesiones (5.978942ms)
@metis/identity:test: ✔ crear genera UUID v7 y rehidratar conserva el UUID original (2.870121ms)
@metis/resources:test: ✔ F2: SO global público tipado, sin contaminación de aplicaciones ni perfiles (12.458988ms)
@metis/resources:test: ✔ F2: elegibilidad de SO exige stock real y campos globales (0.341602ms)
@metis/resources:test: ✔ F2: contrato 3 y gates de SO independientes; aplicaciones no abren SO (0.368002ms)
@metis/identity:test: ✔ el mapper reconstruye Value Objects y conserva la identidad y valores persistidos (8.594461ms)
@metis/identity:test: ✔ una inconsistencia persistida falla sin generar un identificador sustituto ni filtrar datos (3.964828ms)
@metis/resources:test: ✔ F3: cualquier escritor valida identidad publicada, corrección documental e historial (41.603894ms)
@metis/resources:test: ✔ recurso: activar/desactivar conserva datos e historial y repetir estado no añade revisiones (14.472202ms)
@metis/resources:test: ✔ recurso: valida identidades y rechaza actuar sobre recursos ajenos (8.49726ms)
@metis/resources:test: ✔ recurso: propaga el bloqueo por asociaciones y permite desactivar (2.019114ms)
@metis/resources:test: ✔ recurso: elimina y la repetición devuelve ausencia sin efectos adicionales (1.597711ms)
@metis/resources:test: ✔ elegibilidad global exige serie exacta y campos globales; las copias no elevan ámbito (1.583411ms)
@metis/resources:test: ✔ schemas discriminan owner, propósito, OS local y proyecciones privadas (15.344708ms)
@metis/resources:test: ✔ requests acotan lotes, consulta, paginación y rechazan privilegios o integración (4.551232ms)
@metis/resources:test: ✔ búsqueda literal conserva ñ, puntuación y espacios; pagina tras filtrar con desempate UUID (6.691347ms)
@metis/resources:test: ✔ R2.5 admite gates configurables; los valores predeterminados siguen cerrados (0.518004ms)
@metis/resources:test: ✔ R2.5: software y perfil se habilitan por separado y requieren catálogo (0.420303ms)
@metis/resources:test: ✔ R2.5: perfil no depende de software ni abre asociaciones con catálogo cerrado (0.209901ms)
@metis/resources:test: ✔ lectores locales: excluyen global y otra compañía incluso si el repositorio los entrega; stockKey no depende del nombre (54.672986ms)
@metis/resources:test: ✔ HTTP actual sin MariaDB: aislamiento con 15 compañías, 50 recursos locales, alta, edición, estado e historial (301.30263ms)
@metis/resources:test: ✔ DNS: normalización explícita, etiqueta única heredada, punto raíz y política ASCII IDN (2.71452ms)
@metis/resources:test: ✔ capacidad estable: la plantilla renombrada sigue siendo dominio y una copia arbitraria no (7.983956ms)
@metis/resources:test: ✔ alta, edición, DNS y archivo usan Resource y conservan su identidad e historial (17.516424ms)
@metis/resources:test: ✔ catálogo: DNS obligatorio protegido, NetBIOS opcional e inicialización idempotente (17.467324ms)
@metis/resources:test: ✔ identificadores de campo: mayúsculas no cambian identidad ni permiten duplicados (0.886107ms)
@metis/resources:test: ✔ global: crear exige UUID v7 y conserva identidad y propietario en edición e idempotencia (17.236722ms)
@metis/resources:test: ✔ global: captura por stockKey, sin depender del nombre traducido de la plantilla (1.812913ms)
@metis/resources:test: ✔ SMB acepta \\NAS-01\Finanzas (2.489418ms)
@metis/resources:test: ✔ SMB acepta \\files.example.local\Docs (0.339402ms)
@metis/resources:test: ✔ SMB acepta \\192.168.5.10\C$ (0.123501ms)
@metis/resources:test: ✔ SMB acepta \\samba\Diseño\Año 2026 (0.554904ms)
@metis/resources:test: ✔ SMB acepta \\NAS\Docs\ (0.363303ms)
@metis/resources:test: ✔ SMB rechaza "" (0.214102ms)
@metis/resources:test: ✔ SMB rechaza "\\\\" (0.213302ms)
@metis/resources:test: ✔ SMB rechaza "\\\\host" (0.106001ms)
@metis/resources:test: ✔ SMB rechaza "\\\\\\share" (1.606612ms)
@metis/resources:test: ✔ SMB rechaza "\\\\host\\\\" (0.611404ms)
@metis/resources:test: ✔ SMB rechaza "C:\\Datos" (0.196401ms)
@metis/resources:test: ✔ SMB rechaza "https://host/share" (0.105801ms)
@metis/resources:test: ✔ SMB rechaza "\\\\host\\share\\.." (0.385203ms)
@metis/resources:test: ✔ SMB rechaza "\\\\host\\share\\." (0.179701ms)
@metis/resources:test: ✔ SMB rechaza "\\\\?\\UNC\\host\\share" (0.190101ms)
@metis/resources:test: ✔ SMB rechaza "\\\\host\\share\\\\child" (0.258802ms)
@metis/resources:test: ✔ SMB rechaza "\\\\host\\share." (0.255902ms)
@metis/resources:test: ✔ SMB rechaza "\\\\host\\ share" (0.077801ms)
@metis/resources:test: ✔ SMB rechaza "\\\\ho st\\share" (0.0603ms)
@metis/resources:test: ✔ SMB rechaza "\\\\host\\bad\u0000" (0.103601ms)
@metis/resources:test: ✔ SMB rechaza "\\\\host\\bad\ud800" (0.115301ms)
@metis/resources:test: ✔ SMB rechaza "\\\\host\\xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" (0.072801ms)
@metis/resources:test: ✔ SMB: comparación conservadora, alias y Unicode sin transformaciones destructivas (0.557504ms)
@metis/resources:test: ✔ SMB: semántica por stockKey y protección del catálogo sin bloquear etiquetas u obligatoriedad (21.862955ms)
@metis/resources:test: ✔ SMB: alta validada y diagnóstico histórico sin conversión ni revisión (20.522645ms)
@metis/resources:test: ✔ SMB: nuevas altas fijan integración access y rechazan contexto incompatible (14.162601ms)
@metis/resources:test: ✔ F1: identidad completa, edición conocida/no aplicable/desconocida e inactivos (4.562432ms)
@metis/resources:test: ✔ F1: normalización conservadora no equipara ediciones, releases ni ausencia desconocida (0.403502ms)
@metis/resources:test: ✔ F1: evolución de stock personalizada e idempotente; no elimina campos ni cambia obligatoriedad (38.832674ms)
@metis/resources:test: ✔ F1: un catálogo anterior evoluciona sin sobrescribir bindings ni recursos particulares (14.833305ms)
@metis/resources:test: ✔ campo PNG Icono: evoluciona tres plantillas sin reemplazar personalizaciones ni reponer bindings retirados (69.245589ms)
@metis/resources:test: ✔ catálogo de recursos: serie idempotente, UUID v7, características opcionales y protección (31.759324ms)
@metis/resources:test: ✔ ámbitos, tipos, listas, campos externos y disponibilidad por compañía (8.007156ms)
@metis/resources:test: ✔ licencias: ampliar un catálogo previo conserva identidades y disponibilidad (30.580916ms)
@metis/resources:test: ✔ plantillas globales de serie editables: conserva identidad, asociaciones, disponibilidad y cambios al reiniciar (20.274644ms)
@metis/resources:test: ✔ campos globales de serie editables: listas ampliables, tipo fijo y opciones existentes conservadas (39.002076ms)
@metis/resources:test: ✔ sistema operativo: plantilla con uso explícito, copia y ampliación sin sobrescribir definiciones (8.46226ms)
@metis/resources:test: ✔ iconos de recursos: todas las plantillas de serie tienen su icono y el arranque no repone los retirados (20.187243ms)
@metis/resources:test: ✔ iconos de recursos: cambiar y retirar el icono conserva identidad y asociaciones, con guardado idempotente (19.602839ms)
@metis/resources:test: ✔ iconos de recursos: claves desconocidas, cadenas vacías e iconos de campos se rechazan (5.74254ms)
@metis/resources:test: ✔ ámbito: pares válidos y rechazo runtime de propietarios contradictorios o ausentes (30.841918ms)
@metis/resources:test: ✔ ámbito: proyección preparada separada; HTTP local conserva exactamente su contrato (7.874355ms)
@metis/resources:test: ✔ ámbito: edición y propagación locales conservan propietario, UUID e historia; globales son solo lectura (2.624519ms)
@metis/resources:test: ✔ Resource: propaga altas, orden y retiradas conservando cero/falso, valores e historial; repetir no genera revisiones (30.450016ms)
@metis/resources:test: ✔ Resource: los campos retirados no impiden añadir una plantilla completa y no se fusionan por nombre (4.065029ms)
@metis/resources:test: ✔ Resource: retirar secciones conserva solo las necesarias y mover o reincorporar campos aplica el destino (0.737806ms)
@metis/resources:test: ✔ recursos: tipos, valores opcionales y obligatorios, cero/falso y campos desconocidos (14.505603ms)
@metis/resources:test: ✔ recurso: identidad estable, historial, desactivación e idempotencia (2.470618ms)
@metis/resources:test: ✔ buzón como recurso: correo válido, cuenta opcional, cambios auditados y tipo fijo (3.393724ms)
@metis/resources:test: ✔ secciones: nombres, identidades, referencias y un solo nivel (16.051813ms)
@metis/resources:test: ✔ secciones: igualdad, orden, identidad y persistencia JSON (4.986835ms)
@metis/resources:test: ✔ secciones: plantillas globales y locales conservan separación y UUID al editar (9.112064ms)
@metis/resources:test: ✔ secciones de serie: el arranque conserva una plantilla sin grupos y su disponibilidad (28.640302ms)
@metis/resources:test: ✔ especificación: secciones capturadas, edición posterior y obligatoriedad independiente (25.307379ms)
@metis/resources:test: ✔ lector legacy: roundtrip conserva UUID, revisiones, valores, actor, fecha y DTO sin columna scope (23.473765ms)
@metis/resources:test: ✔ lector: solo el adaptador legacy conocido interpreta ausencia; ningún ámbito inválido usa fallback (5.139937ms)
@metis/resources:test: ✔ proyecciones operativas: global sintético se rechaza antes de SQL, el recurso local sin integración no crea proyección (118.019734ms)
@metis/resources:test: ✔ escritor scoped: envía company explícito, preserva la salida legacy y rechaza global (4.865534ms)
@metis/identity:test: ✔ scrypt usa sales distintas y rechaza contraseñas y hashes incorrectos (2205.191982ms)
@metis/identity:test: ✔ la sesión valida la respuesta y conserva el contrato público utilizado por la aplicación (35.595351ms)
@metis/identity:test: ✔ login, configuración inicial, usuarios y contraseñas conservan rutas, body y CSRF (7.216251ms)
@metis/identity:test: ✔ cerrar sesión espera la respuesta de la operación sin perder el token (2.311416ms)
@metis/identity:test: ✔ los errores HTTP no filtran detalles internos y los datos de sesión inválidos se rechazan (9.692469ms)
@metis/identity:test: ℹ tests 11
@metis/identity:test: ℹ suites 0
@metis/identity:test: ℹ pass 11
@metis/identity:test: ℹ fail 0
@metis/identity:test: ℹ cancelled 0
@metis/identity:test: ℹ skipped 0
@metis/identity:test: ℹ todo 0
@metis/identity:test: ℹ duration_ms 2535.969422
@metis/resources:test: ✔ selección múltiple añade un lote sin duplicados y conserva las reglas y el orden existentes (4.462732ms)
@metis/resources:test: ✔ añadir desde una sección asigna solo los campos nuevos a su destino y conserva los existentes (1.37921ms)
@metis/resources:test: ✔ la selección respeta el límite del schema, valida identificadores y rechaza el conjunto vacío (1.904614ms)
@metis/resources:test: ✔ el listado reutiliza tabla, búsqueda y casillas traducidas y conserva las selecciones bloqueadas (90.175237ms)
@metis/resources:test: ✔ L04.2: campos de recursos recuperan orden y página sin heredar otra pestaña (106.537252ms)
@metis/resources:test: ✔ el catálogo muestra plantillas de serie y acción de alta sin formularios junto al listado (82.186679ms)
@metis/resources:test: ✔ los formularios tienen ayuda inferior y selección de campos en diálogo con alta rápida (24.310772ms)
@metis/resources:test: ✔ iconos de recursos: catálogo y selector traducido conservan la selección al editar y copiar (213.782908ms)
@metis/resources:test: ✔ catálogo global: lectura mínima y navegación traducidas, sin administración para ordinarios (34.304842ms)
@metis/resources:test: ✔ R2.4: mutación global invalida solo instalaciones cacheadas que usan su UUID (3.315423ms)
@metis/resources:test: ✔ R2.5: cambio global invalida configuraciones afectadas y preserva otras compañías (1.377609ms)
@metis/resources:test: ✔ SO global: lectura pública es/en conserva identidad estructurada y navegación propia (10.999077ms)
@metis/resources:test: ✔ SO global: invalida software y su catálogo sin refrescar aplicaciones ni perfiles (1.41171ms)
@metis/resources:test: ✔ columnas de características de recursos: identidad, campos nuevos de catálogo, instantáneas y nombres repetidos (19.452737ms)
@metis/resources:test: ✔ columnas elegidas es/en: cero, falso, fecha localizada, unidades y guion para campos ajenos (64.294553ms)
@metis/resources:test: ✔ los campos compartidos conservan un único ID y todos sus contextos de catálogo e instantánea (2.248916ms)
@metis/resources:test: ✔ columnas generales e integración es/en: notas, fechas, autores y referencias semánticas (28.149099ms)
@metis/resources:test: ✔ orden de recursos: aislamiento por compañía y pestaña, incluida Todo (14.629903ms)
@metis/resources:test: ✔ orden de recursos: una URL explícita prevalece sobre la preferencia sin sobrescribirla (0.956207ms)
@metis/resources:test: ✔ preferencias opcionales: datos inválidos y almacenamiento bloqueado no impiden listar (1.158408ms)
@metis/resources:test: ✔ cambiar pestaña limpia el orden y la paginación anteriores conservando la búsqueda (0.334003ms)
@metis/resources:test: ✔ la integración de buzón conserva su configuración explícita y no inventa referencias (1.264309ms)
@metis/resources:test: ✔ los valores iniciales toleran catálogo pendiente y limitan el nombre sin cambiar la entrada (1.066008ms)
@metis/resources:test: ✔ nombre propuesto: prioriza los identificadores de cada plantilla y limita su longitud (31.647324ms)
@metis/resources:test: ✔ nombre propuesto: contempla campos personalizados y descarta valores no identificativos (0.433603ms)
@metis/resources:test: ✔ paso de campos: exige valores obligatorios y acepta cero y respuestas negativas (4.652333ms)
@metis/resources:test: ✔ paso de campos: requiere la dirección de buzón aunque la plantilla la marque opcional (4.551232ms)
@metis/resources:test: ✔ recursos: listado con alta modal y sin formulario visible, en español e inglés (100.487508ms)
@metis/resources:test: ✔ Recursos: las pestañas incluyen plantillas vacías e inactivas y combinan identidad y búsqueda (326.281401ms)
@metis/resources:test: ✔ recurso: ayuda inferior, plantilla con alta rápida y sin asignaciones de recursos (15.018306ms)
@metis/resources:test: ✔ licencia: formulario reutilizable con campos opcionales y ayuda antes de guardar (18.241428ms)
@metis/resources:test: ✔ asistencia: alta de recurso con plantilla específica y características opcionales (7.586953ms)
@metis/resources:test: ✔ alta por pasos: solo muestra la plantilla inicialmente y traduce su navegación (16.068113ms)
@metis/resources:test: ✔ indicador de alta: conserva la plantilla elegida y explica el paso actual en ambos idiomas (8.051457ms)
@metis/resources:test: ✔ recursos: resumen de plantilla con unidades, booleanos traducidos, cero y límite de cuatro (15.409708ms)
@metis/resources:test: ✔ recursos: ficha lateral compacta traducida con cierre, acciones y contenido relacionado (11.871583ms)
@metis/resources:test: ✔ recursos: inventario y panel usan el icono vigente de la plantilla sin cambiar la especificación (15.327108ms)
@metis/resources:test: ✔ dominio: el formulario traduce el contexto pendiente y solo presenta un entorno confirmado (10.916177ms)
@metis/resources:test: ✔ SMB: formulario explica acceso automático o histórico sin selectores incompatibles, es/en (7.868855ms)
@metis/resources:test: ✔ UNC: presentación por segmentos conserva exactamente separadores, Unicode y valores repetidos (4.800234ms)
@metis/resources:test: ✔ campo declarativo: traduce opciones propias y conserva valores que coinciden con el prototipo (41.06259ms)
@metis/resources:test: ℹ tests 126
@metis/resources:test: ℹ suites 0
@metis/resources:test: ℹ pass 126
@metis/resources:test: ℹ fail 0
@metis/resources:test: ℹ cancelled 0
@metis/resources:test: ℹ skipped 0
@metis/resources:test: ℹ todo 0
@metis/resources:test: ℹ duration_ms 5139.287091
@metis/assets:test: cache bypass, force executing 86c4d0036baaca5b
@metis/assets:test: $ TSX_TSCONFIG_PATH=../../tsconfig.json node --import tsx --test src/api/domain/asset-catalog.test.ts src/api/domain/asset.test.ts src/api/domain/asset-template-propagation.test.ts src/api/domain/infrastructure.test.ts src/api/domain/workstation.test.ts src/api/domain/asset-relationship.test.ts src/web/catalog/shared/catalog.test.tsx src/web/assets/shared/inventory.test.tsx src/web/assets/shared/helpers/asset-columns.test.tsx src/web/assets/detail/ui/asset-detail.test.tsx src/web/infrastructure/shared/infrastructure.test.tsx src/api/domain/support.test.ts src/web/support-connections/shared/support.test.tsx src/api/domain/brand.test.ts src/web/brands/shared/brands.test.tsx src/api/domain/template-sections.test.ts src/web/workstations/shared/helpers/workstation-creation.test.ts src/web/workstations/shared/workstation-name.test.ts src/web/workstations/rename/api/rename-workstation.test.ts src/web/assets/list/asset-workstation.test.tsx src/web/assets/select/asset-selection.test.tsx src/web/catalog-fields/select/catalog-field-selection.test.tsx src/api/domain/directory-membership.test.ts src/api/infrastructure/persistence/directory-membership-provider.test.ts src/web/directory-memberships/shared/directory-memberships.test.tsx src/api/domain/network-share-publication.test.ts src/web/network-share-publications/shared/network-share-ui.test.tsx src/api/application/workstation-concurrency.test.ts src/web/workstations/shared/helpers/workstation-asset-availability.test.ts
@metis/assets:test: ✔ WD04.4: revisión obsoleta rechazada antes de reemplazar composición; revisión actual conserva historial (8.002661ms)
@metis/assets:test: ✔ el catálogo inicial es idempotente, con UUID propios y características opcionales (67.169313ms)
@metis/assets:test: ✔ la disponibilidad por compañía conserva el global y los campos desactivados (51.12489ms)
@metis/assets:test: ✔ las plantillas validan ámbito, campos activos e identidad estable al editar (14.512411ms)
@metis/assets:test: ✔ los campos validan listas, igualdad semántica, duplicados y tipo fijo (0.849306ms)
@metis/assets:test: ✔ solo elimina definiciones globales personalizadas que no usan otras plantillas (1.594312ms)
@metis/assets:test: ✔ iconos opcionales: cambio y retirada conservan identidad y asociaciones (26.877305ms)
@metis/assets:test: ✔ el arranque conserva un icono de serie retirado sin cambiar UUID, campos o disponibilidad (39.984005ms)
@metis/assets:test: ✔ los iconos desconocidos o asociados a campos se rechazan (3.710729ms)
@metis/assets:test: ✔ revisión explícita conserva identidades, copias y otras plantillas (40.239807ms)
@metis/assets:test: ✔ plantillas globales de serie editables: conserva identidad, asociaciones, disponibilidad y cambios al reiniciar (39.765303ms)
@metis/assets:test: ✔ campos globales de serie editables: listas ampliables, tipo fijo y opciones existentes conservadas (15.621219ms)
@metis/assets:test: ✔ Las relaciones validan sus extremos, normalizan nombres y distinguen dirección (6.353948ms)
@metis/assets:test: ✔ Retirar conserva UUID, extremos y auditoría; repetir la retirada no modifica el historial (2.048216ms)
@metis/assets:test: ✔ Tipos de relación de serie protegidos, ámbito de compañía y dirección fija (51.688295ms)
@metis/assets:test: ✔ Asset: propaga altas, orden y retiradas conservando cero/falso, valores e historial; repetir no genera revisiones (49.171475ms)
@metis/assets:test: ✔ Asset: los campos retirados no impiden añadir una plantilla completa y no se fusionan por nombre (2.330818ms)
@metis/assets:test: ✔ Asset: retirar secciones conserva solo las necesarias y mover o reincorporar campos aplica el destino (1.077908ms)
@metis/assets:test: ✔ las secciones conservadas desambiguan el nombre respetando el límite de 100 caracteres (0.715805ms)
@metis/assets:test: ✔ Características opcionales, tipos y límites; cero y falso son valores presentes (10.766982ms)
@metis/assets:test: ✔ Activo conserva UUID y revisiones; los cambios iguales son idempotentes (1.228409ms)
@metis/assets:test: ✔ texto largo conserva saltos de línea y rechaza tipos no textuales (0.580004ms)
@metis/assets:test: ✔ estado técnico y uso: asignaciones calculadas, elegibilidad exclusiva/compartida e historial conservado (0.814307ms)
@metis/assets:test: ✔ Fecha de alta opcional: calendario real, independencia de compra, revisiones e idempotencia (2.933523ms)
@metis/assets:test: ✔ sedes archivadas: nuevas referencias rechazadas y referencias anteriores conservadas (3.745429ms)
@metis/assets:test: ✔ Marcas: nombre normalizado, UUID v7, protección de serie, estado e idempotencia (8.680066ms)
@metis/assets:test: ✔ Marcas: SVG estáticos con transparencia, límites y contenido activo rechazado (30.101729ms)
@metis/assets:test: ✔ Marcas: los 23 fabricantes tienen SVG local validado; Clónico no representa una marca (11.416287ms)
@metis/assets:test: ✔ Marcas: añadir, sustituir y quitar SVG conserva identidad, origen y actualización idempotente (2.962022ms)
@metis/assets:test: ✔ Marcas: mapper bidireccional conserva identidad y rechaza persistencia inválida (4.020431ms)
@metis/assets:test: ✔ Marcas: unicidad, edición y eliminación de personalizadas, con protección de serie (12.729197ms)
@metis/assets:test: ✔ pertenencia explícita: un rol, identidad UUID v7 e idempotencia sin nuevas revisiones (3.804829ms)
@metis/assets:test: ✔ promoción y retirada del rol conservan asociación e historial; finalización repetida es inocua (2.986822ms)
@metis/assets:test: ✔ cambio de dominio crea sucesor único y cierre atómico planificado; admite reintentos y rechaza conflictos (3.285525ms)
@metis/assets:test: ✔ capacidad, estado y compañía: rechaza extremos incompatibles sin inferencias de nombre (0.457403ms)
@metis/assets:test: ✔ activos o dominios inactivos conservan vínculos y permiten cerrar o retirar el rol (3.085423ms)
@metis/assets:test: ✔ mapper: rehidratación consistente, UUID conservados y rechazo de revisiones corruptas (2.145716ms)
@metis/assets:test: ✔ contratos estrictos: roles, paginación, UUID, acciones y privilegios arbitrarios (9.368472ms)
@metis/assets:test: ✔ infraestructura: interfaces independientes, varias IP, normalización y UUID v7 (8.167262ms)
@metis/assets:test: ✔ infraestructura: mismo contenido no cambia identidades ni añade revisiones (5.20574ms)
@metis/assets:test: ✔ infraestructura: rechaza nombres/IP duplicados, valores inválidos e identidades ajenas (4.758636ms)
@metis/assets:test: ✔ infraestructura: límites y direcciones repetidas entre interfaces o compañías permitidas (7.962561ms)
@metis/assets:test: ✔ publicación: alta, periodo, cierre idempotente e identidad persistida (11.049284ms)
@metis/assets:test: ✔ publicación: cardinalidad y reintento idéntico no crean periodos (0.693706ms)
@metis/assets:test: ✔ publicación: traslado explícito y replay estable incluso tras finalizar sucesor (1.183409ms)
@metis/assets:test: ✔ publicación: estados, recurso no SMB, identidad y fechas inválidas (1.125308ms)
@metis/assets:test: ✔ publicación: definición compatible con contratos comunes sin rol ni proveedor network (6.583251ms)
@metis/assets:test: ✔ asistencia: UUID v7, historial, cambios semánticos y fechas (4.755736ms)
@metis/assets:test: ✔ asistencia: preferido disponible y entrada estricta (1.32861ms)
@metis/assets:test: ✔ asistencia: varios métodos, duplicados, preferido único y activo retirado (2.255318ms)
@metis/assets:test: ✔ herramientas: protección de serie y desactivación sin perder referencias (0.701405ms)
@metis/assets:test: ✔ asistencia: mapper bidireccional y rechazo de historial inconsistente (10.077877ms)
@metis/assets:test: ✔ secciones: nombres, identidades, referencias y un solo nivel (6.233647ms)
@metis/assets:test: ✔ secciones: igualdad, orden, identidad y persistencia JSON (5.30674ms)
@metis/assets:test: ✔ secciones: plantillas globales y locales conservan separación y UUID al editar (6.121847ms)
@metis/assets:test: ✔ secciones de serie: el arranque conserva una plantilla sin grupos y su disponibilidad (60.35106ms)
@metis/assets:test: ✔ especificación: secciones capturadas, edición posterior y obligatoriedad independiente (27.326808ms)
@metis/assets:test: ✔ Puestos: composición opcional, referencias válidas y límites sin duplicados (9.422172ms)
@metis/assets:test: ✔ Puestos: UUID estable e historial de composición, persona y estado; guardado idéntico idempotente (8.228263ms)
@metis/assets:test: ✔ Puestos: ordenador principal exclusivo, único e independiente del responsable (1.25431ms)
@metis/assets:test: ✔ baja del puesto: libera composición y responsable, conserva historial e identidad y es idempotente (1.427311ms)
@metis/assets:test: ✔ definición real: proveedor, cardinalidad vigente, roles e inmutabilidad (5.803745ms)
@metis/assets:test: ✔ cursor firmado: vinculación a consulta y operador, sin aceptar UUID libres ni alteraciones (4.807337ms)
@metis/assets:test: ✔ extensión de Assets validada: roles y estados cerrados, UUID original y ámbito (4.855737ms)
@metis/assets:test: ✔ ficha de activo es/en: página con dos pestañas, información actual, relaciones y contenido de compañía (168.517881ms)
@metis/assets:test: ✔ historial del activo conserva instantáneas antiguas, interfaces retiradas y conexiones en ambos sentidos, ordenadas por fecha (28.004513ms)
@metis/assets:test: ✔ ficha de activo distingue carga, error y activo inexistente (10.48098ms)
@metis/assets:test: ✔ acciones: crear solo para portátiles, sobremesa y servidores disponibles (4.178831ms)
@metis/assets:test: ✔ acciones: abrir el puesto asociado aunque el activo sea periférico, no operativo o el puesto esté inactivo (1.977015ms)
@metis/assets:test: ✔ acciones: compañía y plantilla correctas; asociaciones solo históricas no bloquean el alta (0.656705ms)
@metis/assets:test: ✔ alta desde activo es/en: composición y ordenador preseleccionados, sede activa y nombre propuesto; edición y compañía se respetan (35.655471ms)
@metis/assets:test: ✔ inventario es/en: crear y ver puesto son acciones visibles fuera del menú (237.044303ms)
@metis/assets:test: ✔ la acción de selección conserva su texto visible como nombre accesible en es/en (37.739787ms)
@metis/assets:test: ✔ selector: comparte búsqueda, pestañas por identidad y columnas del inventario en es/en (194.068778ms)
@metis/assets:test: ✔ selector: filtra conjuntamente por plantilla, nombre, sede y estado; distingue vacío (127.220468ms)
@metis/assets:test: ✔ selector único: controles radio y disparador de diálogo; conserva el alta rápida y el bloqueo (36.039074ms)
@metis/assets:test: ✔ picker: búsqueda rápida disponible durante carga y error, sin anunciar un falso vacío (73.55016ms)
@metis/assets:test: ✔ inventario es/en: icono compacto antes del nombre, plantilla solo textual y ordenación por nombre (51.113489ms)
@metis/assets:test: ✔ columnas de características: identidad, campos nuevos de catálogo, instantáneas y nombres repetidos (31.417139ms)
@metis/assets:test: ✔ columnas elegidas es/en: cero, falso, fecha localizada, unidades y guion para campos ajenos (205.640566ms)
@metis/assets:test: ✔ columnas generales y de red es/en: fechas y autores propios, IP/MAC por interfaz y ausencia real (65.6848ms)
@metis/assets:test: ✔ los campos compartidos conservan un único ID y todos sus contextos de catálogo e instantánea (5.363441ms)
@metis/assets:test: ✔ La capacidad del inventario protege el presupuesto de tabla en el límite real (2.051716ms)
@metis/assets:test: ✔ El resize conserva el contexto abierto al ganar capacidad y nunca abre un modal (1.34351ms)
@metis/assets:test: ✔ Inventario traducido con alta de cabecera y sin formulario junto al listado (173.983123ms)
@metis/assets:test: ✔ Las pestañas incluyen plantillas vacías e inactivas y combinan identidad y búsqueda (263.986295ms)
@metis/assets:test: ✔ El activo ofrece altas relacionadas, ayuda inferior y no encadena una tercera alta (29.178304ms)
@metis/assets:test: ✔ Las fichas leen ambos sentidos y conservan la auditoría de relaciones retiradas (19.080733ms)
@metis/assets:test: ✔ El formulario de tipo de relación presenta ayuda justo antes de sus operaciones (12.92439ms)
@metis/assets:test: ✔ Puestos de trabajo: listado traducido, alta en cabecera y formulario modal (18.320229ms)
@metis/assets:test: ✔ Puestos de trabajo: altas rápidas y ayuda inferior; un activo anidado no ofrece terceras altas (18.658931ms)
@metis/assets:test: ✔ alta de puesto: sede única automática, responsable opcional y cuatro pasos traducidos (17.599823ms)
@metis/assets:test: ✔ la ficha lateral agrupa información y ofrece acciones superiores y enlaces reales (76.189233ms)
@metis/assets:test: ✔ texto largo: área editable con ayuda accesible (9.717768ms)
@metis/assets:test: ✔ las características marcan solo los campos obligatorios y conservan unidad y ayuda (11.128278ms)
@metis/assets:test: ✔ el resumen usa los campos propios de la plantilla, omite vacíos y texto largo y limita a cuatro (9.100264ms)
@metis/assets:test: ✔ alta de activo por pasos: empieza por plantilla, traduce la navegación y bloquea el avance sin selección (17.289221ms)
@metis/assets:test: ✔ el progreso de activos conserva la plantilla y explica los pasos en es/en (24.915174ms)
@metis/assets:test: ✔ las acciones por pasos solo ofrecen guardar al final y bloquean acciones durante el envío (25.72638ms)
@metis/assets:test: ✔ características obligatorias: rechaza ausentes y espacios y conserva cero y falso (0.263202ms)
@metis/assets:test: ✔ nombre propuesto: usa texto de la plantilla, omite marca y vacíos y respeta el límite (4.484831ms)
@metis/assets:test: ✔ diseño del puesto: grupos compactos, columnas por contenedor y resumen sin textos de ausencia (49.489146ms)
@metis/assets:test: ✔ activos del puesto: estado vacío visual traducido y acciones según disponibilidad (26.288284ms)
@metis/assets:test: ✔ diseño del puesto: navegación traducida y acciones bloqueadas durante el guardado (16.743417ms)
@metis/assets:test: ✔ ficha compacta de activo: comparte información, traducciones y acciones sin consultas propias (61.946034ms)
@metis/assets:test: ✔ ordenador principal: tarjetas con selección única, etiquetas es/en y solo los activos del puesto (41.231888ms)
@metis/assets:test: ✔ puestos: URL controla consulta, orden y página y sus enlaces conservan el contexto (17.444722ms)
@metis/assets:test: ✔ Marcas: listado común traducido, filtros y alta modal sin formulario junto a la tabla (153.856271ms)
@metis/assets:test: ✔ Marcas: nombre de serie protegido y ayuda inferior; alta rápida siempre activa (11.370486ms)
@metis/assets:test: ✔ Marcas: eliminar envía CSRF y cuerpo vacío, valida la respuesta y propaga conflictos (29.633425ms)
@metis/assets:test: ✔ Marcas: selector mantiene valores antiguos e inactivos y respeta el límite de alta anidada (16.862928ms)
@metis/assets:test: ✔ Marcas: el campo de serie se identifica por referencia de catálogo, no por el nombre (43.887534ms)
@metis/assets:test: ✔ selección múltiple añade un lote sin duplicados y conserva las reglas y el orden existentes (4.386134ms)
@metis/assets:test: ✔ añadir desde una sección asigna solo los campos nuevos a su destino y conserva los existentes (1.355711ms)
@metis/assets:test: ✔ la selección respeta el límite del schema, valida identificadores y rechaza el conjunto vacío (2.702721ms)
@metis/assets:test: ✔ el listado reutiliza tabla, búsqueda y casillas traducidas y conserva las selecciones bloqueadas (208.220186ms)
@metis/assets:test: ✔ L04.2: campos del catálogo recuperan orden y página desde su URL (257.320458ms)
@metis/assets:test: ✔ el catálogo muestra plantillas de serie y acción de alta sin formularios junto al listado (263.895708ms)
@metis/assets:test: ✔ el catálogo busca nombres sin acentos sin cambiar la consulta ni incluir campos de otras pestañas (69.60983ms)
@metis/assets:test: ✔ los formularios tienen ayuda inferior y reservan el alta rápida al diálogo de selección de campos (54.774517ms)
@metis/assets:test: ✔ las plantillas ofrecen selección visual traducida y conservan el icono al copiar (343.10661ms)
@metis/assets:test: ✔ dominio: roles estructurados, resumen solo de página y enlaces UUID, es/en (62.934679ms)
@metis/assets:test: ✔ tablas: miembro y finalización no se confunden con controlador o pertenencia vigente (7.080154ms)
@metis/assets:test: ✔ activo sin dominio: vacío explícito y asociación solo si el equipo es compatible (15.147815ms)
@metis/assets:test: ✔ activo unido: dominio, rol real, navegación y acciones especializadas (17.277231ms)
@metis/assets:test: ✔ carga y error de consulta no se muestran como dominio vacío (21.10926ms)
@metis/assets:test: ✔ API de lectura: conserva cursor opaco, tipo y ámbito; propaga errores funcionales (36.412777ms)
@metis/assets:test: ✔ traslado usa un único comando atómico, UUID esperado y CSRF; conflicto no se oculta (6.634051ms)
@metis/assets:test: ✔ infraestructura: clasificación de serie independiente del nombre/icono y selección manual prioritaria (2.262917ms)
@metis/assets:test: ✔ infraestructura: el total incluye roles e interfaces, respeta exclusiones manuales y no duplica activos (0.469703ms)
@metis/assets:test: ✔ infraestructura: listado y ficha presentan interfaces/IP en español e inglés, sin puertos (149.114135ms)
@metis/assets:test: ✔ SMB: relaciones paginadas, UNC Unicode y enlaces bidireccionales es/en (48.851771ms)
@metis/assets:test: ✔ SMB: historial conserva periodos y actores y no ofrece modificar periodos finalizados (15.77632ms)
@metis/assets:test: ✔ SMB: vacío real y error de lectura son distintos (14.282809ms)
@metis/assets:test: ✔ SMB: denegación oculta datos previos y carga inicial conserva cabeceras (20.125353ms)
@metis/assets:test: ✔ SMB: transferencia conserva UUID y envía un único comando propietario con CSRF (33.772157ms)
@metis/assets:test: ✔ SMB: búsqueda remota y cursor opaco viajan al servidor (1.743513ms)
@metis/assets:test: ✔ ficha SMB: publicador destacado, datos y timeline real es/en; solo lectura conserva navegación (46.998757ms)
@metis/assets:test: ✔ ficha SMB: vacío, finalizada, carga y denegación son estados distintos (32.88595ms)
@metis/assets:test: ✔ timeline SMB: solo hechos persistidos, UUID estable, traslado y cierre sin sucesor en página (1.608512ms)
@metis/assets:test: ✔ historial v2: utiliza únicamente nombres autorizados aportados y conserva UUID técnicos (17.517333ms)
@metis/assets:test: ✔ asistencia: formulario con alta rápida y ayuda antes de guardar (32.597628ms)
@metis/assets:test: ✔ asistencia: resumen excluye retirados, ordena preferido y conserva la gestión original (13.336693ms)
@metis/assets:test: ✔ asistencia: traducciones y resumen de método (1.553311ms)
@metis/assets:test: ✔ asistencia: resumen documental muestra destino, VPN y preferencia sin acciones de gestión (1.955114ms)
@metis/assets:test: ✔ asistencia: referencia no resuelta conserva el registro con ausencia y explicación (1.049908ms)
@metis/assets:test: ✔ renombrar: usa valores vigentes, normaliza el nombre, valida respuesta y envía CSRF (31.449539ms)
@metis/assets:test: ✔ renombrar: rechaza vacíos, espacios y exceso de longitud antes de realizar peticiones (1.944815ms)
@metis/assets:test: ✔ renombrar: un nombre equivalente no provoca una escritura ni otra revisión (1.117308ms)
@metis/assets:test: ✔ renombrar: propaga puesto ausente y errores del servidor sin escritura posterior (3.073523ms)
@metis/assets:test: ✔ WD04.4: comparte reglas de disponibilidad, retención, ocupación y puesto inactivo (1.27861ms)
@metis/assets:test: ✔ alta: sede necesaria, responsable opcional, composición mínima y ordenador perteneciente al puesto (9.300671ms)
@metis/assets:test: ✔ composición: asigna el activo único, conserva una elección válida y limpia el ordenador retirado (0.212302ms)
@metis/assets:test: ✔ propone exactamente el nombre del activo principal, sin depender de la sede (0.877607ms)
@metis/assets:test: ✔ no propone nombre cuando falta el activo principal (2.424918ms)
@metis/assets:test: ℹ tests 155
@metis/assets:test: ℹ suites 0
@metis/assets:test: ℹ pass 155
@metis/assets:test: ℹ fail 0
@metis/assets:test: ℹ cancelled 0
@metis/assets:test: ℹ skipped 0
@metis/assets:test: ℹ todo 0
@metis/assets:test: ℹ duration_ms 6584.535776
@metis/companies:test: cache bypass, force executing dceb3932b3e86a9a
@metis/companies:test: $ TSX_TSCONFIG_PATH=../../tsconfig.json node --import tsx --test src/api/domain/company.aggregate.test.ts src/api/domain/people.test.ts src/web/companies/shared/companies-page.test.tsx src/web/people/list/people-search.test.tsx src/web/companies/list/company-filters.test.tsx src/web/shared/helpers/company-list-query-state.test.ts src/api/domain/access/access.test.ts src/api/domain/mail-configuration.test.ts src/api/domain/mailbox.test.ts src/web/access/shared/access.test.tsx src/web/mail-configurations/shared/mail.test.tsx src/api/domain/work-profile.test.ts src/web/work-profiles/shared/profile.test.tsx src/api/domain/printer-configuration.test.ts src/web/printer-configurations/shared/printer.test.tsx src/api/domain/application-configuration.test.ts src/web/application-configurations/shared/application.test.tsx src/api/domain/certificate-configuration.test.ts src/web/certificate-configurations/shared/certificate.test.tsx src/web/work-environments/shared/work-environment.test.tsx src/api/domain/telework-authorization.test.ts src/web/telework-authorizations/shared/telework.test.tsx src/api/domain/remote-connection.test.ts src/api/domain/process.test.ts src/web/remote-connections/shared/remote.test.tsx src/web/processes/shared/processes.test.tsx src/web/shared/initials-avatar.test.tsx src/api/infrastructure/company-logo-processor.test.ts src/web/companies/shared/company-avatar.test.tsx src/web/shared/client-contracts.test.ts src/web/infrastructure/shared/helpers/printer-usage.test.ts src/web/workstations/detail/helpers/workstation-relations.test.ts src/web/workstations/detail/helpers/workplace-map-layout.test.ts src/web/workstations/detail/helpers/workstation-dashboard.test.ts src/web/workstations/detail/helpers/workstation-equipment.test.ts src/web/workstations/detail/helpers/workstation-profile-expansion.test.ts src/web/people/shared/helpers/person-organization.test.ts src/web/workstations/detail/ui/workstation-detail.test.tsx src/web/workspace/shared/workspace-routes.test.ts src/web/workspace/view/helpers/sidebar-preference.test.ts src/api/domain/software-installation.test.ts src/web/software-installations/shared/software.test.tsx src/web/software-installations/shared/current-operating-systems.test.tsx src/api/application/directory-context-plan.test.ts src/web/access/list/helpers/access-environment-filter.test.ts src/api/domain/folder-mapping-account.test.ts src/api/application/local-identity-plan.test.ts src/web/access/list/helpers/access-resource-filter.test.ts src/web/folder-mappings/shared/helpers/folder-account-options.test.ts src/web/local-identity-environments/shared/local-identities-ui.test.tsx src/web/workstations/detail/helpers/workplace-node-actions.test.tsx
@metis/companies:test: ✔ contexto AD: creación pura con identidades propias, sin cuentas, grupos ni activos (6.316944ms)
@metis/companies:test: ✔ clasificación independiente del nombre; no se adopta un sistema existente por llamarse AD (2.966321ms)
@metis/companies:test: ✔ se rechazan compañías distintas, referencias inexistentes y entornos sin clasificación (1.266209ms)
@metis/companies:test: ✔ DNS repetido no crea dos entornos; otro dominio comparte sistema y obtiene un entorno distinto (2.142315ms)
@metis/companies:test: ✔ identidad local: vínculo por UUID, alta y retirada idempotentes con identidad e historial protegidos (11.648882ms)
@metis/companies:test: ✔ identidad local: clasificación explícita rechaza AD por sistema o entorno, sin comparar etiquetas (1.019607ms)
@metis/companies:test: ✔ identidad local: crear entorno utiliza AccessWorkspace y conserva cuentas y sistema existentes (2.014614ms)
@metis/companies:test: ✔ catálogos globales no se duplican con adiciones locales y no se admiten grupos anidados (8.809062ms)
@metis/companies:test: ✔ renombrar una cuenta conserva UUID, historial y semántica de repetición; su uso permanece fijo (5.043036ms)
@metis/companies:test: ✔ cerrar una autorización configurada deja retirada pendiente y cerrar una pendiente no inventa un acceso (4.879734ms)
@metis/companies:test: ✔ titulares no se solapan incluso en periodos cerrados; el relevo conserva una retirada anterior (7.464252ms)
@metis/companies:test: ✔ responsabilidad técnica no concede acceso y se permite sobre una cuenta caducada o inactiva (2.488917ms)
@metis/companies:test: ✔ valores reconstruyen UUID y fechas, rechazan fechas imposibles y no permiten credenciales (23.062761ms)
@metis/companies:test: ✔ las referencias UUID se normalizan y no permiten duplicar cuentas variando mayúsculas (0.892507ms)
@metis/companies:test: ✔ aplicaciones: contrato estricto, versión opcional y solo instalada (12.461388ms)
@metis/companies:test: ✔ aplicaciones: UUID, idempotencia, versión auditada, destino fijo y retirada (4.858534ms)
@metis/companies:test: ✔ aplicaciones: ámbito y clasificación explícita, duplicados abiertos y reapertura nueva (2.458518ms)
@metis/companies:test: ✔ aplicaciones: inactividad conserva notas y permite retirada, impide reconfigurar (2.086314ms)
@metis/companies:test: ✔ aplicaciones: persistencia preserva historial y rechaza claves y orden incoherentes (10.783576ms)
@metis/companies:test: ✔ R2.5: global conserva perfil, delivery e historial; disponibilidad distinta de lectura histórica (2.538718ms)
@metis/companies:test: ✔ certificados: contrato estricto, ubicación opcional y límites (15.106007ms)
@metis/companies:test: ✔ certificados: UUID, idempotencia, ubicación auditada, destino fijo y retirada (4.099828ms)
@metis/companies:test: ✔ certificados: ámbito y clasificación explícita, duplicados abiertos y reapertura nueva (2.506018ms)
@metis/companies:test: ✔ certificados: inactividad conserva notas y permite retirada, impide reconfigurar (1.769513ms)
@metis/companies:test: ✔ certificados: persistencia preserva historial y rechaza claves y orden incoherentes (8.274558ms)
@metis/companies:test: ✔ certificados: caducidad inclusiva, revisión y retirada sin perder historial (1.552511ms)
@metis/companies:test: ✔ compañía, contacto y sede tienen UUID v7 propios y se conserva la identidad al editar (5.565739ms)
@metis/companies:test: ✔ la pertenencia impide asociar o editar entidades de otra compañía (1.087008ms)
@metis/companies:test: ✔ la dirección y el teléfono son optativos y se pueden borrar (0.984707ms)
@metis/companies:test: ✔ nombres, email, teléfono y longitud de dirección se validan en los Value Objects (1.45581ms)
@metis/companies:test: ✔ sedes: archivar y reactivar conserva identidad y datos; repetir el estado es idempotente (1.008607ms)
@metis/companies:test: ✔ FolderMapping: cuenta desconocida, cuenta alternativa y cobertura independiente de la necesidad (27.264191ms)
@metis/companies:test: ✔ FolderMapping: ausencia conserva cuenta, null la retira y cada cambio real crea revisión (4.324331ms)
@metis/companies:test: ✔ FolderMapping: rechaza cuenta ausente, otro subtipo, otra persona, caducada o desactivada (3.714126ms)
@metis/companies:test: ✔ FolderMapping: Coverage por grupo exige pertenencia directa de la cuenta y configuración vigente (10.375472ms)
@metis/companies:test: ✔ FolderMapping: cobertura derivada cambia al retirar concesión, necesidad, cuenta o asociación personal (26.463585ms)
@metis/companies:test: ✔ FolderMapping: todas las autorizaciones necesarias deben proceder de la cuenta seleccionada (3.464925ms)
@metis/companies:test: ✔ Correo: UUIDv7, normalización, no-op, historial y retirada explícita (5.69064ms)
@metis/companies:test: ✔ Correo: buzón independiente, vigencia, perfiles, varios buzones y duplicados abiertos (11.498081ms)
@metis/companies:test: ✔ Correo: persistencia conserva identidad e historial y rechaza corrupción (4.902435ms)
@metis/companies:test: ✔ Correo: vinculación explícita del legado conserva UUID e historial, sin inferir propiedad (8.628261ms)
@metis/companies:test: ✔ Buzón: identidad, dirección única, cuenta opcional, ámbito y cambios auditados (4.30253ms)
@metis/companies:test: ✔ Uso de buzón: fechas inclusiva/exclusiva, mismo día, solapes, varias personas e historial (5.243037ms)
@metis/companies:test: ✔ Buzones: mapper conserva identidad y revisiones, rechaza corrupción (7.748454ms)
@metis/companies:test: ✔ personas con datos opcionales no requieren cuenta de acceso y conservan su UUID (3.634826ms)
@metis/companies:test: ✔ departamentos únicos por compañía, ignorando mayúsculas y espacios exteriores (1.500311ms)
@metis/companies:test: ✔ varios departamentos, un único principal y sin periodos solapados (3.058422ms)
@metis/companies:test: ✔ ediciones conservan revisiones y una repetición semántica no añade historial (3.894828ms)
@metis/companies:test: ✔ inactivos no reciben nuevas asignaciones; se conservan y pueden cerrarse las existentes (1.253109ms)
@metis/companies:test: ✔ asignaciones rechazan pertenencias cruzadas y fechas inválidas (1.40911ms)
@metis/companies:test: ✔ la persistencia rechaza periodos inválidos y revisiones que no reflejan el estado actual (1.653612ms)
@metis/companies:test: ✔ impresoras: contratos estrictos, notas opcionales y predeterminada solo vigente (6.106043ms)
@metis/companies:test: ✔ impresoras: UUID, historial, igualdad semántica, destino fijo y retirada terminal (5.412138ms)
@metis/companies:test: ✔ impresoras: duplicados por perfil, predeterminada única y destinos del ámbito (2.069815ms)
@metis/companies:test: ✔ impresoras: indisponibilidad señala revisión y permite notas y retirada (1.681612ms)
@metis/companies:test: ✔ impresoras: rehidratación conserva identidades y detecta corrupción (12.113385ms)
@metis/companies:test: ✔ procesos: contratos estrictos, normalización y límites (9.968171ms)
@metis/companies:test: ✔ procesos: UUID v7, tareas con identidad, actualización idempotente e historial (3.132022ms)
@metis/companies:test: ✔ procesos: completar exige todas resueltas; cierre terminal y sujeto/tareas fijos (2.994921ms)
@metis/companies:test: ✔ procesos: añadir revisiones conserva las resueltas e identidades y no duplica (2.939221ms)
@metis/companies:test: ✔ plantillas: copia de instrucciones, igualdad semántica y cambios independientes (3.874627ms)
@metis/companies:test: ✔ procesos: rehidratación bidireccional y rechazo de raíces/historial alterados (12.404087ms)
@metis/companies:test: ✔ revisión: personales, retirada pendiente y relaciones finalizadas aún configuradas (0.622205ms)
@metis/companies:test: ✔ revisión: incluye configuraciones de perfiles archivados, excluye cerradas y evita duplicar (0.324303ms)
@metis/companies:test: ✔ remotos: origen personal sin detalle, destinos tipados y contrato estricto (8.768462ms)
@metis/companies:test: ✔ remotos: UUID e historial, destino fijo, idempotencia y cierre terminal (4.050929ms)
@metis/companies:test: ✔ remotos: referencias de compañía y duplicados abiertos por recorrido y herramienta (2.91722ms)
@metis/companies:test: ✔ remotos: configuración y autorización independientes; caducidad y revocación no borran acceso (3.194822ms)
@metis/companies:test: ✔ remotos: disponibilidad de origen y destino, retirada y método personalizado (2.88302ms)
@metis/companies:test: ✔ remotos: persistencia conserva auditoría y detecta referencias, claves e historial corruptos (7.385552ms)
@metis/companies:test: ✔ remotos: una sede archivada conserva conexiones existentes pero rechaza nuevas (1.256309ms)
@metis/companies:test: ✔ instalaciones: pertenecen al equipo, admiten SO/aplicaciones y rechazan recursos ajenos y destinos variables (9.373566ms)
@metis/companies:test: ✔ instalaciones: versiones, idempotencia, retirada, revisión y persistencia de historial (10.346973ms)
@metis/companies:test: ✔ licencia del software: opcional, misma compañía y tipo, vigencia, desvinculación e historial idempotente (12.72739ms)
@metis/companies:test: ✔ R2.4: global activo e inactivo separan alta, reconfiguración y recuperación histórica (2.742719ms)
@metis/companies:test: ✔ teletrabajo: ausencia, límites, fechas reales y contrato estricto (5.256137ms)
@metis/companies:test: ✔ teletrabajo: UUID, renovación y revocación auditadas, igualdad y destino fijo (4.24363ms)
@metis/companies:test: ✔ teletrabajo: vigencia inclusiva, programación, caducidad y persona inactiva (4.183629ms)
@metis/companies:test: ✔ teletrabajo: ámbito, unicidad incluso revocada, disponibilidad y retirada (1.46941ms)
@metis/companies:test: ✔ teletrabajo: rehidratación preserva identidad y detecta corrupción de raíz e historial (15.839911ms)
@metis/companies:test: ✔ Perfil: cuenta opcional, UUID, historial, identidad fija e idempotencia (8.569961ms)
@metis/companies:test: ✔ Perfil: desactivar conserva valores e historial, es idempotente y precede al borrado (3.882928ms)
@metis/companies:test: ✔ Perfil: misma persona/dispositivo único vigente, múltiples dispositivos/personas y revisión sin pérdida de datos (1.964114ms)
@metis/companies:test: ✔ Perfil: cuenta autorizada, vigencia inclusiva de caducidad, cierre de autorización y cuenta técnica (1.759112ms)
@metis/companies:test: ✔ Perfil: persistencia conserva revisiones y rechaza raíz o cuenta histórica incoherentes (9.577167ms)
@metis/companies:test: ✔ Perfil: solo un ordenador principal activo admite altas y reactivaciones; el historial se conserva (1.34781ms)
@metis/companies:test: ✔ PNG, JPEG y WebP se normalizan sin recorte y sin metadatos a un avatar ligero (121.480154ms)
@metis/companies:test: ✔ se rechazan archivos vacíos, corruptos, SVG y GIF aunque simulen un MIME válido (5.095936ms)
@metis/companies:test: ✔ se rechazan excesos de peso y dimensión antes de almacenar (4.525432ms)
@metis/companies:test: ✔ los PNG animados se rechazan antes de decodificarlos (3.482825ms)
@metis/companies:test: ✔ el contexto distingue cuentas y grupos del entorno, sin incluir otros entornos o datos globales (4.24543ms)
@metis/companies:test: ✔ recurso contextual: incluye identidades de sistemas distintos sin mezclar necesidades y concesiones ajenas (14.283601ms)
@metis/companies:test: ✔ filtro vacío no incluye elementos ajenos y las rutas validan UUID y contexto de compañía (4.537132ms)
@metis/companies:test: ✔ los catálogos presentan alta mediante acción y no un formulario junto al listado (128.685003ms)
@metis/companies:test: ✔ cuentas ofrecen caducidad opcional y campos sin contraseña (50.624955ms)
@metis/companies:test: ✔ la ayuda explica todos los elementos en ambos idiomas y distingue el ámbito (86.806809ms)
@metis/companies:test: ✔ los ejemplos del sistema orientan sin rellenar datos del alta (7.138851ms)
@metis/companies:test: ✔ las altas rápidas respetan el contexto, ámbito y relaciones históricas (1.543211ms)
@metis/companies:test: ✔ los formularios ofrecen altas relacionadas y el segundo modal evita altas anidadas (166.859271ms)
@metis/companies:test: ✔ aplicaciones: listado sin formularios, alta en cabecera y traducciones (125.388881ms)
@metis/companies:test: ✔ aplicaciones: selectores con alta rápida y ayuda inferior antes de guardar (89.342327ms)
@metis/companies:test: ✔ R2.5: perfil muestra nombre, origen y versión global sin ResourceDTO local ni mezcla de perfiles (68.547381ms)
@metis/companies:test: ✔ certificados: listado sin formularios, alta en cabecera y traducciones (116.91052ms)
@metis/companies:test: ✔ certificados: selectores con alta rápida y ayuda inferior antes de guardar (38.49777ms)
@metis/companies:test: ✔ la compañía de origen es ámbito visible, no un filtro eliminable con Limpiar filtros (211.830186ms)
@metis/companies:test: ✔ directorio: orden y página proceden de URL sin perder la consulta (88.54252ms)
@metis/companies:test: ✔ las subentradas de Personas conservan contexto y reemplazan el filtro de la vista (33.231232ms)
@metis/companies:test: ✔ el dashboard no ofrece selector de compañía y conserva las métricas de cada ámbito (75.923632ms)
@metis/companies:test: ✔ el resumen de compañía es la entrada por defecto y ofrece destinos reales (106.748948ms)
@metis/companies:test: ✔ los índices de catálogos distinguen definiciones globales y variantes de compañía (12.268186ms)
@metis/companies:test: ✔ el listado presenta estado vacío y acceso al alta sin formularios visibles (76.98414ms)
@metis/companies:test: ✖ la ficha presenta datos de la compañía, contactos y acceso a sedes (95.367068ms)
@metis/companies:test: ✔ el formulario de sede ofrece dirección y teléfono opcionales (13.513295ms)
@metis/companies:test: ✖ el formulario de persona distingue contactos de cuentas de acceso y permite datos opcionales (19.146134ms)
@metis/companies:test: ✔ asignar un departamento permite añadir el primero y conserva el selector en edición (29.248005ms)
@metis/companies:test: ✔ el tablero de compañía tiene composición propia, acciones arriba y métricas limitadas a su ámbito (21.568252ms)
@metis/companies:test: ✔ el menú de compañía ordena trabajo y personas por grupos sin repetir las acciones de usuario (37.07746ms)
@metis/companies:test: ✔ el menú muestra el contador de infraestructura: ready (62.566638ms)
@metis/companies:test: ✔ el menú muestra el contador de infraestructura: pending (56.617605ms)
@metis/companies:test: ✔ el menú muestra el contador de infraestructura: error (119.402496ms)
@metis/companies:test: ✔ sedes: listado traducido con filtro de archivadas y solo sedes activas por defecto (108.480513ms)
@metis/companies:test: ✔ la navegación de compañía conserva 21 enlaces reales, sección activa y contexto es/en (137.828533ms)
@metis/companies:test: ✔ el logo sustituye iniciales con URL versionada, dimensiones fijas y carga diferida (15.762511ms)
@metis/companies:test: ✔ sin logotipo aparecen iniciales y las listas consultan la misma caché de compañías (6.160443ms)
@metis/companies:test: ✔ cuentas del mapeo: exige asociación vigente y catálogos activos; no atribuye por login o por perfil (9.239665ms)
@metis/companies:test: ✔ actualización del mapeo: omitir cuenta conserva semántica distinta de retirarla explícitamente; admite revisión capturada (2.495018ms)
@metis/companies:test: ✔ uso de impresora: agrupa perfiles de un mismo equipo y separa pendientes e historial (18.638331ms)
@metis/companies:test: ✔ uso de impresora: referencias sin resolver no se presentan como ausencia de uso (0.549404ms)
@metis/companies:test: ✔ identidades locales: entorno del activo, navegación por UUID y estado vigente en es/en (52.481068ms)
@metis/companies:test: ✔ propietario local: vínculo retirado conserva navegación y no ofrece reasignación (2.623618ms)
@metis/companies:test: ✔ cuenta del mapeo: seleccionar perfil es una acción explícita; el render no infiere ni cambia cuenta (23.317064ms)
@metis/companies:test: ✔ correo: listado traducido, alta en cabecera y formularios ocultos (134.131341ms)
@metis/companies:test: ✔ correo: selectores reutilizables con altas y ayuda inmediatamente antes de guardar (28.990703ms)
@metis/companies:test: ✔ Buzones: alta en modal, cuenta opcional y ayuda al final (37.864766ms)
@metis/companies:test: ✔ L04.2: correo mantiene tabla y criterios mientras faltan sus referencias (40.668885ms)
@metis/companies:test: ✔ Personas conserva búsqueda por nombre, contactos, consulta y distinción ñ/n en es/en (614.49001ms)
@metis/companies:test: ✔ organización: resuelve departamento y cargo vigentes del responsable (1.42881ms)
@metis/companies:test: ✔ organización: sin responsable o asignación no infiere datos desde perfiles ni cargo genérico de persona (1.325109ms)
@metis/companies:test: ✔ organización: periodos semiabiertos, históricos y futuros (0.252802ms)
@metis/companies:test: ✔ organización: varias vigentes conservan todas, principal primero y orden estable sin mutar (9.918669ms)
@metis/companies:test: ✔ organización: dos principales no ocultan información seleccionando una arbitrariamente (0.674705ms)
@metis/companies:test: ✔ organización: aislamiento de compañía y persona, y referencias incompletas (0.411903ms)
@metis/companies:test: ✔ organización: cambios y refetch se derivan de la fuente actual (0.293302ms)
@metis/companies:test: ✔ impresoras: listado sin formularios, alta en cabecera y traducciones (122.63526ms)
@metis/companies:test: ✔ impresoras: selectores con alta rápida y ayuda inferior antes de guardar (55.794392ms)
@metis/companies:test: ✔ L04.2: Procesos recupera búsqueda, cerrados, orden y página en sus enlaces (189.580929ms)
@metis/companies:test: ✔ procesos: listados es/en sin formularios junto a los datos (83.212183ms)
@metis/companies:test: ✔ procesos: alta rápida y ayuda inferior antes del pie (29.125304ms)
@metis/companies:test: ✔ plantillas: instrucciones, desactivación y ayuda global es/en sin datos de compañía (26.960889ms)
@metis/companies:test: ✔ seguimiento: origen personal, revisión actual y edición sin afirmar retirada real; cerrados sin editar (82.569479ms)
@metis/companies:test: ✔ remotos: consulta sin formularios y traducciones (117.604882ms)
@metis/companies:test: ✔ remotos: formulario, altas rápidas y ayuda antes del pie (91.720088ms)
@metis/companies:test: ✔ remotos: origen personal, acceso configurado sin autorización y VPN separada (8.717166ms)
@metis/companies:test: ✔ las consultas de compañías conservan sus rutas y rechazan respuestas inválidas (38.957973ms)
@metis/companies:test: ✔ lectura y guardado de accesos están separados sin cambiar el contrato HTTP (3.447924ms)
@metis/companies:test: ✔ el guardado de usos de buzón mantiene su endpoint y no se confunde con la consulta (4.137329ms)
@metis/companies:test: ✔ los adapters mantienen la ausencia semántica sin modificar los campos del formulario (0.458303ms)
@metis/companies:test: ✔ las instrucciones de proceso conservan el orden y excluyen líneas vacías (0.790405ms)
@metis/companies:test: ✔ la validación de logos conserva tipos permitidos, vacío y límite exacto de tamaño (1.039508ms)
@metis/companies:test: ✔ la tabla espera todas sus referencias y distingue actualización de disponibilidad (1.184208ms)
@metis/companies:test: ✔ un fallo recuperable conserva datos anteriores sin presentarlos como actualizados (1.058707ms)
@metis/companies:test: ✔ una fuente denegada impide mostrar la caché de todo el listado compuesto (0.443503ms)
@metis/companies:test: ✔ dashboard: HTTP 401 conserva la semántica de disponibilidad (25.899282ms)
@metis/companies:test: ✔ dashboard: HTTP 403 conserva la semántica de disponibilidad (0.472703ms)
@metis/companies:test: ✔ dashboard: HTTP 503 conserva la semántica de disponibilidad (0.758505ms)
@metis/companies:test: ✔ dashboard: una lectura correcta valida y conserva la página del proveedor (5.522738ms)
@metis/companies:test: ✔ iniciales y siglas soportan nombres vacíos, Unicode y separadores (2.60602ms)
@metis/companies:test: ✔ el color es estable con variaciones de espacios, mayúsculas y acentos (0.455103ms)
@metis/companies:test: ✔ los colores generados mantienen contraste AA para texto pequeño (1.37881ms)
@metis/companies:test: ✔ el avatar conserva su nombre accesible y puede ser decorativo dentro de un botón etiquetado (11.161384ms)
@metis/companies:test: ✔ OSUI-01/02/17: SO actual desde instalación, independiente de cualquier valor de fábrica (11.358085ms)
@metis/companies:test: ✔ OSUI-03/04/05/18: vacío, pendiente y retirado no son SO actual (41.147208ms)
@metis/companies:test: ✔ OSUI-06/07: varios SO, orden determinista y aplicaciones excluidas (14.991912ms)
@metis/companies:test: ✔ OSUI-08/12: cambiar de activo conserva solo su SO, sin aceptar compañías ajenas (3.395626ms)
@metis/companies:test: ✔ OSUI-09: versión de instalación y redundancia literal sin reglas de fabricante (6.70545ms)
@metis/companies:test: ✔ OSUI-10: referencia no resoluble no significa ausencia; inactiva resoluble conserva información (5.653143ms)
@metis/companies:test: ✔ OSUI-11: error con datos previos, error de resolver y carga no se presentan como vacío (13.2769ms)
@metis/companies:test: ✔ OSUI-13/14: servidor sin puesto y plantilla propia consumen la misma lectura por activo (6.347448ms)
@metis/companies:test: ✔ OSUI-16: presentación es/en y versión opcional (12.323692ms)
@metis/companies:test: ✔ SO global: selector conserva scope y destino SO; la versión instalada sigue separada (0.679705ms)
@metis/companies:test: ✔ REG-SO-01/11: render global configurado, inactivo e histórico conserva nombre, versión y destino es/en (30.212926ms)
@metis/companies:test: ✔ software del puesto es/en: SO actual, versión, enlaces y separación por ordenador sin formularios incrustados (131.912988ms)
@metis/companies:test: ✔ formulario software: recurso fijo en edición, estados permitidos, ayuda y ausencia de persona/perfil (16.373823ms)
@metis/companies:test: ✔ R2.4: nombre, origen y enlace global se resuelven sin ResourceDTO local; licencia continúa particular (48.333962ms)
@metis/companies:test: ✔ teletrabajo: consulta sin formularios y traducciones (73.285849ms)
@metis/companies:test: ✔ teletrabajo: formulario con alta rápida de persona, fechas opcionales y ayuda inferior (21.092058ms)
@metis/companies:test: ✔ teletrabajo: sin autorización no se presupone permiso; persona inactiva requiere revisión (5.678142ms)
@metis/companies:test: ✔ teletrabajo: alta desde un perfil fija la persona y no abre otra alta rápida (6.409748ms)
@metis/companies:test: ✔ teletrabajo es/en: conserva estado documental, vigencia y revisión como mensajes independientes (48.803766ms)
@metis/companies:test: ✔ entorno: reúne varios correos y configuraciones, distingue pendiente, retirada y revisión (1.957415ms)
@metis/companies:test: ✔ entorno: excluye cerradas, otros perfiles, compañías y correo antiguo sin adivinar relaciones (1.159108ms)
@metis/companies:test: ✔ entorno: composición vigente del puesto y datos actuales sin duplicación (0.452003ms)
@metis/companies:test: ✔ entorno: ficha es/en con estados y acciones, sin formularios; muestra falso y varios correos (79.687697ms)
@metis/companies:test: ✔ entorno: carga, fallo parcial sin falsa ficha vacía, perfil inexistente y aviso de archivado (31.524736ms)
@metis/companies:test: ✔ entorno: consulta autorización por persona, común a sus perfiles y sin confundir preparación (26.887202ms)
@metis/companies:test: ✔ entorno: accesos abiertos de la persona y sus orígenes sin confundirlos con configuraciones del perfil (11.532086ms)
@metis/companies:test: ✔ las entidades de los selectores se pluralizan en es/en sin reutilizar el verbo de acción (5.696842ms)
@metis/companies:test: ✔ perfiles: listado es/en, alta en cabecera y ausencia de formulario junto al listado (60.313251ms)
@metis/companies:test: ✔ perfiles: la cabecera breve conserva el motivo completo en la celda de revisión (53.349399ms)
@metis/companies:test: ✔ perfiles: alta en cuatro pasos, sin guardado intermedio y contenido de ayuda conservado (15.531216ms)
@metis/companies:test: ✔ perfiles: selección de persona explícita y cuenta opcional con altas independientes (18.419438ms)
@metis/companies:test: ✔ perfiles: el puesto fijado aporta su ordenador y no selecciona al responsable como usuario (8.138861ms)
@metis/companies:test: ✔ perfiles: requisitos por paso, cuenta opcional y propuesta basada en persona y ordenador (0.262402ms)
@metis/companies:test: ✔ perfiles: el nombre sugerido respeta el límite del contrato (0.255202ms)
@metis/companies:test: ✔ perfiles: resumen con listas, ordenador único y ausencias representadas por guion (4.849337ms)
@metis/companies:test: ✔ perfiles: edición completa con identidad fija aunque el perfil requiera revisión (9.818873ms)
@metis/companies:test: ✔ perfiles: orden y página navegables conservan búsqueda y archivados al abrir entorno (33.702852ms)
@metis/companies:test: ✔ Personas admite actividad en listado y ficha, con los demás criterios de contexto (10.626674ms)
@metis/companies:test: ✔ el catálogo de aplicaciones de compañía conserva cursor, filtros y retorno a ficha (1.875613ms)
@metis/companies:test: ✔ las funcionalidades archivadas no tienen rutas activas (0.806505ms)
@metis/companies:test: ✔ el filtro de plantilla permite abrir listados y fichas de activos y recursos (1.229009ms)
@metis/companies:test: ✔ el filtro de plantilla se limita a los inventarios que conocen sus definiciones (2.248116ms)
@metis/companies:test: ✔ todas las secciones de compañía tienen una ruta propia y el índice es el resumen (3.986228ms)
@metis/companies:test: ✔ los índices de catálogos y los cinco catálogos globales son destinos independientes (0.811706ms)
@metis/companies:test: ✔ las configuraciones conservan la compañía y el UUID del perfil (0.798105ms)
@metis/companies:test: ✔ las rutas desconocidas y los parámetros inválidos no abren una sección por defecto (4.041728ms)
@metis/companies:test: ✔ la ficha de puesto tiene ruta propia, conserva el UUID y rechaza identificadores inválidos (1.32341ms)
@metis/companies:test: ✔ dominios: enlaces a cuentas y grupos limitados al entorno de la compañía (1.191909ms)
@metis/companies:test: ✔ los parámetros de contexto llegan al consumidor sin crear rutas nuevas ni aceptar claves ajenas (2.476718ms)
@metis/companies:test: ✔ catálogo de aplicaciones: UUID global y criterios propios sin compañía ficticia (2.152215ms)
@metis/companies:test: ✔ catálogo SO: ruta específica y filtros, sin confundir con aplicaciones (0.721805ms)
@metis/companies:test: ✔ la barra comienza desplegada sin navegador o sin una preferencia válida (3.849727ms)
@metis/companies:test: ✔ plegar y desplegar persisten la preferencia sin modificar otras claves (0.314602ms)
@metis/companies:test: ✔ un fallo de lectura, escritura o acceso a localStorage no bloquea la barra (0.331202ms)
@metis/companies:test: ✔ la capacidad del shell fuerza modos sin cambiar la preferencia manual (1.364609ms)
@metis/companies:test: ✔ un menú solo libera su modalidad si su presentación pasa a estar disponible fija (0.284702ms)
@metis/companies:test: ✔ layout 640px: 0 asociados y 0 instalaciones (14.741311ms)
@metis/companies:test: ✔ layout 640px: 0 asociados y 3 instalaciones (11.293584ms)
@metis/companies:test: ✔ layout 640px: 1 asociados y 0 instalaciones (5.654842ms)
@metis/companies:test: ✔ layout 640px: 1 asociados y 2 instalaciones (6.399048ms)
@metis/companies:test: ✔ layout 640px: 2 asociados y 3 instalaciones (9.533572ms)
@metis/companies:test: ✔ layout 748px: 0 asociados y 0 instalaciones (2.845821ms)
@metis/companies:test: ✔ layout 748px: 0 asociados y 3 instalaciones (15.739718ms)
@metis/companies:test: ✔ layout 748px: 1 asociados y 0 instalaciones (7.435056ms)
@metis/companies:test: ✔ layout 748px: 1 asociados y 2 instalaciones (13.778003ms)
@metis/companies:test: ✔ layout 748px: 2 asociados y 3 instalaciones (15.351815ms)
@metis/companies:test: ✔ layout 900px: 0 asociados y 0 instalaciones (3.484126ms)
@metis/companies:test: ✔ layout 900px: 0 asociados y 3 instalaciones (4.870336ms)
@metis/companies:test: ✔ layout 900px: 1 asociados y 0 instalaciones (2.823221ms)
@metis/companies:test: ✔ layout 900px: 1 asociados y 2 instalaciones (7.89826ms)
@metis/companies:test: ✔ layout 900px: 2 asociados y 3 instalaciones (21.540861ms)
@metis/companies:test: ✔ layout 1200px: 0 asociados y 0 instalaciones (4.372533ms)
@metis/companies:test: ✔ layout 1200px: 0 asociados y 3 instalaciones (13.702403ms)
@metis/companies:test: ✔ layout 1200px: 1 asociados y 0 instalaciones (3.740728ms)
@metis/companies:test: ✔ layout 1200px: 1 asociados y 2 instalaciones (10.077775ms)
@metis/companies:test: ✔ layout 1200px: 2 asociados y 3 instalaciones (13.223299ms)
@metis/companies:test: ✔ layout: dos asociados se reparten por capacidad; sin principal no se fabrican conexiones (13.325899ms)
@metis/companies:test: ✔ preview: conserva límites y publica solo cobertura real de fuentes conocidas (0.436403ms)
@metis/companies:test: ✔ WD04.4: acción estable de presentación, fuera de las relaciones y contadores, sin solapamientos (186.997902ms)
@metis/companies:test: ✔ WD04.5: acciones ordenadas del principal y periférico sin inferir software por categoría (2.565019ms)
@metis/companies:test: ✔ WD04.5: lectura sin permisos de edición, carga/error parcial y activos retirados (0.528004ms)
@metis/companies:test: ✔ WD04.5: distingue instalación, producto global/inactivo y licencia particular (0.783106ms)
@metis/companies:test: ✔ WD04.5: producto particular y gates cerrados no crean acciones administrativas (1.015507ms)
@metis/companies:test: ✔ WD04.5: SO global utiliza la referencia pública y su etiqueta específica (0.481604ms)
@metis/companies:test: ✔ WD04.5: estados terminales, refetch y cambio de principal o compañía no reutilizan acciones antiguas (0.396003ms)
@metis/companies:test: ✔ WD04.5: trigger es/en separado del enlace, tarjetas sin acciones y añadir sin menú (46.278846ms)
@metis/companies:test: ✔ dashboard: ordenador y equipamiento actuales, personas por perfiles y archivados separados (9.747173ms)
@metis/companies:test: ✔ dashboard: sin responsable sigue mostrando usuarios y un puesto desmantelado no cuenta historia como miembros (0.399703ms)
@metis/companies:test: ✔ dashboard: sustituir ordenador resuelve perfiles del nuevo host sin trasladar los anteriores (0.307502ms)
@metis/companies:test: ✔ dashboard: referencias ajenas o principal fuera de composición no aportan relaciones (0.277302ms)
@metis/companies:test: ✔ pendientes: solo pending, perfiles activos, compañía correcta y deduplicación por familia e identidad (2.547319ms)
@metis/companies:test: ✔ último cambio: orden cronológico sin mutación, altas de miembros y campos realmente cambiados (1.271609ms)
@metis/companies:test: ✔ equipamiento: principal válido primero, miembros únicos y secundarios en orden declarado (3.800529ms)
@metis/companies:test: ✔ equipamiento: activos sin principal no adquieren un principal por su tipo o posición (0.464603ms)
@metis/companies:test: ✔ equipamiento: principal fuera de composición se advierte sin añadirlo a miembros (0.489303ms)
@metis/companies:test: ✔ equipamiento: referencia ausente o de otra compañía no inventa datos ni marca principal (0.464603ms)
@metis/companies:test: ✔ equipamiento: vacío y desmantelado no recuperan miembros del historial (0.317703ms)
@metis/companies:test: ✔ equipamiento: averiado sigue asignado y conserva ambos estados originales (0.430503ms)
@metis/companies:test: ✔ expansión: todos abiertos inicialmente y plegado independiente de cada perfil (5.477941ms)
@metis/companies:test: ✔ refetch conserva plegados y filtros individuales, incluso con error o fuentes incompletas (0.399003ms)
@metis/companies:test: ✔ retirada o archivo limpia únicamente el estado del perfil afectado (0.477704ms)
@metis/companies:test: ✔ cambio de compañía, puesto u ordenador restablece todos los perfiles abiertos y los filtros (0.359603ms)
@metis/companies:test: ✔ orden estable y numérico del resumen y los pendientes, sin mutar datos remotos (7.384256ms)
@metis/companies:test: ✔ incluye solo perfiles del ordenador principal, distingue inactivos y deduplica personas (5.988545ms)
@metis/companies:test: ✔ puesto inexistente o sin composición no hereda perfiles de otros activos (1.020908ms)
@metis/companies:test: ✔ persona: responsabilidad y uso son independientes y solo se consideran puestos y perfiles vigentes (0.877107ms)
@metis/companies:test: ✔ ficha de puesto es/en: cabecera, retorno, bloques vacíos y edición modal sin formulario incrustado (79.547895ms)
@metis/companies:test: ✔ un UUID de puesto ausente muestra no encontrado sin cabecera ni edición de otro puesto (2.842922ms)
@metis/companies:test: ✔ ficha de persona es/en: distingue responsabilidad y uso, y enlaza los puestos (5.277339ms)
@metis/companies:test: ✔ ficha: ordenador destacado y periféricos sin repetir, perfiles solo del ordenador y personas deduplicadas (84.084128ms)
@metis/companies:test: ✔ personas y perfiles: carga y error no se presentan como listados vacíos (9.031767ms)
@metis/companies:test: ✔ ficha: no permite crear perfiles si el ordenador está retirado o el puesto está desactivado (38.186585ms)
@metis/companies:test: ✔ historial del puesto es/en: revisiones de más reciente a más antigua con autor y valores de cada momento (6.405148ms)
@metis/companies:test: ✔ personas es/en: enlaces a todos sus puestos bajo responsabilidad, sin confundirlos con puestos usados (45.929143ms)
@metis/companies:test: ✔ menú de compañía es/en: totales en badges alineados y cero real en secciones vacías (31.400235ms)
@metis/companies:test: ✔ ruta de activo de compañía abre la página con información, historial, software y solo sus perfiles (81.64301ms)
@metis/companies:test: ✔ equipamiento es/en: badges de principal, técnico y uso conservan su significado (6.060845ms)
@metis/companies:test: ✔ equipamiento: inventario fallido no se presenta como vacío y permite reintentar (9.302969ms)
@metis/companies:test: ✔ equipamiento: principal inconsistente se explica y no se incorpora como miembro válido (2.154217ms)
@metis/companies:test: ✔ personas y perfiles es/en: expansión contextual, enlaces independientes y resumen cero real (6.853351ms)
@metis/companies:test: ✔ cabecera es/en: responsable largo o ausente, contexto independiente y mapa con resumen (57.574831ms)
@metis/companies:test: ✔ perfiles: lista completa y todos desplegados por defecto, incluso con cincuenta perfiles (67.036601ms)
@metis/companies:test: ✔ perfiles: carga, error y datos retenidos no publican un total como actual (4.819436ms)
@metis/companies:test: ✔ equipamiento: contador conocido cero, uno, cinco y seis; error conserva filas sin publicar total (10.602879ms)
@metis/companies:test: ✔ configuración: cobertura desconocida, revisión y notas permanecen fuera del disclosure técnico (2.309518ms)
@metis/companies:test: ✔ perfiles: una actualización en curso conserva el total conocido y anuncia la actividad (1.866514ms)
@metis/companies:test: ✔ v2.2: dependencia sin principal conserva mapa y resumen y una explicación principal sin tabla vacía (12.142091ms)
@metis/companies:test: ✔ v2.2: un vacío confirmado de perfiles conserva el alta y evita cabeceras de una tabla sin filas (1.052608ms)
@metis/companies:test: ✔ v2.2: soporte distingue perfiles en carga, error, ausencia confirmada y persona no resuelta (3.211824ms)
@metis/companies:test: ✔ v2.2: referencia de principal no resuelta no publica cero pendientes ni ausencia de perfiles (5.746443ms)
@metis/companies:test: ✔ v3: Software conserva los tres estados documentales con la misma representación que las familias (33.35785ms)
@metis/companies:test: ✔ v3: estados técnicos de equipamiento conservan principal y asignación en es/en (11.798888ms)
@metis/companies:test: ✔ responsable es/en: avatar y nombre abren un único popup y la ausencia no ofrece acciones (3.218824ms)
@metis/companies:test: ✔ mapa visual: aísla compañías, deduplica miembros y conserva software y estados reales (9.803073ms)
@metis/companies:test: ✔ mapa es/en: principal solo, vacíos confirmados y error de software conservan navegación y gestión (29.001717ms)
@metis/companies:test: ✔ mapa: composición vacía y sin principal no fabrica relaciones ni instalaciones (1.354311ms)
@metis/companies:test: ✔ contexto de persona: rechaza datos de otra compañía y no ofrece acciones (0.556304ms)
@metis/companies:test: ✔ mapa es/en: carga inicial y carga parcial mantienen estados accesibles (16.351023ms)
@metis/companies:test: ✔ mapa es/en: leyenda con tres conceptos y cobertura explícita sin totales inventados (1.627312ms)
@metis/companies:test: ✔ mapa es/en: revisión de software traducida incluso sin referencia navegable (0.881407ms)
@metis/companies:test: ✔ WD04.4 es/en: acción autorizada, vacío accionable y lectura sin permiso (5.623542ms)
@metis/companies:test: ✔ perfiles del puesto: configuraciones de todos los activos abiertas y destinos accesibles únicos (11.803788ms)
@metis/companies:test: ℹ tests 312
@metis/companies:test: ℹ suites 0
@metis/companies:test: ℹ pass 310
@metis/companies:test: ℹ fail 2
@metis/companies:test: ℹ cancelled 0
@metis/companies:test: ℹ skipped 0
@metis/companies:test: ℹ todo 0
@metis/companies:test: ℹ duration_ms 15483.371216
@metis/companies:test:
@metis/companies:test: ✖ failing tests:
@metis/companies:test:
@metis/companies:test: test at src/web/companies/shared/companies-page.test.tsx:1:6023
@metis/companies:test: ✖ la ficha presenta datos de la compañía, contactos y acceso a sedes (95.367068ms)
@metis/companies:test: AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
@metis/companies:test:
@metis/companies:test: assert.ok(markup.includes("Personas (1)"))
@metis/companies:test:
@metis/companies:test: at TestContext.<anonymous> (/home/david/dev/metis-desk/modules/companies/src/web/companies/shared/companies-page.test.tsx:229:10)
@metis/companies:test: at async Test.run (node:internal/test_runner/test:1404:7)
@metis/companies:test: at async Test.processPendingSubtests (node:internal/test_runner/test:969:7) {
@metis/companies:test: generatedMessage: true,
@metis/companies:test: code: 'ERR_ASSERTION',
@metis/companies:test: actual: false,
@metis/companies:test: expected: true,
@metis/companies:test: operator: '==',
@metis/companies:test: diff: 'simple'
@metis/companies:test: }
@metis/companies:test:
@metis/companies:test: test at src/web/companies/shared/companies-page.test.tsx:1:7439
@metis/companies:test: ✖ el formulario de persona distingue contactos de cuentas de acceso y permite datos opcionales (19.146134ms)
@metis/companies:test: AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
@metis/companies:test:
@metis/companies:test: assert.ok(markup.includes("Esta persona no tiene acceso a Metis Desk"))
@metis/companies:test:
@metis/companies:test: at TestContext.<anonymous> (/home/david/dev/metis-desk/modules/companies/src/web/companies/shared/companies-page.test.tsx:259:10)
@metis/companies:test: at async Test.run (node:internal/test_runner/test:1404:7)
@metis/companies:test: at async Test.processPendingSubtests (node:internal/test_runner/test:969:7) {
@metis/companies:test: generatedMessage: true,
@metis/companies:test: code: 'ERR_ASSERTION',
@metis/companies:test: actual: false,
@metis/companies:test: expected: true,
@metis/companies:test: operator: '==',
@metis/companies:test: diff: 'simple'
@metis/companies:test: }
@metis/companies:test: [ELIFECYCLE] Test failed. See above for more details.
ERROR @metis/companies#test: command (/home/david/dev/metis-desk/modules/companies) /home/david/.nvm/versions/node/v24.20.0/bin/pnpm run test exited (1)
Tasks: 7 successful, 8 total
Cached: 0 cached, 8 total
Time: 32.595s
Failed: @metis/companies#test
ERROR run failed: command exited (1)
[ELIFECYCLE] Test failed. See above for more details.