Versiones
Python y Java siguen la misma numeración. La 5.4.1 salió solo en Java.
5.5.0
- Video de una ejecución que pasó. El ejecutor cierra la sesión (o la grabación de pantalla) después del
último paso y sube lo que apareció en la carpeta de evidencias antes de registrar el estado:
close_at_enden Python (run_components(localizar, close_at_end=[navegador]), con objetos que tienenclose()o funciones comodriver.quit) yProtonComponentRunner.closeAtEnd(sessao)en Java. También cierra cuando un paso falla y cuando el siguiente paso es de otro proyecto. Consulta Cerrar al final en Python y Java. - Evidencia entre pasos. Lo que el proyecto guarda entre dos pasos se sube con el paso siguiente.
- Carpeta por ejecución.
run_evidence_dir()en Python yProtonComponentRunner.runEvidenceDir()en Java devuelvenevidencias/<id de la ejecución>. Con la carpeta predeterminada, el ejecutor ignora las subcarpetas de las otras ejecuciones que el runner procesa al mismo tiempo en la misma carpeta del proyecto. Lo que el proyecto guarda directamente enevidenciasse sigue subiendo. Consulta Carpeta de evidencias en Python y Java. - Falla antes del primer paso.
record_failure(erro)yrecord_failure(erro, motivo)en Python, yProtonComponentRunner.recordFailure(erro)yrecordFailure(erro, motivo)en Java, registran el error en el panel de error y el Failed con el motivo: la sesión que no se abre, el dispositivo fuera de servicio. Consulta Falla antes del primer paso en Python y Java. - Motivo de ambiente. Una excepción nueva marca la falla de ambiente:
ProtonEnvironmentFailureen Python yProtonEnvironmentErroren Java. La excepción de una biblioteca puede indicar su propio motivo (el atributofailure_reasonen Python, la interfazProtonFailureen Java). El motivo también se busca en las causas del error (failure_reasonen Python,FailureReason.ofen Java), y el error de lectura del ambiente de la ejecución (ProtonEnvironmentErroren Python,ProtonEnvironmentExceptionen Java) cuenta como falla de ambiente. - Panel de error limpio. Sin las líneas de pytest, de JUnit y de Surefire y sin los colores de la terminal.
- Ejecución de Proton.
is_proton_execution()en Python exige unidDatasetRunno vacío, yProtonEnv.isProtonExecution()pasa a ser público en Java. - Dispositivo del disparo. En Python,
get_dataset_run_info()traedeviceFarmydeviceOsVersion. En Java,ProtonBrowserStack.recordBSSessionId(id)registra el id de la sesión de BrowserStack en la ejecución y devuelve el estado HTTP,updateBSSessionId(id)sigue funcionando, obsoleto, y avisa en la salida cuando Proton no lo registra, ygetBStackDeviceOsVersion()devuelve la versión del sistema elegida al disparar la ejecución. Consulta BrowserStack.
Con un Proton anterior a la ruta
PUT /dataset-run/{id}, recordBSSessionId devuelve
404, y deviceFarm y deviceOsVersion no vienen (en Java, getBStackDeviceOsVersion() devuelve un valor
vacío), sin romper nada.
5.4.1 (Java)
- Nombre de archivo con tildes. La captura de pantalla, el video y el adjunto enviados por la SDK Java
llegan a Proton con el nombre en UTF-8. Hasta la 5.4.0, cada letra con tilde se convertía en
_en Proton. Los archivos enviados antes conservan el nombre con el que se guardaron.
5.4.0
- Log con nivel. Cada línea del log va con su nivel (Información, Alerta, Error o Crítico) y un contexto
opcional:
log_info,log_warning,log_errorylog_criticalen Python,logInfo,logWarning,logErrorylogCriticalen Java. La pantalla de la ejecución filtra por nivel, y la búsqueda en los logs encuentra la línea entre ejecuciones. - Línea también en la salida del proceso. Cada línea sale en la salida de Maven o de Python con la hora y el nivel. Por encima del límite del log en Proton (10 mil líneas), es en el archivo de log de la ejecución donde queda el log completo.
- Motivo de la falla. El Failed puede ir con el motivo (negocio, técnico o ambiente), sin cambiar el
estado. Con el ejecutor de componentes, basta con lanzar
ProtonBusinessErroren el paso para que la falla cuente como de negocio. - Correlation ID. Con el runner que entrega
PROTON_CORRELATION_ID(5.0.8 en adelante), la SDK envía el id en cada llamada a Proton (X-Correlation-Idytraceparent) y lo ofrece para las llamadas que hace la automatización:correlation_headers()en Python yProtonEnv.correlationHeaders()en Java. - Los estados Failed de Proton 4 (datos y ambiente) siguen como Failed, ahora con el motivo de negocio y de ambiente.
Con un Proton anterior a la observabilidad de la ejecución, el nivel, el contexto y el motivo se ignoran, y el log sigue como antes.
5.3.3
- El paso que falla queda en Failed. El ejecutor de componentes ya no cierra el paso que falló: el Failed de la ejecución lo cierra como Failed. Hasta la 5.3.2, aparecía como Passed en la línea de tiempo, aun con la ejecución en Failed.
5.3.2
- App mobile por la ruta de Proton 5. La descarga del instalador de la aplicación mobile usa la ruta de Proton 5, que acepta el token de la ejecución. Hasta la 5.3.1, usaba la ruta de archivos de Proton 4.
5.3.1
-
Repositorio Maven público. La SDK Java pasa a publicarse en
https://maven.protoncloud.com.br, sin credenciales. GitHub Packages sigue en paralelo. -
Estado Running. El ejecutor de componentes registra Running cuando el primer paso está por ejecutarse. En la 5.3.0, la ejecución pasaba de Loading directamente a Passed.
5.3.0
- Ejecutor de componentes. El bucle que ejecuta los pasos del dataset pasa a vivir en la SDK:
run_componentsen Python yProtonComponentRunneren Java. Consulta Ejecutor de componentes y los proyectos modelo. - Python: salida con
+o%. El valor llega completo a Proton. Antes, un+se convertía en espacio (un teléfono+55, por ejemplo) y un%hacía fallar el registro con un error. - Python: máscara de las formas codificadas. La máscara del log también cubre los valores del ambiente codificados para URL.
- Java: sin
slf4j-simple. La SDK ya no elige el proveedor de log de quien la usa. - Dependencias en la última versión estable en los dos lenguajes.
5.2.0
- Token de la ejecución. Cuando el runner entrega el token de la ejecución en
PROTON_TOKEN, la SDK lo usa aunque el archivo del proyecto tenga otro token, e incluso con el archivo fijando la configuración (config_precedenceen Python,proton.config.precedenceen Java), que sigue valiendo para la dirección. Mientras el archivo tenga token, la SDK avisa una vez en el log, sin imprimir ningún valor. - Python: datos de la ejecución que la SDK Java ya tenía.
get_automation_name(),get_dataset_run_status(),get_dataset_by_dataset_run(),get_dataset_info()yget_automation_group_info().
5.1.0
Primera versión con el nombre Proton Cloud SDK, en los dos lenguajes.
- Ambiente de la ejecución. La SDK lee las variables del ambiente de la ejecución, una vez por ejecución, y enmascara los valores en el log. Consulta Ambiente de la ejecución.
- Categoría del dataset obsoleta. Las funciones de categoría avisan en el log que la categoría no existe en Proton 5 e indican el ambiente.
- Estados de Proton 4. Proton 5 rechaza los estados "Failed (Dados)", "Failed (Ambiente)" e "In Process". La SDK envía "Failed" o "Running" en su lugar, con un aviso, en vez de perder el estado.
- Java: nuevas coordenadas.
br.com.protoncloud:protoncloud-sdk, en lugar debr.com.atomicsolutions.proton:proton-lib. Los paquetes Java no cambiaron. La distribución incluye el jar de fuentes y el de javadoc, para que el IDE muestre la documentación.
5.0.0 (Python)
Primera versión del paquete protoncloud-sdk en PyPI, con el import proton de siempre.
- Dirección y token resueltos por la variable de entorno, con el
proton.inicomo alternativa. - Ruta del parámetro de salida corregida para Proton 5 (
set-value).