# Plan de tests SEO et indexabilité
> **En bref :**
> - Objectif : prouver qu’un moteur découvre, comprend et indexe les pages sans exécuter de JavaScript.
> - **POC de novembre** : HTML brut (§1), titres et métadonnées par page, sitemap (§3) sur le corpus pilote. **Avant lancement** : corpus de 100 URL et toutes les sections.
> - La cible de rendu par type de page est décrite dans [SEO, accessibilité et UX](/02-analyse-lpi/03-audit-technique/01-analyse-par-thematique/03-seo-rendu) ; outils : `curl`, un crawler sans JavaScript, le validateur schema.org.

## Corpus minimum

Constituer au moins 100 URLs couvrant :

- accueil et pages éditoriales ;
- annuaires paginés ;
- chercheurs avec profil complet et incomplet ;
- homonymes et multi-affiliations ;
- laboratoires, centres et équipes ;
- projets actifs et terminés ;
- publications et jeux de données ;
- pages françaises et anglaises ;
- anciennes URLs, contenus supprimés et pages sans résultat.

## 1. HTML brut

Pour chaque gabarit, récupérer la réponse HTTP sans navigateur et vérifier :

- [ ] code HTTP réel et cohérent ;
- [ ] titre métier présent dans le HTML ;
- [ ] contenu principal et liens relationnels présents ;
- [ ] absence de skeleton vide comme seul contenu ;
- [ ] `<title>` et description uniques ;
- [ ] canonical absolue et unique ;
- [ ] alternates `hreflang` réciproques lorsque la traduction existe ;
- [ ] liens rendus avec de vrais `<a href>` ;
- [ ] absence de cookie ou d’authentification obligatoire ;
- [ ] JSON-LD rendu côté serveur et conforme au contenu visible.

Exemples de preuves à archiver : réponse `curl`, headers, HTML brut et résultat du test automatisé rattachés au commit déployé.

## 2. Statuts et cycle de vie des URLs

| Cas | Résultat attendu |
| --- | --- |
| Ressource publiée | `200` et canonical propre |
| Ancien slug | Une redirection `301` directe |
| Ressource inconnue | `404`, sans soft 404 |
| Ressource retirée durablement | `410` si la politique le justifie |
| Prévisualisation | Authentifiée, `noindex`, absente du sitemap |
| Filtres sans valeur éditoriale | `noindex,follow` ou absence d’URL crawlable selon la stratégie |

- [ ] Tester les chaînes et boucles de redirection.
- [ ] Vérifier qu’une URL redirigée n’est plus dans les sitemaps.
- [ ] Vérifier que plusieurs URLs ne répondent pas `200` pour la même ressource sans canonical cohérente.
- [ ] Maintenir une table de redirections à chaque génération.

## 3. Sitemaps et robots

- [ ] Générer un sitemap index segmenté par type ou volume.
- [ ] Inclure uniquement des URLs canoniques publiées répondant `200`.
- [ ] Utiliser `lastmod` seulement lorsqu’il représente une modification réelle.
- [ ] Vérifier les limites de taille et de nombre d’URLs.
- [ ] Vérifier que `robots.txt` référence les sitemaps attendus.
- [ ] Interdire l’indexation des previews, routes techniques et environnements hors production.
- [ ] Tester `robots.txt` sur l’URL réellement déployée, pas seulement dans le dépôt.

## 4. Maillage et profondeur

- [ ] Vérifier les chemins thématique → structure → chercheur → projet → production.
- [ ] Fournir des annuaires paginés avec liens HTML.
- [ ] Mesurer la profondeur de clic depuis l’accueil ou un hub.
- [ ] Détecter les pages orphelines par comparaison entre crawl, base et sitemap.
- [ ] Vérifier breadcrumbs et `BreadcrumbList`.
- [ ] Éviter que la recherche JavaScript soit le seul accès aux fiches.

## 5. Données structurées

Tester selon le contenu réellement publié :

- `ProfilePage` et `Person` ;
- `Organization` ;
- `ResearchProject` ;
- `ScholarlyArticle`, `Dataset` ou `CreativeWork` ;
- `BreadcrumbList` et `ItemList` ;
- `identifier` et `sameAs` pour ORCID, ROR, DOI ou HAL.

- [ ] Valider la syntaxe automatiquement.
- [ ] Vérifier que le balisage ne contient aucun champ masqué ou privé.
- [ ] Tester un échantillon dans les outils des moteurs.
- [ ] Ne pas promettre de résultat enrichi : le balisage aide à comprendre, il ne garantit pas son affichage.

## 6. Internationalisation

- [ ] Choisir une stratégie d’URL stable pour les langues.
- [ ] Éviter les redirections forcées selon la langue du navigateur pour les robots.
- [ ] Ne pas déclarer de `hreflang` vers une traduction inexistante.
- [ ] Éviter les pages mélangeant français et anglais par fallback implicite.
- [ ] Tester les slugs localisés et leurs redirections.

## 7. Après mise en ligne

- [ ] Configurer Google Search Console et Bing Webmaster Tools avec comptes institutionnels et suppléants.
- [ ] Soumettre les sitemaps et enregistrer le nombre attendu d’URLs.
- [ ] Suivre pages découvertes, explorées, indexées et exclues.
- [ ] Surveiller soft 404, erreurs serveur, canonical et données structurées.
- [ ] Analyser le crawl depuis les logs CDN ou serveur selon une politique RGPD validée.
- [ ] Produire une revue mensuelle d’indexation et une revue trimestrielle des contenus.

## Critères de go

- 100 % des gabarits critiques ont leur contenu principal dans le HTML brut ;
- aucune page privée, preview ou technique dans les sitemaps ;
- aucune boucle de redirection ou soft 404 connue sur le corpus ;
- canonical, langues et données structurées cohérentes ;
- pages importantes accessibles par le maillage HTML ;
- responsabilités et outils de suivi post-lancement opérationnels.
