{"componentChunkName":"component---src-templates-docs-js","path":"/es-es/guides/monitor-website-performance/ci-build-gating","result":{"data":{"site":{"siteMetadata":{"title":"Documentation | LoadFocus","docsLocation":""}},"mdx":{"fields":{"id":"e1b3c468-50ea-5a48-844c-e114d6710f68","title":"Bloqueo de builds en CI y marcadores de despliegue","slug":"/es-es/guides/monitor-website-performance/ci-build-gating","locale":"es-ES"},"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\": \"Bloqueo de builds en CI y marcadores de despliegue\",\n  \"date\": \"2026-10-29\",\n  \"metaTitle\": \"Page speed en CI: bloquea builds lentos | LoadFocus\",\n  \"metaDescription\": \"Haz fallar un build de CI cuando una página se vuelva más lenta: ejecuta un monitor desde GitHub Actions, comprueba sus presupuestos y marca cada despliegue.\",\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, \"Puedes ejecutar un monitor de page speed desde tu pipeline de CI y hacer fallar el build cuando la p\\xE1gina rompa un presupuesto, para que una versi\\xF3n lenta se detenga antes de llegar a tus visitantes. El mismo paso puede marcar el despliegue en los gr\\xE1ficos de historial del monitor, para que una ralentizaci\\xF3n quede junto a la versi\\xF3n que la caus\\xF3.\"), mdx(\"p\", null, \"Todo funciona con un peque\\xF1o script disponible en \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"https://speed.loadfocus.com/ci.js\"), \". Necesita Node 14 o posterior y no tiene dependencias, as\\xED que funciona en GitHub Actions y en cualquier otra CI que ejecute Node.\"), mdx(\"h2\", null, \"Antes de empezar\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Un monitor para la p\\xE1gina.\"), \" El script ejecuta un monitor que ya tienes, consulta \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://loadfocus.com/docs/es-es/guides/monitor-website-performance/getting-started\"\n  }, \"Primeros pasos\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"El id del monitor.\"), \" Abre un resultado del monitor y despl\\xE1zate hasta \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"CI y marcadores de despliegue\"), \", debajo de los gr\\xE1ficos de historial. El paso que aparece en \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Haz fallar un build cuando esta p\\xE1gina se vuelva m\\xE1s lenta\"), \" ya contiene el id, y \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Copiar\"), \" lo copia al portapapeles. El id tambi\\xE9n es la parte que va despu\\xE9s de \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"/speedtests/\"), \" en la direcci\\xF3n de la p\\xE1gina de resultados.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Una clave de API.\"), \" Crea una en la p\\xE1gina \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://loadfocus.com/account/api-keys\"\n  }, \"API Keys\"), \" y gu\\xE1rdala como secreto de CI con el nombre \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"LOADFOCUS_API_KEY\"), \". Si trabajas en m\\xE1s de un equipo, define tambi\\xE9n \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"LOADFOCUS_TEAM_ID\"), \"; sin ella se usa tu equipo predeterminado.\")), mdx(\"p\", null, \"Cada ejecuci\\xF3n de CI lanza una ejecuci\\xF3n real del monitor, as\\xED que cuenta como una ejecuci\\xF3n de prueba de tu plan.\"), mdx(\"h2\", null, \"Ejemplo con GitHub Actions\"), mdx(\"p\", null, \"A\\xF1ade tu clave de API como secreto del repositorio (Settings > Secrets and variables > Actions > \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"LOADFOCUS_API_KEY\"), \") y crea \", 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, \"Sustituye \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"YOUR_MONITOR_ID\"), \" por el id de tu monitor. El paso publica un marcador de despliegue con el commit como etiqueta, ejecuta el monitor, espera el resultado y hace fallar el job cuando se rompe un presupuesto. Col\\xF3calo despu\\xE9s de tu paso de despliegue para que mida la versi\\xF3n que acabas de publicar.\"), mdx(\"p\", null, \"Para enlazar el marcador con la p\\xE1gina del commit, a\\xF1ade \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"--marker-url \\\"${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }}\\\"\"), \". Repite \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"--budget\"), \" para m\\xE1s l\\xEDmites, por ejemplo \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"--budget \\\"lcp<=2.5\\\" --budget \\\"performance>=90\\\"\"), \".\"), mdx(\"h2\", null, \"Opciones\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Opci\\xF3n\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Qu\\xE9 hace\"))), 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  }, \"El monitor que se ejecuta. Obligatorio.\")), 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  }, \"Un l\\xEDmite adicional para esta ejecuci\\xF3n. Se puede repetir.\")), 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  }, \"Publica adem\\xE1s un marcador de despliegue con esta etiqueta (hasta 120 caracteres), por ejemplo el commit o el 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 enlace para el marcador, por ejemplo la p\\xE1gina de la versi\\xF3n o del 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  }, \"Se rinde pasado este tiempo. Por defecto 900.\")), 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  }, \"Imprime el resultado en bruto como 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  }, \"Por defecto \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"https://speed.loadfocus.com\"), \".\")))), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"curl -fsSL https://speed.loadfocus.com/ci.js | node - --help\"), \" imprime la misma lista.\"), mdx(\"h2\", null, \"Qu\\xE9 presupuestos se comprueban\"), mdx(\"p\", null, \"Cada ejecuci\\xF3n se comprueba contra dos grupos de l\\xEDmites:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Las alertas de umbral del monitor.\"), \" Cada alerta activada con \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"por encima de\"), \" o \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"por debajo de\"), \" y un valor cuenta como presupuesto: una alerta de Largest Contentful Paint por encima de 2.5 se convierte en el presupuesto \\\"LCP como m\\xE1ximo 2.5 s\\\". Son los mismos presupuestos que muestra la p\\xE1gina de resultados, consulta \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://loadfocus.com/docs/es-es/guides/monitor-website-performance/performance-budgets\"\n  }, \"Presupuestos de rendimiento\"), \". Las alertas que usan \\\"empeora un (%)\\\" no tienen un l\\xEDmite fijo y no se comprueban.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Cada \", mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"--budget\"), \" que pases.\"), \" Un presupuesto es una m\\xE9trica, \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"<=\"), \" o \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \">=\"), \" y un n\\xFAmero. Puedes pasar hasta 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\\xE9trica\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Unidad\"))), 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  }, \"puntuaci\\xF3n de 0 a 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  }, \"segundos\")), 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  }, \"peso de la p\\xE1gina en KB\")), 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  }, \"n\\xFAmero de solicitudes\")))), mdx(\"p\", null, \"Las m\\xE9tricas de tiempo van en segundos, Total Blocking Time incluido: \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"tbt<=0.3\"), \" significa 300 ms. Un presupuesto cuya m\\xE9trica no se midi\\xF3 en la ejecuci\\xF3n falla, as\\xED que una p\\xE1gina que no se pudo medir nunca pasa la comprobaci\\xF3n.\"), mdx(\"h2\", null, \"C\\xF3digos de salida y resultado\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"C\\xF3digo de salida\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Significado\"))), 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  }, \"Todos los presupuestos cumplidos.\")), 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  }, \"Se rompi\\xF3 un presupuesto.\")), 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  }, \"No se pudo comprobar la ejecuci\\xF3n: falta la clave de API o el id del monitor, la ejecuci\\xF3n no pudo empezar (por ejemplo por los l\\xEDmites de tu plan), no se pudo probar la p\\xE1gina, la ejecuci\\xF3n se cancel\\xF3 o no hubo resultado antes del timeout.\")))), mdx(\"p\", null, \"El log muestra una l\\xEDnea \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"PASS\"), \" o \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"FAIL\"), \" por presupuesto con el valor medido, el l\\xEDmite y el origen del presupuesto (\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"alert\"), \" o \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"pipeline\"), \"), y despu\\xE9s un enlace al informe completo. Si no hay presupuestos definidos, el script lo indica y termina con 0.\"), mdx(\"p\", null, \"En GitHub Actions el resultado tambi\\xE9n se escribe en el resumen del job: las cuatro puntuaciones de Lighthouse, una tabla con cada presupuesto y un enlace \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Full report\"), \".\"), mdx(\"h2\", null, \"Marcadores de despliegue\"), mdx(\"p\", null, \"Un marcador es una l\\xEDnea discontinua en los gr\\xE1ficos de historial del monitor, en la serie \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Despliegues\"), \". Con \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"--marker\"), \" el script publica uno antes de lanzar la ejecuci\\xF3n. Si el marcador no se puede publicar, el script lo indica y sigue con la comprobaci\\xF3n.\"), mdx(\"p\", null, \"Para marcar despliegues sin ejecutar ninguna comprobaci\\xF3n, usa el comando de \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"O solo marcar despliegues\"), \" en el mismo panel:\"), 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\"), \" es obligatorio, hasta 120 caracteres.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Omite \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"configId\"), \" para marcar todos los monitores del equipo.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"A\\xF1ade \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"url\"), \" para enlazar la versi\\xF3n.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"A\\xF1ade \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"timestamp\"), \" (fecha ISO o epoch) para fechar el marcador hasta 30 d\\xEDas atr\\xE1s.\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Marcadores recientes\"), \" en el panel lista los marcadores del periodo mostrado, del m\\xE1s reciente al m\\xE1s antiguo. Los marcadores publicados sin monitor indican \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"todos los monitores\"), \", y \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Eliminar\"), \" borra uno. Cuando un equipo llega a 5.000 marcadores, los m\\xE1s antiguos dejan sitio a los nuevos.\"), mdx(\"h2\", null, \"Comparar dos ejecuciones\"), mdx(\"p\", null, \"Cuando se rompe un presupuesto, la secci\\xF3n \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Comparar ejecuciones\"), \" del resultado muestra qu\\xE9 cambi\\xF3. Elige otra ejecuci\\xF3n del mismo monitor en \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Comparar con\"), \" y LoadFocus muestra, lado a lado y con una columna \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Cambio\"), \":\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Puntuaciones\"), \" y \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"M\\xE9tricas\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Peso de la p\\xE1gina\"), \", en total y por tipo de recurso, m\\xE1s el n\\xFAmero de \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Solicitudes\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Solicitudes nuevas\"), \", \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Solicitudes que crecieron\"), \" y \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Solicitudes eliminadas\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Problemas nuevos\"), \" y \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Corregido desde entonces\"), \", las auditor\\xEDas que empezaron o dejaron de fallar\")), mdx(\"p\", null, \"A\\xF1ade el id de la otra ejecuci\\xF3n a la direcci\\xF3n del resultado como par\\xE1metro \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"compare\"), \" (por ejemplo \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"&compare=12345\"), \" despu\\xE9s del \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"testrunid\"), \") y la p\\xE1gina se abre con esa ejecuci\\xF3n ya elegida, algo \\xFAtil para compartir.\"), mdx(\"h2\", null, \"Relacionado\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://loadfocus.com/docs/es-es/guides/monitor-website-performance/performance-budgets\"\n  }, \"Presupuestos de rendimiento\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://loadfocus.com/docs/es-es/guides/monitor-website-performance/alert-configuration\"\n  }, \"Configuraci\\xF3n de alertas\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://loadfocus.com/docs/es-es/guides/monitor-website-performance/experiments\"\n  }, \"Experimentos de page speed\"))));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#antes-de-empezar","title":"Antes de empezar"},{"url":"#ejemplo-con-github-actions","title":"Ejemplo con GitHub Actions"},{"url":"#opciones","title":"Opciones"},{"url":"#qué-presupuestos-se-comprueban","title":"Qué presupuestos se comprueban"},{"url":"#códigos-de-salida-y-resultado","title":"Códigos de salida y resultado"},{"url":"#marcadores-de-despliegue","title":"Marcadores de despliegue"},{"url":"#comparar-dos-ejecuciones","title":"Comparar dos ejecuciones"},{"url":"#relacionado","title":"Relacionado"}]},"parent":{"__typename":"File","relativePath":"es-es/guides/monitor-website-performance/ci-build-gating.md"},"frontmatter":{"metaTitle":"Page speed en CI: bloquea builds lentos | LoadFocus","metaDescription":"Haz fallar un build de CI cuando una página se vuelva más lenta: ejecuta un monitor desde GitHub Actions, comprueba sus presupuestos y marca cada despliegue.","order":16,"noindex":null}},"allMdx":{"edges":[{"node":{"fields":{"slug":"/es-es","title":"Bienvenido a la Documentación de LoadFocus"}}},{"node":{"fields":{"slug":"/es-es/guides","title":"Guías Prácticas"}}},{"node":{"fields":{"slug":"/es-es/knowledge-base","title":"Base de Conocimientos"}}},{"node":{"fields":{"slug":"/es-es/pricing","title":"Preguntas Frecuentes sobre Precios"}}},{"node":{"fields":{"slug":"/es-es/knowledge-base/how-to-delete-your-account","title":"Cómo eliminar tu cuenta"}}},{"node":{"fields":{"slug":"/es-es/knowledge-base/how-to-update-card-details","title":"Cómo Actualizar los Datos de la Tarjeta para Pagos Fallidos"}}},{"node":{"fields":{"slug":"/es-es/knowledge-base/understanding-declined-card-payments","title":"¿Por qué ha sido rechazado el pago con mi tarjeta?"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring","title":"Monitoreo de API"}}},{"node":{"fields":{"slug":"/es-es/guides/external-reports","title":"Informes Externos"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing","title":"Pruebas de Carga con Apache JMeter"}}},{"node":{"fields":{"slug":"/es-es/knowledge-base/using-google-analytics-and-no-requests-while-load-testing","title":"Sin tráfico en Google Analytics durante las pruebas de carga"}}},{"node":{"fields":{"slug":"/es-es/knowledge-base/understanding-differences-between-http-and-https","title":"Diferencias entre HTTP y HTTPS"}}},{"node":{"fields":{"slug":"/es-es/knowledge-base/using-3rd-party-tools-to-load-test-website-locally","title":"Cómo hacer pruebas de carga de un sitio web o API alojado localmente"}}},{"node":{"fields":{"slug":"/es-es/guides/k6-load-testing","title":"k6 pruebas de carga"}}},{"node":{"fields":{"slug":"/es-es/knowledge-base/using-valid-url-endpoints","title":"Qué es una URL Válida para una Prueba de Carga"}}},{"node":{"fields":{"slug":"/es-es/knowledge-base/using-query-parameters","title":"Cómo Usar Parámetros de Consulta URL"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing","title":"Pruebas de Carga"}}},{"node":{"fields":{"slug":"/es-es/knowledge-base/what-is-an-http-method","title":"Qué es un método de solicitud HTTP"}}},{"node":{"fields":{"slug":"/es-es/guides/mcp","title":"Asistentes de IA (MCP)"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance","title":"Monitorear el Rendimiento del Sitio Web"}}},{"node":{"fields":{"slug":"/es-es/guides/monitoring-as-code","title":"Monitoring as Code"}}},{"node":{"fields":{"slug":"/es-es/guides/openapi-import","title":"Importar desde OpenAPI / Swagger"}}},{"node":{"fields":{"slug":"/es-es/guides/onboarding","title":"Onboarding de LoadFocus"}}},{"node":{"fields":{"slug":"/es-es/guides/reusable-snippets","title":"Snippets reutilizables"}}},{"node":{"fields":{"slug":"/es-es/guides/setup-teardown-scripts","title":"Scripts de configuración y limpieza"}}},{"node":{"fields":{"slug":"/es-es/guides/teams","title":"Gestión de Equipos"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/downloading-jmx-csv-files","title":"Descargar Archivos .JMX y .CSV en LoadFocus"}}},{"node":{"fields":{"slug":"/es-es/guides/external-reports/azure-app-insights-integration","title":"Integración con Azure App Insights"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/adding-notes-to-results","title":"Añadir Notas a los Resultados de las Pruebas"}}},{"node":{"fields":{"slug":"/es-es/guides/k6-load-testing/analyzing-k6-test-results","title":"Análisis de resultados de tests de carga k6"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance/alert-configuration","title":"Configuración de Alertas"}}},{"node":{"fields":{"slug":"/es-es/guides/external-reports/datadog-integration","title":"Integración con Datadog"}}},{"node":{"fields":{"slug":"/es-es/guides/k6-load-testing/how-to-run-k6-load-test","title":"Cómo ejecutar un nuevo test de carga k6"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/how-to-run-new-apache-jmeter-load-test","title":"Cómo Ejecutar una Nueva Prueba de Carga con Apache JMeter"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/alert-channels","title":"Canales de alerta"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance/alert-metrics","title":"Métricas de Alerta"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/ai-credits","title":"AI Credits"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/api-check-results","title":"Comprender los Resultados de Verificación de API"}}},{"node":{"fields":{"slug":"/es-es/guides/external-reports/dynatrace-integration","title":"Integración con Dynatrace"}}},{"node":{"fields":{"slug":"/es-es/guides/k6-load-testing/import-to-k6-from-curl-har-postman-openapi","title":"Importar cURL, HAR, Postman u OpenAPI a una prueba k6"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/import-to-jmeter-from-curl-har-postman-openapi","title":"Importar cURL, HAR, Postman u OpenAPI a una prueba JMeter"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/analyzing-load-test-results","title":"Cómo Verificar los Resultados de Pruebas de Carga"}}},{"node":{"fields":{"slug":"/es-es/guides/external-reports/new-relic-integration","title":"Integración con New Relic"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/browser-checks","title":"Browser Checks"}}},{"node":{"fields":{"slug":"/es-es/guides/k6-load-testing/uploading-k6-scripts","title":"Subir scripts y archivos de datos de k6"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/authorization-code-grant-type-oauth-2-0","title":"Tipo de Concesión Authorization Code en OAuth 2.0"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/check-groups","title":"Grupos de verificaciones"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance/ci-build-gating","title":"Bloqueo de builds en CI y marcadores de despliegue"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance/core-web-vitals-competitor-comparison","title":"Comparación de Core Web Vitals con la Competencia"}}},{"node":{"fields":{"slug":"/es-es/guides/external-reports/opentelemetry-integration","title":"OpenTelemetry (OTLP) Integration"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/baseline-comparison-between-load-tests","title":"Comparación de Línea Base entre Pruebas de Carga"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance/core-web-vitals-metrics","title":"¿Qué son los Core Web Vitals?"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/jmeter-integration-ci-cd","title":"Ejecutar pruebas JMeter con el Cliente API de LoadFocus"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/load-generators-hardware-infrastructure-jmeter","title":"¿Cuáles son los recursos de hardware asignados a mi cuenta para generadores de carga?"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/check-retries-and-alert-thresholds","title":"Reintentos y umbrales de alerta"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/client-credentials-grant-type-oauth-2-0","title":"Tipo de Concesión Client Credentials en OAuth 2.0"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance/experiments","title":"Experimentos de page speed"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/common-http-error-codes","title":"Códigos de Estado de Error HTTP Comunes"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/custom-domain-status-page","title":"Cómo añadir un dominio propio a tu página de estado"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/dashboards","title":"Paneles"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/load-testing-anomalies","title":"Anomalías en Pruebas de Carga"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance/getting-started","title":"Primeros Pasos"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/crafting-perfect-test-names","title":"Crear Nombres de Prueba Perfectos"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/load-testing-engine-health-monitoring","title":"Monitoreo de Salud del Motor"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance/how-to-create-new-alert","title":"Crear una Nueva Alerta"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/load-testing-error-analysis","title":"Análisis de Errores"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance/how-to-run-new-website-performance-test","title":"Crear Nueva Prueba de Rendimiento Web"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/decoding-average-response-times","title":"Decodificar el Tiempo Promedio de Respuesta"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/load-testing-insights","title":"Perspectivas de Pruebas de Carga"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/dns-monitors","title":"Monitores DNS"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/deep-dive-samples-in-load-testing","title":"¿Qué son las Muestras en Pruebas de Carga?"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/heartbeat-monitors","title":"Monitores Heartbeat (tareas cron)"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance/http-authentication","title":"Autenticación HTTP"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/incident-management","title":"Gestión de incidentes"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/load-testing-jtl-file-analysis","title":"Análisis de Logs y Archivos JTL"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/demo","title":"Demostración"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/maintenance-windows","title":"Ventanas de mantenimiento"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/load-testing-jtl-jmeter-log-file-analysis","title":"Análisis de Archivo de Log de JMeter"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/end-time-in-load-testing","title":"Comprender la Importancia del 'Tiempo de Finalización' en Pruebas de Carga"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance/lighthouse-opportunities","title":"Oportunidades de Lighthouse"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance/largest-contentful-paint","title":"Largest Contentful Paint (LCP)"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/load-testing-timeline-analysis","title":"Vista de Línea de Tiempo"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/multistep-api-checks","title":"Verificaciones de API multipaso"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/errors-by-type","title":"Errores por tipo y tasa de errores"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance/pdf-report-branding","title":"Informes PDF con tu marca"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/uploading-jmeter-files-step-by-step-guide","title":"Subir Archivos JMeter a LoadFocus: Guía Paso a Paso"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance/performance-budgets","title":"Presupuestos de Rendimiento y Alertas"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/using-multiple-csv-files-with-jmeter-engines","title":"Usar Múltiples Archivos CSV con Motores JMeter en LoadFocus"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/erros-and-reponse-codes","title":"Errores y Códigos de Respuesta"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/new-api-check","title":"Cómo Crear una Nueva Verificación de API"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance/real-user-field-data","title":"Datos de Campo de Usuarios Reales (CrUX)"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/recent-failures","title":"Fallos recientes"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/getting-started","title":"Primeros Pasos"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/geographical-test-location-in-load-testing","title":"Ubicación Geográfica de Prueba en Pruebas de Carga"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/granularity-in-load-test-results-and-charts","title":"Granularidad en Resultados y Gráficos de Pruebas de Carga"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/sla-slo-reports","title":"Informes de disponibilidad SLA y SLO"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance/sitemap-import","title":"Importar desde Sitemap"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance/real-user-monitoring","title":"Real User Monitoring (RUM)"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/snippets","title":"Snippets"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/group-filter-load-test-results-by-url","title":"Agrupar y filtrar resultados de pruebas de carga por URL"}}},{"node":{"fields":{"slug":"/es-es/guides/monitor-website-performance/visual-regression-testing","title":"Visual Regression Testing"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/ssl-certificate-monitoring","title":"Monitorización de certificados SSL"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/headers-and-manage-presets","title":"Encabezados y Presets de Encabezados"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/how-to-run-new-load-test","title":"Cómo Ejecutar una Nueva Prueba de Carga"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/status-page-api","title":"API de la página de estado, feeds RSS e insignia"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/status-pages","title":"Crea una página de estado pública para tus monitores"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/how-to-url-query-parameters","title":"Parámetros de Consulta"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/synthetic-monitoring","title":"Synthetic Monitoring"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/tcp-monitors","title":"Monitores de puerto TCP"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/implicit-grant-type-oauth-2-0","title":"Tipo de Concesión Implicit en OAuth 2.0"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/http-methods-overview-load-testing","title":"Métodos HTTP: Una Visión General"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/load-generator-saturation","title":"Saturación del generador de carga"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/uptime-monitoring","title":"Uptime Monitoring"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/variables","title":"Variables"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/load-generators-hardware-infrastructure","title":"¿Cuáles son los recursos de hardware asignados a mi cuenta para generadores de carga?"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/load-test-result-ai-analysis","title":"Análisis de IA de Resultados de Pruebas de Carga"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/load-test-results-api","title":"API de análisis de resultados"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/page-speed-under-load-trends","title":"Page Speed Under Load Trends"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/page-speed-under-load","title":"Velocidad de página bajo carga"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/pass-fail-thresholds","title":"Umbrales de aprobado/fallo"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/performance-trend-load-test-results","title":"Tendencia de rendimiento"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/refresh-token-grant-type-oauth-2-0","title":"Tipo de Concesión Refresh Token en OAuth 2.0"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/password-credentials-grant-type-oauth-2-0","title":"Tipo de Concesión Password Credentials en OAuth 2.0"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/reading-the-capacity-panel","title":"Cómo leer el panel de capacidad"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/response-time-distribution","title":"Distribución del tiempo de respuesta"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/release-tags-and-run-annotations","title":"Etiquetas de Lanzamiento y Anotaciones de Ejecución"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/results-by-location","title":"Resultados por ubicación"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/response-time-vs-virtual-users","title":"Tiempo de respuesta vs. usuarios virtuales"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/scheduled-load-tests","title":"Pruebas de Carga Programadas"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/share-load-test-reports","title":"Compartir informes de pruebas de carga"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/slowest-and-most-failing-requests","title":"Peticiones más lentas y con más errores"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/start-time-in-load-testing","title":"Comprender la Importancia del Tiempo de Inicio en Pruebas de Carga"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/using-cookies","title":"Usar Cookies"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/use-cases","title":"Casos de Uso"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/what-are-iterations-load-testing","title":"Qué son las Iteraciones en Pruebas de Carga"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/what-is-delay-when-running-a-load-test","title":"¿Qué es el Retraso al ejecutar una Prueba de Carga?"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/what-is-duration-in-load-testing","title":"Qué es la Duración en Pruebas de Carga"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/what-are-virtual-users-load-testing","title":"Qué son los Usuarios Virtuales en Pruebas de Carga"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/what-is-grant-type","title":"¿Qué es un Tipo de Concesión?"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/what-is-oauth-2-0-authorization","title":"Autorización OAuth 2.0"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/what-is-ramp-up-steps-in-load-testing","title":"Qué son los Pasos de Rampa en Pruebas de Carga"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/what-is-ramp-up-time-in-load-testing","title":"Qué es el Tiempo de Rampa en Pruebas de Carga"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/white-label-report-branding","title":"Informes PDF con tu marca"}}},{"node":{"fields":{"slug":"/es-es/guides/load-testing/what-is-test-run-id","title":"¿Qué es un ID de Ejecución de Prueba?"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/alert-channels/discord","title":"Alertas de Discord"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/alert-channels/email","title":"Alertas de Email"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/alert-channels/opsgenie","title":"Alertas de Opsgenie"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/alert-channels/microsoft-teams","title":"Alertas de Microsoft Teams"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/alert-channels/pagerduty","title":"Alertas de PagerDuty"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/jmeter-integration-ci-cd/circleci","title":"CircleCI"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/alert-channels/slack","title":"Alertas de Slack"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/jmeter-integration-ci-cd/github-actions","title":"GitHub Actions"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/jmeter-integration-ci-cd/azure-devops","title":"Azure DevOps"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/alert-channels/webhook","title":"Alertas de Webhook"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/jmeter-integration-ci-cd/gitlab-ci-cd","title":"GitLab CI/CD"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/jmeter-integration-ci-cd/overview","title":"Integrar el Cliente API de JMeter con Pipelines de CI/CD"}}},{"node":{"fields":{"slug":"/es-es/guides/jmeter-load-testing/jmeter-integration-ci-cd/jenkins","title":"Jenkins"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/new-api-check/activate-deactivate","title":"Activar/Desactivar"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/new-api-check/alert-channels","title":"Canales de Alerta"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/new-api-check/assertions","title":"Aserciones"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/new-api-check/frequency","title":"Frecuencia"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/new-api-check/friendly-check-name","title":"Nombre Amigable de Verificación"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/new-api-check/locations","title":"Ubicaciones"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/new-api-check/mute-unmute","title":"Silenciar/Activar Sonido"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/new-api-check/request-configuration","title":"Configuración de Solicitud"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/new-api-check/request-preview","title":"Vista Previa de Solicitud"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/new-api-check/retries","title":"Reintentos Antes de Alertar"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/new-api-check/response-time-limits","title":"Límites de Tiempo de Respuesta"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/new-api-check/webhook-channels","title":"Canal Webhook"}}},{"node":{"fields":{"slug":"/es-es/guides/api-monitoring/new-api-check/save-run","title":"Guardar y Ejecutar"}}}]}},"pageContext":{"id":"e1b3c468-50ea-5a48-844c-e114d6710f68","locale":"es-ES"}},"staticQueryHashes":["361965504","361965504","417421954","417421954","445494767","445494767"]}