Ir al contenido

v0.9.6

Release date: 2026-11-04

La interfaz de línea de comandos se vuelve confiable en integración continua, y la app de escritorio incorpora los cambios del motor que lo hacen posible. Varios de estos cambios modifican el comportamiento a propósito; están marcados como Cambio de comportamiento.

  • Los valores que define un script ahora llegan a la siguiente solicitud de una ejecución. Un token que una solicitud de login guarda con fp.environment.set lo usa la llamada autenticada que sigue; fp.environment.remove se propaga de la misma forma. Antes se descartaba, así que la llamada fallaba con un 401.
  • Los secretos ya no se filtran a través de los scripts. Lo que un script registra en el log, el nombre de un test, el mensaje de una aserción fallida y un error de script ahora muestran un secreto como {secret:<name>} en la terminal, en todos los reportes, en el historial de ejecuciones y en la consola de scripts del escritorio — incluido un valor que el propio script escribe con el nombre de una variable secreta.
  • La línea de comandos envía los bodies binarios de las solicitudes. Una solicitud cuyo body es un archivo adjunto antes salía con el body vacío. Un archivo faltante, o una referencia no válida en el archivo de la solicitud, ahora hace fallar esa solicitud como “not run” en lugar de enviarla vacía. (Cambio de comportamiento)
  • Las respuestas comprimidas se decodifican (gzip, deflate, br) tanto en el escritorio como en la línea de comandos, así las aserciones y el visor leen el body real. Un body que no se puede decodificar se conserva tal como se recibió, con una advertencia, y fp.response.json() falla con esa causa. El registro de actividad guarda como texto una respuesta de texto comprimida que se decodificó.
  • Las ejecuciones que no hicieron nada ya no pasan. Una carpeta de destino sin ninguna solicitud detiene la ejecución con el código de salida 19 (Cambio de comportamiento).
  • Se rechazan los valores que la línea de comandos no podía respetar. --timeout y --delay aceptan números enteros de 0 a 2147483647; cualquier otro valor es un error de uso (salida 3) en lugar de ignorarse. (Cambio de comportamiento)
  • Una configuración ilegible detiene la ejecución. Un .fetchpier/settings.json que no se puede parsear, o un config.json que no se puede parsear para el entorno seleccionado, sale con el código 4 nombrando el archivo, en lugar de ejecutarse con los valores por defecto (lo que descartaba la configuración TLS) o de reportar el entorno como inexistente. fp env list advierte sobre los entornos ilegibles. Un archivo de entorno que se puede parsear pero no tiene name o id (o cuyo variables no es un objeto) también cuenta como ilegible: antes hacía fallar con un error interno cada fp run y fp env list del workspace, aunque estuviera seleccionado otro entorno. (Cambio de comportamiento)
  • La terminal muestra el entorno por su nombre de carpeta en lugar de su identificador interno, -v / -vv / -vvv ahora agregan detalle, y la salida de los scripts (fp.log) se muestra en ejecuciones de varios archivos.
  • Un timeout vencido se reporta como timed out after <limit> en ambas superficies, no como una cancelación.
  • Ninguna línea de diagnóstico interno ([execute] …, [parser] …) llega a la salida; ahora son advertencias, también en el reporte JSON con un código estable.
  • El User-Agent por defecto ya no anuncia la versión 0.1.0.
  • La sugerencia “Did you mean …?” para un path faltante es correcta cuando al directorio actual o al workspace se llega a través de un enlace simbólico (como ocurre con las carpetas temporales de macOS); antes sugería un path que subía hasta la raíz.
  • Soporte de proxy para la línea de comandos: HTTPS_PROXY / HTTP_PROXY / NO_PROXY, --proxy <url> y --no-proxy. El encabezado nombra el proxy y la lista de exclusiones; con -v, cada solicitud indica si pasó por el proxy o salió directamente. Una URL de proxy inutilizable detiene la ejecución (salida 3).
  • --persist-env guarda los cambios de variables hechos por scripts en los valores locales, exactamente como lo hace el escritorio. Sin esta opción, una ejecución no escribe nada en el workspace.
  • Redacción de credenciales y cookies en la salida de la terminal y en los reportes de la línea de comandos: la credencial de la auth por API key (en query o cabecera) y los valores de Cookie / Set-Cookie, además de Authorization. --show-secrets los revela. El historial de ejecuciones (--save-history) no cambia.
  • Una advertencia cuando una variable que usa una solicitud proviene de un {{$env.NAME}} que no está definido en ningún lado, por lo que se envió vacía.
  • Los avisos que antes eran líneas de log ahora se muestran: un cookie jar o un material TLS que no se pudo usar, un downgrade a HTTP/2, un Content-Type de multipart reemplazado, una escritura de un script que no se pudo guardar — en las advertencias de la línea de comandos y, en el escritorio, en un aviso descartable arriba de la respuesta.
  • El reporte JSON incorpora campos opcionales: environmentName y, por respuesta, compressedBytes, decompressedBytes y decodingStatus; por solicitud, notRun y via. Su versión sigue siendo 1.0. Los scripts incorporan fp.response.decodingStatus.
  • El visor de respuestas muestra tanto el tamaño recibido como el decodificado de una respuesta comprimida, y marca un body que no se pudo decodificar.
  • Timeout por defecto de 30 segundos por solicitud en la línea de comandos (el valor por defecto del escritorio). --timeout 0 es la única forma de desactivarlo. (Cambio de comportamiento)
  • Accept-Encoding: gzip, deflate, br se envía por defecto en ambas superficies cuando una solicitud no lo define. (Cambio de comportamiento)
  • User-Agent por defecto: Fetchpier/<app version> desde el escritorio y Fetchpier-CLI/<CLI version> desde la línea de comandos, aplicado en el momento del envío y nunca escrito en los archivos de solicitud; ambos valores por defecto aparecen en el editor de cabeceras como filas de solo lectura. Un valor ya guardado en un archivo se sigue enviando tal como está escrito. (Cambio de comportamiento)
  • Una solicitud que no obtuvo respuesta se muestra como no response: <reason> cuando se intentó un envío y como not run: <reason> cuando no; el caso de test de JUnit que antes se llamaba request not sent se renombra en consecuencia. (Cambio de comportamiento)
  • Un valor que define un script prevalece sobre --env-var a partir de ese momento.
  • La referencia de la CLI documenta la configuración TLS, el comportamiento ante variables faltantes, los límites del enmascarado de secretos, que el historial conserva los valores de las cookies, y que la CLI puede alinear el nombre visible de un entorno con su carpeta.

Release completa: v0.9.6 en GitHub.