Snippets reutilizables

Snippets reutilizables

Cuando varios checks comparten el mismo flujo de login o la misma lógica auxiliar, copiar ese código en cada script genera un problema de mantenimiento. Los snippets reutilizables te permiten escribir la lógica una vez, darle un nombre y usarla desde cualquier script de setup, teardown, navegador o multistep de tu equipo.

Qué son los snippets

Los snippets son módulos JavaScript de ámbito de equipo almacenados en la app. Todos los miembros del equipo pueden utilizarlos. Cuando LoadFocus ejecuta un check, resuelve el snippet por nombre y lo inyecta en el entorno aislado del script, de modo que el código se ejecuta con el mismo acceso a ctx, variables de entorno y módulos npm disponibles que el propio script.

Crear un snippet

  1. Abre la página Snippets desde la barra lateral (en el grupo de configuración).
  2. Haz clic en Nuevo snippet.
  3. Asígnale un nombre con letras, números, guiones y guiones bajos (por ejemplo, login-helper o sign_request). El nombre es el identificador que usarás en los scripts.
  4. Escribe JavaScript que exporte una función o un valor mediante module.exports.

Ejemplo de snippet llamado login:

// Snippet: login
const axios = require('axios');
module.exports = async function login(ctx) {
const res = await axios.post('https://api.example.com/auth', {
username: ctx.env.USERNAME,
password: ctx.env.SECRET,
});
ctx.vars.token = res.data.token;
};

Este snippet obtiene un token y lo almacena en ctx.vars.token para que el check pueda leerlo.

Usar un snippet en un script

Requiere el snippet por nombre usando la ruta ./snippets/<name>:

const login = require('./snippets/login');
module.exports = async function setup(ctx) {
await login(ctx);
// ctx.vars.token está ahora disponible para que el check lo use
};

El mismo patrón funciona en scripts de teardown, scripts de navegador y scripts multistep.

Notas y limitaciones

  • Solo ruta literal. Solo se resuelve la forma require('./snippets/<name>'). Las rutas dinámicas como require('./snippets/' + name) no están soportadas.
  • Sin resolución snippet-a-snippet (v1). Un snippet que requiere otro snippet no se resuelve automáticamente. Consolida la lógica compartida en un único snippet si es necesario.
  • Los snippets inexistentes fallan de inmediato. Si un snippet requerido no existe, el check falla inmediatamente antes de ser enviado, con un error que identifica el nombre que falta.
  • Entorno compartido. Los snippets se ejecutan en el mismo entorno que el script que los llama y comparten acceso a ctx, variables de entorno, secretos y el conjunto de módulos npm disponibles.

Guías relacionadas

Consulta Scripts de configuración y limpieza para saber cómo funcionan los scripts de setup y teardown y qué puedes hacer con ellos.