Dokumentation: Testläufe

Als Markdown anzeigen

Testläufe

Ein Testlauf macht aus einem Skript Nachweise. Der Agent verpackt einen Ablauf in astral.test, teilt ihn in Schritte auf, legt fest, was gelten soll, und Astral zeichnet auf, was passiert ist.

Testläufe verwenden das Tool run_script, das vom Agenten geschriebenes JavaScript in einer Sandbox ausführt, die die anderen Tools aufruft. Die Gruppe script ist standardmäßig aus; die Gruppe tests ist standardmäßig an, wirkt aber nur, solange script an ist. Siehe die Gruppe script.

Ein Beispiel

return await astral.test('Login demo', async () => {
  await astral.step('Open the store', () => astral.navigate({url: 'http://localhost:3000/'}));
  await astral.step('Sign in', async () => {
    await astral.type({locator: {role: 'textbox', name: 'Username'}, text: 'demo'});
    await astral.type({locator: {role: 'textbox', name: 'Password'}, text: 'demo', submit: true});
    await astral.expect.visible({role: 'button', name: 'Sign out'});
    await astral.expect.noErrors();
  });
  await astral.step('Pay', async () => {
    await astral.click({locator: {role: 'button', name: 'Pay'}});
    await astral.expect.request({urlContains: '/api/', method: 'POST', status: '2xx'});
  });
}, {continueOnFailure: true, record: 'actions'});

Geben Sie run_script für einen Test ein timeoutMs von 60000 bis 120000: Nachweise brauchen Zeit.

astral.test und astral.step

Optionen von astral.test(name, fn, options): tabId, continueOnFailure (Standard false) und record. Es wirft keine Ausnahme, wenn ein Schritt fehlschlägt: Prüfen Sie den status im Ergebnis, das auch die Summen, eine Markdown-summary und die Pfade des Berichts enthält.

astral.step(name, fn) gruppiert Aktionen. An seinem Ende, und bei einem Fehler immer, speichert Astral einen Screenshot, URL und Titel, die während des Schritts gestellten Anfragen (fehlgeschlagene mit geschwärzten Headern und Bodys), Konsolenfehler und -warnungen sowie alle neuen Fehlergruppen. Ein Schritt schlägt fehl, wenn seine Funktion eine Ausnahme wirft oder eine Erwartung darin fehlschlägt. Ohne continueOnFailure stoppt der Test beim ersten fehlgeschlagenen Schritt.

run_script akzeptiert auch test: {name, continueOnFailure, ...}, um das gesamte Skript als einen Test zu behandeln.

Erwartungen

AufrufBestanden, wenn
expect.visible(locator)Das Element sichtbar ist; es wird bis zu timeoutMs gewartet (Standard 5000).
expect.hidden(locator)Das Element nicht sichtbar ist.
expect.text(locator, 'contains') / expect.text('text')Das Element den Text enthält oder der Text irgendwo auf der Seite erscheint.
expect.url('/dashboard') / expect.url(/regex/)Die URL des Tabs übereinstimmt.
expect.request({urlContains, method, status})Seit Beginn des Schritts eine passende Anfrage gestellt wurde. status ist eine Zahl, '2xx' oder 'error'.
expect.noErrors({kinds, waitMs, ignoreStatus, ignore})Seit Beginn des Schritts keine neue Fehlergruppe aufgetreten ist. Statuswerte wie 401 oder Meldungen lassen sich per Teilstring ignorieren.
expect.layout({rules, ignore})Das responsive Layout der Seite im Viewport des Laufs keine Fehler hat. Siehe die Layout-Prüfung.

Ein Locator ist {role, name, text, nth, exact}, eine Snapshot-Referenz wie "e12" oder ein Text. Eine fehlgeschlagene Erwartung wirft einen Assertion-Fehler mit dem, was erwartet wurde und was gefunden wurde, und der Bericht zeigt ihn an. astral.screenshot({name, fullPage}) innerhalb eines Tests fügt dem aktuellen Schritt einen benannten Screenshot hinzu.

Aufzeichnungsmodi

ModusWas erfasst wird
'off'Screenshots nur von Fehlern.
'steps' (Standard)Ein Screenshot am Ende jedes Schritts.
'actions'Zusätzlich einer nach jedem Klick, jeder Eingabe, Auswahl, Tastenbetätigung und Navigation, aufgenommen, während eine Markierung das Ziel zeigt: ein Rahmen, eine Welle am Klickpunkt und eine Beschriftung wie click "Sign in".
'video'Zusätzlich Frames des Tabs mit 4 pro Sekunde (bis zu 5 Minuten oder 200 MB), gespeichert als animiertes recording.png und als recording.mp4, wo Astral eines kodieren kann (macOS), mit einem Frame-Player im Bericht.

Markierungen werden in jedem Modus außer 'off' gezeichnet, verschwinden nach 2,5 Sekunden und am Ende des Laufs und fangen nie Klicks ab. Text, der in ein Passwort-, Einmalcode- oder Kartenfeld getippt wird, wird nie geschrieben: Beschriftungen zeigen •••••• und der Wert wird im restlichen Bericht überall maskiert. Zur Video-Unterstützung siehe Plattformen.

Was ein Lauf hinterlässt

Jeder Lauf schreibt einen Ordner in das Datenverzeichnis von Astral mit folgendem Inhalt:

  • report.html: ein lesbarer Bericht mit einer Zusammenfassung, einer Karte pro Schritt mit seinen Screenshots, der fehlgeschlagenen Assertion, fehlgeschlagenen Anfragen, Konsolenfehlern, gruppierten Seitenfehlern, einer Zeitleiste der Aktionen und einem Leistungsabschnitt.
  • report.json: dieselben Daten plus eine Markdown-Zusammenfassung, die zum Einfügen in ein Issue gedacht ist.
  • Die Screenshots als PNG-Dateien und die Aufzeichnung, falls Sie eine angefordert haben.

Die neuesten 50 Läufe werden aufbewahrt (einstellbar unter Settings → Developer, wo sich Testläufe auch ausschalten lassen). Der Agent liest Läufe mit test_runs_list und test_run_get wieder aus.

Nachweise für Tickets

Die Markdown-Zusammenfassung ist dafür gedacht, zusammen mit den Screenshots und dem Bericht in ein Issue eingefügt zu werden. Wenn Ihr Agent mit Ihrem Ticket-Tool verbunden ist, kann er diese Nachweise dort für Sie posten. Astral selbst integriert sich in kein Ticket-Tool: Es schreibt die Nachweise und überlässt das Posten Ihnen oder Ihrem Agenten.

Testnamen, Schritte, Screenshot-Namen und alles, was Astral über einen Lauf schreibt, sind auf Englisch, unabhängig davon, welche Sprache Sie, das Ticket oder die Seite verwenden. Nur Locators behalten den eigenen Text der Seite.