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.
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:
- 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.
- 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.
API Tester
Respuestas rápidas sobre esto
¿Listo para probar PocketCode?
Descarga la app y empieza a programar desde tu móvil.