# Tester votre formulaire

Essayez votre formulaire autant que vous voulez. Les tests sont gardés à part de vos vraies soumissions,
ne comptent pas dans votre forfait et n’atteignent jamais vos destinataires. Il n’y a pas de mode test à
activer ni à penser à désactiver : Formerie examine chaque soumission et vous dit ce qui s’est passé.

## Tester depuis votre ordinateur

Branchez votre site sur le formulaire pendant qu’il roule sur un serveur de développement local. C’est toute
la configuration qu’il faut.

Une requête qui vient de `localhost`, `127.0.0.1` ou `[::1]` avec un port, comme `http://localhost:5173`, est
enregistrée comme un test tant que cette adresse ne figure pas dans les **Sites autorisés** du formulaire. Le
formulaire doit d’abord être publié.

La réponse ressemble à un succès normal, avec une partie de plus qui indique que c’était un test :

```json
{
  "ok": true,
  "submissionId": "tst_p6dr8wq2j7tkan",
  "submissionUid": "tst_p6dr8wq2j7tkan",
  "status": "accepted",
  "test": {
    "source": "loopback",
    "version": { "kind": "published", "number": 3 },
    "nobodyNotified": true,
    "expiresAt": "2026-11-30T12:00:00.000Z",
    "reason": "http://localhost:5173 is not an allowed website for this form, so this was stored as a test.",
    "docs": "https://docs.formerie.com/guides/test-your-form/"
  },
  "delivery": { "queued": false, "status": "test" },
  "version": { "number": 3 }
}
```

La réponse porte aussi un en-tête `X-Formerie-Test`. Une vraie soumission n’a jamais ni l’un ni l’autre.

Si votre formulaire exige une vérification humaine, il lui faut quand même un jeton, ce qui confirme que le
widget est bien branché. Formerie donne à votre page locale une clé Turnstile qui passe toujours, et ne
vérifie pas le jeton.

## Tester un site de préproduction

Ajoutez son adresse sous **Sites de test** dans l’onglet **Tests** du formulaire, par exemple
`https://preprod.exemple.com`. Ses soumissions sont alors enregistrées comme des tests, et ses pages reçoivent
la même clé qui passe toujours. Un site dans les **Sites autorisés** reste réel, alors on ne peut pas l’ajouter ici.
Si de vraies soumissions sont venues d’une adresse dans les 30 derniers jours, Formerie vous demande de confirmer.

## Partager un lien d’essai

Choisissez **Créer un lien** dans l’onglet **Tests** et envoyez-le à qui vous voulez. Pas besoin de compte. La
personne voit le formulaire avec une bannière qui indique que c’est un test, et c’est vous qui recevez le courriel.
Personne d’autre.

Un lien peut montrer le formulaire publié ou le brouillon actuel, même pour un formulaire jamais publié. Il dure
7 jours. Révoquez-le quand vous voulez : il s’arrête aussitôt.

Ajoutez `?simulate=closed`, `?simulate=full` ou `?simulate=not_open` à l’adresse d’envoi d’un lien pour voir le
message qu’un visiteur recevrait dans cet état.

## Tester depuis un serveur ou l’intégration continue

Créez une clé dans l’onglet **Tests**, puis envoyez-la dans un en-tête. Une clé n’est affichée qu’une fois et ne
fonctionne que pour son formulaire.

```bash
curl -X POST https://forms.formerie.com/your-workspace/your-form/submit \
  -H "Content-Type: application/json" \
  -H "X-Formerie-Test-Key: frmtest_your_key" \
  -d '{"fields":{"email":"sample@example.com"}}'
```

- Une clé erronée, révoquée ou expirée reçoit `TEST_KEY_INVALID`, et rien n’est enregistré ni envoyé. Elle ne part
  jamais comme une vraie soumission.
- Les clés ne fonctionnent pas depuis un navigateur, alors une clé ne peut pas se retrouver par accident dans le code
  de votre site. Utilisez plutôt un site de test.
- Ajoutez `X-Formerie-Test-Version: draft` pour tester le brouillon d’un formulaire publié, et
  `X-Formerie-Test-Simulate: closed`, `full` ou `not_open` pour voir un refus.
- Depuis un site dans les **Sites autorisés**, la clé est ignorée et la soumission est réelle. La réponse porte l’avis
  `TEST_KEY_IGNORED_ORIGIN_LISTED`.

