metis-desk/.artifacts/resources-global-operating-systems-closure/technical/companies-detailed.log

367 lines
32 KiB
Plaintext
Raw Normal View History

✔ contexto AD: creación pura con identidades propias, sin cuentas, grupos ni activos (4.523835ms)
✔ clasificación independiente del nombre; no se adopta un sistema existente por llamarse AD (1.169609ms)
✔ se rechazan compañías distintas, referencias inexistentes y entornos sin clasificación (0.579104ms)
✔ DNS repetido no crea dos entornos; otro dominio comparte sistema y obtiene un entorno distinto (0.623805ms)
✔ identidad local: vínculo por UUID, alta y retirada idempotentes con identidad e historial protegidos (1.539512ms)
✔ identidad local: clasificación explícita rechaza AD por sistema o entorno, sin comparar etiquetas (0.419404ms)
✔ identidad local: crear entorno utiliza AccessWorkspace y conserva cuentas y sistema existentes (0.638505ms)
✔ catálogos globales no se duplican con adiciones locales y no se admiten grupos anidados (1.050908ms)
✔ renombrar una cuenta conserva UUID, historial y semántica de repetición; su uso permanece fijo (1.188209ms)
✔ cerrar una autorización configurada deja retirada pendiente y cerrar una pendiente no inventa un acceso (1.819814ms)
✔ titulares no se solapan incluso en periodos cerrados; el relevo conserva una retirada anterior (0.819007ms)
✔ responsabilidad técnica no concede acceso y se permite sobre una cuenta caducada o inactiva (0.616505ms)
✔ valores reconstruyen UUID y fechas, rechazan fechas imposibles y no permiten credenciales (1.569712ms)
✔ las referencias UUID se normalizan y no permiten duplicar cuentas variando mayúsculas (0.827106ms)
✔ aplicaciones: contrato estricto, versión opcional y solo instalada (1.814814ms)
✔ aplicaciones: UUID, idempotencia, versión auditada, destino fijo y retirada (2.474119ms)
✔ aplicaciones: ámbito y clasificación explícita, duplicados abiertos y reapertura nueva (1.735514ms)
✔ aplicaciones: inactividad conserva notas y permite retirada, impide reconfigurar (1.514312ms)
✔ aplicaciones: persistencia preserva historial y rechaza claves y orden incoherentes (2.096117ms)
✔ R2.5: global conserva perfil, delivery e historial; disponibilidad distinta de lectura histórica (0.772806ms)
✔ certificados: contrato estricto, ubicación opcional y límites (0.965307ms)
✔ certificados: UUID, idempotencia, ubicación auditada, destino fijo y retirada (1.420811ms)
✔ certificados: ámbito y clasificación explícita, duplicados abiertos y reapertura nueva (1.26921ms)
✔ certificados: inactividad conserva notas y permite retirada, impide reconfigurar (0.682406ms)
✔ certificados: persistencia preserva historial y rechaza claves y orden incoherentes (1.555612ms)
✔ certificados: caducidad inclusiva, revisión y retirada sin perder historial (0.766006ms)
✔ compañía, contacto y sede tienen UUID v7 propios y se conserva la identidad al editar (0.729206ms)
✔ la pertenencia impide asociar o editar entidades de otra compañía (0.600304ms)
✔ la dirección y el teléfono son optativos y se pueden borrar (0.284702ms)
✔ nombres, email, teléfono y longitud de dirección se validan en los Value Objects (0.474504ms)
✔ sedes: archivar y reactivar conserva identidad y datos; repetir el estado es idempotente (0.399904ms)
✔ FolderMapping: cuenta desconocida, cuenta alternativa y cobertura independiente de la necesidad (4.578036ms)
✔ FolderMapping: ausencia conserva cuenta, null la retira y cada cambio real crea revisión (2.119217ms)
✔ FolderMapping: rechaza cuenta ausente, otro subtipo, otra persona, caducada o desactivada (2.010215ms)
✔ FolderMapping: Coverage por grupo exige pertenencia directa de la cuenta y configuración vigente (3.279525ms)
✔ FolderMapping: cobertura derivada cambia al retirar concesión, necesidad, cuenta o asociación personal (4.788537ms)
✔ FolderMapping: todas las autorizaciones necesarias deben proceder de la cuenta seleccionada (0.964907ms)
✔ Correo: UUIDv7, normalización, no-op, historial y retirada explícita (1.418511ms)
✔ Correo: buzón independiente, vigencia, perfiles, varios buzones y duplicados abiertos (2.061416ms)
✔ Correo: persistencia conserva identidad e historial y rechaza corrupción (35.405076ms)
✔ Correo: vinculación explícita del legado conserva UUID e historial, sin inferir propiedad (2.129316ms)
✔ Buzón: identidad, dirección única, cuenta opcional, ámbito y cambios auditados (0.859307ms)
✔ Uso de buzón: fechas inclusiva/exclusiva, mismo día, solapes, varias personas e historial (1.041608ms)
✔ Buzones: mapper conserva identidad y revisiones, rechaza corrupción (1.801614ms)
✔ personas con datos opcionales no requieren cuenta de acceso y conservan su UUID (0.314902ms)
✔ departamentos únicos por compañía, ignorando mayúsculas y espacios exteriores (0.520605ms)
✔ varios departamentos, un único principal y sin periodos solapados (1.093508ms)
✔ ediciones conservan revisiones y una repetición semántica no añade historial (1.468711ms)
✔ inactivos no reciben nuevas asignaciones; se conservan y pueden cerrarse las existentes (0.468304ms)
✔ asignaciones rechazan pertenencias cruzadas y fechas inválidas (0.488604ms)
✔ la persistencia rechaza periodos inválidos y revisiones que no reflejan el estado actual (0.965107ms)
✔ impresoras: contratos estrictos, notas opcionales y predeterminada solo vigente (0.778506ms)
✔ impresoras: UUID, historial, igualdad semántica, destino fijo y retirada terminal (1.398011ms)
✔ impresoras: duplicados por perfil, predeterminada única y destinos del ámbito (0.775406ms)
✔ impresoras: indisponibilidad señala revisión y permite notas y retirada (0.597505ms)
✔ impresoras: rehidratación conserva identidades y detecta corrupción (4.413435ms)
✔ procesos: contratos estrictos, normalización y límites (2.816222ms)
✔ procesos: UUID v7, tareas con identidad, actualización idempotente e historial (1.684713ms)
✔ procesos: completar exige todas resueltas; cierre terminal y sujeto/tareas fijos (2.059916ms)
✔ procesos: añadir revisiones conserva las resueltas e identidades y no duplica (2.391319ms)
✔ plantillas: copia de instrucciones, igualdad semántica y cambios independientes (0.738606ms)
✔ procesos: rehidratación bidireccional y rechazo de raíces/historial alterados (2.268618ms)
✔ revisión: personales, retirada pendiente y relaciones finalizadas aún configuradas (0.288202ms)
✔ revisión: incluye configuraciones de perfiles archivados, excluye cerradas y evita duplicar (0.128801ms)
✔ remotos: origen personal sin detalle, destinos tipados y contrato estricto (1.170909ms)
✔ remotos: UUID e historial, destino fijo, idempotencia y cierre terminal (1.194709ms)
✔ remotos: referencias de compañía y duplicados abiertos por recorrido y herramienta (0.912407ms)
✔ remotos: configuración y autorización independientes; caducidad y revocación no borran acceso (1.111809ms)
✔ remotos: disponibilidad de origen y destino, retirada y método personalizado (0.362603ms)
✔ remotos: persistencia conserva auditoría y detecta referencias, claves e historial corruptos (2.268617ms)
✔ remotos: una sede archivada conserva conexiones existentes pero rechaza nuevas (0.411903ms)
✔ instalaciones: pertenecen al equipo, admiten SO/aplicaciones y rechazan recursos ajenos y destinos variables (1.579012ms)
✔ instalaciones: versiones, idempotencia, retirada, revisión y persistencia de historial (2.68862ms)
✔ licencia del software: opcional, misma compañía y tipo, vigencia, desvinculación e historial idempotente (2.838322ms)
✔ R2.4: global activo e inactivo separan alta, reconfiguración y recuperación histórica (0.613205ms)
✔ teletrabajo: ausencia, límites, fechas reales y contrato estricto (0.553104ms)
✔ teletrabajo: UUID, renovación y revocación auditadas, igualdad y destino fijo (0.837506ms)
✔ teletrabajo: vigencia inclusiva, programación, caducidad y persona inactiva (0.764806ms)
✔ teletrabajo: ámbito, unicidad incluso revocada, disponibilidad y retirada (0.582805ms)
✔ teletrabajo: rehidratación preserva identidad y detecta corrupción de raíz e historial (3.225625ms)
✔ Perfil: cuenta opcional, UUID, historial, identidad fija e idempotencia (0.981707ms)
✔ Perfil: desactivar conserva valores e historial, es idempotente y precede al borrado (0.423103ms)
✔ Perfil: misma persona/dispositivo único vigente, múltiples dispositivos/personas y revisión sin pérdida de datos (0.801806ms)
✔ Perfil: cuenta autorizada, vigencia inclusiva de caducidad, cierre de autorización y cuenta técnica (0.692606ms)
✔ Perfil: persistencia conserva revisiones y rechaza raíz o cuenta histórica incoherentes (2.887322ms)
✔ Perfil: solo un ordenador principal activo admite altas y reactivaciones; el historial se conserva (0.487304ms)
✔ PNG, JPEG y WebP se normalizan sin recorte y sin metadatos a un avatar ligero (59.965167ms)
✔ se rechazan archivos vacíos, corruptos, SVG y GIF aunque simulen un MIME válido (0.904207ms)
✔ se rechazan excesos de peso y dimensión antes de almacenar (2.112816ms)
✔ los PNG animados se rechazan antes de decodificarlos (1.455812ms)
✔ el contexto distingue cuentas y grupos del entorno, sin incluir otros entornos o datos globales (0.337503ms)
✔ recurso contextual: incluye identidades de sistemas distintos sin mezclar necesidades y concesiones ajenas (0.884007ms)
✔ filtro vacío no incluye elementos ajenos y las rutas validan UUID y contexto de compañía (1.903715ms)
✔ los catálogos presentan alta mediante acción y no un formulario junto al listado (60.671172ms)
✔ cuentas ofrecen caducidad opcional y campos sin contraseña (14.451313ms)
✔ la ayuda explica todos los elementos en ambos idiomas y distingue el ámbito (31.223543ms)
✔ los ejemplos del sistema orientan sin rellenar datos del alta (3.129924ms)
✔ las altas rápidas respetan el contexto, ámbito y relaciones históricas (0.526104ms)
✔ los formularios ofrecen altas relacionadas y el segundo modal evita altas anidadas (65.035106ms)
✔ aplicaciones: listado sin formularios, alta en cabecera y traducciones (17.470736ms)
✔ aplicaciones: selectores con alta rápida y ayuda inferior antes de guardar (13.715607ms)
✔ R2.5: perfil muestra nombre, origen y versión global sin ResourceDTO local ni mezcla de perfiles (32.873556ms)
✔ certificados: listado sin formularios, alta en cabecera y traducciones (16.538729ms)
✔ certificados: selectores con alta rápida y ayuda inferior antes de guardar (12.360096ms)
✔ la compañía de origen es ámbito visible, no un filtro eliminable con Limpiar filtros (49.387184ms)
✔ directorio: orden y página proceden de URL sin perder la consulta (20.258258ms)
✔ el dashboard no ofrece selector de compañía y conserva las métricas de cada ámbito (19.497952ms)
✔ el resumen de compañía es la entrada por defecto y ofrece destinos reales (28.582922ms)
✔ los índices de catálogos distinguen definiciones globales y variantes de compañía (4.279033ms)
✔ el listado presenta estado vacío y acceso al alta sin formularios visibles (8.388865ms)
✖ la ficha presenta datos de la compañía, contactos y acceso a sedes (15.284819ms)
✔ el formulario de sede ofrece dirección y teléfono opcionales (1.700613ms)
✖ el formulario de persona distingue contactos de cuentas de acceso y permite datos opcionales (3.012124ms)
✔ asignar un departamento permite añadir el primero y conserva el selector en edición (4.144632ms)
✔ el tablero de compañía tiene composición propia, acciones arriba y métricas limitadas a su ámbito (3.894931ms)
✔ el menú de compañía ordena trabajo y personas por grupos sin repetir las acciones de usuario (7.165556ms)
✔ sedes: listado traducido con filtro de archivadas y solo sedes activas por defecto (11.462489ms)
✔ la navegación de compañía conserva 21 enlaces reales, sección activa y contexto es/en (28.700723ms)
✔ el logo sustituye iniciales con URL versionada, dimensiones fijas y carga diferida (0.532004ms)
✔ sin logotipo aparecen iniciales y las listas consultan la misma caché de compañías (0.440003ms)
✔ cuentas del mapeo: exige asociación vigente y catálogos activos; no atribuye por login o por perfil (0.640805ms)
✔ actualización del mapeo: omitir cuenta conserva semántica distinta de retirarla explícitamente; admite revisión capturada (0.448803ms)
✔ uso de impresora: agrupa perfiles de un mismo equipo y separa pendientes e historial (0.738606ms)
✔ uso de impresora: referencias sin resolver no se presentan como ausencia de uso (0.137601ms)
✔ identidades locales: entorno del activo, navegación por UUID y estado vigente en es/en (3.413127ms)
✔ propietario local: vínculo retirado conserva navegación y no ofrece reasignación (0.431303ms)
✔ cuenta del mapeo: seleccionar perfil es una acción explícita; el render no infiere ni cambia cuenta (2.315518ms)
✔ correo: listado traducido, alta en cabecera y formularios ocultos (6.473151ms)
✔ correo: selectores reutilizables con altas y ayuda inmediatamente antes de guardar (3.676329ms)
✔ Buzones: alta en modal, cuenta opcional y ayuda al final (6.754252ms)
✔ L04.2: correo mantiene tabla y criterios mientras faltan sus referencias (3.966831ms)
✔ Personas conserva búsqueda por nombre, contactos, consulta y distinción ñ/n en es/en (52.71641ms)
✔ organización: resuelve departamento y cargo vigentes del responsable (0.267702ms)
✔ organización: sin responsable o asignación no infiere datos desde perfiles ni cargo genérico de persona (0.1015ms)
✔ organización: periodos semiabiertos, históricos y futuros (0.0768ms)
✔ organización: varias vigentes conservan todas, principal primero y orden estable sin mutar (0.150301ms)
✔ organización: dos principales no ocultan información seleccionando una arbitrariamente (0.077401ms)
✔ organización: aislamiento de compañía y persona, y referencias incompletas (0.091401ms)
✔ organización: cambios y refetch se derivan de la fuente actual (0.117201ms)
✔ impresoras: listado sin formularios, alta en cabecera y traducciones (6.249649ms)
✔ impresoras: selectores con alta rápida y ayuda inferior antes de guardar (6.027247ms)
✔ L04.2: Procesos recupera búsqueda, cerrados, orden y página en sus enlaces (13.449205ms)
✔ procesos: listados es/en sin formularios junto a los datos (13.290503ms)
✔ procesos: alta rápida y ayuda inferior antes del pie (5.541243ms)
✔ plantillas: instrucciones, desactivación y ayuda global es/en sin datos de compañía (4.110332ms)
✔ seguimiento: origen personal, revisión actual y edición sin afirmar retirada real; cerrados sin editar (17.681837ms)
✔ remotos: consulta sin formularios y traducciones (5.499642ms)
✔ remotos: formulario, altas rápidas y ayuda antes del pie (9.768376ms)
✔ remotos: origen personal, acceso configurado sin autorización y VPN separada (1.24441ms)
✔ las consultas de compañías conservan sus rutas y rechazan respuestas inválidas (20.336958ms)
✔ lectura y guardado de accesos están separados sin cambiar el contrato HTTP (1.31591ms)
✔ el guardado de usos de buzón mantiene su endpoint y no se confunde con la consulta (1.155609ms)
✔ los adapters mantienen la ausencia semántica sin modificar los campos del formulario (0.145101ms)
✔ las instrucciones de proceso conservan el orden y excluyen líneas vacías (0.114801ms)
✔ la validación de logos conserva tipos permitidos, vacío y límite exacto de tamaño (0.131101ms)
✔ la tabla espera todas sus referencias y distingue actualización de disponibilidad (0.0774ms)
✔ un fallo recuperable conserva datos anteriores sin presentarlos como actualizados (0.0996ms)
✔ una fuente denegada impide mostrar la caché de todo el listado compuesto (0.208401ms)
✔ dashboard: HTTP 401 conserva la semántica de disponibilidad (0.345302ms)
✔ dashboard: HTTP 403 conserva la semántica de disponibilidad (0.141601ms)
✔ dashboard: HTTP 503 conserva la semántica de disponibilidad (0.177201ms)
✔ dashboard: una lectura correcta valida y conserva la página del proveedor (0.746105ms)
✔ iniciales y siglas soportan nombres vacíos, Unicode y separadores (0.481804ms)
✔ el color es estable con variaciones de espacios, mayúsculas y acentos (0.155901ms)
✔ los colores generados mantienen contraste AA para texto pequeño (0.630705ms)
✔ el avatar conserva su nombre accesible y puede ser decorativo dentro de un botón etiquetado (0.424103ms)
✔ OSUI-01/02/17: SO actual desde instalación, independiente de cualquier valor de fábrica (1.092308ms)
✔ OSUI-03/04/05/18: vacío, pendiente y retirado no son SO actual (4.290433ms)
✔ OSUI-06/07: varios SO, orden determinista y aplicaciones excluidas (1.730613ms)
✔ OSUI-08/12: cambiar de activo conserva solo su SO, sin aceptar compañías ajenas (1.048708ms)
✔ OSUI-09: versión de instalación y redundancia literal sin reglas de fabricante (2.851622ms)
✔ OSUI-10: referencia no resoluble no significa ausencia; inactiva resoluble conserva información (1.431712ms)
✔ OSUI-11: error con datos previos, error de resolver y carga no se presentan como vacío (3.226925ms)
✔ OSUI-13/14: servidor sin puesto y plantilla propia consumen la misma lectura por activo (1.616113ms)
✔ OSUI-16: presentación es/en y versión opcional (2.675721ms)
✔ SO global: selector conserva scope y destino SO; la versión instalada sigue separada (0.222002ms)
✖ software del puesto es/en: SO actual, versión, enlaces y separación por ordenador sin formularios incrustados (6.377449ms)
✔ formulario software: recurso fijo en edición, estados permitidos, ayuda y ausencia de persona/perfil (3.118824ms)
✔ R2.4: nombre, origen y enlace global se resuelven sin ResourceDTO local; licencia continúa particular (8.764668ms)
✔ teletrabajo: consulta sin formularios y traducciones (4.797537ms)
✔ teletrabajo: formulario con alta rápida de persona, fechas opcionales y ayuda inferior (3.301326ms)
✔ teletrabajo: sin autorización no se presupone permiso; persona inactiva requiere revisión (1.342011ms)
✔ teletrabajo: alta desde un perfil fija la persona y no abre otra alta rápida (1.705414ms)
✔ teletrabajo es/en: conserva estado documental, vigencia y revisión como mensajes independientes (6.536251ms)
✔ entorno: reúne varios correos y configuraciones, distingue pendiente, retirada y revisión (0.777306ms)
✔ entorno: excluye cerradas, otros perfiles, compañías y correo antiguo sin adivinar relaciones (0.425204ms)
✔ entorno: composición vigente del puesto y datos actuales sin duplicación (0.457704ms)
✔ entorno: ficha es/en con estados y acciones, sin formularios; muestra falso y varios correos (12.635298ms)
✔ entorno: carga, fallo parcial sin falsa ficha vacía, perfil inexistente y aviso de archivado (11.245887ms)
✔ entorno: consulta autorización por persona, común a sus perfiles y sin confundir preparación (14.23231ms)
✔ entorno: accesos abiertos de la persona y sus orígenes sin confundirlos con configuraciones del perfil (4.617236ms)
✔ las entidades de los selectores se pluralizan en es/en sin reutilizar el verbo de acción (1.36901ms)
✔ perfiles: listado es/en, alta en cabecera y ausencia de formulario junto al listado (5.892546ms)
✔ perfiles: la cabecera breve conserva el motivo completo en la celda de revisión (9.400873ms)
✔ perfiles: alta en cuatro pasos, sin guardado intermedio y contenido de ayuda conservado (4.848338ms)
✔ perfiles: selección de persona explícita y cuenta opcional con altas independientes (6.252049ms)
✔ perfiles: el puesto fijado aporta su ordenador y no selecciona al responsable como usuario (3.230525ms)
✔ perfiles: requisitos por paso, cuenta opcional y propuesta basada en persona y ordenador (0.272803ms)
✔ perfiles: el nombre sugerido respeta el límite del contrato (0.107601ms)
✔ perfiles: resumen con listas, ordenador único y ausencias representadas por guion (1.686613ms)
✔ perfiles: edición completa con identidad fija aunque el perfil requiera revisión (2.795121ms)
✔ perfiles: orden y página navegables conservan búsqueda y archivados al abrir entorno (11.298688ms)
✔ el catálogo de aplicaciones de compañía conserva cursor, filtros y retorno a ficha (1.318811ms)
✔ las funcionalidades archivadas no tienen rutas activas (0.445704ms)
✔ el filtro de plantilla permite abrir listados y fichas de activos y recursos (0.572505ms)
✔ el filtro de plantilla se limita a los inventarios que conocen sus definiciones (0.295202ms)
✔ todas las secciones de compañía tienen una ruta propia y el índice es el resumen (0.754306ms)
✔ los índices de catálogos y los cinco catálogos globales son destinos independientes (0.212202ms)
✔ las configuraciones conservan la compañía y el UUID del perfil (0.242802ms)
✔ las rutas desconocidas y los parámetros inválidos no abren una sección por defecto (1.091609ms)
✔ la ficha de puesto tiene ruta propia, conserva el UUID y rechaza identificadores inválidos (0.525204ms)
✔ dominios: enlaces a cuentas y grupos limitados al entorno de la compañía (0.590104ms)
✔ los parámetros de contexto llegan al consumidor sin crear rutas nuevas ni aceptar claves ajenas (0.636505ms)
✔ catálogo de aplicaciones: UUID global y criterios propios sin compañía ficticia (0.468604ms)
✔ catálogo SO: ruta específica y filtros, sin confundir con aplicaciones (0.242002ms)
✔ la barra comienza desplegada sin navegador o sin una preferencia válida (0.300703ms)
✔ plegar y desplegar persisten la preferencia sin modificar otras claves (0.167901ms)
✔ un fallo de lectura, escritura o acceso a localStorage no bloquea la barra (0.175201ms)
✔ la capacidad del shell fuerza modos sin cambiar la preferencia manual (0.197802ms)
✔ un menú solo libera su modalidad si su presentación pasa a estar disponible fija (0.116601ms)
✔ layout 640px: 0 asociados y 0 instalaciones (5.066039ms)
✔ layout 640px: 0 asociados y 3 instalaciones (5.252841ms)
✔ layout 640px: 1 asociados y 0 instalaciones (1.949916ms)
✔ layout 640px: 1 asociados y 2 instalaciones (2.800522ms)
✔ layout 640px: 2 asociados y 3 instalaciones (3.637428ms)
✔ layout 748px: 0 asociados y 0 instalaciones (0.794006ms)
✔ layout 748px: 0 asociados y 3 instalaciones (2.209217ms)
✔ layout 748px: 1 asociados y 0 instalaciones (1.32501ms)
✔ layout 748px: 1 asociados y 2 instalaciones (2.203217ms)
✔ layout 748px: 2 asociados y 3 instalaciones (3.329025ms)
✔ layout 900px: 0 asociados y 0 instalaciones (0.555404ms)
✔ layout 900px: 0 asociados y 3 instalaciones (1.890015ms)
✔ layout 900px: 1 asociados y 0 instalaciones (1.030108ms)
✔ layout 900px: 1 asociados y 2 instalaciones (1.958115ms)
✔ layout 900px: 2 asociados y 3 instalaciones (3.023124ms)
✔ layout 1200px: 0 asociados y 0 instalaciones (0.710706ms)
✔ layout 1200px: 0 asociados y 3 instalaciones (2.236018ms)
✔ layout 1200px: 1 asociados y 0 instalaciones (1.120209ms)
✔ layout 1200px: 1 asociados y 2 instalaciones (2.301317ms)
✔ layout 1200px: 2 asociados y 3 instalaciones (2.930423ms)
✔ layout: dos asociados se reparten por capacidad; sin principal no se fabrican conexiones (3.512227ms)
✔ preview: conserva límites y publica solo cobertura real de fuentes conocidas (0.300702ms)
✔ WD04.4: acción estable de presentación, fuera de las relaciones y contadores, sin solapamientos (55.576631ms)
✔ WD04.5: acciones ordenadas del principal y periférico sin inferir software por categoría (0.872407ms)
✔ WD04.5: lectura sin permisos de edición, carga/error parcial y activos retirados (0.298002ms)
✔ WD04.5: distingue instalación, producto global/inactivo y licencia particular (0.435403ms)
✔ WD04.5: producto particular y gates cerrados no crean acciones administrativas (0.709905ms)
✔ WD04.5: estados terminales, refetch y cambio de principal o compañía no reutilizan acciones antiguas (0.189802ms)
✔ WD04.5: trigger es/en separado del enlace, tarjetas sin acciones y añadir sin menú (8.156964ms)
✔ dashboard: ordenador y equipamiento actuales, personas por perfiles y archivados separados (0.397804ms)
✔ dashboard: sin responsable sigue mostrando usuarios y un puesto desmantelado no cuenta historia como miembros (0.202402ms)
✔ dashboard: sustituir ordenador resuelve perfiles del nuevo host sin trasladar los anteriores (0.164401ms)
✔ dashboard: referencias ajenas o principal fuera de composición no aportan relaciones (0.119201ms)
✔ pendientes: solo pending, perfiles activos, compañía correcta y deduplicación por familia e identidad (0.613705ms)
✔ último cambio: orden cronológico sin mutación, altas de miembros y campos realmente cambiados (0.215102ms)
✔ equipamiento: principal válido primero, miembros únicos y secundarios en orden declarado (0.163001ms)
✔ equipamiento: activos sin principal no adquieren un principal por su tipo o posición (0.160701ms)
✔ equipamiento: principal fuera de composición se advierte sin añadirlo a miembros (0.112601ms)
✔ equipamiento: referencia ausente o de otra compañía no inventa datos ni marca principal (0.213802ms)
✔ equipamiento: vacío y desmantelado no recuperan miembros del historial (0.127101ms)
✔ equipamiento: averiado sigue asignado y conserva ambos estados originales (0.136301ms)
✔ expansión: todos abiertos inicialmente y plegado independiente de cada perfil (0.128801ms)
✔ refetch conserva plegados y filtros individuales, incluso con error o fuentes incompletas (0.122101ms)
✔ retirada o archivo limpia únicamente el estado del perfil afectado (0.088501ms)
✔ cambio de compañía, puesto u ordenador restablece todos los perfiles abiertos y los filtros (0.123401ms)
✔ orden estable y numérico del resumen y los pendientes, sin mutar datos remotos (0.143601ms)
✔ incluye solo perfiles del ordenador principal, distingue inactivos y deduplica personas (0.281003ms)
✔ puesto inexistente o sin composición no hereda perfiles de otros activos (0.196401ms)
✔ persona: responsabilidad y uso son independientes y solo se consideran puestos y perfiles vigentes (0.343002ms)
✔ ficha de puesto es/en: cabecera, retorno, bloques vacíos y edición modal sin formulario incrustado (16.087925ms)
✔ un UUID de puesto ausente muestra no encontrado sin cabecera ni edición de otro puesto (1.341011ms)
✔ ficha de persona es/en: distingue responsabilidad y uso, y enlaza los puestos (1.956716ms)
✔ ficha: ordenador destacado y periféricos sin repetir, perfiles solo del ordenador y personas deduplicadas (26.374705ms)
✔ personas y perfiles: carga y error no se presentan como listados vacíos (5.594643ms)
✔ ficha: no permite crear perfiles si el ordenador está retirado o el puesto está desactivado (29.037025ms)
✔ historial del puesto es/en: revisiones de más reciente a más antigua con autor y valores de cada momento (4.435735ms)
✔ personas es/en: enlaces a todos sus puestos bajo responsabilidad, sin confundirlos con puestos usados (20.126357ms)
✔ menú de compañía es/en: totales en badges alineados y cero real en secciones vacías (16.386228ms)
✔ ruta de activo de compañía abre la página con información, historial, software y solo sus perfiles (75.822589ms)
✔ equipamiento es/en: badges de principal, técnico y uso conservan su significado (5.14184ms)
✔ equipamiento: inventario fallido no se presenta como vacío y permite reintentar (3.230625ms)
✔ equipamiento: principal inconsistente se explica y no se incorpora como miembro válido (2.012815ms)
✔ personas y perfiles es/en: expansión contextual, enlaces independientes y resumen cero real (5.797345ms)
✔ cabecera es/en: responsable largo o ausente, contexto independiente y mapa con resumen (73.704572ms)
✔ perfiles: lista completa y todos desplegados por defecto, incluso con cincuenta perfiles (65.403608ms)
✔ perfiles: carga, error y datos retenidos no publican un total como actual (3.463327ms)
✔ equipamiento: contador conocido cero, uno, cinco y seis; error conserva filas sin publicar total (9.399973ms)
✔ configuración: cobertura desconocida, revisión y notas permanecen fuera del disclosure técnico (2.127716ms)
✔ perfiles: una actualización en curso conserva el total conocido y anuncia la actividad (1.27171ms)
✔ v2.2: dependencia sin principal conserva mapa y resumen y una explicación principal sin tabla vacía (10.768083ms)
✔ v2.2: un vacío confirmado de perfiles conserva el alta y evita cabeceras de una tabla sin filas (0.915007ms)
✔ v2.2: soporte distingue perfiles en carga, error, ausencia confirmada y persona no resuelta (2.074516ms)
✔ v2.2: referencia de principal no resuelta no publica cero pendientes ni ausencia de perfiles (4.727336ms)
✔ v3: Software conserva los tres estados documentales con la misma representación que las familias (20.223157ms)
✔ v3: estados técnicos de equipamiento conservan principal y asignación en es/en (10.818084ms)
✔ responsable es/en: avatar y nombre abren un único popup y la ausencia no ofrece acciones (2.780222ms)
✔ mapa visual: aísla compañías, deduplica miembros y conserva software y estados reales (2.760122ms)
✔ mapa es/en: principal solo, vacíos confirmados y error de software conservan navegación y gestión (31.968549ms)
✔ mapa: composición vacía y sin principal no fabrica relaciones ni instalaciones (0.884007ms)
✔ contexto de persona: rechaza datos de otra compañía y no ofrece acciones (0.537504ms)
✔ mapa es/en: carga inicial y carga parcial mantienen estados accesibles (15.615222ms)
✔ mapa es/en: leyenda con tres conceptos y cobertura explícita sin totales inventados (1.520912ms)
✔ mapa es/en: revisión de software traducida incluso sin referencia navegable (0.999408ms)
✔ WD04.4 es/en: acción autorizada, vacío accionable y lectura sin permiso (4.483635ms)
✔ perfiles del puesto: configuraciones de todos los activos abiertas y destinos accesibles únicos (11.467489ms)
ℹ tests 305
ℹ suites 0
ℹ pass 302
ℹ fail 3
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 5488.410922
✖ failing tests:
test at src/web/companies/shared/companies-page.test.tsx:1:4385
✖ la ficha presenta datos de la compañía, contactos y acceso a sedes (15.284819ms)
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert.ok(markup.includes("Personas (1)"))
at TestContext.<anonymous> (/home/david/dev/metis-desk/modules/companies/src/web/companies/shared/companies-page.test.tsx:180:10)
at async Test.run (node:internal/test_runner/test:1404:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:969:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: false,
expected: true,
operator: '==',
diff: 'simple'
}
test at src/web/companies/shared/companies-page.test.tsx:1:5801
✖ el formulario de persona distingue contactos de cuentas de acceso y permite datos opcionales (3.012124ms)
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert.ok(markup.includes("Esta persona no tiene acceso a Metis Desk"))
at TestContext.<anonymous> (/home/david/dev/metis-desk/modules/companies/src/web/companies/shared/companies-page.test.tsx:210:10)
at async Test.run (node:internal/test_runner/test:1404:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:969:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: false,
expected: true,
operator: '==',
diff: 'simple'
}
test at src/web/software-installations/shared/software.test.tsx:1:2755
✖ software del puesto es/en: SO actual, versión, enlaces y separación por ordenador sin formularios incrustados (6.377449ms)
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert.ok(html.includes("Windows 11 Pro"))
at TestContext.<anonymous> (/home/david/dev/metis-desk/modules/companies/src/web/software-installations/shared/software.test.tsx:126:12)
at async Test.run (node:internal/test_runner/test:1404:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:969:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: false,
expected: true,
operator: '==',
diff: 'simple'
}