{"componentChunkName":"component---src-templates-docs-js","path":"/fr-fr/guides/monitor-website-performance/ci-build-gating","result":{"data":{"site":{"siteMetadata":{"title":"Documentation | LoadFocus","docsLocation":""}},"mdx":{"fields":{"id":"77224962-e412-556f-ae77-06c9ee8fef91","title":"Blocage des builds en CI et marqueurs de déploiement","slug":"/fr-fr/guides/monitor-website-performance/ci-build-gating","locale":"fr-FR"},"body":"var _excluded = [\"components\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"Blocage des builds en CI et marqueurs de déploiement\",\n  \"date\": \"2026-10-29\",\n  \"metaTitle\": \"Blocage des builds CI par Page Speed | LoadFocus\",\n  \"metaDescription\": \"Faites échouer un build CI quand une page ralentit : lancez un moniteur depuis GitHub Actions, vérifiez ses budgets et marquez chaque déploiement.\",\n  \"order\": 16\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"Vous pouvez lancer un moniteur Page Speed depuis votre pipeline CI et faire \\xE9chouer le build quand la page d\\xE9passe un budget, pour qu'une version lente soit arr\\xEAt\\xE9e avant d'atteindre vos visiteurs. La m\\xEAme \\xE9tape peut marquer le d\\xE9ploiement sur les graphiques d'historique du moniteur, pour qu'un ralentissement apparaisse \\xE0 c\\xF4t\\xE9 de la version qui l'a provoqu\\xE9.\"), mdx(\"p\", null, \"Tout passe par un petit script disponible \\xE0 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"https://speed.loadfocus.com/ci.js\"), \". Il demande Node 14 ou plus r\\xE9cent et n'a aucune d\\xE9pendance : il fonctionne donc dans GitHub Actions et dans toute autre CI qui ex\\xE9cute Node.\"), mdx(\"h2\", null, \"Avant de commencer\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Un moniteur pour la page.\"), \" Le script lance un moniteur que vous avez d\\xE9j\\xE0, voir \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://loadfocus.com/docs/fr-fr/guides/monitor-website-performance/getting-started\"\n  }, \"Premiers pas\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"L'identifiant du moniteur.\"), \" Ouvrez un r\\xE9sultat du moniteur et descendez jusqu'\\xE0 \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"CI et marqueurs de d\\xE9ploiement\"), \", sous les graphiques d'historique. L'\\xE9tape affich\\xE9e sous \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Faire \\xE9chouer un build quand cette page ralentit\"), \" contient d\\xE9j\\xE0 l'identifiant, et \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Copier\"), \" la place dans le presse-papiers. L'identifiant est aussi la partie qui suit \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"/speedtests/\"), \" dans l'adresse de la page de r\\xE9sultat.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Une cl\\xE9 API.\"), \" Cr\\xE9ez-en une sur la page \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://loadfocus.com/account/api-keys\"\n  }, \"API Keys\"), \" et enregistrez-la comme secret CI nomm\\xE9 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"LOADFOCUS_API_KEY\"), \". Si vous travaillez dans plusieurs \\xE9quipes, d\\xE9finissez aussi \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"LOADFOCUS_TEAM_ID\"), \" ; sans elle, votre \\xE9quipe par d\\xE9faut est utilis\\xE9e.\")), mdx(\"p\", null, \"Chaque ex\\xE9cution CI lance une vraie ex\\xE9cution du moniteur et compte donc comme une ex\\xE9cution de test de votre plan.\"), mdx(\"h2\", null, \"Exemple GitHub Actions\"), mdx(\"p\", null, \"Ajoutez votre cl\\xE9 API comme secret du d\\xE9p\\xF4t (Settings > Secrets and variables > Actions > \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"LOADFOCUS_API_KEY\"), \"), puis cr\\xE9ez \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \".github/workflows/page-speed.yml\"), \" :\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-yaml\"\n  }, \"name: Page speed budget\\n\\non:\\n  push:\\n    branches: [ main ]\\n\\njobs:\\n  page-speed:\\n    runs-on: ubuntu-latest\\n    steps:\\n      - name: Page speed budget\\n        run: curl -fsSL https://speed.loadfocus.com/ci.js | node - --monitor YOUR_MONITOR_ID --marker \\\"${{ github.sha }}\\\" --budget \\\"lcp<=2.5\\\"\\n        env:\\n          LOADFOCUS_API_KEY: ${{ secrets.LOADFOCUS_API_KEY }}\\n\")), mdx(\"p\", null, \"Remplacez \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"YOUR_MONITOR_ID\"), \" par l'identifiant de votre moniteur. L'\\xE9tape publie un marqueur de d\\xE9ploiement libell\\xE9 avec le commit, lance le moniteur, attend le r\\xE9sultat et fait \\xE9chouer le job quand un budget est d\\xE9pass\\xE9. Placez-la apr\\xE8s votre \\xE9tape de d\\xE9ploiement pour qu'elle mesure la version que vous venez de livrer.\"), mdx(\"p\", null, \"Pour relier le marqueur \\xE0 la page du commit, ajoutez \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"--marker-url \\\"${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }}\\\"\"), \". R\\xE9p\\xE9tez \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"--budget\"), \" pour d'autres limites, par exemple \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"--budget \\\"lcp<=2.5\\\" --budget \\\"performance>=90\\\"\"), \".\"), mdx(\"h2\", null, \"Options\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Option\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Effet\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"--monitor <id>\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Le moniteur \\xE0 lancer. Obligatoire.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"--budget \\\"lcp<=2.5\\\"\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Une limite suppl\\xE9mentaire pour cette ex\\xE9cution. R\\xE9p\\xE9table.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"--marker \\\"<label>\\\"\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Publie aussi un marqueur de d\\xE9ploiement avec ce libell\\xE9 (jusqu'\\xE0 120 caract\\xE8res), par exemple le commit ou le tag.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"--marker-url <url>\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Un lien pour le marqueur, par exemple la page de la version ou du commit.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"--timeout <seconds>\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Abandonne au bout de cette dur\\xE9e. 900 par d\\xE9faut.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"--json\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Affiche le r\\xE9sultat brut en JSON.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"--host <url>\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"https://speed.loadfocus.com\"), \" par d\\xE9faut.\")))), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"curl -fsSL https://speed.loadfocus.com/ci.js | node - --help\"), \" affiche la m\\xEAme liste.\"), mdx(\"h2\", null, \"Quels budgets sont v\\xE9rifi\\xE9s\"), mdx(\"p\", null, \"Chaque ex\\xE9cution est v\\xE9rifi\\xE9e par rapport \\xE0 deux ensembles de limites :\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Les alertes de seuil du moniteur.\"), \" Chaque alerte activ\\xE9e avec \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"au-dessus de\"), \" ou \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"en dessous de\"), \" et une valeur compte comme un budget : une alerte sur Largest Contentful Paint au-dessus de 2.5 devient le budget \\\"LCP au plus 2.5 s\\\". Ce sont les m\\xEAmes budgets que ceux affich\\xE9s sur la page de r\\xE9sultat, voir \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://loadfocus.com/docs/fr-fr/guides/monitor-website-performance/performance-budgets\"\n  }, \"Budgets de performance\"), \". Les alertes qui utilisent \\\"se d\\xE9grade de (%)\\\" n'ont pas de limite fixe et ne sont pas v\\xE9rifi\\xE9es.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Chaque \", mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"--budget\"), \" que vous passez.\"), \" Un budget est une m\\xE9trique, \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"<=\"), \" ou \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \">=\"), \" et un nombre. Vous pouvez en passer jusqu'\\xE0 30.\")), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"M\\xE9trique\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Unit\\xE9\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"performance\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"accessibility\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"best-practices\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"seo\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"score de 0 \\xE0 100\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"fcp\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"lcp\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"si\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"tbt\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"tti\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"secondes\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"cls\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Cumulative Layout Shift\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"weight\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"poids de la page en Ko\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"requests\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"nombre de requ\\xEAtes\")))), mdx(\"p\", null, \"Les m\\xE9triques de temps sont en secondes, Total Blocking Time compris : \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"tbt<=0.3\"), \" signifie 300 ms. Un budget dont la m\\xE9trique n'a pas \\xE9t\\xE9 mesur\\xE9e pendant l'ex\\xE9cution \\xE9choue : une page qui n'a pas pu \\xEAtre mesur\\xE9e ne passe donc jamais la v\\xE9rification.\"), mdx(\"h2\", null, \"Codes de sortie et affichage\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Code de sortie\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Signification\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"0\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Tous les budgets sont respect\\xE9s.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"1\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Un budget est d\\xE9pass\\xE9.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"2\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"L'ex\\xE9cution n'a pas pu \\xEAtre v\\xE9rifi\\xE9e : la cl\\xE9 API ou l'identifiant du moniteur manque, l'ex\\xE9cution n'a pas pu d\\xE9marrer (par exemple \\xE0 cause des limites de votre plan), la page n'a pas pu \\xEAtre test\\xE9e, l'ex\\xE9cution a \\xE9t\\xE9 interrompue, ou aucun r\\xE9sultat n'est arriv\\xE9 avant le d\\xE9lai.\")))), mdx(\"p\", null, \"Le log affiche une ligne \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"PASS\"), \" ou \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"FAIL\"), \" par budget avec la valeur mesur\\xE9e, la limite et l'origine du budget (\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"alert\"), \" ou \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"pipeline\"), \"), puis un lien vers le rapport complet. Si aucun budget n'est d\\xE9fini, le script l'indique et se termine avec 0.\"), mdx(\"p\", null, \"Dans GitHub Actions, le r\\xE9sultat est aussi \\xE9crit dans le r\\xE9sum\\xE9 du job : les quatre scores Lighthouse, un tableau de tous les budgets et un lien \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Full report\"), \".\"), mdx(\"h2\", null, \"Marqueurs de d\\xE9ploiement\"), mdx(\"p\", null, \"Un marqueur est une ligne en pointill\\xE9s sur les graphiques d'historique du moniteur, dans la s\\xE9rie \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"D\\xE9ploiements\"), \". Avec \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"--marker\"), \", le script en publie un avant de lancer l'ex\\xE9cution. Si le marqueur ne peut pas \\xEAtre publi\\xE9, le script l'indique et poursuit la v\\xE9rification.\"), mdx(\"p\", null, \"Pour marquer des d\\xE9ploiements sans lancer de v\\xE9rification, utilisez la commande sous \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Ou seulement marquer les d\\xE9ploiements\"), \" dans le m\\xEAme panneau :\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"curl -X POST \\\"https://speed.loadfocus.com/api/test/applighthouse/annotations\\\" \\\\\\n  -H \\\"loadfocus-auth: YOUR_API_KEY\\\" -H \\\"content-type: application/json\\\" \\\\\\n  -d '{\\\"label\\\":\\\"Deployed v1.4.2\\\",\\\"configId\\\":\\\"YOUR_MONITOR_ID\\\"}'\\n\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"label\"), \" est obligatoire, jusqu'\\xE0 120 caract\\xE8res.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Omettez \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"configId\"), \" pour marquer tous les moniteurs de l'\\xE9quipe.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Ajoutez \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"url\"), \" pour relier la version.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Ajoutez \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"timestamp\"), \" (date ISO ou epoch) pour antidater le marqueur, jusqu'\\xE0 30 jours.\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Marqueurs r\\xE9cents\"), \" dans le panneau liste les marqueurs de la p\\xE9riode affich\\xE9e, du plus r\\xE9cent au plus ancien. Les marqueurs publi\\xE9s sans moniteur portent la mention \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"tous les moniteurs\"), \", et \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Supprimer\"), \" en retire un. Quand une \\xE9quipe atteint 5 000 marqueurs, les plus anciens laissent la place aux nouveaux.\"), mdx(\"h2\", null, \"Comparer deux ex\\xE9cutions\"), mdx(\"p\", null, \"Quand un budget est d\\xE9pass\\xE9, la section \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Comparer les ex\\xE9cutions\"), \" du r\\xE9sultat montre ce qui a chang\\xE9. Choisissez une autre ex\\xE9cution du m\\xEAme moniteur dans \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Comparer avec\"), \" et LoadFocus affiche c\\xF4te \\xE0 c\\xF4te, avec une colonne \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Variation\"), \" :\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Scores\"), \" et \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"M\\xE9triques\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Poids de la page\"), \", au total et par type de ressource, plus le nombre de \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Requ\\xEAtes\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Nouvelles requ\\xEAtes\"), \", \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Requ\\xEAtes qui ont grossi\"), \" et \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Requ\\xEAtes supprim\\xE9es\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Nouveaux probl\\xE8mes\"), \" et \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Corrig\\xE9 depuis\"), \", les audits qui ont commenc\\xE9 ou cess\\xE9 d'\\xE9chouer\")), mdx(\"p\", null, \"Ajoutez l'identifiant de l'autre ex\\xE9cution \\xE0 l'adresse du r\\xE9sultat comme param\\xE8tre \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"compare\"), \" (par exemple \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"&compare=12345\"), \" apr\\xE8s le \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"testrunid\"), \") et la page s'ouvre avec cette ex\\xE9cution d\\xE9j\\xE0 choisie, pratique pour la partager.\"), mdx(\"h2\", null, \"Connexe\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://loadfocus.com/docs/fr-fr/guides/monitor-website-performance/performance-budgets\"\n  }, \"Budgets de performance\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://loadfocus.com/docs/fr-fr/guides/monitor-website-performance/alert-configuration\"\n  }, \"Configuration des alertes\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://loadfocus.com/docs/fr-fr/guides/monitor-website-performance/experiments\"\n  }, \"Exp\\xE9riences Page Speed\"))));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#avant-de-commencer","title":"Avant de commencer"},{"url":"#exemple-github-actions","title":"Exemple GitHub Actions"},{"url":"#options","title":"Options"},{"url":"#quels-budgets-sont-vérifiés","title":"Quels budgets sont vérifiés"},{"url":"#codes-de-sortie-et-affichage","title":"Codes de sortie et affichage"},{"url":"#marqueurs-de-déploiement","title":"Marqueurs de déploiement"},{"url":"#comparer-deux-exécutions","title":"Comparer deux exécutions"},{"url":"#connexe","title":"Connexe"}]},"parent":{"__typename":"File","relativePath":"fr-fr/guides/monitor-website-performance/ci-build-gating.md"},"frontmatter":{"metaTitle":"Blocage des builds CI par Page Speed | LoadFocus","metaDescription":"Faites échouer un build CI quand une page ralentit : lancez un moniteur depuis GitHub Actions, vérifiez ses budgets et marquez chaque déploiement.","order":16,"noindex":null}},"allMdx":{"edges":[{"node":{"fields":{"slug":"/fr-fr","title":"Bienvenue dans la documentation LoadFocus"}}},{"node":{"fields":{"slug":"/fr-fr/guides","title":"Guides pratiques"}}},{"node":{"fields":{"slug":"/fr-fr/knowledge-base","title":"Base de connaissances"}}},{"node":{"fields":{"slug":"/fr-fr/pricing","title":"FAQ sur les tarifs"}}},{"node":{"fields":{"slug":"/fr-fr/knowledge-base/how-to-delete-your-account","title":"Comment supprimer votre compte"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring","title":"Surveillance API"}}},{"node":{"fields":{"slug":"/fr-fr/knowledge-base/understanding-declined-card-payments","title":"Pourquoi mon paiement par carte a-t-il été refusé ?"}}},{"node":{"fields":{"slug":"/fr-fr/guides/external-reports","title":"Rapports externes"}}},{"node":{"fields":{"slug":"/fr-fr/knowledge-base/understanding-differences-between-http-and-https","title":"Différences entre HTTP et HTTPS"}}},{"node":{"fields":{"slug":"/fr-fr/knowledge-base/how-to-update-card-details","title":"Comment mettre à jour les détails de carte pour les paiements échoués"}}},{"node":{"fields":{"slug":"/fr-fr/knowledge-base/using-3rd-party-tools-to-load-test-website-locally","title":"Comment tester la charge d'un site web ou d'une API hébergé localement"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing","title":"Tests de charge avec Apache JMeter"}}},{"node":{"fields":{"slug":"/fr-fr/knowledge-base/using-query-parameters","title":"Comment utiliser les paramètres de requête URL"}}},{"node":{"fields":{"slug":"/fr-fr/knowledge-base/using-google-analytics-and-no-requests-while-load-testing","title":"Pas de trafic dans Google Analytics pendant les tests de charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/k6-load-testing","title":"k6 Load Testing"}}},{"node":{"fields":{"slug":"/fr-fr/knowledge-base/using-valid-url-endpoints","title":"Qu'est-ce qu'une URL valide pour un test de charge"}}},{"node":{"fields":{"slug":"/fr-fr/knowledge-base/what-is-an-http-method","title":"Qu'est-ce qu'une méthode de requête HTTP"}}},{"node":{"fields":{"slug":"/fr-fr/guides/mcp","title":"Assistants IA (MCP)"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing","title":"Tests de charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitoring-as-code","title":"Monitoring as Code"}}},{"node":{"fields":{"slug":"/fr-fr/guides/onboarding","title":"Onboarding LoadFocus"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance","title":"Surveillance de la performance des sites web"}}},{"node":{"fields":{"slug":"/fr-fr/guides/reusable-snippets","title":"Snippets réutilisables"}}},{"node":{"fields":{"slug":"/fr-fr/guides/openapi-import","title":"Importer depuis OpenAPI / Swagger"}}},{"node":{"fields":{"slug":"/fr-fr/guides/setup-teardown-scripts","title":"Scripts de préparation et de nettoyage"}}},{"node":{"fields":{"slug":"/fr-fr/guides/teams","title":"Gestion des équipes"}}},{"node":{"fields":{"slug":"/fr-fr/guides/external-reports/azure-app-insights-integration","title":"Intégration Azure App Insights"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/adding-notes-to-results","title":"Ajouter des notes aux résultats de test"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/downloading-jmx-csv-files","title":"Télécharger les fichiers .JMX et .CSV dans LoadFocus"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/ai-credits","title":"AI Credits"}}},{"node":{"fields":{"slug":"/fr-fr/guides/external-reports/datadog-integration","title":"Intégration Datadog"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/how-to-run-new-apache-jmeter-load-test","title":"Comment exécuter un nouveau test de charge Apache JMeter"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/api-check-results","title":"Comprendre les résultats des vérifications API"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/alert-channels","title":"Canaux d'alerte"}}},{"node":{"fields":{"slug":"/fr-fr/guides/external-reports/dynatrace-integration","title":"Intégration Dynatrace"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/import-to-jmeter-from-curl-har-postman-openapi","title":"Importer cURL, HAR, Postman ou OpenAPI dans un test JMeter"}}},{"node":{"fields":{"slug":"/fr-fr/guides/external-reports/new-relic-integration","title":"Intégration New Relic"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/analyzing-load-test-results","title":"Comment vérifier les résultats des tests de charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/browser-checks","title":"Browser Checks"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/authorization-code-grant-type-oauth-2-0","title":"Type d'autorisation Authorization Code dans OAuth 2.0"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/check-groups","title":"Groupes de vérifications"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/check-retries-and-alert-thresholds","title":"Nouvelles tentatives et seuils d'alerte"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/load-generators-hardware-infrastructure-jmeter","title":"Quelles sont les ressources matérielles allouées à mon compte pour les générateurs de charge ?"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/jmeter-integration-ci-cd","title":"Exécuter des tests JMeter avec le client API LoadFocus"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/client-credentials-grant-type-oauth-2-0","title":"Type d'autorisation Client Credentials dans OAuth 2.0"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/custom-domain-status-page","title":"Comment ajouter un domaine personnalisé à votre page de statut"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/load-testing-anomalies","title":"Anomalies des tests de charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/external-reports/opentelemetry-integration","title":"OpenTelemetry (OTLP) Integration"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/baseline-comparison-between-load-tests","title":"Comparaison de référence entre les tests de charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/common-http-error-codes","title":"Codes d'erreur HTTP courants"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/crafting-perfect-test-names","title":"Créer des noms de test parfaits"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/dashboards","title":"Tableaux de bord"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/load-testing-error-analysis","title":"Analyse des erreurs"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/dns-monitors","title":"Moniteurs DNS"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/load-testing-engine-health-monitoring","title":"Surveillance de la santé des moteurs"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/decoding-average-response-times","title":"Décoder le temps de réponse moyen"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/heartbeat-monitors","title":"Moniteurs Heartbeat (tâches cron)"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/load-testing-insights","title":"Informations sur les tests de charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/incident-management","title":"Gestion des incidents"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/demo","title":"Démo"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/deep-dive-samples-in-load-testing","title":"Que sont les échantillons dans les tests de charge ?"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/end-time-in-load-testing","title":"Comprendre l'importance de l'heure de fin dans les tests de charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/load-testing-jtl-jmeter-log-file-analysis","title":"Analyse des fichiers de log JMeter"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/load-testing-timeline-analysis","title":"Vue chronologique"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/maintenance-windows","title":"Fenêtres de maintenance"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/load-testing-jtl-file-analysis","title":"Analyse des logs et fichiers JTL"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/errors-by-type","title":"Erreurs par type et taux d'erreur"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/multistep-api-checks","title":"Vérifications API multi-étapes"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/uploading-jmeter-files-step-by-step-guide","title":"Importer des fichiers JMeter dans LoadFocus : guide étape par étape"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/erros-and-reponse-codes","title":"Erreurs et codes de réponse"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/using-multiple-csv-files-with-jmeter-engines","title":"Utiliser plusieurs fichiers CSV avec les moteurs JMeter dans LoadFocus"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/new-api-check","title":"Comment créer une nouvelle vérification API"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/geographical-test-location-in-load-testing","title":"Emplacement géographique des tests de charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/getting-started","title":"Démarrage rapide"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/recent-failures","title":"Échecs récents"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/snippets","title":"Snippets"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/group-filter-load-test-results-by-url","title":"Grouper et filtrer les résultats de test de charge par URL"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/headers-and-manage-presets","title":"En-têtes et présélections d'en-têtes"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/sla-slo-reports","title":"Rapports de disponibilité SLA & SLO"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/how-to-run-new-load-test","title":"Comment exécuter un nouveau test de charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/status-page-api","title":"API de la page de statut, flux RSS et badge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/synthetic-monitoring","title":"Synthetic Monitoring"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/tcp-monitors","title":"Moniteurs de port TCP"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/status-pages","title":"Créez une page de statut publique pour vos moniteurs"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/http-methods-overview-load-testing","title":"Méthodes HTTP : vue d'ensemble"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/implicit-grant-type-oauth-2-0","title":"Type d'autorisation Implicit Grant dans OAuth 2.0"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/uptime-monitoring","title":"Uptime Monitoring"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/how-to-url-query-parameters","title":"Paramètres de requête"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/load-generator-saturation","title":"Saturation du générateur de charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/granularity-in-load-test-results-and-charts","title":"Granularité dans les résultats et l'affichage des graphiques de tests de charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/load-generators-hardware-infrastructure","title":"Quelles sont les ressources matérielles allouées à mon compte pour les générateurs de charge ?"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/ssl-certificate-monitoring","title":"Surveillance des certificats SSL"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/variables","title":"Variables"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/page-speed-under-load","title":"Vitesse de page sous charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/load-test-results-api","title":"API d'analyse des résultats"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/pass-fail-thresholds","title":"Seuils de réussite/échec"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/load-test-result-ai-analysis","title":"Analyse IA des résultats de tests de charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/performance-trend-load-test-results","title":"Tendance de performance"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/password-credentials-grant-type-oauth-2-0","title":"Type d'autorisation Password Credentials dans OAuth 2.0"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/page-speed-under-load-trends","title":"Page Speed Under Load Trends"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/reading-the-capacity-panel","title":"Lire le panneau de capacité"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/release-tags-and-run-annotations","title":"Étiquettes de version et annotations d'exécution"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/refresh-token-grant-type-oauth-2-0","title":"Type d'autorisation Refresh Token dans OAuth 2.0"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/response-time-distribution","title":"Distribution des temps de réponse"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/scheduled-load-tests","title":"Tests de charge planifiés"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/using-cookies","title":"Utiliser les cookies"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/results-by-location","title":"Résultats par emplacement"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/use-cases","title":"Cas d'utilisation"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/start-time-in-load-testing","title":"Comprendre l'importance de l'heure de début dans les tests de charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/share-load-test-reports","title":"Partager les rapports de test de charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/response-time-vs-virtual-users","title":"Temps de réponse vs utilisateurs virtuels"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/what-are-iterations-load-testing","title":"Que sont les itérations dans les tests de charge ?"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/what-is-delay-when-running-a-load-test","title":"Qu'est-ce que le délai lors de l'exécution d'un test de charge ?"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/what-are-virtual-users-load-testing","title":"Que sont les utilisateurs virtuels dans les tests de charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/what-is-duration-in-load-testing","title":"Qu'est-ce que la durée dans les tests de charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/slowest-and-most-failing-requests","title":"Requêtes les plus lentes et les plus en échec"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/what-is-ramp-up-steps-in-load-testing","title":"Que sont les étapes de montée en charge dans les tests de charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/what-is-grant-type","title":"Qu'est-ce qu'un type d'autorisation (Grant Type) ?"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/what-is-oauth-2-0-authorization","title":"Autorisation OAuth 2.0"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/white-label-report-branding","title":"Rapports PDF à votre marque"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/what-is-test-run-id","title":"Qu'est-ce qu'un identifiant d'exécution de test ?"}}},{"node":{"fields":{"slug":"/fr-fr/guides/k6-load-testing/analyzing-k6-test-results","title":"Analyse des résultats de test de charge k6"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance/alert-configuration","title":"Configuration des alertes"}}},{"node":{"fields":{"slug":"/fr-fr/guides/k6-load-testing/import-to-k6-from-curl-har-postman-openapi","title":"Importer cURL, HAR, Postman ou OpenAPI dans un test k6"}}},{"node":{"fields":{"slug":"/fr-fr/guides/k6-load-testing/how-to-run-k6-load-test","title":"Comment exécuter un nouveau test de charge k6"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance/ci-build-gating","title":"Blocage des builds en CI et marqueurs de déploiement"}}},{"node":{"fields":{"slug":"/fr-fr/guides/load-testing/what-is-ramp-up-time-in-load-testing","title":"Qu'est-ce que le temps de montée en charge dans les tests de charge"}}},{"node":{"fields":{"slug":"/fr-fr/guides/k6-load-testing/uploading-k6-scripts","title":"Télécharger des scripts et fichiers de données k6"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance/core-web-vitals-competitor-comparison","title":"Comparaison Core Web Vitals avec les concurrents"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance/alert-metrics","title":"Métriques d'alerte"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance/core-web-vitals-metrics","title":"Que sont les Core Web Vitals ?"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance/experiments","title":"Expériences Page Speed"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance/how-to-create-new-alert","title":"Créer une nouvelle alerte"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance/http-authentication","title":"Authentification HTTP"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance/largest-contentful-paint","title":"Largest Contentful Paint (LCP)"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance/lighthouse-opportunities","title":"Opportunités Lighthouse"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance/how-to-run-new-website-performance-test","title":"Créer un nouveau test de performance de site web"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance/getting-started","title":"Démarrage rapide"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance/pdf-report-branding","title":"Rapports PDF à votre marque"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance/performance-budgets","title":"Budgets de performance et alertes"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance/sitemap-import","title":"Import depuis un Sitemap"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance/real-user-monitoring","title":"Real User Monitoring (RUM)"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance/real-user-field-data","title":"Données de terrain réelles (CrUX)"}}},{"node":{"fields":{"slug":"/fr-fr/guides/monitor-website-performance/visual-regression-testing","title":"Visual Regression Testing"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/new-api-check/activate-deactivate","title":"Activer/Désactiver"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/alert-channels/discord","title":"Alertes Discord"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/alert-channels/email","title":"Alertes Email"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/jmeter-integration-ci-cd/azure-devops","title":"Azure DevOps"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/alert-channels/microsoft-teams","title":"Alertes Microsoft Teams"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/new-api-check/alert-channels","title":"Canaux d'alerte"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/jmeter-integration-ci-cd/circleci","title":"CircleCI"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/new-api-check/assertions","title":"Assertions"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/alert-channels/opsgenie","title":"Alertes Opsgenie"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/new-api-check/frequency","title":"Fréquence"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/new-api-check/friendly-check-name","title":"Nom convivial de la vérification"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/alert-channels/pagerduty","title":"Alertes PagerDuty"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/jmeter-integration-ci-cd/github-actions","title":"GitHub Actions"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/alert-channels/slack","title":"Alertes Slack"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/jmeter-integration-ci-cd/overview","title":"Intégration du client API JMeter avec les pipelines CI/CD"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/new-api-check/locations","title":"Emplacements"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/new-api-check/mute-unmute","title":"Mettre en sourdine/Réactiver"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/jmeter-integration-ci-cd/jenkins","title":"Jenkins"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/new-api-check/request-configuration","title":"Configuration de la requête"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/new-api-check/request-preview","title":"Aperçu de la requête"}}},{"node":{"fields":{"slug":"/fr-fr/guides/jmeter-load-testing/jmeter-integration-ci-cd/gitlab-ci-cd","title":"GitLab CI/CD"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/new-api-check/response-time-limits","title":"Limites de temps de réponse"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/alert-channels/webhook","title":"Alertes Webhook"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/new-api-check/retries","title":"Nouvelles Tentatives Avant Alerte"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/new-api-check/webhook-channels","title":"Canal Webhook"}}},{"node":{"fields":{"slug":"/fr-fr/guides/api-monitoring/new-api-check/save-run","title":"Enregistrer et exécuter"}}}]}},"pageContext":{"id":"77224962-e412-556f-ae77-06c9ee8fef91","locale":"fr-FR"}},"staticQueryHashes":["361965504","361965504","417421954","417421954","445494767","445494767"]}