ABCDEFGHIJKLMNOPQRSTUVWXYZAA
1
NEXUS DIGITAL
2
ID #TítuloHU relacionadaDescripciónPrecondicionesDatos de PruebaPasosResultado EsperadoStatusPrioridad
#Etiquetas (Tipos de Pruebas)
EvidenciaDiseñado porEjecutado porFecha de EjecuciónResultado ObtenidoComentariosCriterio de aceptaciónTipo de testingCapa¿Automatizable?ID del test automatizado
3
NroObjetivo del test case (Que se desea probar)Explicar brevemente que es lo que se va a probarTodo lo que necesito previamente para poder ejecutar estos test casesAlguna Query necesaria, Credenciales, etcPaso a paso de como probar este caso de pruebaQue es lo que debería hacer el sistema al ejecutar los pasosNOT RUNCríticaTags para filtrar los test casesCaptura de pantalla, gif, video demostrando que la prueba fue ejecutadaDiseñado porPersona que ejecutó el caso de pruebaFecha en la que se ejecutó este caso de pruebaLo que realmente ocurre al ejecutar la pruebaEn caso de que falle el test case, colocar una breve descripción explicando el porque falló y el ID del bug reportadoEl criterio de la HU que verifica el caso.Funcional, negativo, integración, etc.Unit, API/Integración o UI.Sí o NoEl identificador del test cuando lo implementen.
4
CP-01ARegistro de usuarioHU-01Verificar que un nuevo usuario pueda registrarse exitosamente en la aplicación móvil completando el formulario con datos válidos.La aplicación Android se encuentra instalada y abierta en el dispositivo o emulador. El backend (API Django) está activo, accesible y con la base de datos conectada. La pantalla de Registro (RegisterActivity) está visible y accesible desde el Login.El correo o nombre de usuario ingresado no debe existir previamente en la base de datos.Nombre: Juan | Apellido: Alonso | Usuario: juan_test | Email: juan.test@ejemplo.com | Contraseña: Password123! | Confirmar Contraseña: Password123!1. Abrir la aplicación e ir a la opción "Registrarse" o "Crear cuenta". 2. Ingresar el nombre y apellido en los campos correspondientes. 3. Ingresar un correo electrónico válido y no registrado. Ingresar una contraseña válida y confirmarla en el campo correspondiente. 4.Presionar el botón "Registrarse".La aplicación envía los datos vía POST a la API de Django; el servidor responde exitosamente (código 201 Created), se almacena el nuevo registro en la base de datos, la app muestra un mensaje de confirmación/éxito y redirige al usuario a la pantalla de Login o a la pantalla principal.NOT RUNCríticaFuncional - Seguridad, RF01Juan Ignacio AlonsoPENDIENTEPENDIENTEPENDIENTEFuncionalUI instrumentadaSí
5
CP-01BRegistro y posterior inicio de sesión con la cuenta creadaHU-01Verificar que una cuenta recién registrada queda almacenada y puede usarse para iniciar sesión.Backend activo con base de datos conectada. La app está en RegisterActivity. El email a usar no existe en la base de datos.Nombre: Juan | Apellido: Alonso | Email: juan.nuevo@ejemplo.com | Contraseña: Password123! | Confirmar: Password123!1. Completar el formulario de registro con datos válidos y presionar "Registrarse".
2. Verificar que el registro finaliza con éxito.
3. Ir a la pantalla de Login.
4. Ingresar el email y la contraseña recién registrados y presionar "Ingresar".
El registro responde 201 Created y el usuario queda almacenado. Con esas mismas credenciales el login es exitoso y la app navega a la pantalla principal.NOT RUNCríticaIntegración - Registro/Login, RF01Juan Ignacio AlonsoPENDIENTEPENDIENTEPENDIENTEEl usuario registrado puede autenticarse con las credenciales creadas.IntegraciónUI instrumentadaSí
6
CP-01CContraseña oculta en el formulario de registroHU-01Verificar que los campos de contraseña no muestran el texto en claro mientras el usuario escribe (protección de datos sensibles).La app está en RegisterActivity.Contraseña: Password123! | Confirmar contraseña: Password123!1. Abrir la pantalla de Registro.
2. Escribir una contraseña en el campo "Contraseña".
3. Escribir la misma contraseña en "Confirmar contraseña".
4. Observar cómo se muestran los caracteres.
Los caracteres de ambos campos se muestran enmascarados (puntos o asteriscos) y no en texto plano.NOT RUNAltaFuncional - Seguridad, UI, RF01Diseñado porPENDIENTEPENDIENTEPENDIENTELos datos sensibles ingresados no se exponen en pantalla.FuncionalUI instrumentadaSí
7
CP-01DRegistro con servidor no disponibleHU-01Verificar que si el backend no responde, la app informa el error al usuario sin cerrarse ni dejar la pantalla en estado inconsistente.La app está en RegisterActivity con el formulario completo con datos válidos. El backend está detenido o sin conexión (modo avión).Nombre: Juan | Apellido: Alonso | Email: juan.test2@ejemplo.com | Contraseña: Password123! | Confirmar: Password123!1. Detener el backend o desactivar la conexión de red.
2. Completar el formulario con datos válidos.
3. Presionar "Registrarse".
4. Observar la respuesta de la app.
La app muestra un mensaje de error de conexión, no se cierra inesperadamente y no indica que el registro fue exitoso. El formulario permite reintentar.NOT RUNAltaNegativa - Resiliencia, RF01Diseñado porPENDIENTEPENDIENTEPENDIENTELa app maneja la falla de conexión sin romperse.NegativaUI instrumentadaNo
8
CP-02AValidación del registroVerificar que la aplicación impida el registro y muestre los mensajes de error adecuados ante campos obligatorios vacíos, formatos de correo inválidos o contraseñas que no coinciden.La aplicación Android se encuentra en la pantalla de Registro (RegisterActivity). El backend y los servicios de red están activos. Caso 1 (Campos vacíos): Formulario en blanco. Caso 2 (Email inválido): Email = correo_invalido@sinformato. Caso 3 (Discrepancia de clave): Contraseña = Password123!, Confirmación = Password456! Caso 4 (Usuario existente): Email ya registrado en la base de datos (juan.test@ejemplo.com).1. Intentar presionar el botón "Registrarse" dejando los campos obligatorios vacíos y observar las advertencias. 2. Ingresar un email con formato incorrecto y presionar "Registrarse". 3. Ingresar contraseñas diferentes en los campos "Contraseña" y "Confirmar Contraseña" y presionar ,"Registrarse". 4. Ingresar un correo o usuario ya existente en la base de datos con contraseñas coincidentes y presionar "Registrarse".La aplicación bloquea el envío o el servidor rechaza la solicitud (código 400 Bad Request / 409 Conflict). La interfaz muestra alertas visuales claras indicando qué campo contiene el error, no se produce ningún cierre inesperado (crash) y no se crea ningún registro erróneo en la base de datos.NOT RUNCríticaPENDIENTEDiseñado porPENDIENTEPENDIENTEPENDIENTENegativaUnitaria local (JVM)SíAUT-UNIT-03 · AUT-UNIT-04
9
CP-02BRegistro con campos obligatorios vacíosHU-01Verificar que no se puede registrar un usuario dejando campos obligatorios vacíos.La app está en RegisterActivity. El backend está activo.Formulario completamente en blanco (y variante: un solo campo vacío a la vez).1. Dejar todos los campos vacíos.
2. Presionar "Registrarse".
3. Repetir completando todos los campos excepto uno.
La app no envía la solicitud (o el servidor responde 400) e indica qué campo es obligatorio. No se crea ningún usuario.PASSCríticaNegativa - Validación, RF01testing succesful.jpg, Test results - Test Summary.htmlLaura MolinaLaura Molina11/10/26El sistema impidió el registro y los validadores rechazaron las entradas vacías (""), cadenas compuestas solo por espacios en blanco (" ") y valores nulos (null), arrojando estado inválido según lo esperado.Se crearon dos tests en JUnit: uno negativo que rechaza valores vacíos, nulos o con espacios (testCampoObligatorioVacio_retornaFalso), y otro positivo que valida el ingreso con texto (testCampoConContenido_retornaVerdadero). Ambos aprobaron.Los campos obligatorios no pueden quedar vacíos.NegativaUnitaria local (JVM)SíAUT-UNIT-02
10
CP-02CRegistro con email de formato inválidoHU-01Verificar que el registro se rechaza cuando el email no tiene un formato válido.La app está en RegisterActivity. El backend está activo.Email: correo_invalido@sinformato | Contraseña: Password123! | Confirmar: Password123!1. Completar nombre, apellido y contraseñas válidas.
2. Ingresar un email sin formato válido.
3. Presionar "Registrarse".
La app muestra un mensaje de error en el campo email y no registra al usuario.NOT RUNAltaNegativa - Validación, RF01imagenes de nexusAndres RaffaeliAugusto Andres Raffaeli12/10/26El validador debe retornar false (o lanzar excepción de formato inválido) y rechazar la contraseña.Exitoso (PASS). La prueba unitaria en JUnit con @ParameterizedTest validó correctamente los casos borde de contraseñas mal formadas sin errores en la ejecución.Solo se aceptan emails con formato válido.NegativaUnitaria local (JVM)SíAUT-UNIT-04
11
CP-02DRegistro con contraseñas que no coincidenHU-01Verificar que el registro se rechaza si la contraseña y su confirmación son distintas.La app está en RegisterActivity. El backend está activo.Contraseña: Password123! | Confirmar: Password456!1. Completar los datos con email válido.
2. Ingresar contraseñas distintas en "Contraseña" y "Confirmar contraseña".
3. Presionar "Registrarse".
La app informa que las contraseñas no coinciden y no envía el registro.NOT RUNAltaNegativa - Validación, RF01Diseñado porPENDIENTEPENDIENTEPENDIENTELa confirmación de contraseña debe coincidir con la contraseña.NegativaUI instrumentadaSí
12
CP-02ERegistro con email ya registradoHU-01Verificar que no se puede crear un segundo usuario con un email existente.Existe un usuario registrado con el email juan.test@ejemplo.com. La app está en RegisterActivity.Email ya registrado: juan.test@ejemplo.com | Contraseña: Password123! | Confirmar: Password123!1. Completar el formulario usando el email ya registrado.
2. Presionar "Registrarse".
3. Observar la respuesta.
El servidor rechaza la solicitud (400 Bad Request / 409 Conflict), la app informa que el email ya existe y no se duplica el usuario.NOT RUNAltaNegativa - Integridad de datos, RF01Diseñado porPENDIENTEPENDIENTEPENDIENTENo se permiten cuentas duplicadas.NegativaIntegración de redNo
13
CP-02FRegistro con dato por debajo del límite mínimoHU-01Verificar el valor límite: un dato con longitud inferior al mínimo permitido es rechazado.La app está en RegisterActivity. Se conoce la longitud mínima definida para el campo (según la regla de validación implementada).Valor con longitud mínima − 1 caracteres y valor con exactamente la longitud mínima.1. Ingresar un valor un carácter más corto que el mínimo.
2. Presionar "Registrarse" y observar.
3. Repetir con un valor de exactamente el mínimo.
El valor inferior al mínimo es rechazado con mensaje de error; el valor de longitud mínima exacta es aceptado.PASSMediaNegativa - Valor límite, RF01test 3.jpg - Google Drive, test 3.htmlLaura MolinaLaura Molina11/10/26El validador retornó false al ingresar un dato con longitud inferior al límite requerido (5 caracteres frente al umbral mínimo de 6) y true al ingresar exactamente la cantidad mínima requerida (6 caracteres), cumpliendo con la regla de negocio.Se crearon dos tests en JUnit: uno negativo que rechaza si tiene menos del mínimo (testLongitudInferiorAlLimite_retornaFalso), y otro positivo en el límite exacto de 6 caracteres (testLongitudExactaAlLimite_retornaVerdadero). Ambos aprobaron.Se respetan los límites de longitud definidos.NegativaUnitaria local (JVM)SíAUT-UNIT-03
14
CP-03AInicio de sesiónHU-02Verificar que un usuario con credenciales válidas puede iniciar sesión correctamente.Existe al menos un usuario registrado con credencialesválidas en la base de datos. El servidor Django esta activo y accesible . La app muestra LoginActivity.Email: juan.test@ejemplo.com Password: Password123!1. Abrir la app. 2. Ingresar usuario en el campo correspondiente. 3. Ingresar contraseña. 4. Presionar el botón "Ingresar".El sistema valida las credenciales contra la API de Django, recibe el token de autenticación y navega a la pantalla principal mostrando un mensaje de bienvenida.NOT RUNCríticaFuncional - SeguridadDiseñado porPENDIENTEPENDIENTEPENDIENTEPENDIENTEFuncionalUnitaria local (JVM)SíAUT-UNIT-02
15
CP-03BInicio de sesión con credenciales inválidasHU-02Verificar que el sistema rechase el login cuando el email o la contraseña son incorrectasExiste al menos un usuario registrado con credencialesválidas en la base de datos. El servidor Django esta activo y accesible . La app muestra LoginActivity.Email: juan.test@ejemplo.com Password incorrecta : clave-equivocad999 1. Abrir la app. 2. Ingresar el email válido(juan.test@ejemplo.com. 3. Ingresar una contraseña incorrecta. 4. Presionar "Ingresar".La app muestra el mensaje "Email o contraseña incorrectos", no navega a ninguna otra pantalla, y no guarda ninguna sesión.NOT RUNCriticaFuncional - Seguridad, NegativaDiseñado porPENDIENTEPENDIENTEPENDIENTEPENDIENTENegativaUI instrumentadaSíAUT-UI-03
16
CP-03CInicio de sesión con campos vacíosHU-02Verificar que no se puede iniciar sesión dejando email y/o contraseña vacíos.La app muestra LoginActivity.Email vacío y contraseña vacía (y variantes con uno solo de los campos vacío).1. Abrir la app en la pantalla de Login.
2. Dejar los campos vacíos.
3. Presionar "Ingresar".
La app muestra un mensaje indicando que los campos son obligatorios, no envía la solicitud, no navega y no guarda sesión.PASSAltaNegativa - Validación, SeguridadReporte HTML de connectedDebugAndroidTest y capturas (link de Drive de AUT-UI-01)Griselda AguirreAguirre Griselda12/10/2026: Con email y contraseña vacíos, al presionar “Ingresar” la app muestra el mensaje “Completá email y contraseña”, no navega a otra pantalla y no guarda sesión.Test de UI con Espresso y ActivityScenarioRule: LoginFlowTest.mostrarErrorCuandoLosCamposEstanVacios. Ejecutado con .\gradlew connectedDebugAndroidTest en Android 11: 2 tests, 0 fallos. Cubre el caso de ambos campos vacíos.Los campos obligatorios no pueden quedar vacíos al iniciar sesión.NegativaUI instrumentadaSíAUT-UI-01 · AUT-UNIT-02
17
CP-03DInicio de sesión con email de formato inválidoHU-02Verificar que el login rechaza un email con formato incorrecto antes de consultar al servidor.La app muestra LoginActivity.Email: correo_invalido@sinformato | Contraseña: Password123!1. Ingresar un email sin formato válido.
2. Ingresar una contraseña cualquiera.
3. Presionar "Ingresar".
La app indica que el email no es válido, no navega y no guarda sesión.NOT RUNMediaNegativa - ValidaciónDiseñado porPENDIENTEPENDIENTEEl email debe tener formato válido.NegativaUnitaria local (JVM)SíAUT-UNIT-04
18
CP-03EInicio de sesión con usuario inexistenteHU-02Verificar que el login falla de forma controlada con un email que no está registrado.El backend está activo. El email a usar no existe en la base de datos.Email: noexiste@ejemplo.com | Contraseña: Password123!1. Ingresar el email inexistente y una contraseña.
2. Presionar "Ingresar".
3. Observar el mensaje.
La app muestra un mensaje de error de credenciales, no navega y no guarda sesión. La app no se cierra inesperadamente.NOT RUNAltaNegativa - SeguridadDiseñado porPENDIENTEPENDIENTEPENDIENTEUn usuario inexistente no puede autenticarse.NegativaUnitaria local (JVM)SíAUT-UNIT-06
19
CP-03FAlmacenamiento de sesión tras login exitosoHU-02Verificar que luego de un login exitoso la app guarda el token y los datos del usuario.Existe un usuario registrado. El backend está activo.Email: juan.test@ejemplo.com | Contraseña: Password123!1. Iniciar sesión con credenciales válidas.
2. Verificar que la app navega a la pantalla principal.
3. Confirmar que la sesión (token y usuario) quedó guardada, por ejemplo accediendo al Perfil.
Se guardan el token de autenticación y los datos del usuario, y están disponibles para las demás pantallas.NOT RUNAltaFuncional - Sesión, SeguridadDiseñado porPENDIENTEPENDIENTEPENDIENTETras autenticarse, la sesión queda disponible para la app.FuncionalUnitaria local (JVM)SíAUT-UNIT-05
20
CP-03GInicio de sesión con falla del servidor (error 500)HU-02Verificar que ante un error del servidor el login informa el problema sin cerrar la app ni guardar sesión.Servidor simulado (MockWebServer) respondiendo 500, o backend con falla controlada.Respuesta HTTP 500 Internal Server Error.1. Configurar la respuesta 500.
2. Intentar iniciar sesión con credenciales válidas.
3. Observar el resultado.
La app devuelve un error controlado, no se cierra, no navega y no guarda sesión.NOT RUNAltaNegativa - ResilienciaDiseñado porPENDIENTEPENDIENTEPENDIENTEEl login maneja errores del servidor sin romperse.NegativaIntegración de redSíAUT-NET-02
21
CP-04ANavegación desde LoginHU-07Verificar que tras un login exitoso la app redirige correctamente a la pantalla principal.El usuario ya completó un login exitoso(depende de CP_03). MainActivity (u otra pantalla destino) ya esta implementada.Mismas credenciales válidas usadas en CP_031. Realizar login exitoso (pasos de CP_03). 2. Observar la pantalla que se muestra inmediatamente después.La app abre la pantalla principal(HomeActivity) sin errores ni cierres inesperados, mostrando el catálogo de productos.NOT RUNAltaFuncional - NavegaciónDiseñado porPENDIENTEPENDIENTEPENDIENTESi CP-03 falla ,este caso pasa automáticamente a estado BLOCKED - no debe ejecutarse con credenciales inválidas.FuncionalUI instrumentadaSíAUT-UI-02
22
CP-04BLogin fallido no navega a la pantalla principalHU-07Verificar que con credenciales inválidas la app permanece en Login y no abre la pantalla principal.Existe un usuario registrado. La app muestra LoginActivity.Email: juan.test@ejemplo.com | Contraseña incorrecta: clave-equivocada9991. Ingresar email válido y contraseña incorrecta.
2. Presionar "Ingresar".
3. Observar la pantalla mostrada.
La app permanece en LoginActivity con el mensaje de error y no abre HomeActivity.NOT RUNAltaFuncional - Navegación, Seguridad, NegativaDiseñado porPENDIENTEPENDIENTEPENDIENTENo se accede a la pantalla principal sin autenticarse.NegativaUI instrumentadaSíAUT-UI-03
23
CP-05AVisualización del catálogoHU-03Verificar que la aplicación muestre correctamente el listado de productos disponibles en la pantalla de catálogo.El usuario inició sesión correctamente. Existe al menos un producto cargado. La pantalla HomeActivity está implementada.Listado de productos de ejemplo: "Notebook Lenovo" ($350000, stock 5), "Bicicleta Rodado 29" ($180000, stock 2), "Silla Gamer" ($95000, stock 8).1. Iniciar sesión con credenciales válidas.
2. Esperar a que la app navegue a la pantalla de catálogo (HomeActivity).
3. Observar el listado de productos mostrado en pantalla.
La pantalla de catálogo muestra el listado de productos con nombre, precio, stock y vendedor, sin errores ni cierres inesperados.PENDIENTECríticaFuncional - UIPor completarYohana GrossoPENDIENTEPENDIENTEPENDIENTEEl catálogo muestra el listado de productos disponibles sin errores ni cierresFuncionalUI instrumentadasi
24
CP-05BImagen genérica en cada productoHU-03Verificar que cada producto del catálogo muestre la imagen genérica (ic_product_placeholder).La aplicación está instalada y abierta. El usuario inició sesión y está en la pantalla de catálogo (HomeActivity).Productos de ejemplo: Notebook Lenovo ($350000), Bicicleta Rodado 29 ($180000), Silla Gamer ($95000).1. Abrir el catálogo. 2. Observar cada ítem del listado.Cada producto muestra la imagen genérica, con el mismo tamaño y sin imágenes rotas.NOT RUNMediaFuncional - UIPor completarYohana GrossoPENDIENTEPENDIENTEPENDIENTECada ítem del catálogo muestra una imagen.FuncionalUI instrumentadasi
25
CP-05CCatálogo sin productosHU-03Verificar que la pantalla no falle cuando no hay productos para mostrar.La aplicación está abierta en el catálogo con la lista de productos vacía (por ejemplo, quitando temporalmente los datos de ejemplo).Lista de productos vacía.1. Abrir el catálogo con la lista vacía. 2. Observar la pantalla.La pantalla se muestra vacía o con un aviso, sin errores ni cierres inesperados.NOT RUNAltaNegativa - UIPor completarYohana GrossoPENDIENTEPENDIENTEPENDIENTELa app no se cierra ante una lista vacía.NegativaUI instrumentadasi
26
CP-05DBúsqueda por nombre de productoHU-11Verificar que la barra de búsqueda filtre los productos por nombre.La aplicación está instalada y abierta. El usuario inició sesión y está en la pantalla de catálogo (HomeActivity).Texto de búsqueda: notebook1. Tocar la barra de búsqueda. 2. Escribir notebook. 3. Observar el listado.Solo se muestra Notebook Lenovo; los demás productos desaparecen del listado.NOT RUNAltaFuncional - BúsquedaYohana GrossoPENDIENTEPENDIENTEPENDIENTELa búsqueda filtra el catálogo por nombre.FuncionalUI instrumentadasi
27
CP-05EBúsqueda sin distinguir mayúsculas y minúsculasHU-11Verificar que la búsqueda dé el mismo resultado con mayúsculas o minúsculas.La aplicación está instalada y abierta. El usuario inició sesión y está en la pantalla de catálogo (HomeActivity).Texto de búsqueda: NOTEBOOK1. Escribir NOTEBOOK en la barra de búsqueda. 2. Observar el listado.Se muestra Notebook Lenovo, igual que al buscar notebook.NOT RUNMediaFuncional - BúsquedaYohana GrossoPENDIENTEPENDIENTEPENDIENTELa búsqueda no distingue mayúsculas de minúsculas.FuncionalUI instrumentadasi
28
CP-05FBúsqueda sin coincidenciasHU-11Verificar que, si ningún producto coincide con el texto, la app no falle.La aplicación está instalada y abierta. El usuario inició sesión y está en la pantalla de catálogo (HomeActivity).Texto de búsqueda: zzzz1. Escribir zzzz en la barra de búsqueda. 2. Observar la pantalla.El listado queda vacío, sin errores ni cierres inesperados.NOT RUNAltaFuncional - BúsquedaYohana GrossoPENDIENTEPENDIENTEPENDIENTELa app no se cierra cuando no hay resultados.NegativaUI instrumentadasi
29
CP-05GBorrar la búsqueda restaura el listadoHU-11Verificar que al borrar el texto de búsqueda se muestre otra vez el catálogo completo.La aplicación está instalada y abierta. El usuario inició sesión y está en la pantalla de catálogo (HomeActivity).Texto de búsqueda: notebook, luego borrado.1. Escribir notebook. 2. Borrar el texto de la barra de búsqueda. 3. Observar el listado.Se muestran de nuevo todos los productos.NOT RUNMediaFuncional - BúsquedaYohana GrossoPENDIENTEPENDIENTEPENDIENTESin texto de búsqueda, el catálogo muestra todos los productos.FuncionalUI instrumentadasi
30
CP-06ASelección de un productoHU-10Verificar que al seleccionar un producto del catálogo, la aplicación navegue correctamente hacia la pantalla de detalle.El usuario se encuentra en la pantalla de catálogo (HomeActivity). Existe al menos un producto listado. La pantalla DetailActivity está implementada.Producto de ejemplo: id_producto = 1, nombre = "Notebook Lenovo".1. Ingresar a la pantalla de catálogo.
2. Tocar sobre un producto del listado.
3. Observar la pantalla que se abre.
La aplicación abre la pantalla de detalle del producto seleccionado (DetailActivity), enviando correctamente el id_producto, sin errores ni cierres inesperados.PENDIENTECríticaFuncional - Navegación, RF04Por completarYohana GrossoPENDIENTEPENDIENTEPENDIENTEAl tocar un producto se abre DetailActivity con el id_producto correctoFuncionalUI instrumentadasi
31
CP-06BSelección de un producto que no es el primeroHU-10Verificar que al tocar el segundo o tercer producto se abra el que corresponde y no siempre el primero.La aplicación está instalada y abierta. El usuario inició sesión y está en la pantalla de catálogo (HomeActivity).Productos de ejemplo: Notebook Lenovo ($350000), Bicicleta Rodado 29 ($180000), Silla Gamer ($95000).1. Tocar Silla Gamer (tercer producto). 2. Observar el detalle. 3. Volver y tocar Bicicleta Rodado 29. 4. Observar el detalle.Cada toque abre el detalle del producto tocado: Silla Gamer y luego Bicicleta Rodado 29.NOT RUNAltaFuncional - NavegaciónPor completarYohana GrossoPENDIENTEPENDIENTEPENDIENTEEl detalle abierto corresponde al producto tocado.FuncionalUI instrumentadasi
32
CP-06CSelección de un producto después de filtrarHU-10Verificar que, con la búsqueda aplicada, el producto tocado abra su propio detalle y no el de otra posición de la lista original.La aplicación está instalada y abierta. El usuario inició sesión y está en la pantalla de catálogo (HomeActivity).Texto de búsqueda: silla. Producto esperado: Silla Gamer.1. Escribir silla en la barra de búsqueda. 2. Tocar el único resultado. 3. Observar el detalle.Se abre el detalle de Silla Gamer, no el de Notebook Lenovo.NOT RUNCríticaFuncional - Navegación, BúsquedaPor completarYohana GrossoPENDIENTEPENDIENTEPENDIENTECon la lista filtrada, el detalle corresponde al producto tocado.FuncionalUI instrumentadasi
33
CP-07Acceso al detalle del productoHU-04Verificar que el usuario pueda acceder a la pantalla de detalle seleccionando un ítem del catálogo.El usuario debe encontrarse en el catálogo de productos y existir al menos un producto.Producto disponible en el catálogo con stock activo.1. Ingresar al catálogo.
2. Seleccionar un producto.
3. Acceder al detalle.
Se muestra la información detallada del producto seleccionado incluyendo nombre, precio, descripción, stock e imagen.NOT RUNMediaFuncional, UI, R4PENDIENTEGriselda AguirrePENDIENTEPENDIENTEPENDIENTEPENDIENTEVerificar que el usuario pueda acceder al detalle de un producto seleccionado desde el catálogo.Funcional / UIUI instrumentadasi
34
CP-07BIntento de acceso a un producto no disponible o eliminadoHU-04Verificar el manejo de errores cuando se intenta acceder a un producto que fue dado de baja concurrentemente en el backend.El usuario se encuentra en el catálogo. El producto seleccionado fue dado de baja en el backend.ID de producto inexistente o inactivo.1. Seleccionar un producto de la lista cuyo registro fue eliminado previamente en el servidor.

2. Intentar acceder a su pantalla de detalle.
La aplicación no debe generar un error de tipo NullPointerException ni crashear. Debe mostrar un mensaje claro al usuario (ej. "El producto seleccionado ya no está disponible") y retornar o refrescar el catálogo.NOT RUNMediaFuncional, Negativo,Griselda AguirrePENDIENTEPENDIENTEPENDIENTEPENDIENTEEl sistema debe manejar de forma controlada el intento de acceso a un producto inactivo.Funcional / NegativoUI instrumentadasi
35
CP-07CPérdida de conexión al backend durante la carga del detalleHU-04Verificar el comportamiento de la interfaz ante un fallo de red al solicitar el detalle del producto vía API REST.El usuario se encuentra en el catálogo con la conexión a red deshabilitada o interrumpida.Red desconectada / Modo avión activo.1. Seleccionar un producto del catálogo sin conexión de red.

2. Esperar la respuesta de la petición GET.
Se muestra un estado de error amigable (Empty State / Snackbar) indicando el fallo de red, permitiendo reintentar la acción sin congelar la UI.NOT RUNAltaFuncional, Negativo,Griselda AguirrePENDIENTEPENDIENTEPENDIENTEPENDIENTELa aplicación debe informar al usuario si ocurre un fallo de red al realizar la petición de datosFuncional / NegativoRed / UIsi
36
CP-08Retorno desde el detalle del productoHU-08Verificar que el usuario pueda regresar desde la pantalla de detalle a la pantalla anterior.El usuario debe enontrarse en la pantalla de algún producto.Producto seleccionado1. Ingresar al detalle de un producto.
2. Utilizar la opción de volver.
La aplicación debe regresar correctamente a la Activity padre correspondiente, manteniendo la navegación definida.NOT RUNMediaFuncional, UI, R8Griselda AguirrePENDIENTEPENDIENTEPENDIENTEPENDIENTEVerificar que el usuario pueda regresar desde la pantalla de detalle a la pantalla anterior.Funcional / UIUI / Navegación (Android)si
37
CP-08BRetorno con pérdida de contexto en la Activity padre (Process Death)HU-08Validar la gestión de la navegación hacia atrás cuando el sistema operativo liberó los recursos de la Activity padre por baja memoria.El usuario está en la pantalla de detalle y el sistema operativo mató el proceso de la app en segundo plano.Estado de actividad destruido por el sistema (Process Death).Presionar el botón de retroceso (Back) tras la aniquilación del proceso por parte del SO.La aplicación no crashea ni genera excepciones, recargando de forma limpia el flujo o restaurando el estado con seguridad.NOT RUNAltaFuncional / NegativoGriselda AguirrePENDIENTEPENDIENTEPENDIENTEPENDIENTELa aplicación debe gestionar correctamente la navegación hacia atrás incluso ante pérdida de contexto.Funcional / UIsi
38
CP-09AAcceso al perfilHU-05Verificar que el usuario autenticado pueda acceder correctamente a la pantalla de perfil (ProfileActivity) y visualizar sus datos almacenados en la sesión.El usuario debe estar autenticado en la aplicación.
Debe existir una sesión activa almacenada en SharedPreferences.
Credenciales / Datos en SharedPreferences: Nombre: "Andrés Raffaelli", Email: "araffaeli@ejemplo.com"1. Iniciar sesión exitosamente en la aplicación.
2. Navegar hacia la sección / opción "Perfil" desde el menú o pantalla principal.
3. Observar la pantalla "ProfileActivity" y la información desplegada en los campos.
La aplicación abre la pantalla ProfileActivity sin errores ni cierres inesperados. Se muestra correctamente la información del usuario (nombre, correo electrónico) obtenida desde SharedPreferences.NOT RUNCríticaSoledad ScarlataPENDIENTEPENDIENTE
39
CP-09BEl perfil muestra los datos del usuario autenticadoHU-05Verificar que el perfil muestra los datos del usuario que inició sesión y no los de otro.Existen dos usuarios registrados. Se inicia sesión con uno de ellos.Usuario 1: Andrés Raffaelli / araffaeli@ejemplo.com. Usuario 2: otro usuario registrado.1. Iniciar sesión con el usuario 1 y abrir el Perfil; anotar nombre y email.
2. Cerrar sesión.
3. Iniciar sesión con el usuario 2 y abrir el Perfil.
Cada perfil muestra únicamente el nombre y email del usuario autenticado en ese momento.NOT RUNAltaFuncional - Seguridad, Datos personalesPENDIENTE​PENDIENTEPENDIENTEEl perfil refleja la sesión activa.FuncionalUI instrumentadasi
40
CP-09CAcceso al perfil sin sesión activaHU-05Verificar que sin sesión iniciada no se muestran datos personales en el perfil.No hay sesión: SharedPreferences sin datos de usuario (app recién instalada o sesión cerrada).Sin credenciales.1. Asegurar que no hay sesión activa.
2. Intentar abrir ProfileActivity (por la navegación disponible).
3. Observar el resultado.
La app no muestra datos de ningún usuario, no se cierra inesperadamente y redirige a Login o informa que se requiere iniciar sesión.NOT RUNAltaNegativa - Seguridad, Control de accesoPENDIENTE​PENDIENTEPENDIENTENo se exponen datos personales sin autenticación.NegativaUI instrumentadasi
41
CP-10ACierre de sesiónHU-06Verificar que el usuario pueda cerrar la sesión activa de forma segura, limpiando los datos persistidos en la app y siendo redirigido a la pantalla de Login.El usuario se encuentra autenticado y dentro de la pantalla de Perfil (ProfileActivity). Existen datos de sesión activos en SharedPreferences.Sesión activa del usuario. Acción de clic sobre el botón "Cerrar Sesión" / "Logout".1. Acceder a la pantalla de Perfil (ProfileActivity).
2. Presionar el botón "Cerrar Sesión".
3. Observar la navegación realizada por la app y verificar el estado de la sesión
La aplicación elimina/limpia los datos guardados en SharedPreferences, destruye el stack de actividades previo y redirige al usuario a la pantalla de inicio de sesión (LoginActivity). Al presionar el botón "Atrás", no se debe poder reingresar a la pantalla de Perfil sin autenticarse nuevamente.NOT RUNCríticaDiseñado porPENDIENTEPENDIENTE
42
CP-10BBotón Atrás tras cerrar sesión no vuelve al perfilHU-06Verificar que luego de cerrar sesión no se puede regresar a pantallas protegidas con el botón Atrás.Usuario autenticado en ProfileActivity.Sesión activa.1. Presionar "Cerrar Sesión" y llegar a Login.
2. Presionar el botón Atrás del dispositivo.
La app no regresa al perfil ni a pantallas con datos del usuario (se cierra la app o permanece en Login).NOT RUNCríticaFuncional - Seguridad, Sesión​PENDIENTEPENDIENTEPENDIENTEEl stack de pantallas se limpia al cerrar sesión.FuncionalUI instrumentadaSí
43
CP-10CCierre de sesión elimina los datos guardadosHU-06Verificar que al cerrar sesión se borran el token y los datos del usuario de SharedPreferences.Usuario autenticado con sesión guardada.Sesión activa.1. Confirmar que existe la sesión guardada.
2. Presionar "Cerrar Sesión".
3. Verificar que los datos de sesión ya no existen.
SharedPreferences no conserva token ni datos del usuario.NOT RUNCríticaFuncional - Seguridad, Sesión​PENDIENTEPENDIENTEPENDIENTECerrar sesión limpia la información persistida.FuncionalUnitaria local (JVM)Sí
44
CP-10DNuevo inicio de sesión sin datos residualesHU-06Verificar que tras cerrar sesión e ingresar con otra cuenta no quedan datos de la cuenta anterior.Dos usuarios registrados. Se cerró la sesión del primero.Usuario 1 y Usuario 2 distintos.1. Cerrar sesión del usuario 1.
2. Iniciar sesión con el usuario 2.
3. Abrir el Perfil.
Se muestran solo los datos del usuario 2, sin rastros del usuario 1.NOT RUNAltaFuncional - Seguridad, Sesión​PENDIENTEPENDIENTEPENDIENTELas sesiones consecutivas no se mezclan.FuncionalUI instrumentadaSí
45
CP-11Navegación desde la pantalla inicialHU-07Verificar que al iniciar la aplicación desde la pantalla inicial, la navegación funciona correctamente hacia las secciones disponibles.La aplicación está instalada y abierta en la pantalla inicial. El usuario no está autenticado previamenteNo requiere credenciales, solo interacción con la pantalla inicial.1. Abrir la aplicación y permanecer en la pantalla inicial.
2. Seleccionar las opciones de navegación disponibles.
3. Observar la pantalla a la que redirige cada opción.
La aplicación permite navegar desde la pantalla inicial hacia las secciones correspondientes sin errores ni cierres inesperados.PENDIENTEMediaFuncional - NavegaciónPor completarDiseñado porPENDIENTEPENDIENTEPENDIENTE
46
CP-11BCada opción de navegación abre su pantallaHU-07Verificar una por una que cada opción de la pantalla inicial lleva a su destino correcto.La app está abierta en la pantalla inicial.Opciones de navegación disponibles en la pantalla inicial.1. Seleccionar la primera opción y observar el destino.
2. Volver a la pantalla inicial.
3. Repetir con cada opción restante.
Cada opción abre la pantalla que le corresponde, sin errores ni cierres inesperados.NOT RUNMediaFuncional - Navegación​PENDIENTEPENDIENTEPENDIENTETodas las opciones de navegación llevan a su destino.FuncionalUI instrumentadaSí
47
CP-11CRetorno a la pantalla inicial desde una secciónHU-07Verificar que desde una sección se puede volver a la pantalla inicial.El usuario navegó desde la pantalla inicial a una sección.No requiere credenciales.1. Desde la pantalla inicial, abrir una sección.
2. Presionar el botón Atrás.
La app regresa a la pantalla inicial sin errores.NOT RUNMediaFuncional - Navegación​PENDIENTEPENDIENTEPENDIENTEEl retorno mantiene la navegación definida.FuncionalUI instrumentadaSí
48
CP-12Acceso a la pantalla de ContactoHU-08Verificar que al seleccionar la opción de “Contacto” desde la pantalla inicial, la aplicación abre correctamente la pantalla de contacto.La aplicación está abierta en la pantalla inicial.
La pantalla de contacto ya está implementada.
No requiere credenciales, solo interacción con la opción “Contacto”.1. Abrir la aplicación y permanecer en la pantalla inicial.
2. Seleccionar la opción “Contacto”.
3. Observar la pantalla que se muestra inmediatamente después.
La aplicación abre la pantalla de contacto sin errores ni cierres inesperados, mostrando los campos y la información esperada.NOT RUNAltaFuncional - NavegaciónPor completarDiseñado porPENDIENTEPENDIENTEPENDIENTE
49
CP-12BContenido de la pantalla de ContactoHU-08Verificar que la pantalla de Contacto muestra los campos e información esperados.La app está en la pantalla inicial y la pantalla de contacto está implementada.No requiere credenciales.1. Abrir "Contacto" desde la pantalla inicial.
2. Revisar los campos y la información mostrados.
Se visualizan todos los campos y datos de contacto definidos, sin textos cortados ni elementos superpuestos.NOT RUNMediaFuncional - UI​PENDIENTEPENDIENTEPENDIENTELa pantalla de Contacto presenta la información prevista.FuncionalUI instrumentadaSí
50
CP-12CRetorno desde ContactoHU-08Verificar que desde Contacto se puede volver a la pantalla anterior.El usuario está en la pantalla de Contacto.No requiere credenciales.1. Abrir "Contacto".
2. Presionar el botón Atrás (o la flecha de retorno).
La app regresa a la pantalla inicial sin errores ni cierres inesperados.NOT RUNMediaFuncional - Navegación​PENDIENTEPENDIENTEPENDIENTEEl retorno desde Contacto funciona.FuncionalUI instrumentadaSí
51
CP-13Consumo de API con MockWebServer (200 y 500)Verificar parseo de JSON en respuesta 200 y manejo de error 500 sin romper la app.Servidor MockWebServer configurado localmente sin red real.JSON simulado 200 OK y error HTTP 500 Internal Server Error.1. Enqueue respuesta 200 en MockWebServer y ejecutar llamada.
2. Enqueue respuesta 500 y ejecutar llamada.
En 200 se mapean los objetos Java; en 500 se captura el error sin crashear.PASSCríticaCP-13_reporte_tests.html.pdf LoginRepositoryNetTest.jpgYohana GrossoYohana Grosso12/10/20262/2 tests pasaron: 200 convierte el JSON en LoginResponse y 500 devuelve error sin romper la appIntegraciónIntegración de redSíAUT-NET-01 · AUT-NET-02
52
CP-13BRespuesta 200 con JSON malformado o vacíoVerificar que un cuerpo inválido en una respuesta 200 no rompe la app.MockWebServer configurado localmente sin red real.Respuesta 200 con cuerpo vacío y con JSON incompleto.1. Encolar la respuesta 200 con cuerpo vacío y ejecutar la llamada.
2. Encolar la respuesta 200 con JSON incompleto y ejecutar la llamada.
La app captura el error de parseo, devuelve un error controlado y no se cierra.NOT RUNAltaNegativa - Integración de redYohana GrossoPENDIENTEPENDIENTEPENDIENTEEl error de parseo se maneja sin crashear.NegativaIntegración de redSí
53
CP-13CFalla de red o servidor sin respuestaVerificar el comportamiento ante corte de conexión o timeout.MockWebServer configurado localmente.Servidor que corta la conexión o demora más que el timeout.1. Configurar la desconexión o el retraso en MockWebServer.
2. Ejecutar la llamada.
La app devuelve un error de conexión controlado, sin bloquearse ni cerrarse.NOT RUNAltaNegativa - ResilienciaYohana GrossoPENDIENTEPENDIENTEPENDIENTELos fallos de red se manejan sin romper la app.NegativaIntegración de redSí
54
CP-14Inicio de sesión con credenciales inválidasHU-02Verificar que el sistema rechase el login cuando el email o la contraseña son incorrectasExiste al menos un usuario registrado con credencialesválidas en la base de datos. El servidor Django esta activo y accesible . La app muestra LoginActivity.Email: juan.test@ejemplo.com Password incorrecta : clave-equivocad999 1. Abrir la app. 2. Ingresar el email válido(juan.test@ejemplo.com. 3. Ingresar una contraseña incorrecta. 4. Presionar "Ingresar".La app muestra el mensaje "Email o contraseña incorrectos", no navega a ninguna otra pantalla, y no guarda ninguna sesión.NOT RUNCríticaFuncional - Seguridad, NegativaPor completarSoledad ScarlataPENDIENTEPENDIENTEPENDIENTEPENDIENTENegativaUI instrumentadaSíAUT-UI-03
55
CP-15Control de acceso: un usuario no puede agregar ítems al carrito ni a la orden de otro usuarioVerificar que un usuario autenticado no pueda crear detalles de carrito o de orden sobre recursos que pertenecen a otro usuario. El backend debe rechazar la solicitud con 403 Forbidden.Backend Django en ejecución local, en la rama develop. Usuarios A y B registrados. B tiene un carrito y una orden propios. A tiene un token de sesión válido.Usuario A y usuario B (compradores). id_carrito e id_orden de B. Un producto existente y cantidad 1.1. Iniciar sesión como A y obtener su token. 2. Enviar POST /api/detalle-carrito/ con el token de A y el id_carrito de B. 3. Enviar POST /api/detalle-orden/ con el token de A y el id_orden de B. 4. Repetir el paso 2 sin token. 5. Control positivo: POST /api/detalle-carrito/ con el token de A y el id_carrito de A.Paso 2 (carrito de B): el servidor responde 403 Forbidden y no se crea ningún ítem. Paso 3 (orden de B): se espera 403 Forbidden; si el servidor lo acepta (201), el caso queda en FAIL y se documenta como mejora pendiente (control de pertenencia en DetalleOrdenViewSet). Paso 4: rechaza por falta de autenticación (401). Paso 5: crea el ítem (201), lo que confirma que el bloqueo solo afecta a recursos ajenos.NOT RUNCríticaSeguridad - Autorización, OWASP A01Yohana GrossoPENDIENTEPENDIENTEPENDIENTESe ejecuta para confirmar el estado real. Si el paso 3 falla, ver 'Mejoras de seguridad pendientes' en la documentación de Ciberseguridad.Un usuario no puede consultar, modificar ni eliminar información de otra persona.NegativaAPI/IntegraciónNo
56
CP-16Control de acceso por ID: un usuario no puede consultar la orden de otro usuarioVerificar que, al cambiar el ID de la orden en la URL, un usuario autenticado no pueda ver ni modificar una orden ajena.Backend Django en ejecución local. Usuarios A y B registrados, cada uno con al menos una orden. A tiene un token de sesión válido.Usuario A y usuario B (compradores). id de una orden de A y de una orden de B.1. Iniciar sesión como A y obtener su token. 2. Enviar GET /api/ordenes/{id de una orden de B}/ con el token de A. 3. Enviar GET /api/ordenes/{id de una orden de A}/ con el token de A (control positivo).Paso 2: el servidor responde 403 Forbidden o 404 Not Found y no devuelve datos de la orden. Paso 3: responde 200 OK con los datos de la orden propia.NOT RUNCríticaSeguridad - Autorización, OWASP A01Yohana GrossoPENDIENTEPENDIENTEPENDIENTEEn develop las consultas de órdenes se filtran por usuario, por lo que se espera 404 para una orden ajena. Verificar al ejecutar.Un usuario no puede consultar, modificar ni eliminar información de otra persona.NegativaAPI/IntegraciónNo
57
TC-ACC-01Accesibilidad de los campos del loginHU-02Verificar que los campos de la pantalla de login cumplen los chequeos automáticos de accesibilidad (etiquetas, áreas táctiles, contraste).App instalada, LoginActivity visible, dispositivo Android 11 conectado, AccessibilityChecks habilitado.No requiere credenciales.1. Conectar el dispositivo. 2. Ejecutar .\gradlew connectedDebugAndroidTest. 3. Revisar el resultado de LoginAccessibilityTest#camposDelLogin_cumplenChequeosDeAccesibilidad.El test pasa y AccessibilityChecks no reporta errores en los campos del login.PASSAltaAccesibilidad, UI, LoginReporte HTML de connectedDebugAndroidTest (capturas)Griselda AguirreGriselda Aguirre13/10/26El test pasó (passed). La pantalla de login cumple los chequeos de accesibilidad.Ejecutado en celular con Android 11. No usa red ni Thread.sleep(). Issue #73.Los elementos del login son accesibles.AccesibilidadUI instrumentadaSiACC-01A
58
TC-ACC-02Accesibilidad del mensaje de error del loginHU-02Verificar que el mensaje de error del login (campos vacíos) cumple los chequeos de accesibilidad.App instalada, LoginActivity visible, dispositivo Android 11 conectado, AccessibilityChecks habilitado.Email y contraseña vacíos.Ejecutar .\gradlew connectedDebugAndroidTest. 2. Revisar el resultado de LoginAccessibilityTest#mensajeDeError_cumpleChequeosDeAccesibilidad.Con el mensaje de error visible, AccessibilityChecks no reporta problemas.PASSAltaAccesibilidad, UI, Login, NegativaReporte HTML de connectedDebugAndroidTest (capturas)Griselda AguirreGriselda Aguirre13/10/26El test pasó (passed) en 1,147 s.Ejecutado en celular con Android 11. No usa red ni Thread.sleep(). Issue #73.Los mensajes de error son accesibles.AccesibilidadUI instrumentadaSiACC-01B
59
TC-ACC-03Contraste de texto en Catálogo y Registro“Transversal (accesibilidad)”Verificar que los textos de Catálogo (descripción y precios) y de Registro (etiquetas y textos secundarios) cumplen el contraste mínimo de WCAG.App instalada en el dispositivo, Accessibility Scanner instalado y habilitado.No requiere.1. Activar Accessibility Scanner. 2. Abrir Catálogo y capturar con el Scanner. 3. Abrir Registro y capturar con el Scanner. 4. Revisar las sugerencias de contraste.El Scanner no reporta problemas de contraste en ninguna de las dos pantallas.FAILMediaAccesibilidad, Manual, Scannerhttps://github.com/Nexus-Proyecto/Nexus-Digital-App-Movil/issues/70 Griselda AguirreGriselda Aguirre12/10/26El Scanner reporta contraste de texto insuficiente en Catálogo (descripción y precios) y en Registro (etiquetas y textos secundarios).Falla. Bug reportado en Issue #70.Los textos cumplen los ratios de contraste de WCAG.AccesibilidadUI / Manual asistidoNoACC-02
60
TC-ACC-04Tamaño de áreas táctiles en Catálogo y Registro“Transversal (accesibilidad)”Verificar que los elementos interactivos de Catálogo y Registro tienen un área táctil de al menos 48x48 dp.App instalada en el dispositivo, Accessibility Scanner instalado y habilitado.No requiere.1. Activar Accessibility Scanner. 2. Capturar Catálogo. 3. Capturar Registro. 4. Revisar las sugerencias de tamaño de elementos táctiles.Todos los elementos interactivos cumplen el tamaño mínimo y el Scanner no reporta sugerencias.FAILMediaAccesibilidad, Manual, Scannerhttps://github.com/Nexus-Proyecto/Nexus-Digital-App-Movil/issues/71Griselda AguirreGriselda Aguirre12/10/26El Scanner reporta elementos táctiles por debajo del tamaño mínimo recomendado en ambas pantallas.Falla. Bug reportado en Issue #71.Los elementos interactivos tienen al menos 48x48 dp.AccesibilidadUI / Manual asistidoNoACC-02
61
TC-ACC-05Ajuste de texto en Catálogo y Login“Transversal (accesibilidad)”Verificar que Catálogo y Login se adaptan al cambio de escala de tipografía del sistema sin perder información ni funcionalidad.App instalada en el dispositivo, Accessibility Scanner instalado y habilitado.No requiere.1. Activar Accessibility Scanner. 2. Capturar Catálogo. 3. Capturar Login. 4. Revisar las sugerencias de ajuste de texto.El texto se adapta correctamente y el Scanner no reporta problemas.FAILMediaAccesibilidad, Manual, Scannerhttps://github.com/Nexus-Proyecto/Nexus-Digital-App-Movil/issues/72Griselda AguirreGriselda Aguirre12/10/26El Scanner reporta problemas de ajuste de texto en Catálogo y Login.Falla. Bug reportado en Issue #72.La interfaz se adapta a diferentes escalas de texto sin perder información.AccesibilidadUI / Manual asistidoNoACC-02
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100