misw4103-final's People
misw4103-final's Issues
Permite incluir en la página inicial un enlace a un recurso que no existe (y sale error 404)
Describe the bug
Al realizar la configuración del diseño del sitio (Setting - Design) es posible cambiar uno de los enlaces que aparecen allí por una ruta que no existe. La aplicación permite grabar y luego, al visualizar el sitio y seleccionar el enlace efectivamente aparece el error 404.
To Reproduce
- Ingresar a la aplicación con un usuario administrador.
- Seleccionar la opción "Design" que aparece en la parte izquierda, debajo de Settings.
- En la ventana que aparece cambiar una de las rutas que están allí, alterando la parte final. Por ejemplo, si decía: "/author/ghost/", cambiar por "/author/NOghost" (ver pantallazo)
- Presionar el botón "Save" que aparece en la parte superior derecha.
- Seleccionar la opción "View site" que aparece en el menú de la izquierda (parte superior) para previsualizar el sitio web.
- En la página que aparece seleccionar el enlace que se cambió (AUTHOR en este caso).
- Aparece error 404.
Expected behavior
Al cambiar una ruta que sea parte del mismo sitio web se debería validar que el recurso exista. En caso de que no exista debe mostrar un mensaje de error y no permitir el cambio.
Video
PE024.mp4
Enviroment (please complete the following information):
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Navegador: Google Chrome Versión 111.0.5563.147
Additional context
El video con la prueba se puede observar aquí (solo para usuarios con correo uniandes.edu.co): Video Editar Diseño - mal Enlace
No muestra mensaje de error claro al escribir un slug muy grande en tag
Comportamiento esperado
Cuando en un tag se escribe el slug con texto muy largo y se intenta grabar, debería mostrar un mensaje de error que explicara claramente el error.
Comportamiento actual
Al crear un nuevo tag, escribir en el campo de Slug un texto muy largo e intentar grabar, aparece el campo slug en rojo y el botón de "Save" cambia a "Retry" (en rojo), pero no muestra un mensaje que explique el error con claridad y por lo tanto no es fácil deducir lo que sucede.
Pasos a reproducir
- Ingresar a la aplicación (Ghost) con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "Tags".
- Seleccionar el botón "New Tag".
- Escribir en el campo Name el valor: "Largo".
- Escribir en el campo Slug un texto de más de 191 caracteres, por ejemplo: "Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
- Presionar "Save".
- Se observa como el campo queda en rojo y cambia el botón de "Save" a "Retry", pero no se muestra mensaje de error (ver imagen en evidencias).
Evidencias
Contexto (Ambiente de ejecución)
Herramienta probada: Ghost versión 3.41.1
Herramientas usadas para las pruebas:
Kraken commit c62bfe7
Node JS versión 12.22.1
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Navegador: Google Chrome Versión 111.0.5563.147
Información adicional
La prueba (usando Scenarios Outline en tag-slug) termina con error porque no encuentra el mensaje de error esperado.
Versión en desarrollo tiene nuevo fondo de perfil por defecto
Comportamiento esperado
Que los elementos básicos de un perfil tuvieran pocos cambios visuales en la versión 4.44.0 con respecto a la versión 3.41.1.
Comportamiento actual
Cuando se selecciona un perfil de un miembro (staff) para editarlo, se tiene un cambio visual entre las dos versiones del 10,64 %. Este porcentaje es principalmente porque cambió la imagen que se usaba por defecto para el fondo del perfil. Aunque este no es un error grave, se recomienda revisar los colores usados en la nueva imagen de fondo, pues es importante que no se genere confusión en el usuario por margas o logos que puedan tener esos colores.
Pasos a reproducir
Se deben ejecutar los pasos explicados en el ReadMe de este repositorio, sección "Instrucciones para generar el reporte HTML", y luego, en el reporte, abrir la sección editar-perfil, esc14, 07_StaffList_editProfile.
Evidencias
Contexto (Ambiente de ejecución)
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Herramienta probada: Ghost versiones 3.41.1 y 4.44.0
Herramientas usadas para las pruebas:
Cypress versión 12.11.0
ResembleJS commit 17ed085
Node JS versión 16.20.0
Google Chrome versión 113.0.5672.93
Información adicional
Ninguna
Al editar un post permite adicionar texto en los tags y luego no aparece lo escrito
Describe the bug
Cuando se edita un post, en la sección de settings, aparece un campo para seleccionar los tags. Además de seleccionar los existentes también permite escribir un texto como si fuera un tag nuevo. El texto es visible mientras se edita el post, pero luego cuanto se regresa a la lista de post y se consulta su información detallada se observa que el texto ingresado como nuevo tag ha desaparecido.
To Reproduce
- Ingresar a la aplicación con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "Post".
- Hacer clic el Post "Publishing options" (o cualquier otro) para que muestre la ventana de edición.
- Seleccionar, en la parte superior derecha, el ícono de settings para mostrar los detalles.
- En el campo "tags" escribir algo diferente a los tags del listado. Por ejemplo: "XYZ". NO se debe seleccionar la opción "add" que aparece.
- Se puede ocultar/mostrar la parte de settings y observar que sigue apareciendo el texto.
- Seleccionar, en la parte superior izquierda, el enlace a "Posts".
- Hacer clic el Post "Publishing options" (o el que se hubiera editado) para que muestre la ventana de edición.
- Seleccionar, en la parte superior derecha, el ícono de settings para mostrar los detalles.
- Observar que ya no aparece lo escrito en tags.
Expected behavior
No debería permitir escribir en el campo de tags, solo debería permitir seleccionar los tags existentes. También es posible que debe ingresar, pero que muestre un mensaje advirtiendo que no se grabará a menos que se adicione.
Video
PE030.mp4
Enviroment (please complete the following information):
- Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
- S.O.: Windows 10 Pro 21H2 (64 bits)
- Navegador: Google Chrome Versión 111.0.5563.147
Additional context
El video con la prueba se puede observar aquí (solo para usuarios con correo uniandes.edu.co): Video Editar Post - normal
No muestra error cuando el título de un post es muy largo
Comportamiento esperado
Cuando se escribe un título de un post muy largo debería mostrar un mensaje de error para que se pueda hacer la corrección correspondiente .
Comportamiento actual
Al crear un post con un título muy largo (de más de 250 caracteres) y luego tratar de regresar a la lista de post pregunta si desea grabar o salir, pero no muestra ningún error. El usuario no sabría qué hacer, porque no hay una opción para grabar (save) y si deja la página pierde lo que hubiera escrito.
Pasos a reproducir
- Ingresar a la aplicación (Ghost) con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "Posts".
- Seleccionar el botón "New post".
- Escribir, en el título (Post Title) un texto largo, de más de 250 caracteres, por ejemplo: "Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa".
- Hacer clic en el enlace "Posts" que aparece en la parte superior izquierda.
- Se observa como aparece una ventana preguntando si desea grabar o salir (como se ve en la imagen de evidencias), pero no muestra ningún mensaje de error.
Evidencias
Contexto (Ambiente de ejecución)
Herramienta probada: Ghost versión 3.41.1
Herramientas usadas para las pruebas:
Kraken commit c62bfe7
Node JS versión 12.22.1
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Navegador: Google Chrome Versión 111.0.5563.147
Información adicional
La prueba (usando Scenarios Outline en post-name) termina con error porque no encuentra el mensaje de error esperado.
Al crear una página con muchos caracteres, la aplicación deja de funcionar
Comportamiento esperado
Al crear una página en ghost, se debe ingresar el titulo y el contenido. Se espera que se pueda introducir un texto grande sin congelar la aplicación.
Comportamiento actual
Cuando se ingresa a paginas y se intenta crear una página, no hay una validación en el texto del contenido, lo cual al ingresar mas de 56.000 palabras, la aplicación deja de funcionar.
Pasos a reproducir
- Ingresar al sistema
- Hacer login
- Ir a la seccion "Pages"
- Seleccionar nueva página.
- Ingresar el titulo y el contenido con más de 50.000 palabras.
Evidencias
PE012.mp4
Contexto (Ambiente de ejecución)
App version: 3.41.1
OS: Windows 10 Pro
Browser: Chrome
Información adicional
Error al crear sitio con usuario admin con nombre largo
Comportamiento esperado
Durante la creación de un sitio, cuando se introduce un nombre completo con más de 191 caracteres, debe aparecer un error indicando que la longitud máxima es de 191 caracteres. Si, sin embargo, se pulsa el botón "Last step: Invite staff users", se debería mostrar un error como "Please fill out the form to setup your blog.", que se muestra para otros tipos de datos inválidos.
Comportamiento actual
Durante la creación de un sitio, cuando se introduce un nombre completo con más de 191 caracteres, no se muestra un error. Al pulsar el botón "Last step: Invite staff users" se muestra un error Value in [users.name] exceeds maximum length of 191 characters. users.name
que no es fácilmente comprensible por el usuario.
Pasos a reproducir
- Instalar ghost
- Navegar a
/ghost
para crear un sitio - Pulsar el botón "Create your account"
- Digitar título del sitio, nombre completo con más que 191 caracteres, email, y password
- Seleccionar "Last step: Invite staff users"
Evidencias
PE016.mp4
Contexto (Ambiente de ejecución)
App version: 3.41.1
OS: Debian 11.6 (bullseye)
Browser: Chrome 111 (Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36)
Información adicional
Log:
[2023-03-31 20:33:05] ERROR "POST /ghost/api/v3/admin/authentication/setup/" 422 206ms
Value in [users.name] exceeds maximum length of 191 characters.
"users.name"
Error ID:
3db031f0-d003-11ed-92db-69a7604d035b
----------------------------------------
ValidationError: Value in [users.name] exceeds maximum length of 191 characters.
at new ValidationError (/var/lib/ghost/versions/3.41.1/node_modules/@tryghost/errors/node_modules/ghost-ignition/lib/errors/index.js:141:23)
at each (/var/lib/ghost/versions/3.41.1/core/server/data/validation/index.js:237:43)
at arrayEach (/var/lib/ghost/versions/3.41.1/node_modules/lodash/lodash.js:516:11)
at Function.forEach (/var/lib/ghost/versions/3.41.1/node_modules/lodash/lodash.js:9368:14)
at Object.validateSchema (/var/lib/ghost/versions/3.41.1/core/server/data/validation/index.js:181:7)
at Child.onValidate (/var/lib/ghost/versions/3.41.1/core/server/models/base/index.js:282:27)
at Child.onUpdating (/var/lib/ghost/versions/3.41.1/core/server/models/base/index.js:424:37)
at /var/lib/ghost/versions/3.41.1/node_modules/bookshelf/lib/base/events.js:101:64
at tryCatcher (/var/lib/ghost/versions/3.41.1/node_modules/bluebird/js/release/util.js:16:23)
at Object.gotValue (/var/lib/ghost/versions/3.41.1/node_modules/bluebird/js/release/reduce.js:166:18)
at Object.gotAccum (/var/lib/ghost/versions/3.41.1/node_modules/bluebird/js/release/reduce.js:155:25)
at Object.tryCatcher (/var/lib/ghost/versions/3.41.1/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/var/lib/ghost/versions/3.41.1/node_modules/bluebird/js/release/promise.js:547:31)
at Promise._settlePromise (/var/lib/ghost/versions/3.41.1/node_modules/bluebird/js/release/promise.js:604:18)
at Promise._settlePromise0 (/var/lib/ghost/versions/3.41.1/node_modules/bluebird/js/release/promise.js:649:10)
at Promise._settlePromises (/var/lib/ghost/versions/3.41.1/node_modules/bluebird/js/release/promise.js:729:18)
Chrome Developer Console:
Error: POST http://127.0.0.1:2368/ghost/api/v3/admin/authentication/setup/ 422 (Unprocessable Entity)
Error al crear un post con URL larga
Comportamiento esperado
Cuando se selecciona la opción crear nuevo post, el sistema debe validar el tamaño permitido de la url antes de guardar, ademas debe notificar al usaurio la longitud máxima de un URL.
Comportamiento actual
Cuando se selecciona la opción crear nuevo post, el sistema no valida el tamaño permitido de la url antes de guardar, lo que provoca al ingresar una URL muy larga que se muestre un mensaje de error Ember AJAX Request GET /ghost/api/v3/admin/slugs/post/abcdefghijklmnopqrstuvwx[...]ijklmnop/ returned a 431 Payload (Empty Content-Type) "Request Header Fields Too Large"
e impide que el post se guarde correctamente.
Pasos a reproducir
- Ingresar al sistema
- Hacer login
- Ir a la sección de post
- Seleccionar crear nuevo post
- Seleccionar configuración (Icono de engranaje)
- En "Post URL" digitar un URL con 10.000 caracteres
Evidencias
PE014.mp4
Contexto (Ambiente de ejecución)
App version: 3.41.1
OS: Debian 11.6 (bullseye)
Browser: Chrome 111 (Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36)
Información adicional
Chrome Developer Console:
Error: GET http://127.0.0.1:2368/ghost/api/v3/admin/slugs/post/abcdefgd...defghijklmnop/ 431 (Request Header Fields Too Large)
Editar el nombre luego de tener un error por sobrepasar la cantidad de caracteres
Describe the bug
Al agregar un titulo largo a la etiqueta aparece un error advirtiendo que no puede ser mayor a 191 caracteres, por lo que se decide modificarlo y no permite ser guardado nuevamente.
To Reproduce
- Página principal
- En el menú izquierdo se selecciona "Tags"
- En la parte superior derecha se encuentra el botón verde "New Tag"
- Se debe llenar de forma obligatoria el espacio de "Name" y como opcional se puede poner un color, imágen y descripción.
- Al momento de agregar un nombre que sobrepase los 191 caracteres no se permitirá guardar la etiqueta
- Se procede a cambiar por un nombre más corto, no se actualiza el vinculo y el botón "Retry" no permite guardar la edición, impidiendo la correcta creación de la etiqueta Imágen 1
Expected behavior
Al momento de cambiar poner un nombre mayor al numero de caracteres aceptados, se debe permitir la correcta edicion y publicación de la etiqueta
Video
PE019.mp4
Enviroment (please complete the following information):
- Device: Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz 2.59 GHz, 12,0 GB RA
- OS: Windows 10 Pro
- Browser Google Chrome
- Version 111.0.5563.147
Additional context
Add any other context about the problem here.
Al editar un post no es clara la forma de grabar los cambios realizados
Describe the bug
A diferencia de cuando se crea un post, que se graba automáticamente, cuando se edita un post no sucede lo mismo y es necesario guardar los cambios (esto se informa mediante un mensaje de error al intentar regresar a la lista de post). Sin embargo, no hay un botón de guardar o actualizar, si no que se debe ingresar por el enlace "Update" y luego sí aparece el botón, lo cual no es tan intuitivo.
To Reproduce
- Ingresar a la aplicación con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "Post".
- Hacer clic el Post "Publishing options" (o cualquier otro) para que muestre la ventana de edición.
- Cambiar el texto del Post (ver primer pantallazo adjunto).
- Seleccionar, en la parte superior izquierda, el enlace a "Posts".
- Aparece la ventana con el error (ver segundo pantallazo adjunto).
Expected behavior
Debería tener alguno de dos comportamientos: O guardar los cambios automáticamente, o incluir un botón de guardar o de actualizar que sea más visible (no como está actualmente, dentro de la opción actualizar, que parecería ser para algo diferente). También puede ser que en la ventana de error que aparece se presente una opción para grabar los cambios, no solo para descartarlos o continuar editando - que son las opciones actuales.
Evidencias
Video
PE030.mp4
Enviroment (please complete the following information):
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Navegador: Google Chrome Versión 111.0.5563.147
Additional context
El video con la prueba se puede observar aquí (solo para usuarios con correo uniandes.edu.co): Video Editar Post - normal
No se puede guardar el tag después de haber introducido una descripción larga
Comportamiento esperado
Si se crea una nuevo tag con una descripción de más de 500 caracteres, aparece un error al guardarla. Si después se acorta la descripción para que tenga menos de 500 caracteres, se espera que el tag se pueda guardar correctamente.
Comportamiento actual
Si se crea una nuevo tag con una descripción de más de 500 caracteres, aparece un error al guardarla. Si después se acorta la descripción para que tenga menos de 500 caracteres, al guardar persiste el error y no se puede guardar el tag.
Pasos a reproducir
- Ingresar al sistema
- Hacer login
- Ir a la sección de tags
- Seleccionar "New tag"
- Ingresar nombre y una descripción con más de 500 caracteres
- Guardar
- El sistema muestra un mensaje de alerta
- Ingresa una descripción con menos de 500 caracteres
- Seleccionar "Retry"
Evidencias
PE018.mp4
Contexto (Ambiente de ejecución)
App version: 3.41.1
OS: Debian 11.6 (bullseye)
Browser: Chrome 111 (Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36)
Información adicional
No se observan mensajes de error en el servidor ni en Chrome Developer Console
Error al crear página con texto muy largo
Comportamiento esperado
Se esperar poder crear una página con un texto muy largo sin error o al menos con un error comprensible por el usuario.
Comportamiento actual
Al introducir un texto muy largo, aparece un banner rojo con el mensaje de error "request entity too large". Además, el texto no se guarda como borrador y no hay ninguna indicación de que la página no se ha guardado exitosamente.
Pasos a reproducir
- Ingresar al módulo administrativo
- Seleccionar la opción "Pages" en el menú
- Seleccionar "New page"
- Ingresar un titulo
- Ingresar un texto muy largo. Se puede encontrar un ejemplo que reproduce el error en
PaginaLarga.txt
Evidencias
PE013.mp4
Contexto (Ambiente de ejecución)
App version: 3.41.1
OS: Debian 11.6 (bullseye)
Browser: Chrome 111 (Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36)
Información adicional
Log:
[2023-03-31 11:21:51] ERROR "PUT /ghost/api/v3/admin/pages/6426c246f74e420001d8c926/" 413 36ms
request entity too large
Error ID:
3ba48a70-cfb6-11ed-9a0d-a16a3c769ec7
----------------------------------------
InternalServerError: request entity too large
at new GhostError (/var/lib/ghost/versions/3.41.1/node_modules/@tryghost/errors/lib/errors.js:10:26)
at _private.prepareError (/var/lib/ghost/versions/3.41.1/core/server/web/shared/middlewares/error-handler.js:53:19)
at Layer.handle_error (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/layer.js:71:5)
at trim_prefix (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:315:13)
at /var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:335:12)
at next (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:275:10)
at Layer.handle_error (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/layer.js:67:12)
at trim_prefix (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:315:13)
at /var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:335:12)
at next (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:275:10)
at Layer.handle_error (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/layer.js:67:12)
at trim_prefix (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:315:13)
at /var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:335:12)
PayloadTooLargeError: request entity too large
at readStream (/var/lib/ghost/versions/3.41.1/node_modules/raw-body/index.js:155:17)
at getRawBody (/var/lib/ghost/versions/3.41.1/node_modules/raw-body/index.js:108:12)
at read (/var/lib/ghost/versions/3.41.1/node_modules/body-parser/lib/read.js:77:3)
at jsonParser (/var/lib/ghost/versions/3.41.1/node_modules/body-parser/lib/types/json.js:135:5)
at Layer.handle [as handle_request] (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:317:13)
at /var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:335:12)
at next (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:275:10)
at expressNoop (/var/lib/ghost/versions/3.41.1/core/shared/sentry.js:34:9)
at Layer.handle [as handle_request] (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:317:13)
at /var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:335:12)
at next (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/router/index.js:275:10)
at expressInit (/var/lib/ghost/versions/3.41.1/node_modules/express/lib/middleware/init.js:40:5)
Chrome Developer Console:
Error: PUT http://127.0.0.1:2368/ghost/api/v3/admin/pages/6426c246f74e420001d8c926/ 413 (Payload Too Large)
Permite crear Tags con nombre repetido
Comportamiento esperado
Cuando se crea un nuevo tag debería validar si el nombre ya está creado, para no permitir repetidos. Se debería mostrar un mensaje de error cuando esto ocurra.
Comportamiento actual
Permite crear tags con nombres repetidos. Internamente crea un "slug" diferente, pero para el usuario no es clara la diferencia entre los dos tags, por lo que no es conveniente permitir esto.
Pasos a reproducir
- Ingresar a la aplicación (Ghost) con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "Tags".
- Seleccionar el botón "New Tag".
- Escribir en el campo Name el valor: "Etiqueta 1".
- Presionar "Save".
- De nuevo: En las opciones del menú del lado izquierdo, seleccionar "Tags".
- Seleccionar el botón "New Tag".
- Escribir en el campo Name el valor: "Etiqueta 1".
- Presionar "Save".
- De nuevo: En las opciones del menú del lado izquierdo, seleccionar "Tags".
- Se observa como en la lista aparecen dos tags con el mismo nombre (ver imagen en las evidencias).
Evidencias
Contexto (Ambiente de ejecución)
Herramienta probada: Ghost versión 3.41.1
Herramientas usadas para las pruebas:
Kraken commit c62bfe7
Node JS versión 12.22.1
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Navegador: Google Chrome Versión 111.0.5563.147
Información adicional
La prueba (usando Scenarios Outline en tag-name) termina con error porque no encuentra el mensaje de error esperado.
Error inesperado con caracteres especiales en Facebook Profile
Comportamiento esperado
Si se ingresan caracteres especiales en el Facebook Profile (al editar un perfil), debe salir un mensaje informativo al usuario, pero no un error mayor de la aplicación.
Comportamiento actual
Cuando se edita un perfil de una persona (staff) y en el campo de Facebook Profile se escriben caracteres especiales aparece un mensaje de error de la aplicación que dice: "object null is not iterable". Este mensaje no es apropiado para los usuarios y no debería mostrarse, sino uno más explicativo.
Pasos a reproducir
- Ingresar a la aplicación (Ghost) con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "Staff".
- Seleccionar uno de los perfiles que aparecen.
- En el formulario con los datos cambiar el "Facebook Profile" por caracteres especiales: "?=/*".
- Presionar el botón "Save".
- Se observa un mensaje de error en la parte superior (no al lado del campo, como debería ser), como se ilustra en la imagen de las evidencias.
Evidencias
Contexto (Ambiente de ejecución)
App version: X.XX.X
OS: Windows XX, Mac XX, Ubuntu XX
Browser: [all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]
Información adicional
La prueba (usando Scenarios Outline en profile-facebook) termina con error porque no encuentra el mensaje de error esperado.
Versión en desarrollo con diferencias en el aspecto del sign-in
Comportamiento esperado
Que la forma de ingresar o hacer sign in en Ghost tuviera pocos cambios visuales en la versión 4.44.0 con respecto a la versión 3.41.1.
Comportamiento actual
La página para hacer el ingreso (sign in) tiene un porcentaje de cambio de solo del 1,67 %, pero esto se debe a que gran parte de esta página está en blanco y solo cambia el título y el color del botón. A pesar de ser un porcentaje bajo, se considera importante porque cambia el aspecto al pasar del color azul del botón a un color rosado. Esto puede confundir a los usuarios, para quienes los colores se asocian a la imagen de la marca.
Pasos a reproducir
Se deben ejecutar los pasos explicados en el ReadMe de este repositorio, sección "Instrucciones para generar el reporte HTML", y luego, en el reporte, abrir la sección create-post, esc02, 00_SignIn_open.
Evidencias
Contexto (Ambiente de ejecución)
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Herramienta probada: Ghost versiones 3.41.1 y 4.44.0
Herramientas usadas para las pruebas:
Cypress versión 12.11.0
ResembleJS commit 17ed085
Node JS versión 16.20.0
Google Chrome versión 113.0.5672.93
Información adicional
Ninguna
Facilidad de uso para agregar un hipervínculo
Describe the bug
Al momento de agregar un hipervinculo sin oprimir la tecla enter este no se guarda, dificultando la edición al usuario
To Reproduce
Steps to reproduce the behavior:
- Página principal
- En el menú izquierdo se selecciona "Pages"
- Se selecciona la página que se desea editar
- Se debe subrayar la o las palabras que se desean agregar los hipervinculos (Imágen 1)
- Se selecciona el simbolo de cadena para adjuntar la URL (Imágen 2)
- Al no oprimir enter no se guarda el hipervinculo (Imágen 3)
Expected behavior
Se espera que automaticamente se guarde el hipervinculo facilitando la edición al usuario
Video
Haga clic en la siguiente URL para ver el vídeo en mejor calidad.
https://github.com/tpambor/MISW4103-Final/wiki/PE032
Enviroment (please complete the following information):
- Device: Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz 2.59 GHz, 12,0 GB RAM
- OS: Windows 10 Pro
- Browser Google Chrome
- Version 111.0.5563.147
Additional context
Add any other context about the problem here.
Versión en desarrollo tiene pie de página diferente en un post
Comportamiento esperado
Que la forma de visualizar un post en el sitio web (elaborado con Ghost) tuviera pocos cambios visuales en la versión 4.44.0 con respecto a la versión 3.41.1.
Comportamiento actual
Cuando se navega a la página de un post (usando el "slug") se encuentra una diferencia visual entre las dos versiones del 18,0 %. Este cambio se debe principalmente a que se adicionan nuevos elementos en el pie de página (footer). Esto limita un poco el espacio del post o hace que los usuarios del sitio web tengan que hacer más scroll, lo cual no es recomendable.
Pasos a reproducir
Se deben ejecutar los pasos explicados en el ReadMe de este repositorio, sección "Instrucciones para generar el reporte HTML", y luego, en el reporte, abrir la sección create-post, esc04, 19_Navigation_visitPage.
Evidencias
Contexto (Ambiente de ejecución)
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Herramienta probada: Ghost versiones 3.41.1 y 4.44.0
Herramientas usadas para las pruebas:
Cypress versión 12.11.0
ResembleJS commit 17ed085
Node JS versión 16.20.0
Google Chrome versión 113.0.5672.93
Información adicional
Ninguna
No se puede descartar cambios realizados en Code injection
Comportamiento esperado
Se espera que sea posible seleccionar otra opción como "General" o "Design" después de haber realizado cambios en la cabecera del sitio sin guardar. El sistema debería mostrar un mensaje de advertencia de que hay cambios pendientes.
Comportamiento actual
Cuando se selecciona la opción code injection y se realizan cambios en el código de la cabecera, el sistema no más permite abrir otra opción como "General" sin guardar.
Pasos a reproducir
- Ingresar al sistema
- Hacer login
- Ir a la sección de code injection
- Realizar cambios en el código de la cabecera
- Intentar seleccionar otra opción como "General"
Evidencias
PE011.mp4
Contexto (Ambiente de ejecución)
App version: 3.41.1
OS: Debian 11.6 (bullseye)
Browser: Chrome 111 (Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36)
Información adicional
Chrome Developer Console:
Uncaught TypeError: Cannot read properties of undefined (reading 'isRunning')
at e.toggleLeaveSettingsModal (ghost.min-fb570ba5e71dd5f77195b123fa6e1c8d.js:1185:88)
at e.send (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:2174:122)
at e.willTransition (ghost.min-fb570ba5e71dd5f77195b123fa6e1c8d.js:1760:68)
at e.A (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:2070:388)
at s.triggerEvent (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:2004:311)
at s.notifyExistingHandlers (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:4289:6)
at s.getTransitionByIntent (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:4256:342)
at s.transitionByIntent (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:4244:413)
at s.doTransition (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:4260:13)
at s.transitionTo (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:4290:296)
Permite publicar un Post sin título
Comportamiento esperado
Cuando se crea un nuevo post debería validar que se escriba un título y en caso de no tenerlo, mostrar un mensaje de error.
Comportamiento actual
Permite publicar un posts sin título, y lo deja con un título por defecto: "(Untitled)", lo cual no es recomendable.
Pasos a reproducir
- Ingresar a la aplicación (Ghost) con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "Posts".
- Seleccionar el botón "New post".
- Escribir, en donde dice "Begin writing your post...", un texto. Por ejemplo: "Este es un post sin nombre".
- Hacer clic en el enlace "Posts" que aparece en la parte superior izquierda.
- seleccionar publicar
Evidencias
2023-05-21-20-14-22.mp4
Contexto (Ambiente de ejecución)
Herramienta probada: Ghost versión 3.41.1
Herramientas usadas para las pruebas:
Kraken commit c62bfe7
Node JS versión 12.22.1
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Navegador: Google Chrome Versión 111.0.5563.147
Información adicional
Permite crear Post con fecha pasada muy remota
Comportamiento esperado
Cuando se crea un post y se edita la fecha de publicación debe validar que no sea una fecha de un pasado muy remoto (lo cual es irreal). Se debe validar un rango, por ejemplo solo 10 años antes del actual.
Comportamiento actual
Permite cambiar la fecha de publicación de un post a una fecha del pasado, incluso a fechas que no son reales para este tipo de publicaciones, por ejemplo, una de mil años antes.
Pasos a reproducir
- Ingresar a la aplicación (Ghost) con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "Posts".
- Seleccionar el botón "New post".
- Escribir un título para el post, por ejemplo: "Post del pasado lejano"
- Seleccionar el botón de settings (la rueda dentada que aparece en la parte superior derecha).
- Borrar la fecha que aparece en "Publish date" y en su lugar escribir una fecha de hace más de mil años, por ejemplo: "1022-04-25"
- Hacer clic en otra área, por ejemplo, en excerpt.
- Se observa como no hay ningún error y el Post queda se guarda (ver imagen en evidencias).
Evidencias
Contexto (Ambiente de ejecución)
Herramienta probada: Ghost versión 3.41.1
Herramientas usadas para las pruebas:
Kraken commit c62bfe7
Node JS versión 12.22.1
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Navegador: Google Chrome Versión 111.0.5563.147
Información adicional
La prueba (usando Scenarios Outline en post-date) termina con error porque no encuentra el mensaje de error esperado.
Permite cambiar la página de ayuda con un puerto incorrecto (emoji)
Comportamiento esperado
Cuando se modifique la URL de la página de ayuda del sitio web debería validar si el puerto ingresado es válido o no, por ejemplo, en caso de tener un emoji, y mostrar un error en caso de que así sea.
Comportamiento actual
Al modificar la URL de la página de ayuda del sitio web (por Design - Navigation), se puede ingresar una URL con un puerto que es un emoji, lo cual no es correcto, y no muestra ningún mensaje de error y permite guardar esa URL.
Pasos a reproducir
- Ingresar a la aplicación (Ghost) con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "Design".
- Escribir en la URL de página "Help" una dirección con un puerto que sea emoji, por ejemplo: "http://sitioEmoji.com:❤️/"
- Presionar el botón "Save" en la parte superior derecha.
- Se observa como no muestra ningún mensaje de error y permite guardar esa URL (ver imagen en evidencias).
Evidencias
Contexto (Ambiente de ejecución)
Herramienta probada: Ghost versión 3.41.1
Herramientas usadas para las pruebas:
Kraken commit c62bfe7
Node JS versión 12.22.1
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Navegador: Google Chrome Versión 111.0.5563.147
Información adicional
La prueba (usando Scenarios Outline en design-helpPage) termina con error porque no encuentra el mensaje de error esperado.
Versión en desarrollo con alerta al publicar un post
Comportamiento esperado
Que la forma de publicar un post en Ghost tuviera pocos cambios visuales en la versión 4.44.0 con respecto a la versión 3.41.1.
Comportamiento actual
Después de seleccionar la opción de publicar un post, hay un cambio visual entre las dos versiones 65,48 %, lo cual se considera un cambio muy grande. Este cambio se debe a que en la nueva versión se publica una ventana de alerta explicando que el post será publicado (y el fondo se desvanece). Como esto no sucedía antes, los usuarios pueden confundirse pensando que es una advertencia o error y posiblemente deseen cancelar la acción.
Pasos a reproducir
Se deben ejecutar los pasos explicados en el ReadMe de este repositorio, sección "Instrucciones para generar el reporte HTML", y luego, en el reporte, abrir la sección create-post, esc03, 11_CreateEditPost_publishConfirm.
Evidencias
Contexto (Ambiente de ejecución)
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Herramienta probada: Ghost versiones 3.41.1 y 4.44.0
Herramientas usadas para las pruebas:
Cypress versión 12.11.0
ResembleJS commit 17ed085
Node JS versión 16.20.0
Google Chrome versión 113.0.5672.93
Información adicional
Ninguna
No muestra error con url de Twitter erróneo al editar perfil
Comportamiento esperado
Cuando se edita un perfil (staff) y se escribe un url de Twitter que no comienza con "https://twitter.com/" debería mostrar un mensaje de error y no dejar grabar.
Comportamiento actual
Al editar un perfil (staff), se escribe un url de Twitter que no comienza con " https://twitter.com/" y se presiona el botón "Save", deja grabar el perfil y no muestra mensaje de error (parece que el botón Save oculta el error). Sin embargo, si se cambia de página y posteriormente se vuelve a ingresar se observa que no cambió el url (queda con el que estaba antes del cambio), lo cual genera confusión.
Pasos a reproducir
- Ingresar a la aplicación (Ghost) con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "Staff".
- Seleccionar uno de los perfiles que aparecen.
- En el formulario con los datos cambiar el "Twitter Profile" por un url aleatorio.
- Sin hacer clic en ninguna otra parte, presionar el botón "Save".
- Alcanza a mostrar algún mensaje, pero este desaparece rápidamente y prevalece la operación de guardar. Aparece como si el perfil estuviera guardado (ver imagen 1 en las evidencias).
- En las opciones del menú del lado izquierdo, seleccionar "Staff".
- Volver a seleccionar el mismo perfil.
- Se observa que el "Twitter Profile" no cambió, aunque daba la impresión de que así era (ver imagen 2 de evidencias).
Evidencias
Imagen 1 - Perfil guardado con url aleatoria.
Imagen 2 - Perfil tiene la url anterior.
Contexto (Ambiente de ejecución)
Herramienta probada: Ghost versión 3.41.1
Herramientas usadas para las pruebas:
Kraken commit c62bfe7
Node JS versión 12.22.1
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Navegador: Google Chrome Versión 111.0.5563.147
Información adicional
Se usó la librería faker para generar el url aleatorio: faker.internet.url();
La prueba (edit-Profile-6) termina con error, porque está esperando que muestre el mensaje de error.
La creación de una integración personalizada con una descripción grande falla sin mostrar un error
Comportamiento esperado
Cuando se selecciona la opción "Add custom integration", el sistema debe validar el tamaño permitido de la descripción antes de guardar que no exeda 2000 caracteres, mostrando un mensaje de alerta.
Comportamiento actual
Cuando se selecciona la opción "Add custom integration", el sistema no valida la longitud máxima de la descripción de 2000 caracteres. Guardar la integración falla sin que se muestre un error.
Pasos a reproducir
- Ingresar al sistema
- Hacer login
- Ir a la sección de integraciones
- Seleccionar "Add custom integration"
- Digitar nombre y una descripción larga de más de 2000 caracteres
- Seleccionar "Save"
Evidencias
PE001.mp4
Contexto (Ambiente de ejecución)
App version: 3.41.1
OS: Debian 11.6 (bullseye)
Browser: Chrome 111 (Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36)
Información adicional
Log:
[2023-04-01 14:13:09] ERROR "PUT /ghost/api/v3/admin/integrations/64283be77547e60001c84983/?include=api_keys%2Cwebhooks" 422 38ms
Value in [integrations.description] exceeds maximum length of 2000 characters.
"integrations.description"
Error ID:
545d1960-d097-11ed-9ceb-83d11e9f9559
----------------------------------------
ValidationError: Value in [integrations.description] exceeds maximum length of 2000 characters.
at new ValidationError (/var/lib/ghost/versions/3.41.1/node_modules/@tryghost/errors/node_modules/ghost-ignition/lib/errors/index.js:141:23)
at each (/var/lib/ghost/versions/3.41.1/core/server/data/validation/index.js:237:43)
at arrayEach (/var/lib/ghost/versions/3.41.1/node_modules/lodash/lodash.js:516:11)
at Function.forEach (/var/lib/ghost/versions/3.41.1/node_modules/lodash/lodash.js:9368:14)
at Object.validateSchema (/var/lib/ghost/versions/3.41.1/core/server/data/validation/index.js:181:7)
at Child.onValidate (/var/lib/ghost/versions/3.41.1/core/server/models/base/index.js:282:27)
at Child.onUpdating (/var/lib/ghost/versions/3.41.1/core/server/models/base/index.js:424:37)
at /var/lib/ghost/versions/3.41.1/node_modules/bookshelf/lib/base/events.js:101:64
at tryCatcher (/var/lib/ghost/versions/3.41.1/node_modules/bluebird/js/release/util.js:16:23)
at Object.gotValue (/var/lib/ghost/versions/3.41.1/node_modules/bluebird/js/release/reduce.js:166:18)
at Object.gotAccum (/var/lib/ghost/versions/3.41.1/node_modules/bluebird/js/release/reduce.js:155:25)
at Object.tryCatcher (/var/lib/ghost/versions/3.41.1/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/var/lib/ghost/versions/3.41.1/node_modules/bluebird/js/release/promise.js:547:31)
at Promise._settlePromise (/var/lib/ghost/versions/3.41.1/node_modules/bluebird/js/release/promise.js:604:18)
at Promise._settlePromise0 (/var/lib/ghost/versions/3.41.1/node_modules/bluebird/js/release/promise.js:649:10)
at Promise._settlePromises (/var/lib/ghost/versions/3.41.1/node_modules/bluebird/js/release/promise.js:729:18)
Chrome Developer Console:
Error: PUT http://127.0.0.1:2368/ghost/api/v3/admin/integrations/64283be77547e60001c84983/?include=api_keys%2Cwebhooks 422 (Unprocessable Entity)
Error: Uncaught Error: Request was rejected because it was invalid
at e._createCorrectError (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:9129:38)
at e.handleResponse (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:9126:205)
at e.handleResponse (ghost.min-fb570ba5e71dd5f77195b123fa6e1c8d.js:1925:78)
at e.n [as handleResponse] (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:2370:9)
at e.<anonymous> (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:9115:70)
at l (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:622:118)
at Object.fireWith [as rejectWith] (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:623:698)
at A (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:906:468)
at XMLHttpRequest.<anonymous> (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:917:206)
Permite usar JavaScript para el enlace a la página de ayuda
Comportamiento esperado
Cuando se modifique la URL de la página de ayuda del sitio web, no se debería permitir una expresión JavaScript como destino del enlace. Si se introduce una expresión JavaScript, debe mostrar un error.
Comportamiento actual
Al modificar la URL de la página de ayuda del sitio web (por Design - Navigation), se puede ingresar una expresión JavaScript como destino del enlace, lo cual no es correcto, y puede afectar la seguridad de la página y del usuario. Tampoco muestra ningún mensaje de error y permite guardar la expresión JavaScript.
Pasos a reproducir
- Ingresar a la aplicación (Ghost) con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "Design".
- Escribir en la URL de página "Help" una expresión JavaScript, por ejemplo:
javascript:alert('JavscriptPeligroso')
- Presionar el botón "Save" en la parte superior derecha.
- Se observa como no muestra ningún mensaje de error y permite guardar (ver imagen en evidencias).
Evidencias
Contexto (Ambiente de ejecución)
Herramienta probada: Ghost versión 3.41.1
Herramientas usadas para las pruebas:
Kraken commit c62bfe7
Node JS versión 16.20.0
Dispositivo: 8x 64-bit ARM Cortex-A78 + 6GB RAM
S.O.: Debian 11.7
Navegador: Chromium 113.0.5672.126
Información adicional
La prueba (usando Scenarios Outline en design-helpPage) termina con error porque no encuentra el mensaje de error esperado.
No muestra error cuando se digita el actual password y el confirmación password
Comportamiento esperado
Cuando se escribe la contraseña actual y la contraseña de confirmacion, debería mostrar un mensaje de error que indique que debe llenar la nueva contraseña.
Comportamiento actual
Al editar el perfil se tiene la opción de cambiar contraseña luego de llenar la contraseña actual y la confirmación del password y se da la opción en cambiar contraseña, no muestra ningún error en el cual indique que falta llenar el campo "Nuevo password". El usuario no sabría qué hacer.
Pasos a reproducir
- Ingresar a la aplicación (Ghost) con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "staff".
- Seleccionar el "staff a editar".
- Escribir datos de la contraseña actual y la confirmación de la contraseña.
- Hacer clic en el "cambiar contraseña".
- Se observa que no muestra ningún mensaje de error.
Evidencias
Contexto (Ambiente de ejecución)
Herramienta probada: Ghost versión 3.41.1
Herramientas usadas para las pruebas:
Kraken commit c62bfe7
Node JS versión 12.22.1
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Navegador: Google Chrome Versión 111.0.5563.147
Información adicional
Datos adicionales a los que se tenga acceso respecto al defecto. Por ejemplo, trazas de error, defecto similares ya reportados, posible solución, posible implementación de la solución, links a recursos externos que brinden más información: stackoverflow, gitter, etc.
Permite crear Post sin título
Comportamiento esperado
Cuando se crea un nuevo post debería validar que se escriba un título y en caso de no tenerlo, mostrar un mensaje de error.
Comportamiento actual
Permite crear posts sin título, y lo deja con un título por defecto: "(Untitled)", lo cual no es recomendable porque no ayuda a identificar el post y puede publicarse así, lo que no sería adecuado para un sitio web.
Pasos a reproducir
- Ingresar a la aplicación (Ghost) con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "Posts".
- Seleccionar el botón "New post".
- Escribir, en donde dice "Begin writing your post...", un texto. Por ejemplo: "Este es un post sin nombre".
- Hacer clic en el enlace "Posts" que aparece en la parte superior izquierda.
- Se observa como en la lista de post aparece el post creado con el título "(Untitled)" -como se ve en la imagen de evidencias- y nunca avisó al usuario que faltaba escribir el título.
Evidencias
Contexto (Ambiente de ejecución)
Herramienta probada: Ghost versión 3.41.1
Herramientas usadas para las pruebas:
Kraken commit c62bfe7
Node JS versión 12.22.1
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Navegador: Google Chrome Versión 111.0.5563.147
Información adicional
La prueba (usando Scenarios Outline en post-name) termina con error porque no encuentra el mensaje de error esperado.}
Versión en desarrollo con diferencias en el último paso de crear sitio web
Comportamiento esperado
Que la forma de crear un nuevo sitio web en Ghost tuviera pocos cambios visuales en la versión 4.44.0 (en adelante denominada versión 4) con respecto a la versión 3.41.1 (en adelante denominada versión 3)
Comportamiento actual
En el último paso de la creación del sitio web hay una diferencia del 32.68 % en las dos versiones, la cual se considera alta. En la versión 3 se invitaba a adicionar colaboradores, mientras que en la versión 4 hay una previsualización del sitio y varias opciones como escribir post, personalizar, importar miembros o explorar. Esto puede hacer que los usuarios piensen que algún paso falta (o sobra) en su proceso.
Pasos a reproducir
Se deben ejecutar los pasos explicados en el ReadMe de este repositorio, sección "Instrucciones para generar el reporte HTML", y luego, en el reporte, abrir la sección create-post, esc01, 06_CreateSite_nextStep.
Evidencias
Contexto (Ambiente de ejecución)
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Herramienta probada: Ghost versiones 3.41.1 y 4.44.0
Herramientas usadas para las pruebas:
Cypress versión 12.11.0
ResembleJS commit 17ed085
Node JS versión 16.20.0
Google Chrome versión 113.0.5672.93
Información adicional
Ninguna
Crear post sin texto
Describe the bug
Al crear un post sin texto, el programa permite guardar el post y publicarlo.
To Reproduce
- Página principal
- En el menú izquierdo se selecciona "Posts"
- En la parte superior izquierda se selecciona el botón verde "New post"
- En la opción de titulo en caso de no poner el deseado el programa automáticamente pone "(Untitled)" dejando en blanco el cuerpo del post
- Se selecciona la opción "Publish" desplegando el menú y de nuevo se selecciona "publish" (Imágen 1) permitiendo guardar y publicar el post
Expected behavior
No deberia dejar guardarlo ni publicarlo y presentar al usuario un mensaje de error.
Video
PE020.mp4
Enviroment (please complete the following information):
- Device: Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz 2.59 GHz, 12,0 GB RAM
- OS: Windows 10 Pro
- Browser Google Chrome
- Version 111.0.5563.147
Additional context
Add any other context about the problem here.
Versión en desarrollo con diferencias en el aspecto del dashboard
Comportamiento esperado
Que el dashboard de administración en Ghost tuviera pocos cambios visuales en la versión 4.44.0 (en adelante denominada versión 4) con respecto a la versión 3.41.1 (en adelante denominada versión 3)
Comportamiento actual
El dashboard de administración en Ghost tiene un porcentaje de cambio del 26,89 %, el cual se considera importante. Este cambio obedece principalmente a que en la versión 3 se mostraba una previsualización del sitio en el lado derecho, mientras que ahora se muestran diferentes opciones para administrar el sitio web. Al comienzo esto puede ser confuso para los usuarios, quienes pueden pensar que esas opciones son lo que tiene su sitio.
Pasos a reproducir
Se deben ejecutar los pasos explicados en el ReadMe de este repositorio, sección "Instrucciones para generar el reporte HTML", y luego, en el reporte, abrir la sección create-post, esc02, 04_SignIn_success.
Evidencias
Contexto (Ambiente de ejecución)
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Herramienta probada: Ghost versiones 3.41.1 y 4.44.0
Herramientas usadas para las pruebas:
Cypress versión 12.11.0
ResembleJS commit 17ed085
Node JS versión 16.20.0
Google Chrome versión 113.0.5672.93
Información adicional
Ninguna
Versión en desarrollo maneja diferente la configuración (settings)
Comportamiento esperado
Que los elementos de la configuración (settings) estuvieran distribuidos de manera similar en la versión 4.44.0 con respecto a la versión 3.41.1.
Comportamiento actual
La sección de settings cambió, y ahora muestra una página con opciones, en lugar de los opciones del menú (en el lado izquierdo) que se tenían previamente. Se tiene un cambio visual entre las dos versiones del 24,94 %. Aunque la nueva propuesta puede ser interesante, se deben tratar de conservar también las opciones de menú para que los usuarios las encuentren fácilmente.
Pasos a reproducir
Se deben ejecutar los pasos explicados en el ReadMe de este repositorio, sección "Instrucciones para generar el reporte HTML", y luego, en el reporte, abrir la sección editar-perfil, esc1, 05_Navigation_showSettings.
Evidencias
Contexto (Ambiente de ejecución)
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Herramienta probada: Ghost versiones 3.41.1 y 4.44.0
Herramientas usadas para las pruebas:
Cypress versión 12.11.0
ResembleJS commit 17ed085
Node JS versión 16.20.0
Google Chrome versión 113.0.5672.93
Información adicional
Ninguna
No muestra error con url de Facebook erróneo al editar perfil
Comportamiento esperado
Cuando se edita un perfil (staff) y se escribe un url de Facebook que no comienza con "https://www.facebook.com/" debería mostrar un mensaje de error y no dejar grabar.
Comportamiento actual
Al editar un perfil (staff), se escribe un url de Facebook que no comienza con " https://www.facebook.com/" y se presiona el botón "Save", deja grabar el perfil y no muestra mensaje de error (parece que el botón Save oculta el error). Sin embargo, si se cambia de página y posteriormente se vuelve a ingresar se observa que no cambió el url (queda con el que estaba antes del cambio), lo cual genera confusión.
Pasos a reproducir
- Ingresar a la aplicación (Ghost) con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "Staff".
- Seleccionar uno de los perfiles que aparecen.
- En el formulario con los datos cambiar el "Facebook Profile" por un url aleatorio.
- Sin hacer clic en ninguna otra parte, presionar el botón "Save".
- Alcanza a mostrar algún mensaje, pero este desaparece rápidamente y prevalece la operación de guardar. Aparece como si el perfil estuviera guardado (ver imagen 1 en las evidencias).
- En las opciones del menú del lado izquierdo, seleccionar "Staff".
- Volver a seleccionar el mismo perfil.
- Se observa que el "Facebook Profile" no cambió, aunque daba la impresión de que así era (ver imagen 2 de evidencias).
Evidencias
Imagen 1 - Perfil guardado con url aleatoria.
Imagen 2 - Perfil tiene la url anterior.
Contexto (Ambiente de ejecución)
Herramienta probada: Ghost versión 3.41.1
Herramientas usadas para las pruebas:
Kraken commit c62bfe7
Node JS versión 12.22.1
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Navegador: Google Chrome Versión 111.0.5563.147
Información adicional
Se usó la librería faker para generar el url aleatorio; faker.internet.url();
La prueba (edit-Profile-5) termina con error, porque está esperando que muestre el mensaje de error.
Validación máximos password
Comportamiento esperado
Cuando se ingresa a staff para cambiar el password el sistema debe controlar los minimos y maximos para cambiar la contraseña
Comportamiento actual
el sistema permite agregar una contraseña de 1000 caracteres
Pasos a reproducir
- Ingresar a la aplicación (Ghost) con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "Staff".
- Seleccionar uno de los perfiles que aparecen.
- En el formulario con los datos cambiar contraseña con datos faker 1000 caracteres.
- Sin hacer clic en ninguna otra parte, presionar el botón "cambiar".
- Se observa que cambia la contraseña
Evidencias
Contexto (Ambiente de ejecución)
Herramienta probada: Ghost versión 3.41.1
Herramientas usadas para las pruebas:
Kraken commit c62bfe7
Node JS versión 12.22.1
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Navegador: Google Chrome Versión 111.0.5563.147
Información adicional
Se usó la librería faker para generar el password aleatorio;faker.internet.password(1200);
La prueba (edit-perfil-faker) termina esperando que muestre el mensaje de error.
Permite crear una página sin texto
Describe the bug
Cuando se crea una página y se deja sin texto permite guardarla e incluso publicarla.
To Reproduce
- Ingresar a la aplicación con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "Pages".
- Hacer clic en el botón "New Page"
- En la ventana que aparece escribir un título, donde dice "Page Title", por ejemplo: "Nueva Página". Se espera a que guarde la información.
- Opcional: Se puede borrar el título escrito, y en este caso la aplicación coloca uno por defecto: "(Untitled)".
- Se selecciona en la parte superior derecha el enlace "Publish" y luego el botón "Publish".
- Se selecciona en la parte superior izquierda el enlace "Pages" y se observa como la página aparece en el listado, con estado "Published", a pesar de no tener contenido.
Expected behavior
Cuando se intente publicar la página creada no debería permitirlo si no tiene texto. Se debería mostrar un mensaje de error al usuario.
Video
PE023.mp4
Enviroment (please complete the following information):
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Navegador: Google Chrome Versión 111.0.5563.147
Additional context
El video con la prueba se puede observar aquí (solo para usuarios con correo uniandes.edu.co): Video Crear Página - Sin datos
Staff users el sistema envia la invitación pero no refresca la lista
Comportamiento esperado
Cuando se selecciona la opción de invitar personas, el sistema abre una ventana emergente en la cual el usuario debe ingresar el email y el role y seleccionar la opción de enviar la invitación ahora. El sistema envia la invitación y debe refresca la lista de usuarios invitados, sin necesidad de refrescar la pagina.
Comportamiento actual
Cuando se selecciona la opción de invitar personas, el sistema abre una ventana emergente en la cual el usuario debe ingresar el email y el role y seleccionar la opción de enviar la invitación ahora. El sistema envia la invitación pero no refresca la lista de usuarios invitados.
Pasos a reproducir
- Ingresar al sistema
- Hacer login
- Seleccionar "Staff"
- Seleccionar "Invite people"
- Ingresar el correo y seleccionar el role
- Seleccionar la opción "Send invitation now"
Evidencias
PE035.mp4
Contexto (Ambiente de ejecución)
App version: 3.41.1
OS: Windows 10 Pro
Browser: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36
Información adicional
Elemento de la página sin dimensiones definidas
Comportamiento esperado
Para mejorar el rendimiento de las páginas se deben especificar las dimensiones de imágenes, videos y otros elementos similares.
Comportamiento actual
Uno de los elementos de la página http://localhost:2368/ghost/#/site no tiene las dimensiones definidas. Este error fue identificado en el navegador Chrome.
Pasos a reproducir
El error fue encontrado al ejecutar una herramienta Ripper, así que no es fácil reproducir exactamente el error, pero se incluye la información dada por la herramienta en las evidencias. Los pasos para ejecutar la herramienta fueron:
1- Descargar y descomprimir la herramienta RIPuppetCoursera, de: https://github.com/TheSoftwareDesignLab/RIPuppetCoursera
2- Ejecutar, en la carpeta creada, el comando: npm install
3- Cambiar el archivo de configuración "config.json" para cambiar el url (http://localhost:2368/ghost/), cambiar "inputValues" a true y colocar los valores para "ember8" (que es el correo) y "ember10" que es el password.
4- Ejecutar, en la carpeta, el comando: node index.js
Evidencias
Contexto (Ambiente de ejecución)
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Herramienta probada: Ghost versión 3.41.1
Herramientas usadas para las pruebas:
RIPuppetCoursera, commit 9fc6bfd
Node JS versión 12.22.1
Información adicional
Ninguna
Permite borrar un tag con un enlace en el sitio web (por lo que aparece error 404)
Describe the bug
Cuando hay un tag que tiene asociada una página web (para mostrar todos los post asociados) y se borra ese tag, la aplicación lo permite y al buscar la página aparece el error 404.
To Reproduce
Primero es necesario crear la página web asociada al Tag (o seleccionar un tag que ya tenga página web asociada). Para esto:
- Se ingresa a la aplicación como usuario administrador.
- Se selecciona en el lado derecho, la opción del menú "Design", que está en la parte de Settings.
- Se cambia la ubicación de la página llamada "Tag" para que incluya el tag que se desea mostrar. Por ejemplo: "http://localhost:2368/tag/avanzado/". El tag "avanzado" debe estar creado previamente. Ver el primer pantallazo.
- Se presiona el botón Save.
Con la página creada, ahora se procede a borrar el tag:
- Se selecciona, en el lado derecho, la opción del menú "Tags".
- Se selecciona el Tag "avanzado" (o el equivale que se desee borrar).
- Se presiona el botón "Delete tag" que aparece en la parte inferior.
- En la ventana de advertencia que aparece se presiona de nuevo "Delete tag".
- Se observa que el tag ya no aparece en el listado.
- Se selecciona la opción "View Site" del menú del lado izquierdo.
- Se selecciona el enlace "TAG" que aparece en la parte superior de la página mostrada.
- Sale error 404 (ver segundo pantallazo).
Expected behavior
Si el tag tiene enlaces en el sitio web no debería permitir borrarlo. Al intentar borrar debería mostrar un mensaje indicando que tiene enlaces activos.
Evidencias
PE002.mp4
Enviroment (please complete the following information):
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Navegador: Google Chrome Versión 111.0.5563.147
Additional context
El video con la prueba se puede observar aquí (solo para usuarios con correo uniandes.edu.co): Video Borrar Tag - con relaciones
Adjuntar enlace como Embed en la edición de página no lo permite
Describe the bug
Al momento de agregar un enlace embebido debe aparecer como imágen y aparece como error.
To Reproduce
- Página principal
- En el menú izquierdo se selecciona "Pages"
- Se selecciona la página que se desea editar
- Se busca el botón + y se selecciona "Other..." para agregar una URL embed (Imágen 1)
- Al agregar la URL aparece el error (Imágen 2)
Expected behavior
Se debe visualizar el contenido de la URL (Imágen 3)
Video
PE033.mp4
Enviroment (please complete the following information):
- Device: Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz 2.59 GHz, 12,0 GB RAM
- OS: Windows 10 Pro
- Browser Google Chrome
- Version 111.0.5563.147
Additional context
Add any other context about the problem here.
Agregar navegación con URL invalida
Comportamiento esperado
Cuando se esta ingresando una url de navegación en el "Design" debería validar que se escriba la url correctamente y mostrar un mensaje de error.
Comportamiento actual
Permite agregar url invalidad, lo cual no es recomendable.
Pasos para reproducir
- Ingresar a la aplicación (Ghost) con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "Design".
- Seleccionar "NAVIGATION".
- Escribir label el nombre y la url incorrecta
- Hacer clic en el enlace "+" al finalizar el campo
Evidencias
Contexto (Ambiente de ejecución)
Herramienta probada: Ghost versión 3.41.1
Herramientas usadas para las pruebas:
Kraken commit c62bfe7
Node JS versión 12.22.1
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Navegador: Google Chrome Versión 111.0.5563.147
Información adicional
Ninguna
Error al ver la página de ayuda en el sitio
Comportamiento esperado
Al dar click sobre el link "Help", el sitio debe redirigir a la pagina de ayuda.
Comportamiento actual
Al dar click sobre el link "Help", el sitio muestra un mensaje de "ghost.org refused to connect.".
Pasos a reproducir
- Ingresar a la cuenta ghost.
- Ir a la opción "View site"
- En el menu superior seleccionar la opción "Help"
Evidencias
PE039.mp4
Contexto (Ambiente de ejecución)
App version: 3.41.1
OS: Windows 10 Pro
Browser: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36
Información adicional
Chrome Developer Console:
Refused to display 'https://ghost.org/' in a frame because it set 'X-Frame-Options' to 'sameorigin'.
No reconoce la vista mínima en navegador Safari
Comportamiento esperado
Se espera que la configuración de vista mínima funcione en diferentes navegadores.
Comportamiento actual
Se obtiene un error de que el navegador no reconoce el parámetro "minimal-ui" en la página inicial de la aplicación: http://localhost:2368/ghost/
Pasos a reproducir
El error fue encontrado al ejecutar una herramienta Ripper, así que no es fácil reproducir exactamente el error, pero se incluye la información dada por la herramienta en las evidencias. Los pasos para ejecutar la herramienta fueron:
1- Descargar y descomprimir la herramienta RIPuppetCoursera, de: https://github.com/TheSoftwareDesignLab/RIPuppetCoursera
2- Ejecutar, en la carpeta creada, el comando: npm install
3- Cambiar el archivo de configuración "config.json" para cambiar el url (http://localhost:2368/ghost/).
4- Ejecutar, en la carpeta, el comando: node index.js
Evidencias
Visitó solo la página de login:
Contexto (Ambiente de ejecución)
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Herramienta probada: Ghost versión 3.41.1
Herramientas usadas para las pruebas:
RIPuppetCoursera, commit 9fc6bfd
Node JS versión 12.22.1
Información adicional
Ninguna
Excepción no manejada al regresar desde la página de edición
Comportamiento esperado
Navegar de regreso desde la página de edición sin que se genere una excepción no manejada.
Comportamiento actual
Al generar eventos aleatorios con un monkey se genera una excepción no manejada al navegar de regreso desde la página de edición.
Pasos a reproducir
- Start Ghost server on port 2368
- Go to http://127.0.0.1:2368/ghost/
- Create a user with email [email protected] and password 0123456789!
- Install dependencies with npm install
- Run tests with smart-monkey with
docker run --rm -it -v $PWD:/e2e -w /e2e --add-host host.docker.internal:host-gateway cypress/included:4.11.0 -C smart-monkey-config.json
and seed2212
.
Evidencias
smart-monkey.js.mp4
Contexto (Ambiente de ejecución)
Dispositivo: Intel Xeon (Skylake) 16C, 64GB RAM
S.O.: Ubuntu 18.04
Herramienta probada: Ghost versión 3.41.1
Herramientas usadas para las pruebas: https://github.com/tpambor/MISW4103-Ghost/tree/main/pruebas-exploratorias/herramientas/monkey-cypress
Cypress package version: 4.11.0
Browser: Chrome 80
Información adicional
Error:
Cannot read property 'undefined' of undefined
When Cypress detects uncaught errors originating from your application it will automatically fail the current test.
This behavior is configurable, and you can choose to turn this off by listening to the `uncaught:exception` event.
https://on.cypress.io/uncaught-exception-from-application
at e._showErrorAlert (http://host.docker.internal:2368/ghost/assets/ghost.min-fb570ba5e71dd5f77195b123fa6e1c8d.js:1107:158)
at e.savePost (task) (http://host.docker.internal:2368/ghost/assets/ghost.min-fb570ba5e71dd5f77195b123fa6e1c8d.js:1078:6)
at Generator.throw (<anonymous>)
at e._resumeGenerator (http://host.docker.internal:2368/ghost/assets/vendor.min-1ea21c7abed44258b1662cf1b103c007.js:9555:29)
at e._handleResolvedContinueValue (http://host.docker.internal:2368/ghost/assets/vendor.min-1ea21c7abed44258b1662cf1b103c007.js:9563:6)
at e._proceed (http://host.docker.internal:2368/ghost/assets/vendor.min-1ea21c7abed44258b1662cf1b103c007.js:9556:1277)
at invoke (http://host.docker.internal:2368/ghost/assets/vendor.min-1ea21c7abed44258b1662cf1b103c007.js:3900:139)
at h.flush (http://host.docker.internal:2368/ghost/assets/vendor.min-1ea21c7abed44258b1662cf1b103c007.js:3892:74)
at p.flush (http://host.docker.internal:2368/ghost/assets/vendor.min-1ea21c7abed44258b1662cf1b103c007.js:3903:292)
at F._end (http://host.docker.internal:2368/ghost/assets/vendor.min-1ea21c7abed44258b1662cf1b103c007.js:3954:9)
Monkey log:
Action: click anchor event
Details: INVALID. There are no input elements in the current page
Key press event
Details: INVALID. No element is in focus
Key press event
Details: INVALID. No element is in focus
Random click event
Details: A with id: ember105
Key press event
Details: INVALID. No element is in focus
Special key press event
Details: No element is in focus. Pressed the {ctrl}{downarrow} combination of special keys on the page body
Action: click anchor event
Details: Link to http://host.docker.internal:2368/ghost/#/staff/ is hidden
Key press event
Details: INVALID. No element is in focus
Scroll event (pg down) event
Details: Page limit reached! Successfully scrolled down from y=0 to y=0
Special key press event
Details: No element is in focus. Pressed the {alt}{home} combination of special keys on the page body
Selector focus (hover) event
Details: Position: (379, 291). INVALID, element has no attribute onmouseover
Selector focus (hover) event
Details: Position: (300, 73). INVALID, element has no attribute onmouseover
Random click event
Details: DOM element with path: #ember132 > DIV:nth-child(1)
Key press event
Details: INVALID. No element is in focus
Selector focus (hover) event
Details: Position: (964, 452). INVALID, element has no attribute onmouseover
Key press event
Details: INVALID. No element is in focus
Key press event
Details: INVALID. No element is in focus
Random click event
Details: DOM element with path: #ember132 > DIV:nth-child(1)
Special key press event
Details: No element is in focus. Pressed the {ctrl}{del} combination of special keys on the page body
Special key press event
Details: No element is in focus. Pressed the {alt}{pageup} combination of special keys on the page body
Page navigation (Reload) event
Details: Successfully reloaded the page
Special key press event
Details: No element is in focus. Pressed the {alt}{home} combination of special keys on the page body
Selector focus (hover) event
Details: Position: (497, 533). INVALID, element has no attribute onmouseover
Scroll event (pg down) event
Details: Page limit reached! Successfully scrolled down from y=0 to y=0
Action: click anchor event
Details: Input is hidden
Selector focus (hover) event
Details: Position: (184, 559). INVALID, element has no attribute onmouseover
Random double click event
Details: DOM element with path: #ember30 > DIV:nth-child(1) > DIV:nth-child(1) > H2:nth-child(1)
Random double click event
Details: DOM element with path: #ember28 > DIV:nth-child(1)
Special key press event
Details: No element is in focus. Pressed the {shift}{selectall} combination of special keys on the page body
Page navigation (back) event
Details: Navigated 1 page back
Special key press event
Details: No element is in focus. Pressed the {alt}{pagedown} combination of special keys on the page body
Special key press event
Details: No element is in focus. Pressed the {meta}{downarrow} combination of special keys on the page body
Viewport change event
Details: Changed the viewport to macbook-15 with portrait orientation
Selector focus (hover) event
Details: Position: (60, 4). INVALID, element has no attribute onmouseover
Page navigation (Reload) event
Details: Successfully reloaded the page
Page navigation (Reload) event
Details: Successfully reloaded the page
Viewport change event
Details: Changed the viewport to iphone-6 with portrait orientation
Scroll event (horizontal fw) event
Details: Page limit reached! Successfully scrolled to the right from x=0 to x=0
Key press event
Details: INVALID. No element is in focus
Key press event
Details: INVALID. No element is in focus
Page navigation (back) event
Details: Navigated 1 page back
Key press event
Details: INVALID. No element is in focus
Page navigation (back) event
Details: Navigated 1 page back
Key press event
Details: INVALID. No element is in focus
Action: click anchor event
Details: Link to http://host.docker.internal:2368/ghost/#/settings/general/ is hidden
Selector focus (hover) event
Details: Position: (508, 568). INVALID, no selectable element
Action: click anchor event
Details: INVALID. There are no input elements in the current page
Special key press event
Details: No element is in focus. Pressed the {shift}{downarrow} combination of special keys on the page body
Scroll event (horizontal bk) event
Details: INVALID. Not able to scroll to the left anymore
Random double click event
Details: IFRAME with id: site-frame
Page navigation (back) event
Details: Navigated 1 page back
Scroll event (horizontal fw) event
Details: Page limit reached! Successfully scrolled to the right from x=0 to x=0
Random double click event
Details: Position: (394, 386). INVALID, no selectable element
Random double click event
Details: IFRAME with id: site-frame
Action: click anchor event
Details: INVALID. There are no input elements in the current page
Page navigation (Reload) event
Details: Successfully reloaded the page
Random double click event
Details: Position: (938, 502). INVALID, no selectable element
Page navigation (back) event
Details: Navigated 1 page back
Key press event
Details: INVALID. No element is in focus
Action: click anchor event
Details: Link to http://host.docker.internal:2368/ghost/#/posts/?type=scheduled is hidden
Selector focus (hover) event
Details: Position: (386, 120). INVALID, no selectable element
Page navigation (Reload) event
Details: Successfully reloaded the page
Selector focus (hover) event
Details: Position: (644, 267). INVALID, no selectable element
Page navigation (back) event
Details: Navigated 1 page back
Special key press event
Details: No element is in focus. Pressed the {shift}{{} combination of special keys on the page body
Selector focus (hover) event
Details: Position: (849, 411). INVALID, no selectable element
Action: click anchor event
Details: Clicked link to: http://host.docker.internal:2368/ghost/#/posts/
Action: click anchor event
Details: INVALID. There are no input elements in the current page
Viewport change event
Details: Changed the viewport to ipad-mini with portrait orientation
Page navigation (Reload) event
Details: Successfully reloaded the page
Page navigation (Reload) event
Details: Successfully reloaded the page
Action: click anchor event
Details: INVALID. There are no input elements in the current page
Scroll event (horizontal bk) event
Details: INVALID. Not able to scroll to the left anymore
Key press event
Details: INVALID. No element is in focus
Random click event
Details: DOM element with path: #ember97 > P:nth-child(2)
Viewport change event
Details: Changed the viewport to iphone-3 with portrait orientation
Selector focus (hover) event
Details: Position: (149, 355). INVALID, element has no attribute onmouseover
Key press event
Details: INVALID. No element is in focus
Selector focus (hover) event
Details: Position: (396, 591). INVALID, no selectable element
Key press event
Details: INVALID. No element is in focus
Key press event
Details: INVALID. No element is in focus
Viewport change event
Details: Changed the viewport to macbook-13 with portrait orientation
Viewport change event
Details: Changed the viewport to macbook-11 with portrait orientation
Special key press event
Details: No element is in focus. Pressed the {shift}{esc} combination of special keys on the page body
Key press event
Details: INVALID. No element is in focus
Scroll event (pg down) event
Details: Page limit reached! Successfully scrolled down from y=0 to y=0
Scroll event (pg down) event
Details: Page limit reached! Successfully scrolled down from y=0 to y=0
Key press event
Details: INVALID. No element is in focus
Viewport change event
Details: Changed the viewport to iphone-xr with portrait orientation
Scroll event (horizontal bk) event
Details: INVALID. Not able to scroll to the left anymore
Key press event
Details: INVALID. No element is in focus
Key press event
Details: INVALID. No element is in focus
Action: click anchor event
Details: Cleared input
Special key press event
Details: No element is in focus. Pressed the {alt}{esc} combination of special keys on the page body
Action: click anchor event
Details: Link to https://ghost.org/help/using-the-editor/ is hidden
Scroll event (horizontal bk) event
Details: INVALID. Not able to scroll to the left anymore
Page navigation (back) event
Details: Navigated 1 page back
Excepción no manejada (teclas aleatorias en menú perfil)
Comportamiento esperado
Al hacer clic en sitios u opciones no esperados deben controlarse las excepciones y no lanzarlas al navegador.
Comportamiento actual
Al ejecutar pruebas aleatorias con monkey-cypress se identificó un error lanzado por la aplicación, de una excepción no manejada. El problema parece presentarse en el menú del perfil.
Pasos a reproducir
Por ser una ejecución aleatoria ("monkey testing") no es posible decir los pasos exactos, pero se adjuntan los pantallazos de la herramienta como evidencias, y el resultado de la ejecución como información adicional.
Los pasos para ejecutar la herramienta fueron:
1- Instalar cypress, con el comando npm install -g cypress
2- Descargar y descomprimir monkey-cypress de https://github.com/TheSoftwareDesignLab/monkey-cypress
3- En el directorio donde quedó ejecutar el comando: npm install
4- Ejecutar cypress open
5- Seleccionar Open Project y buscar la carpeta creada. Esto hace que migre a Cypress 12 (aceptar los cambios).
6- Crear, en la carpeta, el directorio results con un archivo llamado monkey-execution.html.
7- Ir al archivo monkey.cy.js que quedó en \cypress\e2e\monkey y cambiar los datos de baseUrl y appName.
8- Seleccionar en cypress.io el archivo monkey.cy.js para realizar la ejecución.
Evidencias
Contexto (Ambiente de ejecución)
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Herramienta probada: Ghost versión 3.41.1
Herramientas usadas para las pruebas:
monkey-cypress, commit e60dda8.
Cypress package version: 12.10.0
Node JS versión 12.22.1
Información adicional
Execution of monkey in http://localhost:2368/ghost/
Date of execution: 3/3/2023 at 20:57:32
Seed:8503392739524607
Browser event (source: network): Failed to load resource: the server responded with a status of 403 (Forbidden)
Key press event
Details: INVALID. No element is in focus
Key press event
Details: INVALID. No element is in focus
Special key press event
Details: No element is in focus. Pressed the {ctrl}{esc} combination of special keys on the page body
Selector focus (hover) event
Details: Position: (621, 71). INVALID, element has no attribute onmouseover
Page navigation (Reload) event
Details: Successfully reloaded the page
Special key press event
Details: No element is in focus. Pressed the {ctrl}{del} combination of special keys on the page body
Key press event
Details: INVALID. No element is in focus
Selector focus (hover) event
Details: Position: (303, 433). INVALID, element has no attribute onmouseover
Page navigation (forward) event
Details: Attempted to navigate 1 page forward
Special key press event
Details: No element is in focus. Pressed the {alt}{del} combination of special keys on the page body
Page navigation (forward) event
Details: Attempted to navigate 1 page forward
Selector focus (hover) event
Details: Position: (529, 658). INVALID, element has no attribute onmouseover
Key press event
Details: INVALID. No element is in focus
Console log event. Trace: undefined
Console log event. Trace: undefined
Random double click event
Details: IFRAME with id: site-frame
Special key press event
Details: No element is in focus. Pressed the {shift}{leftarrow} combination of special keys on the page body
Page navigation (Reload) event
Details: Successfully reloaded the page
Key press event
Details: INVALID. No element is in focus
Page navigation (back) event
Details: Navigated 1 page back
Special key press event
Details: No element is in focus. Pressed the {shift}{backspace} combination of special keys on the page body
Key press event
Details: INVALID. No element is in focus
Key press event
Details: INVALID. No element is in focus
Console log event. Trace: undefined
Console log event. Trace: undefined
Random double click event
Details: A with id: ember19
Key press event
Details: INVALID. No element is in focus
Key press event
Details: INVALID. No element is in focus
Selector focus (hover) event
Details: Position: (333, 494). INVALID, element has no attribute onmouseover
Selector focus (hover) event
Details: Position: (184, 299). INVALID, element has no attribute onmouseover
Special key press event
Details: No element is in focus. Pressed the {shift}{selectall} combination of special keys on the page body
Key press event
Details: INVALID. No element is in focus
Selector focus (hover) event
Details: Position: (110, 305). INVALID, element has no attribute onmouseover
Console log event. Trace: undefined
Console log event. Trace: undefined
Random double click event
Details: DOM element with path: #ember26 > DIV:nth-child(1)
Special key press event
Details: No element is in focus. Pressed the {shift}{del} combination of special keys on the page body
Special key press event
Details: No element is in focus. Pressed the {meta}{rightarrow} combination of special keys on the page body
Console log event. Trace: undefined
Console log event. Trace: undefined
Random double click event
Details: DOM element with path: #ember5 > DIV:nth-child(3) > MAIN:nth-child(2) > SECTION:nth-child(1) > DIV:nth-child(1) > HEADER:nth-child(1)
Special key press event
Details: No element is in focus. Pressed the {meta}{backspace} combination of special keys on the page body
Random click event
Details: DOM element with path: #ember5 > DIV:nth-child(3) > MAIN:nth-child(2) > SECTION:nth-child(1) > DIV:nth-child(1) > SECTION:nth-child(2) > DIV:nth-child(2) > DIV:nth-child(1) > DIV:nth-child(1) > DIV:nth-child(2)
Special key press event
Details: No element is in focus. Pressed the {meta}{{} combination of special keys on the page body
Console log event. Trace: undefined
Console log event. Trace: undefined
Random double click event
Details: DOM element with path: #ember5 > DIV:nth-child(3) > MAIN:nth-child(2) > SECTION:nth-child(1) > DIV:nth-child(1) > SECTION:nth-child(2) > DIV:nth-child(2) > DIV:nth-child(2) > DIV:nth-child(1) > DIV:nth-child(2)
Console log event. Trace: undefined
Console log event. Trace: undefined
Random double click event
Details: DOM element with path: #ember5 > DIV:nth-child(3) > MAIN:nth-child(2) > SECTION:nth-child(1) > DIV:nth-child(1) > HEADER:nth-child(1)
Special key press event
Details: No element is in focus. Pressed the {meta}{end} combination of special keys on the page body
Special key press event
Details: No element is in focus. Pressed the {shift}{selectall} combination of special keys on the page body
Console log event. Trace: undefined
Console log event. Trace: undefined
Random double click event
Details: A with id: ember42
Key press event
Details: INVALID. No element is in focus
Special key press event
Details: No element is in focus. Pressed the {ctrl}{home} combination of special keys on the page body
Console log event. Trace: undefined
Console log event. Trace: undefined
Random double click event
Details: DOM element with path: #ember5 > DIV:nth-child(3) > MAIN:nth-child(2) > SECTION:nth-child(1) > SECTION:nth-child(2) > OL:nth-child(1) > LI:nth-child(1)
Key press event
Details: INVALID. No element is in focus
Random click event
Details: DOM element with path: #ember5 > DIV:nth-child(3) > MAIN:nth-child(2) > SECTION:nth-child(1) > SECTION:nth-child(2) > OL:nth-child(1) > LI:nth-child(1)
Selector focus (hover) event
Details: Position: (920, 629). INVALID, element has no attribute onmouseover
Key press event
Details: INVALID. No element is in focus
Selector focus (hover) event
Details: Position: (964, 222). INVALID, element has no attribute onmouseover
Selector focus (hover) event
Details: Position: (899, 430). INVALID, element has no attribute onmouseover
Console log event. Trace: undefined
Console log event. Trace: undefined
Random double click event
Details: DOM element with path: #ember5 > DIV:nth-child(3) > MAIN:nth-child(2) > SECTION:nth-child(1) > SECTION:nth-child(2) > OL:nth-child(1) > LI:nth-child(1) > DIV:nth-child(1)
Special key press event
Details: No element is in focus. Pressed the {meta}{end} combination of special keys on the page body
Selector focus (hover) event
Details: Position: (289, 122). INVALID, element has no attribute onmouseover
Special key press event
Details: No element is in focus. Pressed the {alt}{end} combination of special keys on the page body
Special key press event
Details: No element is in focus. Pressed the {shift}{del} combination of special keys on the page body
No permite crear un correo con emojis
Comportamiento esperado
Debería permitir crear un correo (email) con emojis en el perfil de una persona (staff), dado que es algo que ha empezado a tener mayor aceptación entre los usuarios.
Comportamiento actual
Cuando se edita un perfil de una persona (staff) y en el campo de Email se escribe aguno con emojis sale un error diciendo: "Please supply a valid email address", pero debería aceptarlo.
Pasos a reproducir
- Ingresar a la aplicación con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "Staff".
- Seleccionar el usuario "Ghost".
- En el formulario con los datos cambiar el "Email" por uno con emojis: 🙂@😎.kz
- Presionar el botón "Save".
- Se observa un mensaje de error: Please supply a valid email address (ver imagen en evidencias).
Evidencias
Contexto (Ambiente de ejecución)
App version: X.XX.X
OS: Windows XX, Mac XX, Ubuntu XX
Browser: [all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]
Información adicional
La prueba (usando Scenarios Outline en profile-email) termina con error porque no encuentra el mensaje de error esperado.
Cambiar contraseña password incorrecto
Comportamiento esperado
El usuario tiene una sección de "My Account" donde puede cambiar el password, si el usuario ingresa un password incorrecto, el sistema le muestra el mensaje "Tu contraseña es incorrecta. Tu contraseña es incorrecta.", cuando se corrige y se vuelve a intentar la cambia correctamente, se debe mostrar el mensaje de que se cambio correctamente y ocultar el mensaje de error.
Comportamiento actual
El usuario tiene una sección de "My Account" donde puede cambiar el password, si el usuario ingresa un password incorrecto, el sistema le muestra el mensaje "Tu contraseña es incorrecta. Tu contraseña es incorrecta.", cuando se corrige y se vuelve a intentar la cambia correctamente, pero no oculta el mensaje de error.
Pasos a reproducir
- Ingresar al sistema
- Hacer login
- Ir a la seccion "Your profile"
- Ingresar contraseña actual incorrectamente y una nueva contraseña
- Hacer clic en el botón "Change Password" para guardar
- Ingresar contraseña actual correcta y la nueva contraseña
- Hacer clic en el botón "Retry" para guardar
Evidencias
PE028.mp4
Contexto (Ambiente de ejecución)
App version: 3.41.1
OS: Windows 10 Pro
Browser: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36
Información adicional
Agregar navegación con label duplicado
Comportamiento esperado
Cuando se esta ingresando una url y un label en el "Design" debería validar que se escriba el label y la url que se esta creando no este duplicados y mostrar un mensaje de error.
Comportamiento actual
Permite agregar label y url duplicados, lo cual no es recomendable ya que deberia ser único.
Pasos para reproducir
- Ingresar a la aplicación (Ghost) con un usuario administrador.
- En las opciones del menú del lado izquierdo, seleccionar "Design".
- Seleccionar "NAVIGATION".
- Escribir label el nombre y la url correcta, volver a crear otro label duplicado
- Hacer clic en el enlace "+" al finalizar el campo
Evidencias
Screen.recording.2023-05-22.03.19.31.webm
Contexto (Ambiente de ejecución)
Herramienta probada: Ghost versión 3.41.1
Herramientas usadas para las pruebas:
Kraken commit c62bfe7
Node JS versión 12.22.1
Dispositivo: portátil HP Intel Core i5-7200U CPU @ 2.50GHz 2.71 GHz, 12 GB de RAM
S.O.: Windows 10 Pro 21H2 (64 bits)
Navegador: Google Chrome Versión 111.0.5563.147
Información adicional
Ninguna
En la ventana Help ocurre un error de carga de página
Describe the bug
Al realizar un recorrido por toda la página de ghost, en la ventana help no ocurre una visualización del contenido, sino un error de carga
To Reproduce
- Página principal
- Recorrido por cada ventana de la página como "Home" Tag" "Author" y "Help"
- En la ventana "Help" ocurre un error de carga de página (Imágen 1)
Expected behavior
Que al igual que las otras ventanas, en la ventana "Help" se pueda observar la información detallada
Enviroment (please complete the following information):
- Device: Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz 2.59 GHz, 12,0 GB RAM
- OS: Windows 10 Pro
- Browser Google Chrome
- Version 111.0.5563.147
Additional context
Add any other context about the problem here.
No se puede entrar a un sitio protegido por contraseña
Comportamiento esperado
Cuando el sitio se configura como privado, el usuario debería poder acceder a los contenidos bajo la opción "View site" tras introducir la contraseña previamente configurada.
Comportamiento actual
Después de introducir la contraseña previamente configurada, la página de inicio de sesión se muestra de nuevo bajo la opción "View site" sin un mensaje de éxito ni de error. Con el resultado de que el acceso a los contenidos del sitio no es posible.
Pasos a reproducir
- Ingresar al sistema
- Hacer login
- Seleccionar "General"
- Ir a la sección "Advanced settings" y activar "Make this site private"
- Ingresar una contraseña
- Seleccionar "Save settings"
- Hacer clic en "View site"
- Digitar contraseña previamente configurada
- Seleccionar "Enter now"
- El sistema no permite ingresar y se muestra de nuevo la página de inicio de sesión
Evidencias
PE037.mp4
Contexto (Ambiente de ejecución)
App version: 3.41.1
OS: Debian 11.6 (bullseye)
Browser: Chrome 111 (Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36)
Información adicional
Chrome Developer Console:
This attempt to set a cookie via a Set-Cookie header was blocked because it had the "SameSite=None" attribute but did not have the "Secure" attribute, which is required in order to use "SameSite=None"
Editar página no hay una validación en la cantidad de texto del contenido
Comportamiento esperado
Al editar una página en ghost, se debe ingresar el titulo y el contenido. Se espera que se pueda introducir un texto grande sin congelar la aplicación.
Comportamiento actual
Cuando se ingresa a paginas y se intenta editar una página, no hay una validación en el texto del contenido, lo cual al ingresar mas de 56.000 palabras, la aplicación deja de funcionar.
Pasos a reproducir
- Ingresar al sistema
- Hacer login
- Ir a la seccion "Pages"
- Seleccionar la página a editar.
- Ingresar contenido con más de 50.000 palabras.
Evidencias
PE026.mp4
Contexto (Ambiente de ejecución)
App version: 3.41.1
OS: Windows 10 Pro
Browser: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36
Información adicional
Error al añadir perfil de facebook con nombre de usuario que contiene caracteres prohibidos
Comportamiento esperado
El sistema verifica que la URL al perfil de facebook cumple las normas de Facebook.
Los nombres de usuario solo pueden incluir caracteres alfanuméricos (A-Z, 0-9) y puntos ("."). No pueden incluir términos genéricos ni extensiones (.com, .net).
https://www.facebook.com/help/105399436216001?locale=es_LA&cms_id=105399436216001
Si la URL no cumple las normas de Facebook, se muestra un error y se rechaza guardar la configuración.
Comportamiento actual
Si se introduce una URL a un perfil de facebook con caracteres no permitidos en la sección de "Social accounts" de "General", no se muestra un error. Cuanda se guarda, aparece un error object null is not iterable (cannot read property Symbol(Symbol.iterator))
que no es comprensible para un usuario.
Pasos a reproducir
- Ingresar al sistema
- Hacer login
- Seleccionar "General"
- En la sección de "Social accounts" ingresa una URL al perfil de Facebook con caracteres invalidas,
https://www.facebook.com/Ägidius
- Seleccionar "Save settings"
Evidencias
PE008.mp4
Contexto (Ambiente de ejecución)
App version: 3.41.1
OS: Debian 11.6 (bullseye)
Browser: Chrome 111 (Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36)
Información adicional
Chrome Developer Console:
Uncaught TypeError: object null is not iterable (cannot read property Symbol(Symbol.iterator))
at e.serialize (ghost.min-fb570ba5e71dd5f77195b123fa6e1c8d.js:2238:76)
at e.serializeAttribute (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:8336:29)
at vendor.min-1ea21c7abed44258b1662cf1b103c007.js:8335:77
at vendor.min-1ea21c7abed44258b1662cf1b103c007.js:8103:146
at Map.forEach (<anonymous>)
at e.eachAttribute (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:8103:127)
at e.eachAttribute (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:8076:660)
at B.eachAttribute (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:8438:153)
at e.serialize (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:8335:49)
at e.serialize (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:8367:157)
Uncaught (in promise) TypeError: object null is not iterable (cannot read property Symbol(Symbol.iterator))
at e.serialize (ghost.min-fb570ba5e71dd5f77195b123fa6e1c8d.js:2238:76)
at e.serializeAttribute (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:8336:29)
at vendor.min-1ea21c7abed44258b1662cf1b103c007.js:8335:77
at vendor.min-1ea21c7abed44258b1662cf1b103c007.js:8103:146
at Map.forEach (<anonymous>)
at e.eachAttribute (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:8103:127)
at e.eachAttribute (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:8076:660)
at B.eachAttribute (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:8438:153)
at e.serialize (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:8335:49)
at e.serialize (vendor.min-1ea21c7abed44258b1662cf1b103c007.js:8367:157)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.