Scripts de configuración y limpieza
Un script de setup se ejecuta una vez justo antes de una verificación y un script de teardown una vez justo después. Úsalos para obtener un token, preparar datos antes de la verificación o limpiar lo que creó la verificación. Funcionan en verificaciones de API, multipaso y de navegador. Los monitores DNS y TCP no los ejecutan.
Para añadir uno, abre el editor de la verificación, busca ¿Ejecutar scripts de configuración o finalización?, haz clic en Ver Editor y usa las pestañas Script de Configuración y Script de Finalización. Los scripts son JavaScript y se ejecutan en un entorno aislado en cada ejecución, en cada región, con su salida de consola capturada.
Qué recibe cada script
Sección titulada «Qué recibe cada script»- Verificación de API: el script de setup recibe
request; el de teardown reciberequestyresponse(response.statusCode,response.bodycomo texto,response.headers). El objetorequestde un script de setup es una copia para que tu script la lea. Cambiarlo no cambia la petición que envía LoadFocus, así que usa el setup para hacer trabajo previo (por ejemplo, crear un registro que la verificación necesita) y el teardown para limpiar tras la respuesta. - Verificación multipaso: el script de setup recibe
ctx. Todo lo que guardes enctx.varsse puede usar en cada paso como{{name}}. El script de teardown recibectxy elresultde la ejecución. - Verificación de navegador: el script de setup se ejecuta antes de que arranque el navegador y rellena
ctx.varspara el flujo; el de teardown se ejecuta después.
Qué puedes usar
Sección titulada «Qué puedes usar»Dentro de un script puedes usar require con:
gotyaxios: hacer llamadas HTTP, por ejemplo para canjear credenciales por un token OAuth. Las llamadas a direcciones privadas, de loopback y link-local están bloqueadas.crypto: hashes y firmas HMAC.@faker-js/faker: datos de prueba realistas y únicos.urlypath: utilidades para construir URLs y rutas.- Snippets: código compartido guardado una vez y cargado con
require("./snippets/name"). Consulta Snippets.
La salida de console.log se muestra en los logs del script.
Ejemplo: obtener un token OAuth en el setup de una verificación multipaso
Sección titulada «Ejemplo: obtener un token OAuth en el setup de una verificación multipaso»const got = require('got');
const tokenResponse = await got.post('https://auth.example.com/oauth/token', { json: { grant_type: 'client_credentials', client_id: '${{CLIENT_ID}}', client_secret: '${{CLIENT_SECRET}}', },}).json();
// Haz que el token esté disponible en cada paso como {{token}}ctx.vars.token = tokenResponse.access_token;En cada paso, establece el valor de la cabecera en Bearer {{token}}.
Ejemplo: limpiar en el teardown de una verificación de API
Sección titulada «Ejemplo: limpiar en el teardown de una verificación de API»const got = require('got');
// Si la petición creó un recurso, bórralo para que el monitor no deje rastroif (response.statusCode === 201 && response.body) { const created = JSON.parse(response.body); await got.delete('https://api.example.com/items/' + created.id, { headers: { Authorization: 'Bearer ${{API_TOKEN}}' }, });}Secretos y variables
Sección titulada «Secretos y variables»Haz referencia a un secreto o variable guardados con ${{NAME}} dentro de un script. LoadFocus lo sustituye por el valor justo antes de ejecutar el script, así que las credenciales nunca quedan en texto plano en el script. Una referencia sin el signo de dólar, como {{NAME}}, no se sustituye en un script. Consulta Variables.
Probar tus scripts
Sección titulada «Probar tus scripts»En el editor de scripts, EJECUTAR SCRIPT ejecuta el script contra el endpoint real y muestra el resultado. Abre VER REGISTROS para ver lo que imprimió el script. Una ejecución de prueba cuenta como una ejecución en tu uso mensual.
Límites
Sección titulada «Límites»- Cada script está limitado a 100 KB.
- Si el script de setup falla, la verificación no se envía y la ejecución se marca como fallida. Normalmente es lo que quieres: sin token válido no hay verificación válida.
- Un fallo de teardown se informa en los logs pero no cambia el resultado de la ejecución.