Snippets
Qué son los Snippets
Sección titulada «Qué son los Snippets»Los Snippets son fragmentos reutilizables de JavaScript que defines una vez e incorporas a los scripts de tus comprobaciones con require(). En lugar de pegar la misma función de ayuda, lógica de firma de tokens o código de preparación en cada comprobación, lo guardas como snippet y lo requieres por su nombre: lo actualizas en un solo sitio y todas las comprobaciones que lo usan adoptan el cambio.
Un snippet es simplemente un pequeño módulo de JavaScript. Todo lo que exporte con module.exports queda disponible allí donde lo requieras:
require('./snippets/name');Los snippets están asociados a tu equipo, de modo que todos los miembros del equipo pueden requerir los mismos ayudantes desde sus comprobaciones.
Los snippets funcionan en scripts de setup, de teardown, de navegador y multistep. Cuando LoadFocus ejecuta una comprobación, encuentra cada require('./snippets/<name>') de tus scripts y envía esos snippets con la ejecución. Un snippet puede usar los mismos módulos npm que un script (por ejemplo axios, got y crypto).
Gestionar Snippets
Sección titulada «Gestionar Snippets»Abre la página de Snippets para crear, editar y eliminar snippets.
Crear un Snippet
Sección titulada «Crear un Snippet»- Haz clic en New Snippet.
- Introduce un Nombre de snippet: es el nombre que requerirás en tus scripts (por ejemplo
authoformat-date). Los nombres solo pueden contener letras, números, guiones y guiones bajos. - Escribe tu JavaScript en el editor. Exporta lo que quieras reutilizar con
module.exports. - Haz clic en Save Snippet.
Cada nombre de snippet debe ser único dentro de tu equipo y puede tener hasta 64 caracteres. El plan Free incluye hasta 5 snippets; los planes de pago, hasta 100. Un snippet puede tener hasta 100.000 caracteres.
Editar o eliminar un Snippet
Sección titulada «Editar o eliminar un Snippet»Usa las acciones de fila en la página de Snippets para actualizar el código de un snippet o eliminarlo. Si un snippet está siendo utilizado por una o más comprobaciones, LoadFocus te avisa antes de guardar o eliminar, porque el cambio afecta a todas las comprobaciones que lo requieren. Una actualización se aplica en la siguiente ejecución de cualquier comprobación que lo use.
Usar un Snippet en el script de una comprobación
Sección titulada «Usar un Snippet en el script de una comprobación»Requiere un snippet por su nombre desde la ruta ./snippets/ dentro del script de una comprobación:
const auth = require('./snippets/auth');El valor que obtienes es exactamente lo que el snippet exporta.
Un script de setup o de teardown ya es el cuerpo de una función, así que escribe en él sentencias simples y no añadas module.exports al propio script.
Ejemplo
Sección titulada «Ejemplo»Crea un snippet llamado auth que construya una cabecera Authorization:
// snippet: authmodule.exports = function bearer(token) { return { Authorization: 'Bearer ' + token };};Luego úsalo desde el script de una comprobación:
const bearer = require('./snippets/auth');
const headers = bearer(token);// `token` es un valor que tu script ya tiene, por ejemplo un secreto// pasa `headers` a tu peticiónPuedes guardar cualquier lógica reutilizable en un snippet: firma de peticiones, constructores de payload, ayudantes de fechas y cadenas, o aserciones compartidas, y requerirlo desde tantas comprobaciones como necesites.
Ejemplo: iniciar sesión desde un script de setup
Sección titulada «Ejemplo: iniciar sesión desde un script de setup»Un snippet también puede trabajar con ctx. Este snippet, llamado login, obtiene un token y lo guarda en ctx.vars.token para que la comprobación pueda leerlo:
// Snippet: loginconst axios = require('axios');
module.exports = async function login(ctx, username, password) { const res = await axios.post('https://api.example.com/auth', { username, password }); ctx.vars.token = res.data.token;};Pasa las credenciales como argumentos: una referencia ctx.secrets escrita solo dentro de un snippet no se resuelve en la ejecución. En un script de setup de una comprobación de navegador:
const login = require('./snippets/login');
await login(ctx, 'ci-user', ctx.secrets.PASSWORD);// ctx.vars.token está ahora disponible para la comprobaciónLos scripts de las verificaciones de API reciben request (setup) o request y response (teardown) en lugar de ctx, así que pásalos a la función de tu snippet.
Notas y limitaciones
Sección titulada «Notas y limitaciones»- Solo ruta literal. Solo se resuelve la forma
require('./snippets/<name>'). Las rutas dinámicas comorequire('./snippets/' + name)no están soportadas. - Un snippet no puede requerir otro. Un snippet que requiere otro snippet no se resuelve. Pon la lógica compartida en un único snippet.
- Un snippet inexistente falla de inmediato. Si un snippet requerido no existe, la ejecución falla antes de enviarse, con un error que indica el snippet que falta.
- Entorno compartido. Los snippets se ejecutan en el mismo entorno aislado que el script que los llama. Un snippet solo ve
ctx,requestoresponsesi tu script se lo pasa.
Snippets frente a Variables y Secretos
Sección titulada «Snippets frente a Variables y Secretos»Usa Snippets para código reutilizable: funciones de ayuda y lógica compartida entre los scripts de las comprobaciones.
Usa Variables para valores reutilizables como URLs base e identificadores de cuenta, referenciados con ${{VARIABLE_NAME}}.
Usa Secretos para valores sensibles como tokens de API y contraseñas. Los secretos son de solo escritura en la interfaz y se referencian con ${{SECRET_NAME}}.
Consejo: guarda los valores sensibles en Secretos, no incrustados en un snippet. Pásalos a las funciones de tu snippet en tiempo de ejecución.