Wiederverwendbare Snippets

Wiederverwendbare Snippets

Wenn mehrere Checks denselben Login-Ablauf oder dieselbe Hilfslogik teilen, entsteht durch das Kopieren des Codes in jedes Skript ein Wartungsproblem. Mit wiederverwendbaren Snippets schreiben Sie die Logik einmal, geben ihr einen Namen und binden sie aus jedem Setup-Skript, Teardown-Skript, Browser-Skript oder Multistep-Skript Ihres Teams ein.

Was Snippets sind

Snippets sind teamweite JavaScript-Module, die in der App gespeichert sind. Alle Teammitglieder können sie nutzen. Wenn LoadFocus einen Check ausführt, löst es das Snippet anhand seines Namens auf und bindet es in die Sandbox des Skripts ein. Der Code läuft mit demselben Zugang zu ctx, Umgebungsvariablen und verfügbaren npm-Modulen wie das Skript selbst.

Ein Snippet erstellen

  1. Öffnen Sie die Seite Snippets über die Seitenleiste (unter der Einstellungsgruppe).
  2. Klicken Sie auf Neues Snippet.
  3. Geben Sie einen Namen mit Buchstaben, Zahlen, Bindestrichen und Unterstrichen an (zum Beispiel login-helper oder sign_request). Der Name ist der Bezeichner, den Sie in Skripten verwenden.
  4. Schreiben Sie JavaScript, das eine Funktion oder einen Wert über module.exports exportiert.

Beispiel-Snippet mit dem Namen 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;
};

Dieses Snippet holt ein Token und speichert es in ctx.vars.token, damit der Check es lesen kann.

Ein Snippet in einem Skript verwenden

Binden Sie das Snippet anhand seines Namens über den Pfad ./snippets/<name> ein:

const login = require('./snippets/login');
module.exports = async function setup(ctx) {
await login(ctx);
// ctx.vars.token ist jetzt für den Check verfügbar
};

Dasselbe Muster funktioniert in Teardown-Skripten, Browser-Skripten und Multistep-Skripten.

Hinweise und Einschränkungen

  • Nur literaler Pfad. Nur die Form require('./snippets/<name>') wird aufgelöst. Dynamische Pfade wie require('./snippets/' + name) werden nicht unterstützt.
  • Keine Snippet-zu-Snippet-Auflösung (v1). Ein Snippet, das ein anderes Snippet einbindet, wird nicht automatisch aufgelöst. Lagern Sie gemeinsame Logik in ein einzelnes Snippet aus, falls nötig.
  • Fehlende Snippets schlagen sofort fehl. Falls ein angefordertes Snippet nicht existiert, schlägt der Check-Lauf unmittelbar vor dem Versand fehl, mit einer Fehlermeldung, die den fehlenden Namen nennt.
  • Gemeinsame Sandbox. Snippets laufen in derselben Sandbox wie das aufrufende Skript und haben Zugang zu ctx, Umgebungsvariablen, Secrets und dem verfügbaren npm-Modul-Set.

Verwandte Anleitungen

Siehe Setup- und Teardown-Skripte für Details dazu, wie Setup- und Teardown-Skripte funktionieren und was Sie damit tun können.