> ## Documentation Index
> Fetch the complete documentation index at: https://student-213fb9fc.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Tests

> Tester et déboguer des webhooks

<div id="local-development">
  ## Développement local
</div>

Étant donné que les webhooks doivent accéder à votre serveur depuis Internet, vous devrez rendre votre serveur de développement local accessible publiquement.

<div id="using-cloudflare-tunnels">
  ### Utiliser Cloudflare Tunnels
</div>

[Cloudflare Tunnels](https://github.com/cloudflare/cloudflared/releases) offre un moyen gratuit d’exposer votre serveur local sans ouvrir de ports sur le pare-feu :

```bash theme={null}
cloudflared tunnel --url localhost:3000
```

Vous obtiendrez une URL publique de la forme `https://abc123.trycloudflare.com`. Utilisez-la dans la configuration de votre webhook :

```json theme={null}
{
  "url": "https://abc123.trycloudflare.com/webhook"
}
```

<div id="troubleshooting">
  ## Résolution des problèmes
</div>

<div id="webhooks-not-arriving">
  ### Les webhooks n'arrivent pas
</div>

* **Endpoint inaccessible** - Vérifiez que votre serveur est accessible publiquement et que les pare-feu autorisent les connexions entrantes
* **Utilisation de HTTP** - Les URL de webhook doivent utiliser HTTPS
* **Mauvais types d'événements** - Vérifiez le filtre `events` dans la configuration de votre webhook

<div id="signature-verification-failing">
  ### Échec de la vérification de la signature
</div>

La cause la plus fréquente est l’utilisation du corps JSON parsé au lieu du corps brut de la requête.

```javascript theme={null}
// ❌ Incorrect — utilisation du corps parsé
const signature = crypto
  .createHmac('sha256', secret)
  .update(JSON.stringify(req.body))
  .digest('hex');

// ✅ Correct — utilisation du corps brut
app.use('/webhook', express.raw({ type: 'application/json' }));
app.post('/webhook', (req, res) => {
  const signature = crypto
    .createHmac('sha256', secret)
    .update(req.body) // Buffer brut
    .digest('hex');
});
```

<div id="other-issues">
  ### Autres problèmes
</div>

* **Mauvais secret** - Vérifiez que vous utilisez le bon secret depuis vos [paramètres de compte](https://www.firecrawl.dev/app/settings?tab=advanced)
* **Erreurs de délai d’attente** - Assurez-vous que votre endpoint répond en moins de 10 secondes
