Compétences condition-based-waiting

condition-based-waiting

Sûr ⚙️ Commandes externes🌐 Accès réseau📁 Accès au système de fichiers

Beseitigen Sie instabile Tests mit Zustandsabfragen

Instabile Tests verschwenden Zeit und verringern das Vertrauen in Ihre Codebasis. Zustandsbasiertes Warten ersetzt willkürliche Timeouts durch tatsächliche Zustandsprüfungen und stellt sicher, dass Tests in allen Umgebungen einschließlich CI zuverlässig bestehen.

Prend en charge: Claude Codex Code(CC)
📊 69 Adéquat
1

Télécharger le ZIP du skill

2

Importer dans Claude

Allez dans Paramètres → Capacités → Skills → Importer un skill

3

Activez et commencez à utiliser

Tester

Utilisation de "condition-based-waiting". Help me fix this flaky test that randomly fails in CI: await sleep(300); expect(results.length).toBe(5);

Résultat attendu:

  • Ersetzen Sie das willkürliche 300ms sleep durch Zustandsabfragen:
  • await waitFor(() => results.length === 5, '5 results to be available');
  • Dies eliminiert die Zeitabhängigkeit und stellt sicher, dass der Test auf den tatsächlichen Zustand wartet.

Utilisation de "condition-based-waiting". My test passes locally but fails in CI when the server is slow

Résultat attendu:

  • Anstatt einen Timeout-Wert zu erraten, fragen Sie die Bedingung ab, die Sie tatsächlich benötigen:
  • await waitFor(() => server.isReady(), 'server to be ready', 10000);
  • Dies passt sich an die tatsächliche Servergeschwindigkeit an, anstatt bei langsamen Durchläufen zu scheitern.

Utilisation de "condition-based-waiting". I need to wait for 3 API calls to complete before checking the results

Résultat attendu:

  • Verwenden Sie waitForEventCount, um mehrere Ereignisse zu akkumulieren:
  • await waitForEventCount(threadManager, threadId, 'API_RESPONSE', 3);
  • Führen Sie dann alle akkumulierten Ergebnisse auf einmal durch Assertions.

Audit de sécurité

Sûr
v5 • 1/17/2026

Pure testing utility skill containing only TypeScript polling functions and documentation. All 43 static findings are false positives: JavaScript template literals were misidentified as Ruby shell execution, timing functions were misidentified as weak cryptography, and documentation comments were misidentified as system reconnaissance. No actual risk factors present.

3
Fichiers analysés
465
Lignes analysées
3
résultats
5
Total des audits

Score de qualité

38
Architecture
100
Maintenabilité
87
Contenu
20
Communauté
100
Sécurité
91
Conformité aux spécifications

Ce que vous pouvez construire

CI-Testfehler beheben

Beseitigen Sie intermittierende Testfehler, die lokal bestehen, aber in Continuous-Integration-Umgebungen fehlschlagen

Zuverlässige asynchrone Komponententests

Schreiben Sie stabile Tests für React-Komponenten mit asynchronen Zustandsänderungen ohne anfällige sleep-Aufrufe

Stabilität von Integrationstests

Stellen Sie sicher, dass Datenbank- und API-Integrationstests konsistent bestehen, ohne Race-Condition-Fehler

Essayez ces prompts

Einfache Zustandsprüfung
Replace this arbitrary timeout with condition-based waiting: await new Promise(r => setTimeout(r, 100)); expect(element).toBeVisible();
Auf Ereignis warten
Use waitForEvent to wait for a TOOL_RESULT event before asserting on the response data.
Ereignisse zählen
Wait for 3 AGENT_MESSAGE events to accumulate using waitForEventCount before validating the conversation flow.
Benutzerdefiniertes Prädikat
Create a waitForEventMatch call to wait for an event matching (e) => e.type === 'DATA_READY' && e.payload.id === 'item_123'.

Bonnes pratiques

  • Legen Sie immer sinnvolle Timeout-Grenzen (Standard 5000ms) mit beschreibenden Fehlermeldungen fest
  • Fragen Sie alle 10ms ab für Effizienz – 1ms verschwendet CPU, 100ms macht Tests langsam
  • Rufen Sie Zustandsgetter innerhalb der Abfrageschleife auf, cachen Sie niemals Werte davor

Éviter

  • Zu schnelles Abfragen (alle 1ms), was CPU-Zyklen ohne Nutzen verschwendet
  • Weglassen des Timeout-Schutzes, was zu Endlosschleifen führt, wenn die Bedingung nie erfüllt wird
  • Lesen des Zustands außerhalb der Abfrageschleife, was veraltete Werte erfasst

Foire aux questions

Welche Test-Frameworks funktionieren mit diesem Skill?
Jedes JavaScript- oder TypeScript-Test-Framework einschließlich Jest, Vitest, Mocha und Playwright.
Welche Timeout-Werte funktionieren am besten?
Der Standard von 5000ms funktioniert für die meisten Fälle. Erhöhen Sie ihn für langsame CI-Umgebungen oder komplexe asynchrone Operationen.
Kann dies Cross-Tab-Synchronisation handhaben?
Ja, fragen Sie eine gemeinsam genutzte Zustandsvariable ab, die beide Tabs lesen und aktualisieren können.
Modifiziert dies meinen Test-Runner?
Nein, es bietet reine Utility-Funktionen, die Sie aus Ihrem bestehenden Testcode aufrufen.
Was ist die anfängliche Abfrageverzögerung?
Die erste Prüfung läuft sofort, danach alle 10ms.
Wie unterscheidet sich dies von @testing-library waitFor?
Dies bietet eine Primitive auf niedrigerer Ebene, die Sie an jede Bedingung anpassen können, nicht nur an DOM-Abfragen.

Détails du développeur

Structure de fichiers

📄 example.ts

📄 SKILL.md

📄 SKILL.zip