Setup- und Teardown-Skripte

Setup- und Teardown-Skripte

Manche API-Endpunkte lassen sich nicht mit einer statischen Anfrage überwachen. Sie brauchen bei jedem Aufruf ein frisches Token, einen signierten Header oder eine eindeutige Nutzlast, und sie hinterlassen unter Umständen Daten, die aufgeräumt werden sollten. LoadFocus-API-Monitore lassen Sie ein Setup-Skript direkt vor der Anfrage und ein Teardown-Skript direkt nach der Antwort ausführen, sodass sich der Check bei jedem Lauf selbst vorbereitet und aufräumt.

Setup- und Teardown-Skripte gelten für API-Checks. Browser-Checks sind bereits ein vollständiges Skript (der Benutzerablauf selbst), und Multistep-Checks geben Daten über Variablen zwischen den Schritten weiter — sie decken denselben Bedarf auf andere Weise ab.

So funktioniert es

  • Das Setup-Skript läuft zuerst und erhält das request-Objekt. Alles, was Sie an request ändern (Header, URL, Body), wird für den eigentlichen Aufruf verwendet. Hier holen Sie ein Token, signieren die Anfrage oder bauen eine eindeutige Nutzlast.
  • LoadFocus sendet dann die Anfrage.
  • Das Teardown-Skript läuft zuletzt und erhält sowohl request als auch response. Hier löschen Sie eine vom Check erstellte Ressource oder bereinigen sensible Daten aus den Logs.

Beide Skripte laufen bei jedem Check-Lauf in einer isolierten Sandbox, in jeder Region, mit erfasster Konsolenausgabe, damit Sie nachvollziehen können, was passiert ist.

Was Sie verwenden können

In einem Setup- oder Teardown-Skript können Sie require:

  • got und axios — HTTP-Aufrufe machen (zum Beispiel Zugangsdaten gegen ein OAuth-Token tauschen).
  • crypto — Anfragen signieren (HMAC, Hashes) für APIs, die eine Signatur verlangen.
  • @faker-js/faker — realistische, eindeutige Testdaten erzeugen.
  • url und path — Helfer zum Bauen von URLs und Pfaden.

console.log ist verfügbar und seine Ausgabe wird unter den Logs des Skripts angezeigt.

Beispiel: ein OAuth-Token im Setup holen

const got = require('got');
const tokenResponse = await got.post('https://auth.example.com/oauth/token', {
json: {
grant_type: 'client_credentials',
client_id: '{{secrets.CLIENT_ID}}',
client_secret: '{{secrets.CLIENT_SECRET}}',
},
}).json();
// Das Token auf die Anfrage anwenden, die LoadFocus gleich sendet
request.headers = request.headers || [];
request.headers.push({ name: 'Authorization', value: 'Bearer ' + tokenResponse.access_token });

Beispiel: eine Anfrage signieren

const crypto = require('crypto');
const timestamp = Date.now().toString();
const signature = crypto
.createHmac('sha256', '{{secrets.SIGNING_KEY}}')
.update(timestamp + request.url)
.digest('hex');
request.headers = request.headers || [];
request.headers.push({ name: 'X-Timestamp', value: timestamp });
request.headers.push({ name: 'X-Signature', value: signature });

Beispiel: im Teardown aufräumen

const got = require('got');
// Falls die Anfrage eine Ressource erstellt hat, löschen, damit der Monitor keine Spur hinterlässt
if (response.statusCode === 201 && response.body) {
const created = JSON.parse(response.body);
await got.delete('https://api.example.com/items/' + created.id, {
headers: { Authorization: request.headers.find(h => h.name === 'Authorization').value },
});
}

Secrets und Variablen

Verweisen Sie mit {{secrets.NAME}} und {{variables.NAME}} in einem Skript auf Ihre gespeicherten Secrets und Variablen. LoadFocus ersetzt sie zur Laufzeit, sodass Zugangsdaten und Signierschlüssel niemals im Klartext im Skript stehen.

Ihre Skripte testen

Im Check-Editor führt die Ausführen-Schaltfläche neben jedem Skript dieses live gegen den echten Endpunkt aus und zeigt die erfassten Logs und das Ergebnis (Erfolg oder Fehlermeldung). Damit prüfen Sie, ob Ihr Token-Austausch oder Ihre Signatur funktioniert, bevor Sie den Monitor speichern.

Grenzen

  • Jeder Skript-Body ist auf 100 KB begrenzt.
  • Das Setup-Skript läuft bei jeder Check-Ausführung — halten Sie Token-Austausche effizient, da ein langsames Setup zur gemessenen Zeit des Checks beiträgt.
  • Schlägt das Setup-Skript fehl, wird die Anfrage nicht gesendet und der Check als fehlgeschlagen markiert, was meist gewünscht ist (keine gültige Auth bedeutet kein gültiger Check).