Saltar al contenido
Volver al inicio
Volver al blog
Feature

Novedades en API Tester: gRPC, Socket.IO, MQTT y scripts de test reales

El API Tester pasa de cuatro protocolos a siete — gRPC por reflexión del servidor, Socket.IO y MQTT — y sustituye su antiguo evaluador de tests falso por un motor JavaScript real en sandbox. Además: colecciones versionadas como ficheros del proyecto, sin nube de por medio.

5 min
Por Pelayo Naredo
Novedades en API Tester: gRPC, Socket.IO, MQTT y scripts de test reales

En julio presentamos el API Tester como un cliente completo de REST, WebSocket, GraphQL y SSE integrado en el IDE. Desde entonces ganó una ficha completa en la documentación — y, más importante, tres protocolos nuevos enteros, un motor de scripts real y una forma de mantener tus colecciones de API completamente fuera de la nube.

Esto es todo lo nuevo.

gRPC, por reflexión del servidor

El API Tester ahora habla gRPC sin pedirte un solo fichero .proto. Apunta a host:puerto, toca Discover services, y recorre la API de reflexión del servidor para listar qué se puede llamar — el mismo mecanismo que usan grpcurl y el cliente gRPC de Postman, así que funciona contra cualquier servidor que exponga reflexión.

Las llamadas son solo unarias: los métodos de streaming aparecen en la lista, correctamente etiquetados y deshabilitados, en vez de ocultarse o fingir que funcionan. Y la interfaz nunca te pide rellenar un formulario generado campo a campo — escribes la petición en JSON plano, PocketCode la convierte en un DynamicMessage por debajo, y recibes JSON de vuelta.

Socket.IO, evento a evento

En Socket.IO no hay un catálogo fijo de eventos como en MQTT, así que el panel no intenta fingir uno. Conecta a un namespace, activa auto-reconexión si quieres, y luego:

  • Añade un listener para cualquier nombre de evento que esperes.
  • Emite un evento propio con un payload JSON.

Cada mensaje del registro tipo chat va etiquetado con el evento al que pertenece, así que una conexión que maneja eventos message, typing y presence se mantiene legible. Por debajo usa el cliente oficial socket.io-client-java, así que el comportamiento coincide con el que tendrías desde un cliente Node.

MQTT, topic a topic

Construido sobre el cliente de HiveMQ (habla MQTT 5, aunque el panel expone por ahora funciones de nivel 3.1.1 — sin propiedades de MQTT 5 todavía, documentado en vez de descartado en silencio). Conecta con o sin TLS, con o sin usuario y contraseña, y luego:

  • Suscríbete a un topic con QoS 0, 1 o 2.
  • Publica en un topic con QoS y una marca opcional de retain.

Los mensajes entrantes se agrupan por topic, así que un dispositivo que publica en sensors/+/temp no se convierte en un único stream ilegible.

Scripts de test que de verdad se ejecutan

Este es del que más orgullosos estamos, porque sustituye algo que en realidad no funcionaba. El antiguo motor de tests buscaba llamadas pm.test('...') por expresión regular y adivinaba el resultado a partir de las palabras del nombre del test — un test llamado "el usuario tiene rol de administrador" pasaba siempre, sin importar lo que la respuesta contuviera de verdad.

Eso desapareció. Dos cosas lo sustituyen:

  1. Aserciones sin código — elige un campo (status code, tiempo de respuesta, una cabecera, un JSONPath dentro del body, tamaño del body), un operador (igual, contiene, mayor/menor que, existe) y un valor. Sin script, siempre se evalúa, y rápido de construir con el teclado de un móvil.
  2. Scripts de test en JavaScript real, ejecutados en un proceso sandbox aislado (androidx.javascriptengine — cero bytes añadidos al APK, ya que se apoya en el motor WebView del propio dispositivo). Un script que lanza una excepción no puede tumbar la app con él. En el raro dispositivo sin un WebView moderno, cae a un simple aviso en consola en vez de fingir en silencio que tus tests pasaron.

Ambos escriben sus resultados en la misma pestaña Tests, y todo lo que un script registra aparece en una pestaña Console dedicada — niveles LOG / INFO / WARN / ERROR incluidos.

Colecciones que viven en tu repositorio, no en la nube de otro

Esta es la función que creemos que ningún otro cliente de API móvil tiene: Guardar en el proyecto espeja una colección como un fichero JSON legible por petición, bajo .pocketcode/api/<colección>/, dentro del mismo proyecto que ya tiene abierto tu editor de código.

Room — la base de datos local de PocketCode — sigue siendo la fuente de verdad del día a día. Exportar regenera el directorio entero desde Room, así que siempre es una instantánea limpia. Importar te muestra antes una vista previa — una colección completamente nueva, o exactamente cuántas peticiones se reemplazarían — y nada toca la base de datos hasta que confirmas. Confirma los ficheros con el gestor de Git de la propia app y tu colección de API se revisa como cualquier otro pull request, porque lo es.

Algunas cosas más pequeñas que suman

  • El historial ganó "Comparar con...", un diff real entre dos respuestas — línea a línea en el body, más un diff de cabeceras aparte — y "Usar como mock", que convierte cualquier respuesta pasada en una ruta mock con un toque.
  • El Ejecutor ahora puede iterar sobre un fichero de datos CSV o JSON, una fila por iteración, con cada fila disponible en la resolución de variables por encima del scope Collection.
  • Llegaron las variables dinámicas: {{$guid}}, {{$timestamp}}, {{$isoTimestamp}}, {{$randomInt}}, {{$randomEmail}}, {{$randomFirstName}}, {{$randomLastName}} — el mismo atajo que esperarías de Postman, resuelto de nuevo en cada uso.
  • El Mock Server ahora puede generar rutas directamente desde un documento OpenAPI importado, y grabar cualquier respuesta del historial como fixture de mock.

Siete protocolos, scripts reales en vez de una suposición, y colecciones de API que se versionan como el resto de tu código — todo funcionando por completo en tu teléfono, sin nada requerido en la nube. Si no has visto el resto del módulo, el desglose completo está en la documentación.

PocketCode va camino de Google Play. Únete a la preinscripción para estar entre los primeros en probarlo en tu propio dispositivo.

La herramienta detrás de este artículo

API Tester

Respuestas rápidas sobre esto

¿Listo para probar PocketCode?

Descarga la app y empieza a programar desde tu móvil.