Une clé oubliée sur un serveur de production enregistre tout comme des tests, alors vérifiez la **Dernière vraie
soumission** après la mise en ligne. Les tests envoyés avec une clé sont supprimés après 7 jours.

## Voir le courriel

Chaque test garde le courriel qu’une vraie soumission aurait envoyé, et le nombre de destinataires qui l’auraient
reçu. Les tests locaux et de préproduction n’envoient rien. Pour le voir dans votre boîte, ouvrez l’entrée et
choisissez **M’envoyer**. Il va seulement à votre courriel de connexion confirmé, marqué `[Test]`, sans copie ni
adresse de réponse. Un lien d’essai envoie le courriel à la personne qui l’a créé de la même façon, et une clé aussi
si vous l’avez activé à sa création. Les courriels de test ne comptent pas dans votre forfait. Un lien ou une clé peut
en envoyer 20 par jour, et un compte 50.

## Ce qui compte comme réel

La mise en ligne ne demande pas de commutateur non plus, parce que le vrai trafic est réel d’office :

- Une soumission qui vient d’un site dans les **Sites autorisés** est toujours réelle, y compris une adresse
  locale que vous avez ajoutée vous-même.
- Une soumission sans en-tête `Origin`, comme celle de votre serveur ou d’une application native, est toujours
  réelle.
- Toute autre adresse reçoit `FORBIDDEN_ORIGIN`, comme s’il n’y avait pas de tests.

Les applications mobiles utilisent souvent `https://localhost` ou `capacitor://localhost`. Ces adresses n’ont
pas de port, alors ce ne sont jamais des tests. On peut ajouter `https://localhost` aux **Sites autorisés**. Les
schémas personnalisés comme `capacitor://` ne peuvent pas être ajoutés pour le moment, alors envoyez ces
soumissions depuis votre serveur.

## Voir vos tests

Ouvrez le formulaire et choisissez **Tests**. Chaque entrée montre ses réponses, sa provenance et le courriel
qu’une vraie soumission aurait envoyé. L’aperçu du formulaire montre votre dernière vraie soumission à côté de
votre dernier test, pour voir d’un coup d’œil que les vraies réponses arrivent.

Les tests restent en dehors de votre liste de **Soumissions**, de vos exports, de vos statistiques et de
l’utilisation de votre forfait.

Les tests sont supprimés après 30 jours, ou 7 avec une clé de test. Vous pouvez en supprimer un, ou tous ceux d’un formulaire, quand vous
voulez. Utilisez des données fictives si possible : un test peut contenir de vrais renseignements personnels si
vous en saisissez.

## Si un test était une vraie personne

Une vraie personne peut se retrouver dans les tests si une application en ligne roule sur une adresse locale, ou si
une clé est restée sur un serveur. Quand des entrées viennent de plusieurs adresses en une journée, ou d’une application
mobile, Formerie les marque **Peut-être réelle**, envoie un courriel aux propriétaires et aux administrateurs, et
attend jusqu’à 90 jours de plus avant de les supprimer.

Ouvrez une entrée pour choisir :

- **Livrer comme réelle** en fait une vraie soumission. Elle est vérifiée avec le formulaire publié, envoie un courriel
  à vos destinataires et compte dans votre forfait. Les propriétaires, les administrateurs et les personnes qui gèrent les
  soumissions peuvent le faire, pour n’importe quel test.
- **Ce sont des tests** retire les marques, et ces entrées sont supprimées comme d’habitude.

## Limites des tests

Les tests ont leurs propres limites, séparées de celles des vraies soumissions, pour que vos essais ne
ralentissent pas vos visiteurs.

| | Ordinateur local | Site de test | Clé de test | Lien d’essai |
| --- | --- | --- | --- | --- |
| Par minute | 30 depuis une même adresse | 60 | 300 | 30 |
| Par jour | 200 par formulaire | 500 par formulaire | 1 000 par clé | 100 par lien |

Un espace de travail Gratuit peut garder 1 000 tests et 100 Mo. Les forfaits payants peuvent en garder 5 000 et
500 Mo. Au-delà d’une limite, vous recevez `TEST_LIMIT_REACHED` et rien n’est enregistré. Les vieux tests ne sont
jamais retirés pour faire de la place.

## Désactiver les tests locaux

Les propriétaires et les administrateurs peuvent les désactiver dans l’onglet **Tests** du formulaire. Les
adresses locales reçoivent alors `FORBIDDEN_ORIGIN`, comme tout autre site non autorisé.
