condition-based-waiting
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.
Télécharger le ZIP du skill
Importer dans Claude
Allez dans Paramètres → Capacités → Skills → Importer un skill
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ûrPure 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.
Facteurs de risque
⚙️ Commandes externes (23)
🌐 Accès réseau (1)
📁 Accès au système de fichiers (2)
Score de qualité
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
Replace this arbitrary timeout with condition-based waiting: await new Promise(r => setTimeout(r, 100)); expect(element).toBeVisible();
Use waitForEvent to wait for a TOOL_RESULT event before asserting on the response data.
Wait for 3 AGENT_MESSAGE events to accumulate using waitForEventCount before validating the conversation flow.
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