Files
nexus/sreweekly/articles/420/03-sla-vs-slo-vs-sli-what-s-the-difference.html
2026-09-12 17:23:01 +08:00

375 lines
533 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html lang="en" class="inter_1d81deff-module__CYM0aG__variable papermono_89c757f2-module__6aS5zq__variable dark" data-banner-state="visible" data-assistant-state="closed" data-page-mode="none" data-current-path="/"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"/><link rel="preload" href="/docs/_next/static/media/83afe278b6a6bb3c.p.3a6ba036.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/docs/_next/static/media/PaperMono_Variable.p.aa32f7a0.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/docs/_next/static/media/f67ad414ed34149c.p.84166d94.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="https://mintcdn.com/checkly-422f444a/KiRymP194lYB6fu_/logo/light.svg?fit=max&amp;auto=format&amp;n=KiRymP194lYB6fu_&amp;q=85&amp;s=c4c50c3b55e375fe5d06b52fad5c8032"/><link rel="preload" as="image" href="https://mintcdn.com/checkly-422f444a/KiRymP194lYB6fu_/logo/dark.svg?fit=max&amp;auto=format&amp;n=KiRymP194lYB6fu_&amp;q=85&amp;s=4bb854d62eeba1ed323838710a533a2f"/><link rel="stylesheet" href="/docs/_next/static/chunks/462bacc63bed9960.css?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" data-precedence="next"/><link rel="stylesheet" href="/docs/_next/static/chunks/c9c6061f3cdd5c21.css?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" data-precedence="next"/><style data-precedence="base-ui:low" data-href="base-ui-disable-scrollbar">.base-ui-disable-scrollbar{scrollbar-width:none}.base-ui-disable-scrollbar::-webkit-scrollbar{display:none}</style><link rel="preload" as="script" fetchPriority="low" href="/docs/_next/static/chunks/6d55b684068fd47e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F"/><script src="/docs/_next/static/chunks/44795504c795ca32.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/b14a3f000a6fe961.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/f486afc314643ce1.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/84f5f1e2005ead29.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/turbopack-513f146011780960.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/7e6d62a1abc6c26f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/b0c9c788d5ef11a3.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/cd6b4e3f356994e0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/ab9c22ad73015101.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/0eb894a8519f24ea.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/9258da1973995d9b.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/38afe2a8d82fbe85.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/b924dff5cd9af8e6.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/2a190f8b78faf889.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/8dc817877a3a1bff.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/de1ea6e58bcc6bca.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><script src="/docs/_next/static/chunks/0ff3c146f41749d1.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" async=""></script><link rel="preload" href="/docs/_next/static/chunks/5917258e888b4dff.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" as="script" fetchPriority="low"/><link rel="preload" href="/docs/_next/static/chunks/58dd45b95f6030ba.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" as="script" fetchPriority="low"/><title>SLA vs SLO vs SLI - What’s the Difference? Comparison with examples - Checkly Docs</title><meta name="description" content="Avoid user‑reported outages with synthetic checks, anomaly detection, smart alerting, and rich failure traces for rapid detection."/><meta name="application-name" content="Checkly Docs"/><meta name="generator" content="Mintlify"/><meta name="msapplication-config" content="/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon/browserconfig.xml"/><meta name="apple-mobile-web-app-title" content="Checkly Docs"/><meta name="msapplication-TileColor" content="#0075FF"/><link rel="canonical" href="https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/"/><link rel="alternate" type="application/xml" href="/docs/sitemap.xml"/><link rel="alternate" type="text/markdown" href="/docs/learn/incidents/slo-sla-sli.md"/><meta property="og:title" content="SLA vs SLO vs SLI - What’s the Difference? Comparison with examples - Checkly Docs"/><meta property="og:description" content="Avoid user‑reported outages with synthetic checks, anomaly detection, smart alerting, and rich failure traces for rapid detection."/><meta property="og:url" content="https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/"/><meta property="og:site_name" content="Checkly Docs"/><meta property="og:image" content="https://checkly-422f444a.mintlify.app/_next/image?url=%2F_mintlify%2Fapi%2Fog%3Fdivision%3DDetection%26title%3DSLA%2Bvs%2BSLO%2Bvs%2BSLI%2B-%2BWhat%25E2%2580%2599s%2Bthe%2BDifference%253F%2BComparison%2Bwith%2Bexamples%26description%3DAvoid%2Buser%25E2%2580%2591reported%2Boutages%2Bwith%2Bsynthetic%2Bchecks%252C%2Banomaly%2Bdetection%252C%2Bsmart%2Balerting%252C%2Band%2Brich%2Bfailure%2Btraces%2Bfor%2Brapid%2Bdetection.%26theme%3D754b2dd68caa3eef1bb7a682&amp;w=1200&amp;q=100"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="SLA vs SLO vs SLI - What’s the Difference? Comparison with examples - Checkly Docs"/><meta name="twitter:description" content="Avoid user‑reported outages with synthetic checks, anomaly detection, smart alerting, and rich failure traces for rapid detection."/><meta name="twitter:image" content="https://checkly-422f444a.mintlify.app/_next/image?url=%2F_mintlify%2Fapi%2Fog%3Fdivision%3DDetection%26title%3DSLA%2Bvs%2BSLO%2Bvs%2BSLI%2B-%2BWhat%25E2%2580%2599s%2Bthe%2BDifference%253F%2BComparison%2Bwith%2Bexamples%26description%3DAvoid%2Buser%25E2%2580%2591reported%2Boutages%2Bwith%2Bsynthetic%2Bchecks%252C%2Banomaly%2Bdetection%252C%2Bsmart%2Balerting%252C%2Band%2Brich%2Bfailure%2Btraces%2Bfor%2Brapid%2Bdetection.%26theme%3D754b2dd68caa3eef1bb7a682&amp;w=1200&amp;q=100"/><meta name="twitter:image:width" content="1200"/><meta name="twitter:image:height" content="630"/><link rel="icon" href="/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon/android-chrome-192x192.png" type="image/png" sizes="192x192" media="(prefers-color-scheme: light)"/><link rel="apple-touch-icon" href="/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon/apple-touch-icon.png" type="image/png" sizes="180x180"/><link rel="icon" href="/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon/favicon-16x16.png" type="image/png" sizes="16x16" media="(prefers-color-scheme: light)"/><link rel="icon" href="/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon/favicon-32x32.png" type="image/png" sizes="32x32" media="(prefers-color-scheme: light)"/><link rel="shortcut icon" href="/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon/favicon.ico" type="image/x-icon" media="(prefers-color-scheme: light)"/><link rel="icon" href="/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon-dark/android-chrome-192x192.png" type="image/png" sizes="192x192" media="(prefers-color-scheme: dark)"/><link rel="icon" href="/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon-dark/favicon-16x16.png" type="image/png" sizes="16x16" media="(prefers-color-scheme: dark)"/><link rel="icon" href="/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon-dark/favicon-32x32.png" type="image/png" sizes="32x32" media="(prefers-color-scheme: dark)"/><link rel="shortcut icon" href="/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon-dark/favicon.ico" type="image/x-icon" media="(prefers-color-scheme: dark)"/><script type="text/javascript">!function(){var b="/docs";
function a(p){if(p==null)return"/";p=""+p;if(""===p)return"/";return"/"===p.charAt(0)?p:"/"+p}
function u(p){if(p==null)return p;p=""+p;if(!p||p.charAt(p.length-1)==="/")return p.slice(0,-1);return p}
function i(p){if(p==null)return p;p=""+p;if(6<=p.length&&p.substring(p.length-6)==="/index")return p.substring(0,p.length-6);if("index"===p)return"";return p}
var p=(location.pathname||"").split("?")[0].split("#")[0]||"";
if(b)if(p===b)p="";else if(0===p.indexOf(b+"/"))p=p.substring(b.length);
p=a(p);p=u(p);p=i(p);p=""===p||"index"===p?"/":a(p);
document.documentElement.setAttribute("data-current-path",p);
}();</script><script type="text/javascript">(() => {
const isIOS =
/iP(hone|ad|od)/.test(navigator.userAgent) ||
(/Macintosh/.test(navigator.userAgent) && navigator.maxTouchPoints > 1);
if (!isIOS) return;
const apply = () => {
for (const meta of document.querySelectorAll('meta[name="viewport"]')) {
const content = meta.getAttribute('content') || '';
if (!content.includes('maximum-scale')) {
meta.setAttribute('content', content + ', maximum-scale=1');
}
}
};
apply();
new MutationObserver(apply).observe(document.head, {
childList: true,
subtree: true,
attributes: true,
attributeFilter: ['content'],
});
})();</script><script type="text/javascript">!function(){
function read(){try{
var e=performance.getEntriesByType?performance.getEntriesByType("navigation"):[];
var st=(e[0]&&e[0].serverTiming)||[];
var g={};
for(var i=0;i<st.length;i++){var n=st[i].name,d=st[i].description;if(!d)continue;try{d=decodeURIComponent(d)}catch(x){}
if(n==="country")g.country=d;else if(n==="region")g.region=d;else if(n==="continent")g.continent=d;}
var w=window;w.mintlify=w.mintlify||{};w.mintlify.geo=g;
}catch(x){}}
read();document.addEventListener("DOMContentLoaded",read);
}();</script><script type="text/javascript">!function(){try{
var w=window;w.mintlify=w.mintlify||{};
var q=w.mintlify.__apiPlaygroundInputsQueue;
if(!Array.isArray(q)){q=[];w.mintlify.__apiPlaygroundInputsQueue=q;}
w.mintlify.api=w.mintlify.api||{};
w.mintlify.api.playground=w.mintlify.api.playground||{};
if(typeof w.mintlify.api.playground.setServerVariables!=="function"){
w.mintlify.api.playground.setServerVariables=function(v){q.push({type:"set",variables:v});};
}
if(typeof w.mintlify.api.playground.clearServerVariables!=="function"){
w.mintlify.api.playground.clearServerVariables=function(){q.push({type:"clear"});};
}
}catch(e){}}();</script><script type="text/javascript">(function(a,b){try{let c=document.getElementById("banner")?.innerText;if(c){for(let d=0;d<localStorage.length;d++){let e=localStorage.key(d);if(e?.endsWith(a)&&localStorage.getItem(e)===c)return void document.documentElement.setAttribute(b,"hidden")}document.documentElement.setAttribute(b,"visible");return}for(let c=0;c<localStorage.length;c++){let d=localStorage.key(c);if(d?.endsWith(a)&&localStorage.getItem(d))return void document.documentElement.setAttribute(b,"hidden")}document.documentElement.setAttribute(b,"visible")}catch(a){document.documentElement.setAttribute(b,"hidden")}})(
"bannerDismissed",
"data-banner-state",
)</script><script src="/docs/_next/static/chunks/a6dad97d9634a72d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" noModule=""></script></head><body class="antialiased"><div hidden=""><!--$--><!--/$--></div><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"Checkly Docs","creator":{"@type":"Organization","name":"Mintlify","url":"https://mintlify.com"}}</script><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","isDarkMode","system",null,["dark","light","true","false","system"],{"true":"dark","false":"light","dark":"dark","light":"light"},true,false)</script><script>(function(){try{var f=null;var v=f||localStorage.getItem("isDarkMode");if(v==='true')v='dark';else if(v==='false')v='light';if(v!=='light'&&v!=='dark'&&v!=='system')v="system";document.documentElement.setAttribute("data-theme-preference",v)}catch(e){}})();</script><blockquote class="sr-only" data-agent-docs-index="true" aria-hidden="true"><h2>Documentation Index</h2><p>Fetch the complete documentation index at:<!-- --> <a href="/docs/llms.txt" tabindex="-1">/docs/llms.txt</a></p><p>Use this file to discover all available pages before exploring further.</p></blockquote><style>:root{--banner-height:0px!important}</style><script id="_mintlify-banner-script">(function i(a,b,c,d,e){try{let f,g,h=[];try{h=window.location.pathname.split("/").filter(a=>""!==a&&"global"!==a).slice(0,2)}catch{h=[]}let i=h.find(a=>c.includes(a)),j=[];for(let c of(i?j.push(i):j.push(b),j.push("global"),j)){if(!c)continue;let b=a[c];if(b?.content){f=b.content,g=c;break}}if(!f)return void document.documentElement.setAttribute(d,"hidden");let k=!0,l=0;for(;l<localStorage.length;){let a=localStorage.key(l);if(l++,!a?.endsWith(e))continue;let b=localStorage.getItem(a);if(b&&b===f){k=!1;break}g&&(a.startsWith(`lang:${g}_`)||!a.startsWith("lang:"))&&(localStorage.removeItem(a),l--)}document.documentElement.setAttribute(d,k?"visible":"hidden")}catch(a){console.error(a),document.documentElement.setAttribute(d,"hidden")}})(
{},
"en",
[],
"data-banner-state",
"bannerDismissed",
)</script><style>:root {
--primary: 0 117 255;
--primary-light: 43 138 255;
--primary-dark: 3 24 52;
--tooltip-foreground: 255 255 255;
--background-light: 255 255 255;
--background-dark: 10 12 16;
--gray-50: 242 246 250;
--gray-100: 238 241 245;
--gray-200: 222 226 230;
--gray-300: 206 209 213;
--gray-400: 158 162 166;
--gray-500: 111 115 119;
--gray-600: 79 83 87;
--gray-700: 62 66 70;
--gray-800: 37 40 45;
--gray-900: 22 26 30;
--gray-950: 10 13 17;
}</style><div class="relative antialiased text-gray-500 dark:text-gray-400"><script id="_mintlify-navbar-transition-script">(function(a){let b,c=(b="navbar-transition","maple"===a&&(b+="-maple"),b);function d(){let a=!1;a=window.scrollY>50;let b=document.getElementById(c);b&&b.hasAttribute("data-is-opaque")&&b.setAttribute("data-is-opaque",`${!!a}`)}let e=function(){let a=document.createElement("style"),b=`#${c}`;return a.appendChild(document.createTextNode(`${b},${b} *,${b} *::before,${b} *::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}`)),document.head.appendChild(a),function(){window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(a)},1)}}();function f(){window.removeEventListener("scroll",d),document.removeEventListener("DOMContentLoaded",d),d(),e()}window.addEventListener("scroll",d,{passive:!0}),document.addEventListener("DOMContentLoaded",d),("requestAnimationFrame"in globalThis?requestAnimationFrame:setTimeout)(d),"complete"===document.readyState?f():window.addEventListener("load",f,{once:!0})})("aspen")</script><script id="_mintlify-scroll-margin-script">(function () {
var measure = function(){let a=document.querySelectorAll("[id='navbar'], [data-top-chrome]"),b=0;a.forEach(a=>{let c=a.getBoundingClientRect();c.height>0&&(b=Math.max(b,c.bottom))});let c=0,d=document.getElementById("content-container");if(d){let{overflowY:a}=getComputedStyle(d);("auto"===a||"scroll"===a)&&(c=Math.max(0,d.getBoundingClientRect().top))}let e=`${Math.round(Math.max(0,b-c))+40}px`,f=document.documentElement.style;f.getPropertyValue("--scroll-mt")!==e&&f.setProperty("--scroll-mt",e)};
(function(a){let b=[],c=0,d="undefined"==typeof ResizeObserver?null:new ResizeObserver(f);function e(){let c=Array.from(document.querySelectorAll("[id='navbar'], [data-top-chrome]"));(c.length!==b.length||c.some((a,c)=>a!==b[c]))&&d&&(d.disconnect(),c.forEach(a=>d.observe(a))),b=c,a()}function f(){c||(c=requestAnimationFrame(()=>{c=0,e()}))}let g="[id='navbar'], [data-top-chrome]";function h(a){let b=a.target;if(b instanceof Element&&b.closest(g))return!0;for(let b of a.addedNodes)if(b instanceof Element&&(b.matches(g)||b.querySelector(g)))return!0;for(let b of a.removedNodes)if(b instanceof Element&&(b.matches(g)||b.querySelector(g)))return!0;return!1}new MutationObserver(a=>{a.some(h)&&f()}).observe(document.documentElement,{childList:!0,subtree:!0}),window.addEventListener("resize",f),"loading"===document.readyState&&document.addEventListener("DOMContentLoaded",e),e()})(measure);
(function(a){let b=window.location.hash.slice(1);if(!b)return;function c(){return"smooth"===getComputedStyle(document.documentElement).scrollBehavior}function d(c){let d=document.getElementById(b);return!!d&&(a(),d.scrollIntoView(c?{behavior:c}:void 0),!0)}if("complete"===document.readyState)return void d();let e=new MutationObserver(()=>{!c()&&d("instant")&&f()});function f(){e.disconnect(),window.removeEventListener("load",g)}function g(){let a=c();f(),a&&requestAnimationFrame(()=>{d(),function(){let a=["wheel","touchstart","keydown","pointerdown"],c=0,e=window.scrollY,f=setInterval(()=>{c+=1;let a=document.getElementById(b);if(!a||c>=6)return g();let f=Math.abs(window.scrollY-e)>1;if(e=window.scrollY,f)return;let h=parseFloat(getComputedStyle(a).scrollMarginTop)||0;Math.abs(a.getBoundingClientRect().top-h)>4&&d()},350);function g(){clearInterval(f),a.forEach(a=>window.removeEventListener(a,g))}a.forEach(a=>window.addEventListener(a,g,{passive:!0}))}()})}window.addEventListener("load",g),e.observe(document.documentElement,{childList:!0,subtree:!0}),!c()&&d("instant")&&f()})(measure);
})();</script><a href="#content-area" class="sr-only focus:not-sr-only focus:fixed focus:top-2 focus:left-2 focus:z-50 focus:p-2 focus:text-sm focus:bg-background-light dark:focus:bg-background-dark focus:rounded-md focus:outline-primary dark:focus:outline-primary-light">Skip to main content</a><script>(function e(a,b,c,d,e){try{let f=window.matchMedia("(max-width: 1024px)").matches;if(e){document.documentElement.style.setProperty(c,"0px"),document.documentElement.setAttribute("data-assistant-state","closed");return}if(f||!d){document.documentElement.style.setProperty(c,"0px"),document.documentElement.setAttribute("data-assistant-state","closed"),d||localStorage.setItem(a,"false");return}let g=localStorage.getItem(a);if(null===g){document.documentElement.style.setProperty(c,"0px"),document.documentElement.setAttribute("data-assistant-state","closed");return}let h=JSON.parse(g),i=localStorage.getItem(b),j=null!==i?JSON.parse(i):368;document.documentElement.style.setProperty(c,h?j+"px":"0px"),document.documentElement.setAttribute("data-assistant-state",h?"open":"closed")}catch(a){document.documentElement.style.setProperty(c,"0px"),document.documentElement.setAttribute("data-assistant-state","closed")}})(
"chat-assistant-sheet-open",
"chat-assistant-sheet-width",
"--assistant-sheet-width",
true,
false
)</script><div class="max-lg:contents lg:flex lg:w-full" data-docs-theme="aspen" data-assistant-layout="legacy"><div class="max-lg:contents lg:flex-1 lg:min-w-0 lg:overflow-x-clip"><header id="navbar" class="z-30 fixed lg:sticky top-0 w-full peer is-not-custom peer is-not-center peer is-not-wide peer is-not-frame"><div class="z-10 absolute w-full h-full border-b border-gray-100 dark:border-gray-800"></div><div class="z-0 absolute inset-0 bg-background-light dark:bg-background-dark"></div><div class="z-10 mx-auto relative max-w-8xl px-0 lg:px-5"><div class="relative"><div class="flex items-center lg:px-4 h-14 min-w-0 mx-4 lg:mx-0"><div class="h-full relative flex-1 flex items-center gap-x-4 min-w-0"><div class="flex-1 flex items-center gap-x-4"><a class="select-none" style="-webkit-touch-callout:none" href="/docs"><span class="sr-only">Checkly Docs<!-- --> home page</span><img class="nav-logo w-auto relative object-contain shrink-0 block dark:hidden h-6" src="https://mintcdn.com/checkly-422f444a/KiRymP194lYB6fu_/logo/light.svg?fit=max&amp;auto=format&amp;n=KiRymP194lYB6fu_&amp;q=85&amp;s=c4c50c3b55e375fe5d06b52fad5c8032" alt="light logo"/><img class="nav-logo w-auto relative object-contain shrink-0 hidden dark:block h-6" src="https://mintcdn.com/checkly-422f444a/KiRymP194lYB6fu_/logo/dark.svg?fit=max&amp;auto=format&amp;n=KiRymP194lYB6fu_&amp;q=85&amp;s=4bb854d62eeba1ed323838710a533a2f" alt="dark logo"/></a><div class="hidden lg:flex items-center gap-x-2"></div></div><div class="relative hidden lg:flex items-center flex-1 z-20 gap-2.5"><button type="button" class="group/search flex pointer-events-auto w-full items-center text-sm leading-6 h-9 pl-3.5 pr-3 text-gray-500 dark:text-white/50 dark:brightness-[1.1] dark:hover:brightness-[1.25] ring-gray-400/30 hover:ring-gray-600/30 dark:ring-gray-600/30 dark:hover:ring-gray-500/30 justify-between truncate gap-2 max-w-sm bg-gray-950/[0.03] dark:bg-white/[0.03] hover:bg-gray-950/10 dark:hover:bg-white/10 rounded-full shadow-none border-none ring-0 dark:ring-0" id="search-bar-entry" aria-label="Open search"><div class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-4 min-w-4 flex-none text-gray-700 group-hover/search:text-gray-800 dark:text-gray-400 dark:group-hover/search:text-gray-200"><path d="M15.25 15.25L11.285 11.285" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M7.75 12.75C10.5114 12.75 12.75 10.5114 12.75 7.75C12.75 4.98858 10.5114 2.75 7.75 2.75C4.98858 2.75 2.75 4.98858 2.75 7.75C2.75 10.5114 4.98858 12.75 7.75 12.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><div class="truncate min-w-0">Search...</div></div><span class="flex-none text-xs font-semibold">⌘<!-- -->K</span></button><button type="button" class="group/ai flex-none hidden lg:flex items-center justify-center gap-1.5 pl-3 pr-3.5 h-9 dark:brightness-[1.1] dark:hover:brightness-[1.25] ring-gray-400/30 hover:ring-gray-600/30 dark:ring-gray-600/30 dark:hover:ring-gray-500/30 max-w-sm bg-gray-950/[0.03] dark:bg-white/[0.03] hover:bg-gray-950/10 dark:hover:bg-white/10 rounded-full shadow-none border-none ring-0 dark:ring-0" id="assistant-entry" aria-label="Toggle assistant panel"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-4 shrink-0 text-gray-700 group-hover/ai:text-gray-800 dark:text-gray-400 dark:group-hover/ai:text-gray-200"><path d="M5.65799 2.99L4.39499 2.569L3.97399 1.306C3.83699 0.898 3.16199 0.898 3.02499 1.306L2.60399 2.569L1.34099 2.99C1.13699 3.058 0.998993 3.249 0.998993 3.464C0.998993 3.679 1.13699 3.87 1.34099 3.938L2.60399 4.359L3.02499 5.622C3.09299 5.826 3.28499 5.964 3.49999 5.964C3.71499 5.964 3.90599 5.826 3.97499 5.622L4.39599 4.359L5.65899 3.938C5.86299 3.87 6.00099 3.679 6.00099 3.464C6.00099 3.249 5.86199 3.058 5.65799 2.99Z" fill="currentColor" stroke="none"></path><path d="M9.5 2.75L11.412 7.587L16.25 9.5L11.412 11.413L9.5 16.25L7.587 11.413L2.75 9.5L7.587 7.587L9.5 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><span class="text-sm text-gray-500 dark:text-white/50 whitespace-nowrap">Ask Assistant</span><span class="flex-none text-xs font-semibold">⌘<!-- -->I</span></button></div><div class="topbar-right-container hidden lg:flex flex-1 items-center gap-2 ml-auto justify-end"><div class="flex relative items-center justify-end space-x-4"><nav aria-label="Main" class="text-sm"><ul class="flex gap-2 items-center"><li class="navbar-link"><a href="https://www.checklyhq.com" class="flex items-center whitespace-nowrap font-medium gap-2 text-gray-800 dark:text-gray-50 hover:text-gray-800 dark:hover:text-gray-50 bg-gray-950/[0.03] dark:bg-white/[0.03] hover:bg-gray-950/10 dark:hover:bg-white/10 rounded-xl px-[14px] py-2" target="_blank" rel="noopener noreferrer"><span class="min-w-0 truncate">Home</span></a></li><li class="navbar-link"><a href="https://www.checklyhq.com/docs/changelog/changelog/" class="flex items-center whitespace-nowrap font-medium gap-2 text-gray-800 dark:text-gray-50 hover:text-gray-800 dark:hover:text-gray-50 bg-gray-950/[0.03] dark:bg-white/[0.03] hover:bg-gray-950/10 dark:hover:bg-white/10 rounded-xl px-[14px] py-2" target="_blank" rel="noopener noreferrer"><span class="min-w-0 truncate">Changelog</span></a></li><li class="block lg:hidden"><a class="flex items-center whitespace-nowrap font-medium gap-2 text-gray-800 dark:text-gray-50 hover:text-gray-800 dark:hover:text-gray-50 bg-gray-950/[0.03] dark:bg-white/[0.03] hover:bg-gray-950/10 dark:hover:bg-white/10 rounded-xl px-[14px] py-2" href="https://app.checklyhq.com"><span class="min-w-0 truncate">Dashboard</span></a></li><li class="whitespace-nowrap hidden lg:flex" id="topbar-cta-button"><a target="_blank" rel="noopener noreferrer" class="group pl-3 pr-2 py-2 relative inline-flex items-center text-sm font-medium" href="https://app.checklyhq.com"><span class="absolute inset-0 bg-primary-dark rounded-xl group-hover:opacity-[0.9]"></span><div class="z-10 gap-1 flex items-center"><span class="text-white">Dashboard</span><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0 text-white/90"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></li></ul></nav></div><button type="button" tabindex="0" aria-haspopup="menu" id="theme-preference-menu-trigger" aria-label="Change theme preference" data-component-name="theme-preference-menu" data-component-part="theme-preference-menu-trigger" data-testid="theme-preference-menu-trigger" class="group disabled:pointer-events-none overflow-hidden gap-1 text-sm text-gray-950/50 dark:text-white/50 group-hover:text-gray-950/70 dark:group-hover:text-white/70 theme-preference-menu-trigger group p-2 flex items-center justify-center w-[30px] h-[30px] rounded-full bg-gray-800/[0.04] dark:bg-white/10"><span data-theme-preference-icon="system"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="size-4 text-gray-600 group-hover:text-gray-800 dark:text-gray-300 dark:group-hover:text-gray-100"><path d="M4.5 15.5L9 14.5L13.5 15.5" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 11.75V14.5" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M14.25 2.75H3.75C2.64543 2.75 1.75 3.64543 1.75 4.75V9.75C1.75 10.8546 2.64543 11.75 3.75 11.75H14.25C15.3546 11.75 16.25 10.8546 16.25 9.75V4.75C16.25 3.64543 15.3546 2.75 14.25 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></span><span data-theme-preference-icon="light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="size-4 text-gray-600 group-hover:text-gray-800 dark:text-gray-300 dark:group-hover:text-gray-100"><path d="M9 1.25V2.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M14.48 3.52002L13.773 4.22702" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M16.75 9H15.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M14.48 14.4799L13.773 13.7729" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 16.75V15.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M3.52 14.4799L4.227 13.7729" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M1.25 9H2.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M3.52 3.52002L4.227 4.22702" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 13.25C11.3472 13.25 13.25 11.3472 13.25 9C13.25 6.65279 11.3472 4.75 9 4.75C6.65279 4.75 4.75 6.65279 4.75 9C4.75 11.3472 6.65279 13.25 9 13.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></span><span data-theme-preference-icon="dark"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="size-4 text-gray-600 group-hover:text-gray-800 dark:text-gray-300 dark:group-hover:text-gray-100"><path d="M13 11.75C9.548 11.75 6.75 8.95201 6.75 5.50001C6.75 4.14801 7.183 2.90101 7.912 1.87801C4.548 2.50601 2 5.45301 2 9.00001C2 13.004 5.246 16.25 9.25 16.25C12.622 16.25 15.448 13.944 16.259 10.826C15.309 11.409 14.196 11.75 13 11.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></span></button></div><div class="flex lg:hidden items-center gap-3"><button type="button" class="text-gray-500 w-8 h-8 flex items-center justify-center hover:text-gray-600 dark:text-gray-400 dark:hover:text-gray-300" id="search-bar-entry-mobile" aria-label="Open search"><span class="sr-only">Search...</span><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! h-4 w-4 bg-gray-500 dark:bg-gray-400 hover:bg-gray-600 dark:hover:bg-gray-300" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/solid/magnifying-glass.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/solid/magnifying-glass.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></button><button id="assistant-entry-mobile" aria-label="Toggle assistant panel"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-4.5 text-gray-500 dark:text-gray-400 hover:text-gray-600 dark:hover:text-gray-300"><path d="M5.65799 2.99L4.39499 2.569L3.97399 1.306C3.83699 0.898 3.16199 0.898 3.02499 1.306L2.60399 2.569L1.34099 2.99C1.13699 3.058 0.998993 3.249 0.998993 3.464C0.998993 3.679 1.13699 3.87 1.34099 3.938L2.60399 4.359L3.02499 5.622C3.09299 5.826 3.28499 5.964 3.49999 5.964C3.71499 5.964 3.90599 5.826 3.97499 5.622L4.39599 4.359L5.65899 3.938C5.86299 3.87 6.00099 3.679 6.00099 3.464C6.00099 3.249 5.86199 3.058 5.65799 2.99Z" fill="currentColor" stroke="none"></path><path d="M9.5 2.75L11.412 7.587L16.25 9.5L11.412 11.413L9.5 16.25L7.587 11.413L2.75 9.5L7.587 7.587L9.5 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><button type="button" aria-label="More actions" class="h-7 w-5 flex items-center justify-center relative after:content-[&#x27;&#x27;] after:absolute after:-inset-y-2 after:-left-1 after:-right-4"><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! size-4 shrink-0 bg-gray-500 dark:bg-gray-400 hover:bg-gray-600 dark:hover:bg-gray-300" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/solid/ellipsis-vertical.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/solid/ellipsis-vertical.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></button></div></div></div><button type="button" class="flex items-center h-14 py-4 px-5 lg:hidden focus:outline-0 w-full text-left"><div class="text-gray-500 hover:text-gray-600 dark:text-gray-400 dark:hover:text-gray-300"><span class="sr-only">Navigation</span><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0"><path d="M2.25 9H15.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.25 3.75H15.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.25 14.25H15.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div><div class="ml-4 flex text-sm leading-6 whitespace-nowrap min-w-0 space-x-3 overflow-hidden"><div class="flex items-center space-x-3 shrink-0"><span>Detection</span><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 text-gray-400 shrink-0"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div><div class="font-semibold text-gray-900 truncate dark:text-gray-200 min-w-0 flex-1">SLA vs SLO vs SLI - What’s the Difference? Comparison with examples</div></div></button></div><div class="hidden lg:flex px-4 h-10"><div class="nav-tabs h-full flex text-sm gap-x-6"><a class="link nav-tabs-item group relative h-full gap-2 flex items-center font-medium hover:text-gray-800 dark:hover:text-gray-300 text-gray-800 dark:text-gray-200" href="/docs/what-is-checkly">Docs<div class="absolute bottom-0 w-full left-0 group-hover:bg-gray-200 dark:group-hover:bg-gray-700 h-px"></div></a><a class="link nav-tabs-item group relative h-full gap-2 flex items-center font-medium hover:text-gray-800 dark:hover:text-gray-300 text-gray-800 dark:text-gray-200" href="/docs/constructs/overview">Constructs<div class="absolute bottom-0 w-full left-0 group-hover:bg-gray-200 dark:group-hover:bg-gray-700 h-px"></div></a><a class="link nav-tabs-item group relative h-full gap-2 flex items-center font-medium hover:text-gray-800 dark:hover:text-gray-300 text-gray-800 dark:text-gray-200" href="/docs/cli/overview">CLI Reference<div class="absolute bottom-0 w-full left-0 group-hover:bg-gray-200 dark:group-hover:bg-gray-700 h-px"></div></a><a class="link nav-tabs-item group relative h-full gap-2 flex items-center font-medium hover:text-gray-800 dark:hover:text-gray-300 text-gray-800 dark:text-gray-200" href="/docs/api-reference/overview">API Reference<div class="absolute bottom-0 w-full left-0 group-hover:bg-gray-200 dark:group-hover:bg-gray-700 h-px"></div></a><a class="link nav-tabs-item group relative h-full gap-2 flex items-center font-medium hover:text-gray-800 dark:hover:text-gray-300 text-gray-800 dark:text-gray-200" href="/docs/guides/overview">Guides<div class="absolute bottom-0 w-full left-0 group-hover:bg-gray-200 dark:group-hover:bg-gray-700 h-px"></div></a><a class="link nav-tabs-item group relative h-full gap-2 flex items-center font-medium [text-shadow:-0.2px_0_0_currentColor,0.2px_0_0_currentColor] hover:text-primary dark:hover:text-primary-light text-gray-800 dark:text-gray-200" data-active="true" aria-current="location" href="/docs/learn/playwright/overview">Learn<div class="absolute bottom-0 w-full left-0 bg-primary dark:bg-primary-light h-px"></div></a><a class="link nav-tabs-item group relative h-full gap-2 flex items-center font-medium hover:text-gray-800 dark:hover:text-gray-300 text-gray-800 dark:text-gray-200" href="/docs/comparisons/frameworks/playwright-vs-cypress">Comparisons<div class="absolute bottom-0 w-full left-0 group-hover:bg-gray-200 dark:group-hover:bg-gray-700 h-px"></div></a></div></div></div></header><div id="body-content" class="scroll-mt-(--scroll-mt) peer-[.is-custom]:max-w-none peer-[.is-not-custom]:max-w-8xl peer-[.is-not-custom]:lg:flex peer-[.is-not-custom]:mx-auto peer-[.is-not-custom]:px-0 peer-[.is-not-custom]:lg:px-5 peer-[.is-custom]:[&amp;&gt;:first-child]:hidden! peer-[.is-custom]:[&amp;&gt;:first-child]:sm:hidden! peer-[.is-custom]:[&amp;&gt;:first-child]:md:hidden! peer-[.is-custom]:[&amp;&gt;:first-child]:lg:hidden! peer-[.is-custom]:[&amp;&gt;:first-child]:xl:hidden!"><nav aria-label="Pages" id="sidebar-content" class="hidden sticky shrink-0 w-[18rem] lg:flex flex-col border-r border-gray-100 dark:border-white/10 transition-transform duration-100 top-[calc(var(--mintlify-slot-header-height,6rem)+var(--banner-height,0px))] h-[calc(100vh-var(--mintlify-slot-header-height,6rem)-var(--banner-height,0px))]"><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px" data-component-part="scroll-area" id="navigation-items" class="min-w-0 flex-1 min-h-0"><div role="presentation" data-id="base-ui-_R_tbsnlhjiuqsnpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] pr-5 pt-5 pb-4 base-ui-disable-scrollbar" style="overflow:scroll;mask-image:linear-gradient(to bottom, transparent 0, black min(var(--scroll-area-fade-size), var(--scroll-area-overflow-y-start, 0px)));-webkit-mask-image:linear-gradient(to bottom, transparent 0, black min(var(--scroll-area-fade-size), var(--scroll-area-overflow-y-start, 0px)));mask-composite:intersect;-webkit-mask-composite:source-in;mask-repeat:no-repeat" data-component-part="scroll-area-viewport"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" class="min-w-0! w-full"><div class="text-sm relative"><div class="pl-2"><button type="button" tabindex="0" aria-haspopup="menu" id="base-ui-_R_3aqtbsnlhjiuqsnpfiutb_" class="group disabled:pointer-events-none [&amp;&gt;span]:line-clamp-1 overflow-hidden group focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-primary dark:focus-visible:outline-primary-light text-sm text-gray-950/50 dark:text-white/50 group-hover:text-gray-950/70 dark:group-hover:text-white/70 nav-dropdown-trigger mb-4 z-10 group flex w-full items-center pl-2 pr-3.5 py-1.5 rounded-[0.85rem] border border-gray-200/70 dark:border-white/[0.07] hover:bg-gray-600/5 dark:hover:bg-gray-200/5 gap-1"><div class="nav-dropdown-item-icon size-8 flex items-center justify-center rounded-lg shrink-0 border border-gray-200/70 dark:border-white/[0.07]"><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! size-4 bg-primary dark:bg-primary-light" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/solid/triangle-exclamation.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/solid/triangle-exclamation.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></div><div class="nav-dropdown-item-text-container flex-1 px-1 flex flex-col grow text-left"><p class="nav-dropdown-item-title text-base lg:text-sm font-medium text-gray-800 dark:text-gray-300">Incidents</p></div><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 rotate-90"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div><ul class="list-none" aria-hidden="true"></ul><ul class="sidebar-group mt-6 lg:mt-8"><li id="/learn/incidents/overview" class="relative scroll-m-4 first:scroll-m-20" data-title="Overview"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 break-words hyphens-auto rounded-xl w-full outline-offset-[-1px] hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/learn/incidents/overview"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Overview</span></div></div></a></li></ul><div class="px-1 py-3"><div class="sidebar-nav-group-divider h-px w-full bg-gray-100 dark:bg-white/10"></div></div><div class="my-2"><div class="sidebar-group-header flex items-center gap-2.5 pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200 text-xs"><h3 class="sidebar-title text-[length:inherit] font-[inherit] leading-[inherit]"><span>Detection</span></h3></div><ul class="sidebar-group space-y-px"><li id="/learn/incidents/detection-best-practices" class="relative scroll-m-4 first:scroll-m-20" data-title="Detecting Downtime"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 rounded-xl w-full outline-offset-[-1px] hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/learn/incidents/detection-best-practices"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Detecting Downtime</span></div></div></a></li><li id="/learn/incidents/incident-management-challenges" class="relative scroll-m-4 first:scroll-m-20" data-title="Incident Management Challenges"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 rounded-xl w-full outline-offset-[-1px] hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/learn/incidents/incident-management-challenges"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Incident Management Challenges</span></div></div></a></li><li id="/learn/incidents/reduce-mttd" class="relative scroll-m-4 first:scroll-m-20" data-title="MTTD Best Practices"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 rounded-xl w-full outline-offset-[-1px] hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/learn/incidents/reduce-mttd"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">MTTD Best Practices</span></div></div></a></li><li id="/learn/incidents/slo-sla-sli" class="relative scroll-m-4 first:scroll-m-20" data-title="SLA vs SLO vs SLI" data-active="true" data-active-nav-item="true"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 rounded-xl w-full outline-offset-[-1px] bg-primary/10 text-primary [text-shadow:-0.2px_0_0_currentColor,0.2px_0_0_currentColor] dark:text-primary-light dark:bg-primary-light/10" style="padding-left:1rem" aria-current="page" href="/docs/learn/incidents/slo-sla-sli"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">SLA vs SLO vs SLI</span></div></div></a></li><li id="/learn/incidents/what-is-incident-response" class="relative scroll-m-4 first:scroll-m-20" data-title="What is Incident Response?"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 rounded-xl w-full outline-offset-[-1px] hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/learn/incidents/what-is-incident-response"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">What is Incident Response?</span></div></div></a></li></ul></div><div class="px-1 py-3"><div class="sidebar-nav-group-divider h-px w-full bg-gray-100 dark:bg-white/10"></div></div><div class="my-2"><div class="sidebar-group-header flex items-center gap-2.5 pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200 text-xs"><h3 class="sidebar-title text-[length:inherit] font-[inherit] leading-[inherit]"><span>Classification</span></h3></div><ul class="sidebar-group space-y-px"><li id="/learn/incidents/automation-incident-response" class="relative scroll-m-4 first:scroll-m-20" data-title="Playbooks &amp; Automation"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 rounded-xl w-full outline-offset-[-1px] hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/learn/incidents/automation-incident-response"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Playbooks &amp; Automation</span></div></div></a></li><li id="/learn/incidents/incident-assessment-severity" class="relative scroll-m-4 first:scroll-m-20" data-title="Incident Assessment &amp; Severity Guide"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 rounded-xl w-full outline-offset-[-1px] hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/learn/incidents/incident-assessment-severity"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Incident Assessment &amp; Severity Guide</span></div></div></a></li><li id="/learn/incidents/on-call-schedule" class="relative scroll-m-4 first:scroll-m-20" data-title="On-Call Schedules - How to"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 rounded-xl w-full outline-offset-[-1px] hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/learn/incidents/on-call-schedule"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">On-Call Schedules - How to</span></div></div></a></li><li id="/learn/incidents/playbooks" class="relative scroll-m-4 first:scroll-m-20" data-title="Incident Response Playbooks"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 rounded-xl w-full outline-offset-[-1px] hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/learn/incidents/playbooks"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Incident Response Playbooks</span></div></div></a></li></ul></div><div class="px-1 py-3"><div class="sidebar-nav-group-divider h-px w-full bg-gray-100 dark:bg-white/10"></div></div><div class="my-2"><div class="sidebar-group-header flex items-center gap-2.5 pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200 text-xs"><h3 class="sidebar-title text-[length:inherit] font-[inherit] leading-[inherit]"><span>Investigation</span></h3></div><ul class="sidebar-group space-y-px"><li id="/learn/incidents/modern-root-cause-analysis" class="relative scroll-m-4 first:scroll-m-20" data-title="Modern Root Cause Analysis"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 rounded-xl w-full outline-offset-[-1px] hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/learn/incidents/modern-root-cause-analysis"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Modern Root Cause Analysis</span></div></div></a></li><li id="/learn/incidents/root-cause-with-traces" class="relative scroll-m-4 first:scroll-m-20" data-title="Tracing for Root Cause Analysis"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 rounded-xl w-full outline-offset-[-1px] hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/learn/incidents/root-cause-with-traces"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Tracing for Root Cause Analysis</span></div></div></a></li></ul></div><div class="px-1 py-3"><div class="sidebar-nav-group-divider h-px w-full bg-gray-100 dark:bg-white/10"></div></div><div class="my-2"><div class="sidebar-group-header flex items-center gap-2.5 pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200 text-xs"><h3 class="sidebar-title text-[length:inherit] font-[inherit] leading-[inherit]"><span>Repair</span></h3></div><ul class="sidebar-group space-y-px"><li id="/learn/incidents/defining-mttr" class="relative scroll-m-4 first:scroll-m-20" data-title="What is MTTR?"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 rounded-xl w-full outline-offset-[-1px] hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/learn/incidents/defining-mttr"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">What is MTTR?</span></div></div></a></li><li id="/learn/incidents/dora-metrics" class="relative scroll-m-4 first:scroll-m-20" data-title="DORA Metrics for Performance Evaluation"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 rounded-xl w-full outline-offset-[-1px] hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/learn/incidents/dora-metrics"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">DORA Metrics for Performance Evaluation</span></div></div></a></li><li id="/learn/incidents/mttr-challenges" class="relative scroll-m-4 first:scroll-m-20" data-title="Reducing Time to Repair"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 rounded-xl w-full outline-offset-[-1px] hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/learn/incidents/mttr-challenges"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Reducing Time to Repair</span></div></div></a></li></ul></div><div class="px-1 py-3"><div class="sidebar-nav-group-divider h-px w-full bg-gray-100 dark:bg-white/10"></div></div><div class="my-2"><div class="sidebar-group-header flex items-center gap-2.5 pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200 text-xs"><h3 class="sidebar-title text-[length:inherit] font-[inherit] leading-[inherit]"><span>Communication</span></h3></div><ul class="sidebar-group space-y-px"><li id="/learn/incidents/anatomy-of-a-status-page" class="relative scroll-m-4 first:scroll-m-20" data-title="Anatomy of a Status Page"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 rounded-xl w-full outline-offset-[-1px] hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/learn/incidents/anatomy-of-a-status-page"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Anatomy of a Status Page</span></div></div></a></li><li id="/learn/incidents/incident-communication" class="relative scroll-m-4 first:scroll-m-20" data-title="Incident Communication"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 rounded-xl w-full outline-offset-[-1px] hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/learn/incidents/incident-communication"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Incident Communication</span></div></div></a></li><li id="/learn/incidents/postmortems" class="relative scroll-m-4 first:scroll-m-20" data-title="Postmortems That Drive Real Improvement (+ Template)"><a class="group flex items-start pr-3 py-1.5 cursor-pointer gap-x-3 text-left focus-visible:-outline-offset-2 rounded-xl w-full outline-offset-[-1px] hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/learn/incidents/postmortems"><div class="flex-1 flex min-w-0 items-start gap-x-2.5"><div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 [word-break:break-word]"><span class="min-w-0 max-w-full break-words hyphens-auto">Postmortems That Drive Real Improvement (+ Template)</span></div></div></a></li></ul></div><script>(function () {
try {
if (window.__mintlifyInitialSidebarScrollDone) return;
window.__mintlifyInitialSidebarScrollDone = true;
var path = (window.location.pathname || '/').split('#')[0].split('?')[0];
if (path.endsWith('/index')) path = path.slice(0, -6);
else if (path === 'index') path = '';
var candidates = [];
if (path) candidates.push(path);
if (path.startsWith('/')) candidates.push(path.slice(1));
else candidates.push('/' + path);
var item = null;
for (var i = 0; i < candidates.length && !item; i++) {
var matches = document.querySelectorAll('[id="' + candidates[i].replace(/"/g, '\\"') + '"]');
for (var j = 0; j < matches.length; j++) {
if (matches[j].closest('#sidebar, #sidebar-content')) {
item = matches[j];
break;
}
}
}
if (!item) return;
var parent = item.closest('[data-component-part="scroll-area-viewport"]');
if (!parent) {
parent = item.parentElement;
while (parent) {
var style = getComputedStyle(parent);
if (style.overflowY === 'auto' || style.overflowY === 'scroll') break;
parent = parent.parentElement;
}
}
if (!parent) return;
var parentRect = parent.getBoundingClientRect();
var itemRect = item.getBoundingClientRect();
if (itemRect.top >= parentRect.top && itemRect.bottom <= parentRect.bottom) return;
var itemTopRelative = itemRect.top - parentRect.top + parent.scrollTop;
parent.scrollTop = itemTopRelative - parentRect.height / 2 + itemRect.height / 2;
} catch (e) {}
})();</script></div></div></div></div></nav><script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.checklyhq.com/#organization","name":"Checkly Docs","url":"https://www.checklyhq.com","logo":{"@type":"ImageObject","url":"https://mintcdn.com/checkly-422f444a/KiRymP194lYB6fu_/logo/light.svg?fit=max&auto=format&n=KiRymP194lYB6fu_&q=85&s=c4c50c3b55e375fe5d06b52fad5c8032"}},{"@type":"WebSite","@id":"https://www.checklyhq.com/docs#website","name":"Checkly Docs","url":"https://www.checklyhq.com/docs","publisher":{"@id":"https://www.checklyhq.com/#organization"}},{"@type":"WebPage","@id":"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/#webpage","url":"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/","name":"SLA vs SLO vs SLI - What’s the Difference? Comparison with examples","description":"Avoid user‑reported outages with synthetic checks, anomaly detection, smart alerting, and rich failure traces for rapid detection.","dateModified":"2026-07-06T02:54:51.193Z","isPartOf":{"@id":"https://www.checklyhq.com/docs#website"},"breadcrumb":{"@id":"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/#breadcrumb"}},{"@type":"BreadcrumbList","@id":"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Detection","item":"https://www.checklyhq.com/docs/learn/incidents/detection-best-practices"},{"@type":"ListItem","position":2,"name":"SLA vs SLO vs SLI - What’s the Difference? Comparison with examples","item":"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/"}]},{"@type":["Article","TechArticle"],"@id":"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/#article","headline":"SLA vs SLO vs SLI - What’s the Difference? Comparison with examples","name":"SLA vs SLO vs SLI - What’s the Difference? Comparison with examples","description":"Avoid user‑reported outages with synthetic checks, anomaly detection, smart alerting, and rich failure traces for rapid detection.","url":"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/","mainEntityOfPage":{"@id":"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/#webpage"},"dateModified":"2026-07-06T02:54:51.193Z","publisher":{"@id":"https://www.checklyhq.com/#organization"},"isPartOf":{"@id":"https://www.checklyhq.com/docs#website"}}]}</script><script>document.documentElement.setAttribute('data-page-mode', "none");</script><span class="fixed inset-0 bg-background-light dark:bg-background-dark -z-10 pointer-events-none" id="background-color"></span><style data-custom-css-index="0" data-custom-css-path="style.css">body {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.sidebar-group-header {
text-transform: uppercase;
letter-spacing: 0.04em;
}
.eyebrow {
text-transform: uppercase;
}
li .group {
margin-bottom: 0rem !important;
padding-bottom: .25rem !important;
}
th {
text-align: left;
}
tr {
border-bottom: 1px solid var(--border-color, rgba(128, 128, 128, 0.15));
}
.field .font-semibold.text-primary[data-component-part="field-name"] {
line-height: normal;
font-weight: 700;
font-size: 1.15rem;
}
.dark kbd {
background-color: rgba(255, 255, 255, 0.08);
border-color: rgba(255, 255, 255, 0.2);
color: #e6e6e6;
}
/* Sign-up CTA card (snippets/sign-up-cta.mdx). Styled here instead of with
Tailwind utility classes because Mintlify's production build only ships
utilities used by its own UI — arbitrary values like from-[#0c449a] work
in `mint dev` but are missing in the compiled production CSS. */
.sign-up-cta {
position: relative;
border-radius: 0.5rem;
padding: 1.5rem;
margin: 1rem 0;
background: linear-gradient(to bottom, #0c449a, #062047);
color: #fff;
}
.sign-up-cta-title {
font-size: 1.25rem;
line-height: 1.75rem;
font-weight: 700;
text-wrap: balance;
margin-bottom: 0.25rem;
}
.sign-up-cta-title img {
display: inline-block;
width: 2rem;
height: 2rem;
vertical-align: middle;
margin-top: -0.25rem;
}
.sign-up-cta-body {
color: #e2e8f0;
}
.sign-up-cta a {
color: inherit;
}
/* Stretch the link's click area over the whole card. */
.sign-up-cta a::before {
content: "";
position: absolute;
inset: 0;
}
/* Expand small header icon buttons to a 44x44 minimum touch target
(WCAG 2.5.5) via an invisible hit-area overlay, so the visual header
layout is unchanged and the theme's responsive show/hide still applies. */
header button[aria-label="Open search"],
header button[aria-label="Toggle assistant panel"],
header button[aria-label="Toggle dark mode"],
header button[aria-label="More actions"] {
position: relative;
}
header button[aria-label="Open search"]::after,
header button[aria-label="Toggle assistant panel"]::after,
header button[aria-label="Toggle dark mode"]::after,
header button[aria-label="More actions"]::after {
content: "";
position: absolute;
top: 50%;
left: 50%;
width: 44px;
height: 44px;
transform: translate(-50%, -50%);
}
</style><!--$--><!--/$--><div class="w-full"><main class="px-5 lg:pr-10 lg:pl-[5.5rem] lg:pt-10 mx-auto max-w-6xl flex flex-row-reverse gap-x-12 w-full pt-36 [[data-banner-state=visible]_&amp;]:pt-[calc(10rem+var(--banner-height,2.5rem))] [[data-banner-state=visible]_&amp;]:lg:pt-10" id="content-container"><div class="hidden xl:flex self-start sticky xl:flex-col max-w-[28rem] z-21 h-[calc(100vh-9.5rem)] top-[9.5rem] [[data-banner-state=visible]_&amp;]:h-[calc(100vh-15rem)] [[data-banner-state=visible]_&amp;]:top-[12rem]" id="content-side-layout"><div class="z-10 hidden xl:flex box-border max-h-full pl-10 w-[19rem]" id="table-of-contents-layout"><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px" data-component-part="scroll-area" id="table-of-contents" class="min-w-0 text-gray-600 text-sm leading-6 w-[16.5rem] -mt-10"><div role="presentation" data-id="base-ui-_R_1bddbsnlhjiuqsnpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] pt-10 pb-4 base-ui-disable-scrollbar" style="overflow:scroll" data-component-part="scroll-area-viewport"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" class="min-w-0! w-full space-y-2"><nav aria-labelledby="_R_bddbsnlhjiuqsnpfiutb_"><h2 id="_R_bddbsnlhjiuqsnpfiutb_" class="m-0 font-normal"><button type="button" class="text-gray-700 dark:text-gray-300 font-medium flex items-center space-x-2 hover:text-gray-900 dark:hover:text-gray-100 transition-colors cursor-pointer"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M2.75 14.25H15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.75 3.75H15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.75 9H8.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><span>On this page</span></button></h2><div><ul id="table-of-contents-content" class="toc"><li class="toc-item relative" data-depth="0"><a style="--toc-padding-left:1rem" href="#what-is-an-sla-service-level-agreement" class="break-words py-1 block pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 font-medium border-l border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 [[data-active]&gt;&amp;]:border-primary dark:[[data-active]&gt;&amp;]:border-primary-light [[data-active]&gt;&amp;:hover]:border-primary dark:[[data-active]&gt;&amp;:hover]:border-primary-light dark:text-gray-400 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light [[data-active]&gt;&amp;]:[text-shadow:-0.15px_0_0_currentColor,0.15px_0_0_currentColor]">What is an SLA (Service Level Agreement)</a><ul class=""><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#sla-challenges" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">SLA Challenges</a></li><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#sla-best-practices" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">SLA Best Practices</a></li><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#who-needs-an-sla" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">Who Needs an SLA?</a></li><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#sla-examples" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">SLA Examples</a></li></ul></li><li class="toc-item relative" data-depth="0"><a style="--toc-padding-left:1rem" href="#what-is-an-slo-service-level-objective" class="break-words py-1 block pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 font-medium border-l border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 [[data-active]&gt;&amp;]:border-primary dark:[[data-active]&gt;&amp;]:border-primary-light [[data-active]&gt;&amp;:hover]:border-primary dark:[[data-active]&gt;&amp;:hover]:border-primary-light dark:text-gray-400 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light [[data-active]&gt;&amp;]:[text-shadow:-0.15px_0_0_currentColor,0.15px_0_0_currentColor]">What is an SLO (Service Level Objective)</a><ul class=""><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#slo-challenges" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">SLO Challenges</a></li><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#slo-best-practices" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">SLO Best Practices</a></li><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#who-needs-an-slo" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">Who Needs an SLO?</a></li><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#slo-examples" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">SLO Examples</a></li></ul></li><li class="toc-item relative" data-depth="0"><a style="--toc-padding-left:1rem" href="#what-is-an-sli-service-level-indicator" class="break-words py-1 block pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 font-medium border-l border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 [[data-active]&gt;&amp;]:border-primary dark:[[data-active]&gt;&amp;]:border-primary-light [[data-active]&gt;&amp;:hover]:border-primary dark:[[data-active]&gt;&amp;:hover]:border-primary-light dark:text-gray-400 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light [[data-active]&gt;&amp;]:[text-shadow:-0.15px_0_0_currentColor,0.15px_0_0_currentColor]">What is an SLI (Service Level Indicator)</a><ul class=""><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#sli-challenges" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">SLI Challenges</a></li><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#sli-best-practices" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">SLI Best Practices</a></li><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#who-needs-an-sli" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">Who Needs an SLI?</a></li><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#sli-examples" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">SLI Examples</a></li></ul></li><li class="toc-item relative" data-depth="0"><a style="--toc-padding-left:1rem" href="#why-are-slas-slos-and-slis-important" class="break-words py-1 block pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 font-medium border-l border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 [[data-active]&gt;&amp;]:border-primary dark:[[data-active]&gt;&amp;]:border-primary-light [[data-active]&gt;&amp;:hover]:border-primary dark:[[data-active]&gt;&amp;:hover]:border-primary-light dark:text-gray-400 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light [[data-active]&gt;&amp;]:[text-shadow:-0.15px_0_0_currentColor,0.15px_0_0_currentColor]">Why are SLAs, SLOs, and SLIs Important?</a><ul class=""><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#ensuring-accountability-with-slas" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">Ensuring Accountability with SLAs</a></li><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#aligning-objectives-with-slos" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">Aligning Objectives with SLOs</a></li><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#gaining-insights-through-slis" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">Gaining Insights Through SLIs</a></li><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#the-collective-impact" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">The Collective Impact</a></li></ul></li><li class="toc-item relative" data-depth="0"><a style="--toc-padding-left:1rem" href="#practical-example-implementing-slis-slos-and-slas-for-apis" class="break-words py-1 block pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 font-medium border-l border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 [[data-active]&gt;&amp;]:border-primary dark:[[data-active]&gt;&amp;]:border-primary-light [[data-active]&gt;&amp;:hover]:border-primary dark:[[data-active]&gt;&amp;:hover]:border-primary-light dark:text-gray-400 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light [[data-active]&gt;&amp;]:[text-shadow:-0.15px_0_0_currentColor,0.15px_0_0_currentColor]">Practical Example: Implementing SLIs, SLOs, and SLAs for APIs</a><ul class=""><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#sli-service-level-indicator" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">SLI: Service Level Indicator</a></li><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#slo-service-level-objective" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">SLO: Service Level Objective</a></li><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#sla-service-level-agreement" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">SLA: Service Level Agreement</a></li></ul></li><li class="toc-item relative" data-depth="0"><a style="--toc-padding-left:1rem" href="#how-checkly-can-help-you-hit-your-slas" class="break-words py-1 block pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 font-medium border-l border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 [[data-active]&gt;&amp;]:border-primary dark:[[data-active]&gt;&amp;]:border-primary-light [[data-active]&gt;&amp;:hover]:border-primary dark:[[data-active]&gt;&amp;:hover]:border-primary-light dark:text-gray-400 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light [[data-active]&gt;&amp;]:[text-shadow:-0.15px_0_0_currentColor,0.15px_0_0_currentColor]">How Checkly Can Help You Hit Your SLAs</a><ul class=""><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#api-checks" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">API Checks</a></li><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#browser-checks" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">Browser Checks</a></li><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#checkly-best-practices" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">Checkly Best Practices</a></li><li class="toc-item relative border-l pl-4 border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 data-active:border-primary data-active:hover:border-primary dark:data-active:border-primary-light" data-depth="1"><a style="--toc-padding-left:1rem" href="#integrating-into-your-existing-workflow" class="group flex items-start break-words py-1 pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] whitespace-pre-wrap focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 text-gray-500 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:text-gray-400 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light">Integrating Into Your Existing Workflow</a></li></ul></li><li class="toc-item relative" data-depth="0"><a style="--toc-padding-left:1rem" href="#conclusion" class="break-words py-1 block pl-[calc(var(--toc-padding-left)+var(--toc-focus-padding,0rem))] focus-visible:[--toc-focus-padding:0.25rem] focus-visible:-ml-1 focus-visible:-outline-offset-2 font-medium border-l border-gray-950/5 dark:border-white/10 hover:border-gray-950/20 dark:hover:border-white/20 [[data-active]&gt;&amp;]:border-primary dark:[[data-active]&gt;&amp;]:border-primary-light [[data-active]&gt;&amp;:hover]:border-primary dark:[[data-active]&gt;&amp;:hover]:border-primary-light dark:text-gray-400 [li:not([data-active])&gt;&amp;:hover]:text-gray-900 dark:[li:not([data-active])&gt;&amp;:hover]:text-gray-300 [[data-active]&gt;&amp;]:text-primary dark:[[data-active]&gt;&amp;]:text-primary-light [[data-active]&gt;&amp;]:[text-shadow:-0.15px_0_0_currentColor,0.15px_0_0_currentColor]">Conclusion</a></li></ul></div></nav></div></div></div></div></div><div class="grow w-full mx-auto [contain:inline-size] xl:w-[calc(100%-28rem)]" id="content-area"><header id="header" class="relative leading-none @container/page-header"><div class="mt-0.5 space-y-2.5"><div class="eyebrow h-5 text-primary dark:text-primary-light text-sm font-semibold">Detection</div><div class="flex flex-col sm:flex-row items-start sm:items-center relative gap-2 min-w-0"><h1 id="page-title" class="text-3xl sm:text-4xl text-gray-900 tracking-tight dark:text-gray-200 [overflow-wrap:anywhere] font-semibold">SLA vs SLO vs SLI - What’s the Difference? Comparison with examples</h1><div id="page-context-menu" class="items-center shrink-0 min-w-[156px] justify-end ml-auto hidden @[520px]/page-header:flex"><button id="page-context-menu-button" class="rounded-l-xl px-3 text-gray-700 dark:text-gray-300 py-1.5 border border-gray-200 dark:border-white/[0.07] bg-background-light dark:bg-background-dark hover:bg-gray-600/5 dark:hover:bg-gray-200/5 border-r-0" aria-label="Copy page"><div class="flex items-center gap-2 text-sm text-center font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0"><path d="M14.25 5.25H7.25C6.14543 5.25 5.25 6.14543 5.25 7.25V14.25C5.25 15.3546 6.14543 16.25 7.25 16.25H14.25C15.3546 16.25 16.25 15.3546 16.25 14.25V7.25C16.25 6.14543 15.3546 5.25 14.25 5.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.80103 11.998L1.77203 5.07397C1.61003 3.98097 2.36403 2.96397 3.45603 2.80197L10.38 1.77297C11.313 1.63397 12.19 2.16297 12.528 3.00097" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><span class="grid"><span aria-hidden="true" class="invisible col-start-1 row-start-1">Copy page</span><span class="col-start-1 row-start-1">Copy page</span></span></div></button><button type="button" tabindex="0" aria-haspopup="menu" id="base-ui-_R_1mshjddbsnlhjiuqsnpfiutb_" aria-label="More actions" class="group disabled:pointer-events-none [&amp;&gt;span]:line-clamp-1 overflow-hidden group focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-primary dark:focus-visible:outline-primary-light py-0.5 gap-1 text-sm text-gray-950/50 dark:text-white/50 group-hover:text-gray-950/70 dark:group-hover:text-white/70 rounded-none rounded-r-xl border flex items-center justify-center h-[34px] border-gray-200 aspect-square dark:border-white/[0.07] bg-background-light dark:bg-background-dark hover:bg-gray-600/5 dark:hover:bg-gray-200/5"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 rotate-90"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div></div><div class="mt-2 text-lg prose prose-gray dark:prose-invert [&amp;&gt;*]:[overflow-wrap:anywhere]"><p>Avoid user‑reported outages with synthetic checks, anomaly detection, smart alerting, and rich failure traces for rapid detection.</p></div><div id="page-context-menu" class="flex items-center shrink-0 min-w-[156px] mt-3 @[520px]/page-header:hidden"><button id="page-context-menu-button" class="rounded-l-xl px-3 text-gray-700 dark:text-gray-300 py-1.5 border border-gray-200 dark:border-white/[0.07] bg-background-light dark:bg-background-dark hover:bg-gray-600/5 dark:hover:bg-gray-200/5 border-r-0" aria-label="Copy page"><div class="flex items-center gap-2 text-sm text-center font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0"><path d="M14.25 5.25H7.25C6.14543 5.25 5.25 6.14543 5.25 7.25V14.25C5.25 15.3546 6.14543 16.25 7.25 16.25H14.25C15.3546 16.25 16.25 15.3546 16.25 14.25V7.25C16.25 6.14543 15.3546 5.25 14.25 5.25Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.80103 11.998L1.77203 5.07397C1.61003 3.98097 2.36403 2.96397 3.45603 2.80197L10.38 1.77297C11.313 1.63397 12.19 2.16297 12.528 3.00097" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><span class="grid"><span aria-hidden="true" class="invisible col-start-1 row-start-1">Copy page</span><span class="col-start-1 row-start-1">Copy page</span></span></div></button><button type="button" tabindex="0" aria-haspopup="menu" id="base-ui-_R_3dhjddbsnlhjiuqsnpfiutb_" aria-label="More actions" class="group disabled:pointer-events-none [&amp;&gt;span]:line-clamp-1 overflow-hidden group focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-primary dark:focus-visible:outline-primary-light py-0.5 gap-1 text-sm text-gray-950/50 dark:text-white/50 group-hover:text-gray-950/70 dark:group-hover:text-white/70 rounded-none rounded-r-xl border flex items-center justify-center h-[34px] border-gray-200 aspect-square dark:border-white/[0.07] bg-background-light dark:bg-background-dark hover:bg-gray-600/5 dark:hover:bg-gray-200/5"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3 transition-transform text-gray-400 group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 shrink-0 rotate-90"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></header><div class="mdx-content @container/columns-container relative mt-8 prose prose-gray dark:prose-invert [contain:inline-size] isolate empty:hidden mb-14" data-page-title="SLA vs SLO vs SLI - What’s the Difference? Comparison with examples" data-page-href="/learn/incidents/slo-sla-sli" id="content"><span data-as="p">When we talk about keeping services running smoothly, we often hear about SLAs, SLOs, and SLIs. But what do these terms mean, and how are they different? SLAs, or Service Level Agreements, are like promises between a service provider and a customer. They outline what the customer can expect in terms of service quality.</span>
<span data-as="p">SLOs, or Service Level Objectives, are the specific goals that service providers aim to hit to meet the promises made in the SLAs. Think of them as targets for how well the service should work. Finally, SLIs, or Service Level Indicators, are the measurements used to see if the service is hitting its targets. They help us understand how well the service is doing. Together, these three help ensure services are delivered well and customers are happy.</span>
<!-- --><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px" data-component-part="scroll-area" data-table-wrapper="true" class="min-w-0 [--page-padding:20px] flex w-[calc(100%+(var(--page-padding)*2))] my-[1em] py-[1em] -mx-(--page-padding) max-w-none [contain:inline-size]"><div role="region" data-id="base-ui-_R_kljddbsnlhjiuqsnpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] overflow-y-hidden! base-ui-disable-scrollbar" style="overflow:scroll" data-component-part="scroll-area-viewport" aria-label="Scrollable table"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" class="flex"><div class="px-(--page-padding) grow max-w-none table"><table class="m-0 min-w-full w-full max-w-none table [&amp;_th]:text-left [&amp;_td[data-numeric]]:tabular-nums [&amp;_td]:min-w-[150px]"><thead><tr><th><strong>Categories</strong></th><th><strong>SLA (Service Level Agreements)</strong></th><th><strong>SLO (Service Level Objectives)</strong></th><th><strong>SLI (Service Level Indicators)</strong></th></tr></thead><tbody><tr><td><strong>What is It?</strong></td><td>A contractual commitment defining agreed-upon expectations between a service provider and customers.</td><td>Specific, measurable goals set within the broader scope of SLAs.</td><td>Specific metrics measuring a service’s performance.</td></tr><tr><td><strong>How Does It Help?</strong></td><td>Outlines metrics, response times, and service quality to ensure performance standards.</td><td>Pinpoints desired performance levels, emphasizing reliability and user satisfaction.</td><td>Measures specific aspects of a service’s performance to assess its quality.</td></tr><tr><td><strong>Who Builds It?</strong></td><td>A collaborative effort involving service providers and customers, often led by technical teams.</td><td>A collaborative effort involving technical teams to set measurable goals within the SLA framework.</td><td>Developed by technical teams to measure and monitor specific aspects of service performance.</td></tr><tr><td><strong>What Happens if It’s Breached?</strong></td><td>Breaching SLA terms may lead to penalties, legal consequences, and reputation damage to the provider.</td><td>Breaching SLOs signifies a failure to meet performance goals, triggering corrective actions and potential reevaluation.</td><td>SLI breaches indicate deviations in specific performance metrics, requiring investigation and improvement.</td></tr></tbody></table></div></div></div></div>
<h2 class="flex whitespace-pre-wrap group font-semibold" id="what-is-an-sla-service-level-agreement"><div class="absolute" tabindex="-1"><a href="#what-is-an-sla-service-level-agreement" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">What is an SLA (Service Level Agreement)</span></h2>
<span data-as="p">At its core, a <a href="https://www.techtarget.com/searchitchannel/definition/service-level-agreement" target="_blank" rel="noreferrer" class="link">Service Level Agreement (SLA)</a> defines the expectations between service providers and customers. Overcoming challenges such as technical intricacies, customer preferences, language clarity, and detailed documentation is key to optimizing SLA effectiveness. By embracing best practices, SLAs become dynamic tools fostering transparency, accountability, and customer satisfaction.</span>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="sla-challenges"><div class="absolute" tabindex="-1"><a href="#sla-challenges" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">SLA Challenges</span></h3>
<span data-as="p">Hitting your SLAs can bring many challenges that demand a nuanced and strategic approach. Understanding and addressing these challenges is important for the success and effectiveness of SLAs:</span>
<ul>
<li><strong>Defining Precise Metrics:</strong> Accurately quantifying key performance indicators is a fundamental challenge in defining SLAs. The process requires clear definition and measurement to align with both client expectations and operational capabilities.</li>
<li><strong>Balancing Flexibility and Specificity:</strong> Achieving the right balance between flexibility and specificity is crucial. Overly rigid SLAs may hinder innovation, while overly lenient ones can lead to unmet expectations. Striking the balance is imperative for long-term success.</li>
<li><strong>Adapting to Evolving Technologies:</strong> The dynamic nature of industries and constant technological advancements pose a continuous challenge. SLAs must be flexible enough to adapt swiftly to changes, ensuring they remain relevant and effective in evolving business landscapes.</li>
<li><strong>Effective Communication and Collaboration:</strong> Successful SLAs hinge on effective communication and collaboration between service providers and clients. Clear understanding, transparent dialogue, and collaborative problem-solving are essential to preempt and address potential issues.</li>
<li><strong>Monitoring Mechanisms:</strong> Implementing robust mechanisms for <a href="https://www.checklyhq.com/blog/how-to-monitor-all-the-nines-of-your-service-level-agreements/" target="_blank" rel="noreferrer" class="link">monitoring service level agreements</a> is crucial. Regular assessments and timely feedback loops help identify and address deviations, ensuring service levels meet agreed-upon standards consistently.</li>
<li><strong>Commitment to Continuous Improvement:</strong> SLAs are not static documents. They are living agreements that demand a commitment to continuous improvement. A proactive approach to refining processes and adapting to changing circumstances is necessary for sustained success.</li>
</ul>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="sla-best-practices"><div class="absolute" tabindex="-1"><a href="#sla-best-practices" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">SLA Best Practices</span></h3>
<span data-as="p">To overcome these challenges and ensure the effectiveness of SLAs, certain best practices should be observed:</span>
<ul>
<li><strong>Involve Technical Teams in SLA Creation:</strong> Collaboration with technical teams from the initial stages ensures that the SLA aligns with the technical capabilities and limitations of the services. This collaboration fosters a more accurate and realistic set of expectations.</li>
<li><strong>Create SLAs Keeping Customers’ Preferences in Mind:</strong> Considering customers’ preferences is crucial. By incorporating customer feedback and expectations, SLAs become more customer-centric. This also leads to increased satisfaction and trust.</li>
<li><strong>Keep SLAs Simple and Use Clear Language:</strong> Maintaining simplicity in SLAs is a best practice that cannot be overstated. Clear and straightforward language enhances understanding and reduces the risk of misinterpretation.</li>
<li><strong>Document Everything:</strong> Comprehensive documentation is crucial for successful SLAs. Documenting all aspects of the agreement ensures transparency. It also provides a reference point for dispute resolution and aids in continuous improvement.</li>
</ul>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="who-needs-an-sla"><div class="absolute" tabindex="-1"><a href="#who-needs-an-sla" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Who Needs an SLA?</span></h3>
<span data-as="p">Understanding who benefits from SLAs is essential for businesses looking to establish effective service standards. In essence, SLAs are beneficial for:</span>
<ul>
<li><strong>Service Providers:</strong> They set clear expectations and define performance standards.</li>
<li><strong>Customers:</strong> They have a transparent understanding of the services they can expect.</li>
<li><strong>Businesses:</strong> SLAs contribute to accountability, transparency, and customer satisfaction, ultimately impacting the bottom line positively.</li>
</ul>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="sla-examples"><div class="absolute" tabindex="-1"><a href="#sla-examples" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">SLA Examples</span></h3>
<span data-as="p">To illustrate the practical application and importance of effective SLA management, let’s explore some real-world examples across various industries:</span>
<!-- --><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px" data-component-part="scroll-area" data-table-wrapper="true" class="min-w-0 [--page-padding:20px] flex w-[calc(100%+(var(--page-padding)*2))] my-[1em] py-[1em] -mx-(--page-padding) max-w-none [contain:inline-size]"><div role="region" data-id="base-ui-_R_44ljddbsnlhjiuqsnpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] overflow-y-hidden! base-ui-disable-scrollbar" style="overflow:scroll" data-component-part="scroll-area-viewport" aria-label="Scrollable table"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" class="flex"><div class="px-(--page-padding) grow max-w-none table"><table class="m-0 min-w-full w-full max-w-none table [&amp;_th]:text-left [&amp;_td[data-numeric]]:tabular-nums [&amp;_td]:min-w-[150px]"><thead><tr><th><strong>Use Cases</strong></th><th><strong>Description</strong></th></tr></thead><tbody><tr><td>Cloud Services</td><td>This SLA between a cloud service provider like Checkly and its customers specifies uptime guarantees (e.g., 99.9% uptime), data security standards, and disaster recovery protocols.</td></tr><tr><td>IT Support</td><td>An agreement detailing response times for IT support requests, resolution times based on the severity of issues, and the modes of support available (e.g., phone, email, chat).</td></tr><tr><td>Telecommunications</td><td>SLA for a telecom company can include network availability targets, call quality standards, and maintenance window notifications.</td></tr></tbody></table></div></div></div></div>
<h2 class="flex whitespace-pre-wrap group font-semibold" id="what-is-an-slo-service-level-objective"><div class="absolute" tabindex="-1"><a href="#what-is-an-slo-service-level-objective" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">What is an SLO (Service Level Objective)</span></h2>
<span data-as="p"><a href="https://www.gartner.com/en/information-technology/glossary/slo-service-level-objective" target="_blank" rel="noreferrer" class="link">Service Level Objectives (SLOs)</a> are critical to managing and maintaining reliable and efficient systems. An SLO is a set of quantitative measures that define the level of service a system must deliver. This helps teams align their performance goals with user expectations. SLOs play a pivotal role in ensuring that services meet user needs while allowing organizations to manage their resources effectively.</span>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="slo-challenges"><div class="absolute" tabindex="-1"><a href="#slo-challenges" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">SLO Challenges</span></h3>
<span data-as="p">Implementing SLOs comes with a set of challenges. Teams often face difficulties in defining precise and meaningful objectives and striking the right balance between aggressiveness and achievability. The challenge lies in creating objectives that align with user expectations while being realistic regarding system capabilities. Additionally, unforeseen contingencies can impact the achievement of SLOs, requiring continuous adaptation and improvement.</span>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="slo-best-practices"><div class="absolute" tabindex="-1"><a href="#slo-best-practices" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">SLO Best Practices</span></h3>
<span data-as="p">To overcome challenges associated with SLOs, it is essential to follow best practices that streamline the process and enhance the effectiveness of these objectives:</span>
<ul>
<li><strong>Keep SLOs Simple and Clear:</strong> Simplicity is key when defining SLOs. Clear and straightforward objectives facilitate better understanding and communication across teams. Avoid overly complex or ambiguous metrics that can lead to confusion and misalignment.</li>
<li><strong>Account for Contingent Issues:</strong> Recognizing that unforeseen issues can impact service levels is crucial. Build flexibility into your SLOs to account for contingent issues. This allows teams to adapt and maintain service quality despite unexpected challenges.</li>
<li><strong>Create SLOs for Internal Systems:</strong> While SLOs are often associated with customer-facing services, internal systems also benefit from performance metrics. Implementing SLOs for internal services ensures that the entire infrastructure operates at optimal levels. This contributes to overall organizational efficiency.</li>
<li><strong>Don’t Create More Than Necessary SLOs:</strong> Creating an excessive number of SLOs can be counterproductive. Focus on the most critical aspects of your services and establish a manageable set of objectives. This enables teams to prioritize effectively and dedicate resources where they are most needed.</li>
</ul>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="who-needs-an-slo"><div class="absolute" tabindex="-1"><a href="#who-needs-an-slo" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Who Needs an SLO?</span></h3>
<span data-as="p">The adoption of SLOs is not limited to specific roles or teams. Anyone involved in delivering, managing, or maintaining services can benefit from implementing SLOs. Development teams, operations teams, and leadership play crucial roles in defining and achieving SLOs. SLOs serve as a unifying metric that aligns the efforts of various teams toward a common goal—ensuring a high-quality user experience.</span>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="slo-examples"><div class="absolute" tabindex="-1"><a href="#slo-examples" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">SLO Examples</span></h3>
<span data-as="p">To demonstrate how Service Level Objectives (SLOs) set the stage for measuring and achieving service quality, here are examples from various industries.</span>
<!-- --><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px" data-component-part="scroll-area" data-table-wrapper="true" class="min-w-0 [--page-padding:20px] flex w-[calc(100%+(var(--page-padding)*2))] my-[1em] py-[1em] -mx-(--page-padding) max-w-none [contain:inline-size]"><div role="region" data-id="base-ui-_R_74ljddbsnlhjiuqsnpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] overflow-y-hidden! base-ui-disable-scrollbar" style="overflow:scroll" data-component-part="scroll-area-viewport" aria-label="Scrollable table"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" class="flex"><div class="px-(--page-padding) grow max-w-none table"><table class="m-0 min-w-full w-full max-w-none table [&amp;_th]:text-left [&amp;_td[data-numeric]]:tabular-nums [&amp;_td]:min-w-[150px]"><thead><tr><th><strong>Use Cases</strong></th><th><strong>Description</strong></th></tr></thead><tbody><tr><td>E-commerce Website</td><td>An SLO for an e-commerce platform may include a page load time of under 2 seconds for 95% of all page views to enhance user experience and reduce bounce rates.</td></tr><tr><td>Online Banking</td><td>For an online banking service, an SLO can specify a transaction success rate of 99.5%, ensuring reliability and trust in digital transactions.</td></tr><tr><td>Cloud Storage</td><td>A cloud storage service can have an SLO that guarantees data retrieval times of less than 300 milliseconds for 99% of requests, providing quick access to stored information.</td></tr></tbody></table></div></div></div></div>
<h2 class="flex whitespace-pre-wrap group font-semibold" id="what-is-an-sli-service-level-indicator"><div class="absolute" tabindex="-1"><a href="#what-is-an-sli-service-level-indicator" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">What is an SLI (Service Level Indicator)</span></h2>
<span data-as="p"><a href="https://www.techtarget.com/searchcustomerexperience/definition/service-level-indicator" target="_blank" rel="noreferrer" class="link">Service Level Indicators (SLIs)</a> are fundamental components of service level management. They provide measurable metrics to evaluate the performance of a system. SLIs are specific, quantifiable measurements that give insights into various aspects of a service. This enables teams to assess the service’s reliability and effectiveness.</span>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="sli-challenges"><div class="absolute" tabindex="-1"><a href="#sli-challenges" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">SLI Challenges</span></h3>
<span data-as="p">Implementing SLIs comes with its share of challenges. Defining metrics that accurately represent the user experience can be complex. Teams often struggle with selecting the right indicators that align with user expectations and business goals. Additionally, ensuring that SLIs remain relevant and meaningful over time requires continuous attention and adaptation.</span>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="sli-best-practices"><div class="absolute" tabindex="-1"><a href="#sli-best-practices" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">SLI Best Practices</span></h3>
<span data-as="p">Overcoming challenges associated with SLIs involves following best practices that enhance their accuracy and relevance.</span>
<ul>
<li><strong>Create Precise and Measurable SLIs:</strong> SLIs should be crafted with precision, reflecting the specific aspects of a service that matter most to users. Measurable metrics allow for objective evaluation and facilitate data-driven decision-making. Avoid vague or overly broad indicators to ensure the effectiveness of SLIs.</li>
<li><strong>Keep SLIs Simple:</strong> Simplicity is key when designing SLIs. Clear and straightforward indicators are easier to understand and communicate across teams. Avoid unnecessary complexity that can lead to confusion and misinterpretation of performance metrics.</li>
</ul>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="who-needs-an-sli"><div class="absolute" tabindex="-1"><a href="#who-needs-an-sli" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Who Needs an SLI?</span></h3>
<span data-as="p">The importance of SLIs extends to various roles within an organization. Anyone involved in the development, deployment, or maintenance of services can benefit from incorporating SLIs into their processes. Development teams use SLIs to monitor the impact of code changes. Operations teams leverage SLIs to ensure system reliability. Leadership relies on SLIs to make informed decisions about resource allocation and strategy.</span>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="sli-examples"><div class="absolute" tabindex="-1"><a href="#sli-examples" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">SLI Examples</span></h3>
<span data-as="p">To refine our understanding of service measurement further, let’s examine some Service Level Indicators (SLIs) that quantify the performance of services.</span>
<!-- --><div role="presentation" style="position:relative;--scroll-area-corner-height:0px;--scroll-area-corner-width:0px" data-component-part="scroll-area" data-table-wrapper="true" class="min-w-0 [--page-padding:20px] flex w-[calc(100%+(var(--page-padding)*2))] my-[1em] py-[1em] -mx-(--page-padding) max-w-none [contain:inline-size]"><div role="region" data-id="base-ui-_R_a4ljddbsnlhjiuqsnpfiutb_-viewport" tabindex="-1" class="size-full rounded-[inherit] [--scroll-area-fade-size:32px] overflow-y-hidden! base-ui-disable-scrollbar" style="overflow:scroll" data-component-part="scroll-area-viewport" aria-label="Scrollable table"><div role="presentation" style="min-width:fit-content" data-component-part="scroll-area-content" class="flex"><div class="px-(--page-padding) grow max-w-none table"><table class="m-0 min-w-full w-full max-w-none table [&amp;_th]:text-left [&amp;_td[data-numeric]]:tabular-nums [&amp;_td]:min-w-[150px]"><thead><tr><th><strong>Use Cases</strong></th><th><strong>Description</strong></th></tr></thead><tbody><tr><td>Website Uptime</td><td>For a web hosting service, an SLI can measure the percentage of time the hosted websites are accessible to users, aiming for an uptime of 99.9%.</td></tr><tr><td>API Response</td><td>In API services, an SLI could be the average response time for API calls, with a target of responding within 500 milliseconds for 95% of the requests.</td></tr><tr><td>Customer Support Response</td><td>For a customer support team, an SLI can track the average response time to customer inquiries, with a goal of responding to 90% of inquiries within 1 hour.</td></tr></tbody></table></div></div></div></div>
<h2 class="flex whitespace-pre-wrap group font-semibold" id="why-are-slas-slos-and-slis-important"><div class="absolute" tabindex="-1"><a href="#why-are-slas-slos-and-slis-important" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Why are SLAs, SLOs, and SLIs Important?</span></h2>
<span data-as="p">Service Level Agreements (SLAs), Service Level Objectives (SLOs), and Service Level Indicators (SLIs) are integral components of effective service management. Each of them serves a unique purpose in ensuring the delivery of high-quality services. Understanding their importance is paramount for organizations striving to meet user expectations and maintain operational excellence.</span>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="ensuring-accountability-with-slas"><div class="absolute" tabindex="-1"><a href="#ensuring-accountability-with-slas" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Ensuring Accountability with SLAs</span></h3>
<span data-as="p">SLAs set the foundation for accountability and transparency. These agreements define the expected level of service a customer can anticipate. It also outlines measurable metrics such as response times, uptime, and resolution periods. By clearly defining these expectations, SLAs foster trust between service providers and customers. When complied with, SLAs help organizations demonstrate their commitment to delivering reliable and timely services.</span>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="aligning-objectives-with-slos"><div class="absolute" tabindex="-1"><a href="#aligning-objectives-with-slos" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Aligning Objectives with SLOs</span></h3>
<span data-as="p">SLOs bridge the gap between user expectations and system capabilities. These objectives establish quantifiable performance goals. This allows teams to align their efforts with user needs. SLOs serve as a roadmap for maintaining service quality. They help organizations strike a balance between ambitious targets and achievable benchmarks. Establishing SLOs encourages continuous improvement, adaptability, and a proactive approach to managing service levels.</span>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="gaining-insights-through-slis"><div class="absolute" tabindex="-1"><a href="#gaining-insights-through-slis" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Gaining Insights Through SLIs</span></h3>
<span data-as="p">SLIs provide a granular view of service performance. These indicators offer specific, measurable metrics that serve as the building blocks for SLOs. SLIs enable teams to monitor various aspects of service. These range from latency and error rates to user interactions. By regularly evaluating SLIs, organizations gain valuable insights into the real-time health of their services. This process empowers them to make informed decisions, identify areas for improvement, and respond promptly to emerging issues.</span>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="the-collective-impact"><div class="absolute" tabindex="-1"><a href="#the-collective-impact" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">The Collective Impact</span></h3>
<span data-as="p">When integrated, SLAs, SLOs, and SLIs form a comprehensive framework for service excellence. SLAs provide a contractual foundation, SLOs establish performance objectives, and SLIs offer tangible metrics to measure success. This triad ensures a holistic approach to service management, aligning customer expectations with organizational capabilities.</span>
<h2 class="flex whitespace-pre-wrap group font-semibold" id="practical-example-implementing-slis-slos-and-slas-for-apis"><div class="absolute" tabindex="-1"><a href="#practical-example-implementing-slis-slos-and-slas-for-apis" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">Practical Example: Implementing SLIs, SLOs, and SLAs for APIs</span></h2>
<span data-as="p">In the context of managing a customer-facing, business-critical API, it’s essential to establish clear standards and expectations to ensure high-quality service. Here, we dive into an example that outlines SLIs, SLOs, and SLAs, using a practical scenario.</span>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="sli-service-level-indicator"><div class="absolute" tabindex="-1"><a href="#sli-service-level-indicator" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">SLI: Service Level Indicator</span></h3>
<span data-as="p">The SLI acts as a measure of the performance and reliability of the API. In this case, the SLI is defined by the API’s ability to respond successfully with HTTP status codes ranging from 200 to 499, coupled with a response time of under one second. This metric is crucial because it quantifies the operational performance of the API from a technical standpoint, focusing on availability and speed.</span>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="slo-service-level-objective"><div class="absolute" tabindex="-1"><a href="#slo-service-level-objective" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">SLO: Service Level Objective</span></h3>
<span data-as="p">Building on the SLI, the SLO sets a target for the level of service the API aims to deliver. For our API, the objective is that the SLI conditions (response codes within 200-499 and response times below one second) are met for the 99th percentile of all requests. This means that out of 100 requests, at least 99 should satisfy these criteria. The SLO is a commitment to maintaining a high standard of service, ensuring that nearly all requests are handled efficiently and effectively.</span>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="sla-service-level-agreement"><div class="absolute" tabindex="-1"><a href="#sla-service-level-agreement" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer">SLA: Service Level Agreement</span></h3>
<span data-as="p">The SLA transforms the SLO into a formal agreement with the customer. It guarantees that the service will achieve the SLO targets for a specified period, in this case, a quarter. The SLA also outlines the compensation customers will receive if the service fails to meet these expectations. This compensation could take various forms, such as financial credits, discounts, or other remedies. The SLA is a crucial part of customer contracts, providing a legal framework that ensures accountability and offers reassurance to customers about the reliability of the service.</span>
<span data-as="p">By setting these SLIs, SLOs, and SLAs, the company not only commits to delivering a high-quality API service but also provides transparency and trust to its customers. This framework helps manage expectations, foster customer satisfaction, and drive continuous improvement in service performance.</span>
<h2 class="flex whitespace-pre-wrap group font-semibold" id="how-checkly-can-help-you-hit-your-slas"><div class="absolute" tabindex="-1"><a href="#how-checkly-can-help-you-hit-your-slas" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer"><strong>How Checkly Can Help You Hit Your SLAs</strong></span></h2>
<span data-as="p"><a href="https://www.checklyhq.com/" target="_blank" rel="noreferrer" class="link">Checkly</a> focuses on Synthetic Monitoring to track how well websites, applications, and APIs work. Its goal is to help <a href="https://www.checklyhq.com/blog/how-to-monitor-all-the-nines-of-your-service-level-agreements/" target="_blank" rel="noreferrer" class="link">meet Service Level Agreements (SLAs)</a> with customers with its features such as API checks, browser checks, heartbeat monitoring, etc.</span>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="api-checks"><div class="absolute" tabindex="-1"><a href="#api-checks" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer"><strong>API Checks</strong></span></h3>
<span data-as="p"><a href="https://www.checklyhq.com/blog/what-is-api-monitoring/" target="_blank" rel="noreferrer" class="link">API checks</a> monitor vital API endpoints frequently from various global locations. They allow for the validation of response codes and bodies to ensure accuracy, while also keeping an eye on response times to maintain a quick and efficient experience. Additionally, the feature of receiving instant alerts when any monitoring checks indicate a failure provides the assurance needed for maintaining smooth API operations. This proactive approach to monitoring ensures that APIs function seamlessly, enhancing reliability and user satisfaction.</span>
<span data-ramka-trigger="" class="zoom-image-trigger contents cursor-zoom-in"><span class="contents"><picture class="contents"><img data-path="images/learn/images/sla-01.png" src="https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-01.png?fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=4eaf3383622adc1fb44305d7481b9820" alt="a checkly dashboard" class="object-contain" width="1600" height="697" decoding="async" sizes="(max-width: 1024px) 100vw, 704px" srcSet="https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-01.png?w=280&amp;fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=f33657c8b105e5b6a5e53e36e03631d9 280w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-01.png?w=560&amp;fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=ba34e3cc5a981f6ef04c866ee7cc85bd 560w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-01.png?w=840&amp;fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=aac24619c1a411ab1f88e9d805cd0ab7 840w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-01.png?w=1100&amp;fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=8129e1d918a18fcafe6049f52c00603a 1100w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-01.png?w=1650&amp;fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=d3d81867ef4e2bb1df412c3d41d7085b 1650w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-01.png?w=2500&amp;fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=b473b56fd080e3ed98813c32866a05be 2500w" data-optimize="true" style="aspect-ratio:1600 / 697"/></picture></span></span><button type="button" aria-haspopup="dialog" aria-expanded="false" data-ramka-trigger="" aria-label="Expand image" class="inline-flex shrink-0 cursor-pointer items-center justify-center rounded-full border border-black/20 bg-white/55 text-neutral-900 shadow-[0_0.5px_1px_rgb(0_0_0/0.12),0_1px_2px_rgb(0_0_0/0.08),inset_0_0.5px_0_rgb(255_255_255/0.65)] backdrop-blur-[40px] backdrop-saturate-150 transition-[background-color,box-shadow,scale,opacity,color] duration-150 ease-out hover:bg-white/65 active:scale-[0.96] active:bg-white/75 focus:outline-hidden focus-visible:shadow-[0_0_0_2px_rgb(0_0_0/0.25),0_0.5px_1px_rgb(0_0_0/0.12),0_1px_2px_rgb(0_0_0/0.08),inset_0_0.5px_0_rgb(255_255_255/0.65)] disabled:cursor-not-allowed disabled:opacity-30 disabled:active:scale-100 dark:border-white/25 dark:bg-neutral-900/45 dark:text-white dark:shadow-[0_0_0_0.5px_#000,0_0.5px_1px_rgb(0_0_0/0.45),0_1px_2px_rgb(0_0_0/0.35),inset_0_0.5px_0_rgb(255_255_255/0.14)] dark:hover:bg-neutral-900/55 dark:active:bg-neutral-900/65 dark:focus-visible:shadow-[0_0_0_2px_rgb(255_255_255/0.4),0_0_0_0.5px_#000,0_0.5px_1px_rgb(0_0_0/0.45),0_1px_2px_rgb(0_0_0/0.35),inset_0_0.5px_0_rgb(255_255_255/0.14)] absolute z-10 size-px overflow-hidden whitespace-nowrap [clip-path:inset(50%)] pointer-events-none focus-visible:size-9 focus-visible:overflow-visible focus-visible:[clip-path:none] focus-visible:pointer-events-auto in-[a]:hidden"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0"><path d="M10.75 2.75H15.25V7.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M15.25 2.75L10.75 7.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.75 10.75V15.25H7.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.75 15.25L7.25 10.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button>
<span data-as="p"><em>Check out <a href="https://www.youtube.com/watch?v=38ZXJy-nlvI" target="_blank" rel="noreferrer" class="link">this tutorial</a> to find out how Checkly’s API checks work.</em></span>
<span data-as="p">Checkly’s API checks can help you achieve your SLAs through:</span>
<ul>
<li><strong>Continuous Monitoring:</strong> Checkly allows you to continuously monitor your APIs from multiple global locations. This helps ensure that your services are available and responsive across different regions, aligning with SLA requirements for uptime and performance.</li>
<li><strong>Automated Testing in Production:</strong> You can automate API testing to validate the functionality, performance, and reliability of your endpoints. This includes checking for correct status codes, response times, and validating response bodies against expected outcomes. API monitoring helps in the early detection of issues that could breach SLA terms.</li>
<li><strong>Alerting and Notifications:</strong> Checkly provides real-time alerts and notifications when your APIs do not meet predefined thresholds or when failures occur. This immediate feedback loop enables you to quickly respond to and resolve issues before they impact your SLA commitments.</li>
<li><strong>Customizable Check Intervals:</strong> You can customize how frequently your APIs are checked, allowing for more frequent monitoring of critical services that have strict SLA requirements. This ensures that any downtime or performance degradation is detected and addressed promptly.</li>
<li><strong>Performance Tracking:</strong> Checkly tracks the performance of your APIs over time, offering insights into trends and potential areas of improvement. This data can help you optimize your services to not only meet but exceed SLA expectations regarding response times and reliability.</li>
<li><strong>Detailed Reporting:</strong> The platform provides detailed reports and dashboards that give visibility into API health, performance metrics, and historical data. These insights can be used to demonstrate compliance with SLAs during audits and reviews with stakeholders.</li>
</ul>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="browser-checks"><div class="absolute" tabindex="-1"><a href="#browser-checks" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer"><strong>Browser Checks</strong></span></h3>
<span data-as="p">On the other hand, Checkly’s Playwright-based <a class="link" href="/docs/detect/synthetic-monitoring/browser-checks/overview">browser checks</a> mimic user actions to make sure key processes work smoothly, and the heartbeat feature checks if systems are running properly. These capabilities enable the monitoring of response times, uptime, functionality, and internal systems performance. This comprehensive monitoring supports SLAs in keeping services healthy and running efficiently.</span>
<span data-ramka-trigger="" class="zoom-image-trigger contents cursor-zoom-in"><span class="contents"><picture class="contents"><img data-path="images/learn/images/sla-02.png" src="https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-02.png?fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=93169167b816810cc1dab5bd13028f92" alt="a checkly dashboard" class="object-contain" width="1600" height="701" decoding="async" sizes="(max-width: 1024px) 100vw, 704px" srcSet="https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-02.png?w=280&amp;fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=a5cf851c5220462c0db65007c4b3fa39 280w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-02.png?w=560&amp;fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=c2d97fa785507a06c13dd5bbc0e9ac6b 560w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-02.png?w=840&amp;fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=034bebeb20cc237e2a15abba08cc41b4 840w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-02.png?w=1100&amp;fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=02342b705aee751509eb6e0465d5c1f0 1100w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-02.png?w=1650&amp;fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=21c0e9904a197062f6072b9359bd33e5 1650w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-02.png?w=2500&amp;fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=a076027e85314693ba2396dbdd6913fd 2500w" data-optimize="true" style="aspect-ratio:1600 / 701"/></picture></span></span><button type="button" aria-haspopup="dialog" aria-expanded="false" data-ramka-trigger="" aria-label="Expand image" class="inline-flex shrink-0 cursor-pointer items-center justify-center rounded-full border border-black/20 bg-white/55 text-neutral-900 shadow-[0_0.5px_1px_rgb(0_0_0/0.12),0_1px_2px_rgb(0_0_0/0.08),inset_0_0.5px_0_rgb(255_255_255/0.65)] backdrop-blur-[40px] backdrop-saturate-150 transition-[background-color,box-shadow,scale,opacity,color] duration-150 ease-out hover:bg-white/65 active:scale-[0.96] active:bg-white/75 focus:outline-hidden focus-visible:shadow-[0_0_0_2px_rgb(0_0_0/0.25),0_0.5px_1px_rgb(0_0_0/0.12),0_1px_2px_rgb(0_0_0/0.08),inset_0_0.5px_0_rgb(255_255_255/0.65)] disabled:cursor-not-allowed disabled:opacity-30 disabled:active:scale-100 dark:border-white/25 dark:bg-neutral-900/45 dark:text-white dark:shadow-[0_0_0_0.5px_#000,0_0.5px_1px_rgb(0_0_0/0.45),0_1px_2px_rgb(0_0_0/0.35),inset_0_0.5px_0_rgb(255_255_255/0.14)] dark:hover:bg-neutral-900/55 dark:active:bg-neutral-900/65 dark:focus-visible:shadow-[0_0_0_2px_rgb(255_255_255/0.4),0_0_0_0.5px_#000,0_0.5px_1px_rgb(0_0_0/0.45),0_1px_2px_rgb(0_0_0/0.35),inset_0_0.5px_0_rgb(255_255_255/0.14)] absolute z-10 size-px overflow-hidden whitespace-nowrap [clip-path:inset(50%)] pointer-events-none focus-visible:size-9 focus-visible:overflow-visible focus-visible:[clip-path:none] focus-visible:pointer-events-auto in-[a]:hidden"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0"><path d="M10.75 2.75H15.25V7.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M15.25 2.75L10.75 7.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.75 10.75V15.25H7.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.75 15.25L7.25 10.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button>
<span data-as="p">Checkly’s browser checks can help you achieve your SLAs through:</span>
<ul>
<li><strong>Real User Simulation:</strong> Checkly’s browser checks use real browsers to simulate user actions, such as clicking links, filling out forms, and navigating through web pages. This allows you to test and monitor the end-to-end user experience, ensuring that your application meets SLA requirements for functionality and user satisfaction.</li>
<li><strong>Global Coverage:</strong> By running browser checks from multiple locations worldwide, you can ensure that your web application delivers a consistent user experience across different geographical regions. This is particularly important for SLAs that specify performance standards across diverse user bases.</li>
<li><strong>Performance Metrics:</strong> Checkly provides detailed performance metrics, such as page load times, which are crucial for meeting SLAs related to website speed and responsiveness. Monitoring these metrics allows you to identify and address performance bottlenecks before they affect user satisfaction.</li>
<li><strong>Visual Regression Testing:</strong> You can use Checkly to perform <a href="https://www.checklyhq.com/blog/visual-regression-testing-with-playwright/" target="_blank" rel="noreferrer" class="link">visual regression testing</a>, which ensures that your web application’s visual elements render correctly across different browsers and devices. This helps maintain a high-quality user interface, in line with SLA standards for usability and design.</li>
<li><strong>Error Detection and Alerting:</strong> Checkly alerts you in real-time if a browser check fails, enabling you to quickly identify and resolve issues such as broken links, malfunctioning features, or downtime. This rapid response capability is essential for adhering to SLAs that stipulate minimal downtime and quick issue resolution.</li>
<li><strong>Customizable Check Intervals:</strong> You can configure the frequency of your browser checks to match the criticality of different application components. For example, you might run checks on key user flows every few minutes to ensure high availability and performance, aligning with stringent SLA requirements.</li>
<li><strong>Reporting and Insights:</strong> Checkly provides comprehensive reports and dashboards that offer insights into the historical performance and reliability of your web application. These insights can be used to demonstrate compliance with SLAs during stakeholder reviews and to identify areas for improvement.</li>
</ul>
<span data-as="p"><em>To find out more about Checkly’s browser checks &amp; how to get started, check out <a class="link" href="/docs/detect/synthetic-monitoring/browser-checks/overview">this article</a>.</em></span>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="checkly-best-practices"><div class="absolute" tabindex="-1"><a href="#checkly-best-practices" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer"><strong>Checkly Best Practices</strong></span></h3>
<span data-as="p">If you’re using Checkly, here are some best practices that will help you make sure you’re doing everything you can to adhere to your SLAs.</span>
<ul>
<li><a href="https://www.checklyhq.com/blog/how-to-monitor-all-the-nines-of-your-service-level-agreements/" target="_blank" rel="noreferrer" class="link">Monitor your critical APIs more frequently</a>. To ensure that you’re always aware of the health of your critical APIs, ping them in an interval between 10s and 2min.</li>
<li>Use <a href="https://www.checklyhq.com/blog/parallel-scheduling/" target="_blank" rel="noreferrer" class="link">parallel scheduling</a> to detect regional outages as quickly as possible and <a href="https://www.checklyhq.com/blog/what-is-mean-time-to-repair-mttr/" target="_blank" rel="noreferrer" class="link">reduce your MTTR</a>.</li>
<li>Use <a href="https://www.checklyhq.com/docs/communicate/alerts/configuration#retry-strategies" target="_blank" rel="noreferrer" class="link">smart retries</a>–pick one of the three retry strategies we offer based on the frequency of your check runs.</li>
</ul>
<span data-as="p"><em>The impact of check frequency on your SLAs:</em></span>
<span data-ramka-trigger="" class="zoom-image-trigger contents cursor-zoom-in"><span class="contents"><picture class="contents"><img data-path="images/learn/images/sla-03.png" src="https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-03.png?fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=f65c481f4a89c821b1b352474635565d" alt="a checkly dashboard" class="object-contain" width="1306" height="1162" decoding="async" sizes="(max-width: 1024px) 100vw, 704px" srcSet="https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-03.png?w=280&amp;fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=734bc36463a7a8405429019a0e31ab8d 280w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-03.png?w=560&amp;fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=5396fa7f88882f23f6495cdca72ce0d0 560w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-03.png?w=840&amp;fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=7df36aa7bf5328b4dd010a2f4b261625 840w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-03.png?w=1100&amp;fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=2932fd50ee97ae1be3fb079a2957d1db 1100w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-03.png?w=1650&amp;fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=9922991a5c1153171bf7ab7fa2b3fdfb 1650w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-03.png?w=2500&amp;fit=max&amp;auto=format&amp;n=6qveEuGHBRjnnvr2&amp;q=85&amp;s=ce83c47e5f44c2d067eb6e9c0ef9ad5f 2500w" data-optimize="true" style="aspect-ratio:1306 / 1162"/></picture></span></span><button type="button" aria-haspopup="dialog" aria-expanded="false" data-ramka-trigger="" aria-label="Expand image" class="inline-flex shrink-0 cursor-pointer items-center justify-center rounded-full border border-black/20 bg-white/55 text-neutral-900 shadow-[0_0.5px_1px_rgb(0_0_0/0.12),0_1px_2px_rgb(0_0_0/0.08),inset_0_0.5px_0_rgb(255_255_255/0.65)] backdrop-blur-[40px] backdrop-saturate-150 transition-[background-color,box-shadow,scale,opacity,color] duration-150 ease-out hover:bg-white/65 active:scale-[0.96] active:bg-white/75 focus:outline-hidden focus-visible:shadow-[0_0_0_2px_rgb(0_0_0/0.25),0_0.5px_1px_rgb(0_0_0/0.12),0_1px_2px_rgb(0_0_0/0.08),inset_0_0.5px_0_rgb(255_255_255/0.65)] disabled:cursor-not-allowed disabled:opacity-30 disabled:active:scale-100 dark:border-white/25 dark:bg-neutral-900/45 dark:text-white dark:shadow-[0_0_0_0.5px_#000,0_0.5px_1px_rgb(0_0_0/0.45),0_1px_2px_rgb(0_0_0/0.35),inset_0_0.5px_0_rgb(255_255_255/0.14)] dark:hover:bg-neutral-900/55 dark:active:bg-neutral-900/65 dark:focus-visible:shadow-[0_0_0_2px_rgb(255_255_255/0.4),0_0_0_0.5px_#000,0_0.5px_1px_rgb(0_0_0/0.45),0_1px_2px_rgb(0_0_0/0.35),inset_0_0.5px_0_rgb(255_255_255/0.14)] absolute z-10 size-px overflow-hidden whitespace-nowrap [clip-path:inset(50%)] pointer-events-none focus-visible:size-9 focus-visible:overflow-visible focus-visible:[clip-path:none] focus-visible:pointer-events-auto in-[a]:hidden"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0"><path d="M10.75 2.75H15.25V7.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M15.25 2.75L10.75 7.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.75 10.75V15.25H7.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.75 15.25L7.25 10.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button>
<h3 class="flex whitespace-pre-wrap group font-semibold" id="integrating-into-your-existing-workflow"><div class="absolute" tabindex="-1"><a href="#integrating-into-your-existing-workflow" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="cursor-pointer"><strong>Integrating Into Your Existing Workflow</strong></span></h3>
<span data-as="p">Checkly enables you to monitor your SLAs by allowing you to monitor services closely and check how they perform worldwide in over 20 locations. You get instant alerts when there’s any issue, helping you react quickly to fix it. The platform keeps an eye on services all the time and adjusts to new needs or changes.</span>
<span data-as="p">Checkly integrates on-call tools like PagerDuty and Opsgenie for handling problems, and you can also set up your own connections with webhooks. This helps fix issues fast and keeps things running smoothly.</span>
<span data-as="p">Moreover, Checkly can integrate with your continuous integration and deployment (CI/CD) pipelines, allowing for automated checks to run as part of your development process. This ensures that any changes to your services maintain or improve compliance with SLA requirements before deployment to production.</span>
<span data-as="p">Checkly makes it easier for organizations to set up their monitoring in a way that meets their needs, looks after their services everywhere, and keeps their standards high by quickly dealing with any problems that come up.</span>
<h2 class="flex whitespace-pre-wrap group font-semibold" id="conclusion"><div class="absolute" tabindex="-1"><a href="#conclusion" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100 focus:opacity-100 focus:outline-0 group/link" aria-label="Navigate to header">​<div class="size-6 rounded-md flex items-center justify-center shadow-xs text-gray-400 dark:text-white/50 dark:bg-background-dark dark:brightness-[1.35] dark:ring-1 dark:hover:brightness-150 bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20 group-focus/link:border-2 group-focus/link:border-primary dark:group-focus/link:border-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3 shrink-0"><path d="M8.50001 6.827C8.14801 6.995 7.81801 7.225 7.52701 7.517L7.51701 7.527C6.13601 8.908 6.13601 11.146 7.51701 12.527L9.69201 14.702C11.073 16.083 13.311 16.083 14.692 14.702L14.702 14.692C16.083 13.311 16.083 11.073 14.702 9.692L13.771 8.761" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9.50002 11.173C9.85202 11.005 10.182 10.775 10.473 10.483L10.483 10.473C11.864 9.092 11.864 6.854 10.483 5.473L8.30802 3.298C6.92702 1.917 4.68902 1.917 3.30802 3.298L3.29802 3.308C1.91702 4.689 1.91702 6.927 3.29802 8.308L4.22902 9.239" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></div></a></div><span class="min-w-0 break-words cursor-pointer"><strong>Conclusion</strong></span></h2>
<span data-as="p">To put it simply, knowing what SLA, SLO, and SLI mean is really important for anyone working with services, whether you’re providing the service, working within a team, or you’re the customer.</span>
<ul>
<li><strong>SLIs</strong> are like measuring how well your service is doing, similar to checking your health.</li>
<li><strong>SLOs</strong> are like your health goals, giving you something to aim for in how well your service should work.</li>
<li><strong>SLAs</strong> make everything official, giving both the service provider and the customer clear rules and protection under the law for what the service should be like.</li>
</ul>
<span data-as="p">Think of these three terms as the basic parts you need for managing a service that’s responsible, high-quality, and always getting better.</span>
<span data-as="p">Whether you use them on their own or together, they help make sure you’re offering a great service and always looking to do better.</span>
<span data-as="p">Checkly can become your most valuable partner in achieving your SLIs, SLOs, and SLAs. <a href="https://calendly.com/d/5gk-49g-f76/checkly-demo?month=2024-02" target="_blank" rel="noreferrer" class="link">Schedule a customized demo to find out how.</a></span></div><div class="feedback-toolbar pb-16 w-full flex flex-col gap-y-8"><div class="flex flex-row flex-wrap gap-4 items-center justify-between"><p class="inline-block text-sm text-gray-600 dark:text-gray-400 whitespace-nowrap">Was this page helpful?</p><div class="flex flex-wrap grow gap-3 items-center justify-between"><div class="flex gap-3 items-center"><button id="feedback-thumbs-up" class="px-3.5 py-2 flex flex-row gap-3 items-center border-standard rounded-xl text-gray-600 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 bg-white/50 dark:bg-codeblock/50 hover:border-gray-500 hover:dark:border-gray-500 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-primary dark:focus-visible:outline-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-current"><path d="M5.25 7.494C5.25 7.014 5.423 6.55 5.736 6.187L10 1.25C10.854 1.677 11.25 2.678 10.92 3.574L9.75 6.75H14.152C15.465 6.75 16.421 7.993 16.085 9.262L14.894 13.762C14.662 14.639 13.868 15.25 12.961 15.25H7.25C6.145 15.25 5.25 14.355 5.25 13.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M4.25 6.75H2.75C2.19772 6.75 1.75 7.19772 1.75 7.75V14.25C1.75 14.8023 2.19772 15.25 2.75 15.25H4.25C4.80228 15.25 5.25 14.8023 5.25 14.25V7.75C5.25 7.19772 4.80228 6.75 4.25 6.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><small class="text-sm font-normal leading-4">Yes</small></button><button id="feedback-thumbs-down" class="px-3.5 py-2 flex flex-row gap-3 items-center border-standard rounded-xl text-gray-600 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 bg-white/50 dark:bg-codeblock/50 hover:border-gray-500 hover:dark:border-gray-500 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-primary dark:focus-visible:outline-primary-light"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-4 shrink-0 text-current"><path d="M5.25 10.506C5.25 10.986 5.423 11.45 5.736 11.813L10 16.75C10.854 16.323 11.25 15.322 10.92 14.426L9.75 11.25H14.152C15.465 11.25 16.421 10.007 16.085 8.738L14.894 4.238C14.662 3.361 13.868 2.75 12.961 2.75H7.25C6.145 2.75 5.25 3.645 5.25 4.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M4.25 2.75H2.75C2.19772 2.75 1.75 3.19772 1.75 3.75V10.25C1.75 10.8023 2.19772 11.25 2.75 11.25H4.25C4.80228 11.25 5.25 10.8023 5.25 10.25V3.75C5.25 3.19772 4.80228 2.75 4.25 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><small class="text-sm font-normal leading-4">No</small></button></div><div class="flex gap-3"><a class="h-fit whitespace-nowrap px-3.5 py-2 flex flex-row gap-3 items-center border-standard rounded-xl text-gray-600 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 bg-white/50 dark:bg-codeblock/50 hover:border-gray-500 hover:dark:border-gray-500" target="_blank" rel="noopener noreferrer" href="https://github.com/checkly/docs/edit/main/learn/incidents/slo-sla-sli.mdx"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3.5 block shrink-0 text-current"><path d="M13.953 7.57801L15.062 6.46901C15.648 5.88301 15.648 4.93301 15.062 4.34801L13.653 2.93901C13.067 2.35301 12.117 2.35301 11.532 2.93901L10.423 4.04801L13.953 7.57801Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M8.922 5.547L4.147 10.322C3.897 10.572 3.718 10.884 3.627 11.226L2.5 15.499L6.773 14.372C7.115 14.282 7.427 14.102 7.677 13.852L12.452 9.077" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M10.672 7.297L6.26501 11.704" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="currentColor" stroke="none" aria-hidden="true" class="size-3.5 hidden group-hover:block text-gray-500 dark:text-gray-400 group-hover:text-gray-700 dark:group-hover:text-gray-200 shrink-0"><path d="M15.5921 3.817L14.1831 2.407C13.3051 1.531 11.8781 1.531 11.0011 2.407L9.89211 3.516C9.59911 3.809 9.59911 4.284 9.89211 4.577L13.4221 8.107C13.5681 8.253 13.7601 8.327 13.9521 8.327C14.1441 8.327 14.3361 8.254 14.4821 8.107L15.5921 6.998C16.4681 6.121 16.4681 4.694 15.5921 3.817Z" fill="currentColor"></path><path d="M11.6556 8.81359L7.14727 13.322C6.99127 13.478 6.79527 13.59 6.58227 13.647L3.55427 14.446L4.35327 11.418C4.41027 11.204 4.52227 11.009 4.67827 10.853L9.18662 6.34459C9.47962 6.05159 9.47962 5.57659 9.18662 5.28359C8.89362 4.99059 8.41862 4.99059 8.12562 5.28359L3.61727 9.79198C3.27427 10.135 3.02727 10.565 2.90327 11.035L1.77627 15.308C1.70827 15.566 1.78227 15.841 1.97127 16.03C2.11427 16.173 2.30527 16.25 2.50127 16.25C2.56527 16.25 2.62927 16.242 2.69227 16.225L6.96527 15.098C7.43527 14.974 7.86527 14.727 8.20827 14.384L12.7166 9.87559C13.0096 9.58259 13.0096 9.10759 12.7166 8.81459C12.4236 8.52159 11.9486 8.52059 11.6556 8.81359Z" fill="currentColor"></path><path d="M5.73539 12.2339C5.88139 12.3799 6.07339 12.4539 6.26539 12.4539C6.45739 12.4539 6.64939 12.3809 6.79539 12.2339L10.9399 8.08947C11.2329 7.79647 11.2329 7.32147 10.9399 7.02847C10.6469 6.73547 10.1719 6.73547 9.87889 7.02847L5.73439 11.1729C5.44139 11.4659 5.44239 11.9409 5.73539 12.2339Z" fill="currentColor"></path></svg><small class="text-sm leading-4">Suggest edits</small></a><a class="h-fit whitespace-nowrap px-3.5 py-2 flex flex-row gap-3 items-center border-standard rounded-xl text-gray-600 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 bg-white/50 dark:bg-codeblock/50 hover:border-gray-500 hover:dark:border-gray-500" target="_blank" rel="noopener noreferrer" href="https://github.com/checkly/docs/issues/new?title=Issue on docs&amp;body=Path: /learn/incidents/slo-sla-sli"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-3.5 block shrink-0 text-current"><path d="M7.63801 3.49498L2.21301 12.891C1.60801 13.939 2.36401 15.25 3.57501 15.25H14.425C15.636 15.25 16.392 13.94 15.787 12.891L10.362 3.49498C9.75701 2.44698 8.24301 2.44698 7.63801 3.49498Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 6.5V10" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M9 13.569C8.448 13.569 8 13.12 8 12.569C8 12.018 8.448 11.569 9 11.569C9.552 11.569 10 12.018 10 12.569C10 13.12 9.552 13.569 9 13.569Z" fill="currentColor" stroke="none"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="currentColor" stroke="none" aria-hidden="true" class="size-3.5 hidden group-hover:block text-gray-500 dark:text-gray-400 group-hover:text-gray-700 dark:group-hover:text-gray-200 shrink-0"><path d="M16.4366 12.5151L11.0103 3.11316C10.5904 2.39096 9.83896 1.96045 9.00006 1.96045C8.16116 1.96045 7.40976 2.39106 6.98976 3.11316L6.98876 3.11523L1.56296 12.5156C1.14356 13.2436 1.14356 14.1128 1.56396 14.8398C1.98386 15.5664 2.73586 16 3.57516 16H14.4247C15.2641 16 16.016 15.5664 16.4359 14.8398C16.8563 14.1127 16.8565 13.2436 16.4366 12.5151ZM8.25016 6.75C8.25016 6.3359 8.58606 6 9.00016 6C9.41426 6 9.75016 6.3359 9.75016 6.75V9.75C9.75016 10.1641 9.41426 10.5 9.00016 10.5C8.58606 10.5 8.25016 10.1641 8.25016 9.75V6.75ZM9.00016 13.5C8.44816 13.5 8.00016 13.0498 8.00016 12.5C8.00016 11.9502 8.44816 11.5 9.00016 11.5C9.55216 11.5 10.0002 11.9502 10.0002 12.5C10.0002 13.0498 9.55216 13.5 9.00016 13.5Z" fill="currentColor"></path></svg><small class="text-sm leading-4">Raise issue</small></a></div></div></div></div><nav id="pagination" aria-label="Pagination" class="grid lg:grid-cols-2 gap-4"><a rel="prev" data-component-part="pagination-prev" class="group flex items-center min-w-0 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary dark:focus-visible:outline-primary-light border border-gray-200/70 dark:border-gray-800/70 rounded-xl py-3 px-4 hover:border-gray-300 dark:hover:border-gray-700 justify-start pagination-prev" href="/docs/learn/incidents/reduce-mttd"><div class="space-y-1 min-w-0 max-w-full"><div class="truncate font-medium text-gray-900 dark:text-gray-200" data-component-part="pagination-title">Reduce Mean Time to Detection MTTD - Best Practices Guide</div><div class="flex items-center text-sm text-gray-500 dark:text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-300 gap-x-1"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-2.5 shrink-0 text-gray-400 dark:text-gray-600 group-hover:text-gray-500 dark:group-hover:text-gray-500" data-component-part="pagination-chevron"><path d="M11.5 15.25L5.25 9L11.5 2.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><span class="font-medium" data-component-part="pagination-label">Previous</span></div></div></a><a rel="next" data-component-part="pagination-next" class="group flex items-center min-w-0 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary dark:focus-visible:outline-primary-light border border-gray-200/70 dark:border-gray-800/70 rounded-xl py-3 px-4 hover:border-gray-300 dark:hover:border-gray-700 justify-end pagination-next" href="/docs/learn/incidents/what-is-incident-response"><div class="space-y-1 min-w-0 max-w-full"><div class="truncate font-medium text-gray-900 dark:text-gray-200 text-right" data-component-part="pagination-title">What is Incident Response? Fundamentals and best practices</div><div class="flex items-center text-sm text-gray-500 dark:text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-300 gap-x-1 flex-row-reverse"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-2.5 shrink-0 text-gray-400 dark:text-gray-600 group-hover:text-gray-500 dark:group-hover:text-gray-500" data-component-part="pagination-chevron"><path d="M6.5 2.75L12.75 9L6.5 15.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><span class="font-medium" data-component-part="pagination-label">Next</span></div></div></a></nav><div data-assistant-bar="" class="left-0 right-0 sticky bottom-0 w-full overflow-hidden z-20 pointer-events-none print:hidden"><div class="chat-assistant-floating-input w-full group/assistant-bar relative before:content-[&quot;&quot;] before:absolute before:left-0 before:right-0 before:top-[calc(50%-0.5rem)] sm:before:top-[calc(50%-0.75rem)] before:h-[200px] before:bg-background-light dark:before:bg-background-dark translate-y-[100px] opacity-0"><div class="relative pb-4 sm:pb-6"><div class="flex flex-col w-full pointer-events-auto bg-background-light dark:bg-background-dark border border-gray-200 dark:border-white/10 focus-within:border-primary dark:focus-within:border-primary-light transition-colors rounded-full shadow-none py-2 px-2"><div class="relative flex items-end"><input type="text" placeholder="Ask a question..." aria-label="Ask a question..." class="chat-assistant-input w-full bg-transparent border-0 peer/input text-gray-900 dark:text-gray-100 placeholder-gray-600 dark:placeholder-gray-300 outline-hidden! focus:outline-hidden! focus:ring-0 py-2.5 pl-3.5 pr-10 font-bodyWeight text-sm" value=""/><button class="chat-assistant-send-button flex justify-center items-center rounded-full p-1 size-6 bg-primary/30 dark:bg-primary-dark/30 absolute right-2.5 bottom-2" aria-label="Send message" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-2.5 shrink-0 text-white dark:text-white"><path d="M9.0 1.5754L8.9999 16.4171" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.2563 8.319L8.9999 1.5754L15.7435 8.3191" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div></div></div></div><footer id="footer" class="flex gap-12 justify-between pt-10 border-t border-gray-100 sm:flex dark:border-gray-800/50 pb-28"><div class="flex gap-6 flex-wrap"><a href="https://x.com/checklyhq" target="_blank" rel="noopener noreferrer" class="h-fit"><span class="sr-only">x</span><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! w-5 h-5 bg-gray-400 dark:bg-gray-500 hover:bg-gray-500 dark:hover:bg-gray-400" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/x-twitter.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/x-twitter.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></a><a href="https://github.com/checkly" target="_blank" rel="noopener noreferrer" class="h-fit"><span class="sr-only">github</span><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! w-5 h-5 bg-gray-400 dark:bg-gray-500 hover:bg-gray-500 dark:hover:bg-gray-400" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/github.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/github.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></a><a href="https://linkedin.com/company/checkly" target="_blank" rel="noopener noreferrer" class="h-fit"><span class="sr-only">linkedin</span><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! w-5 h-5 bg-gray-400 dark:bg-gray-500 hover:bg-gray-500 dark:hover:bg-gray-400" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/linkedin.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/linkedin.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></a></div><div class="flex items-center justify-between"><div class="sm:flex"><a href="https://www.mintlify.com?utm_campaign=poweredBy&amp;utm_medium=referral&amp;utm_source=checkly-422f444a" target="_blank" rel="noreferrer" class="group flex items-baseline gap-1 text-sm text-gray-400 dark:text-gray-500 hover:text-gray-600 dark:hover:text-gray-300 text-nowrap"><span>Powered by</span><svg width="1274" height="367" viewBox="0 0 1274 367" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-3.5 w-auto translate-y-0.75"><path d="M1154.38 366.038H1097.86L1137.69 276.14L1058.04 97.1046H1114.93L1161.35 209.337C1162.97 213.26 1168.53 213.253 1170.14 209.325L1216.21 97.1046H1273.49L1154.38 366.038Z" fill="currentColor"></path><path d="M982.714 286.761V142.622H944.403V97.1041H982.714V72.4488C982.714 49.9429 989.542 32.2416 1003.2 19.345C1016.85 6.44832 1034.17 0 1055.16 0C1068.06 0 1079.06 1.39081 1088.16 4.17244V50.0693C1082.09 47.7934 1075.01 46.6555 1066.92 46.6555C1055.54 46.6555 1047.32 49.1843 1042.27 54.2418C1037.21 59.0464 1034.68 67.2648 1034.68 78.8971V97.1041H1088.16V142.622H1034.68V286.761H982.714Z" fill="currentColor"></path><path d="M897.916 66.0005C889.066 66.0005 881.353 62.8395 874.778 56.5176C868.203 49.9429 864.916 42.1037 864.916 33.0002C864.916 23.8967 868.203 16.184 874.778 9.86215C881.353 3.28738 889.066 0 897.916 0C907.273 0 915.112 3.28738 921.434 9.86215C928.008 16.184 931.296 23.8967 931.296 33.0002C931.296 42.1037 928.008 49.9429 921.434 56.5176C915.112 62.8395 907.273 66.0005 897.916 66.0005ZM872.123 286.761V97.1041H924.089V286.761H872.123Z" fill="currentColor"></path><path d="M781.638 286.761V2.27609H833.604V286.761H781.638Z" fill="currentColor"></path><path d="M722.934 289.037C701.693 289.037 684.244 283.221 670.589 271.588C657.187 259.703 650.485 242.634 650.485 220.381V142.622H612.175V97.1044H650.485V44.3799H702.451V97.1044H755.934V142.622H702.451V210.14C702.451 221.772 704.98 230.117 710.038 235.174C715.095 239.979 723.313 242.381 734.693 242.381C742.785 242.381 749.865 241.243 755.934 238.967V284.864C746.831 287.646 735.831 289.037 722.934 289.037Z" fill="currentColor"></path><path d="M417.674 286.761V97.1041H469.64V110.967C469.64 113.311 472.83 114.347 474.382 112.591C485.967 99.4848 502.467 92.9317 523.881 92.9317C546.64 92.9317 564.468 100.518 577.365 115.69C590.514 130.61 597.089 150.587 597.089 175.622V286.761H545.123V184.346C545.123 170.438 542.215 159.691 536.399 152.105C530.583 144.265 522.364 140.346 511.743 140.346C499.1 140.346 488.858 144.898 481.019 154.001C473.433 163.105 469.64 176.507 469.64 194.208V286.761H417.674Z" fill="currentColor"></path><path d="M352.981 66.0005C344.13 66.0005 336.417 62.8395 329.843 56.5176C323.268 49.9429 319.98 42.1037 319.98 33.0002C319.98 23.8967 323.268 16.184 329.843 9.86215C336.417 3.28738 344.13 0 352.981 0C362.337 0 370.176 3.28738 376.498 9.86215C383.073 16.184 386.36 23.8967 386.36 33.0002C386.36 42.1037 383.073 49.9429 376.498 56.5176C370.176 62.8395 362.337 66.0005 352.981 66.0005ZM327.187 286.761V97.1041H379.153V286.761H327.187Z" fill="currentColor"></path><path d="M238.967 286.761V185.484C238.967 155.392 229.105 140.346 209.381 140.346C198.001 140.346 188.898 144.645 182.07 153.242C175.495 161.84 171.955 174.61 171.449 191.553V286.761H119.484V185.484C119.484 155.392 109.621 140.346 89.8972 140.346C78.2649 140.346 69.035 144.898 62.2073 154.001C55.3797 163.105 51.9659 176.507 51.9659 194.208V286.761H0V97.1041H51.9659V111.103C51.9659 113.435 55.1014 114.462 56.633 112.704C68.1136 99.5223 83.3741 92.9317 102.415 92.9317C127.436 92.9317 146.283 103.262 158.953 123.923C159.953 125.553 162.412 125.527 163.406 123.894C168.884 114.891 176.496 107.731 186.243 102.415C197.369 96.0926 208.622 92.9317 220.002 92.9317C242.507 92.9317 259.956 100.392 272.347 115.311C284.738 130.231 290.933 150.714 290.933 176.76V286.761H238.967Z" fill="currentColor"></path></svg><span class="sr-only">This documentation is built and hosted on Mintlify, a developer documentation platform</span></a></div></div></footer></div></main></div></div><!--$--><!--/$--></div><!--$?--><template id="B:0"></template><!--/$--></div></div><script>requestAnimationFrame(function(){$RT=performance.now()});</script><script src="/docs/_next/static/chunks/6d55b684068fd47e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F" id="_R_" async=""></script><div hidden id="S:0"><div data-assistant-sheet-container="" class="sticky shrink-0 z-22 bg-background-light dark:bg-background-dark mt-(--banner-height,0px) top-(--banner-height,0px) h-[calc(100vh-var(--banner-height,0px))] max-lg:hidden print:hidden" style="width:var(--assistant-sheet-width, 0px);overflow:hidden"><div class="absolute left-0 top-0 bottom-0 w-px z-10 cursor-col-resize after:content-[&quot;&quot;] after:absolute after:inset-y-0 after:-inset-x-2 after:select-none bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700"></div><div id="chat-assistant-sheet" class="flex flex-col overflow-hidden shrink-0 relative h-full bg-background-light dark:bg-background-dark chat-assistant-sheet" aria-hidden="true"><div class="w-full flex flex-col flex-1 min-h-0 lg:pt-3"><div class="chat-assistant-sheet-header flex items-center justify-between pb-3 px-4"><div class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="size-5 text-primary dark:text-primary-light shrink-0" aria-hidden="true"><path d="M5.65799 2.99L4.39499 2.569L3.97399 1.306C3.83699 0.898 3.16199 0.898 3.02499 1.306L2.60399 2.569L1.34099 2.99C1.13699 3.058 0.998993 3.249 0.998993 3.464C0.998993 3.679 1.13699 3.87 1.34099 3.938L2.60399 4.359L3.02499 5.622C3.09299 5.826 3.28499 5.964 3.49999 5.964C3.71499 5.964 3.90599 5.826 3.97499 5.622L4.39599 4.359L5.65899 3.938C5.86299 3.87 6.00099 3.679 6.00099 3.464C6.00099 3.249 5.86199 3.058 5.65799 2.99Z" fill="currentColor" stroke="none"></path><path d="M9.5 2.75L11.412 7.587L16.25 9.5L11.412 11.413L9.5 16.25L7.587 11.413L2.75 9.5L7.587 7.587L9.5 2.75Z" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg><span class="font-medium text-gray-900 dark:text-gray-100">Assistant</span></div><div class="flex items-center gap-1"><button class="group hover:bg-gray-100 dark:hover:bg-white/10 p-1.5 rounded-lg" aria-label="Maximize assistant panel"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-4 sm:size-3.5 text-gray-500 group-hover:text-gray-700 dark:group-hover:text-gray-300 shrink-0"><path d="M10.75 2.75H15.25V7.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M15.25 2.75L10.75 7.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.75 10.75V15.25H7.25" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.75 15.25L7.25 10.75" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><button class="group hover:bg-gray-100 dark:hover:bg-white/10 p-1.5 rounded-lg" aria-label="Close assistant panel"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-[20px] sm:size-4 text-gray-500 group-hover:text-gray-700 dark:group-hover:text-gray-300 shrink-0"><path d="M14 4L4 14" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M4 4L14 14" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div><div id="chat-content" class="chat-assistant-sheet-content flex flex-col-reverse flex-1 overflow-y-auto relative px-5 min-h-0"><div class="grow"></div><div class="h-full flex flex-col justify-between"><div class="mt-4 flex flex-col items-center text-sm"><div class="mx-8 text-center text-gray-400 dark:text-gray-600 text-xs chat-assistant-disclaimer-text">Responses are generated using AI and may contain mistakes.</div></div></div></div><div class="px-4 pb-4 shrink-0"><div class=""><div class="flex flex-col w-full pointer-events-auto bg-background-light dark:bg-background-dark border border-gray-200 dark:border-white/10 focus-within:border-primary dark:focus-within:border-primary-light transition-colors rounded-3xl"><div class="relative flex items-end"><textarea id="chat-assistant-textarea" aria-label="Ask a question..." autoComplete="off" placeholder="Ask a question..." class="chat-assistant-input w-full bg-transparent border-0 peer/input text-gray-900 dark:text-gray-100 placeholder-gray-600 dark:placeholder-gray-300 outline-hidden! focus:outline-hidden! focus:ring-0 py-2.5 pl-3.5 pr-10 font-bodyWeight text-sm pb-0!" style="resize:none" rows="2"></textarea></div><div class="flex items-center justify-between px-2 pb-2"><input type="file" accept="image/*,.pdf,.js,.jsx,.ts,.tsx,.mjs,.cjs,.md,.mdx,.json,.html,.css,.py,.csv,.txt,.yaml,.yml,.xml,.sql,.sh,.bash,.zsh,.graphql,.gql,.toml,.env,.go,.rs,.rb,.java,.kt,.swift,.c,.cpp,.cc,.h,.hpp,.cs,.php,.dart,.lua,.r,.scala,.ini,.cfg,.conf,.log,.dockerfile,.makefile,.gitignore" multiple="" class="hidden"/><button type="button" class="p-1 rounded-lg text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200 hover:bg-gray-100 dark:hover:bg-white/10" aria-label="Add attachment"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="size-3.5 shrink-0"><path d="M7.75 5V11.75C7.75 12.578 8.422 13.25 9.25 13.25C10.078 13.25 10.75 12.578 10.75 11.75V4.75C10.75 3.093 9.407 1.75 7.75 1.75C6.093 1.75 4.75 3.093 4.75 4.75V11.75C4.75 14.235 6.765 16.25 9.25 16.25C11.735 16.25 13.75 14.235 13.75 11.75V5" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button><button class="chat-assistant-send-button flex justify-center items-center rounded-full p-1 size-6 bg-primary/30 dark:bg-primary-dark/30" aria-label="Send message" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="size-2.5 shrink-0 text-white dark:text-white"><path d="M9.0 1.5754L8.9999 16.4171" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path><path d="M2.2563 8.319L8.9999 1.5754L15.7435 8.3191" stroke="currentColor" width="1.5" linecap="round" linejoin="round"></path></svg></button></div></div></div><div class="w-full flex items-center justify-between"><a href="mailto:support@checklyhq.com" class="group flex justify-between items-center gap-1 mt-2 py-1 transition-colors duration-200" data-component-part="contact-support-button"><span data-component-part="contact-support-icon"><svg class="forced-colors:forced-color-adjust-none forced-colors:bg-[color:CanvasText]! size-3 bg-gray-400 group-hover:bg-gray-600 dark:group-hover:bg-gray-300" aria-hidden="true" focusable="false" style="-webkit-mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/circle-question.svg&quot;);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(&quot;https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/circle-question.svg&quot;);mask-repeat:no-repeat;mask-position:center"></svg></span><p class="text-gray-400 font-regular text-xs group-hover:text-gray-600 dark:group-hover:text-gray-300" data-component-part="contact-support-text">Contact support</p></a></div></div></div></div></div></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){var c=a[b],e=a[b+1];null!==e.parentNode&&e.parentNode.removeChild(e);var f=c.parentNode;if(f){var g=c.previousSibling,h=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d||"/&"===d)if(0===h)break;else h--;else"$"!==d&&"$?"!==d&&"$~"!==d&&"$!"!==d&&"&"!==d||h++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;e.firstChild;)f.insertBefore(e.firstChild,c);g.data="$";g._reactRetry&&requestAnimationFrame(g._reactRetry)}}a.length=0};
$RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\na:I[168027,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"default\"]\n:HL[\"/docs/_next/static/chunks/462bacc63bed9960.css?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"style\"]\n:HL[\"/docs/_next/static/chunks/c9c6061f3cdd5c21.css?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"style\"]\n:HL[\"/docs/_next/static/media/83afe278b6a6bb3c.p.3a6ba036.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/docs/_next/static/media/PaperMono_Variable.p.aa32f7a0.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/docs/_next/static/media/f67ad414ed34149c.p.84166d94.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"P83Rm4LKp4sSXDcXDdC4r\",\"p\":\"/docs\",\"c\":[\"\",\"_sites\",\"checkly-422f444a\",\"learn\",\"incidents\",\"slo-sla-sli\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"%5Fsites\",{\"children\":[[\"subdomain\",\"checkly-422f444a\",\"d\"],{\"children\":[\"(multitenant)\",{\"children\":[[\"slug\",\"learn/incidents/slo-sla-sli\",\"oc\"],{\"children\":[\"__PAGE__\",{}]}]}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/docs/_next/static/chunks/462bacc63bed9960.css?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/docs/_next/static/chunks/c9c6061f3cdd5c21.css?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"suppressHydrationWarning\":true,\"lang\":\"en\",\"className\":\"inter_1d81deff-module__CYM0aG__variable papermono_89c757f2-module__6aS5zq__variable dark\",\"data-banner-state\":\"visible\",\"data-assistant-state\":\"closed\",\"data-page-mode\":\"none\",\"data-current-path\":\"/\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"!function(){var b=\\\"/docs\\\";\\nfunction a(p){if(p==null)return\\\"/\\\";p=\\\"\\\"+p;if(\\\"\\\"===p)return\\\"/\\\";return\\\"/\\\"===p.charAt(0)?p:\\\"/\\\"+p}\\nfunction u(p){if(p==null)return p;p=\\\"\\\"+p;if(!p||p.charAt(p.length-1)===\\\"/\\\")return p.slice(0,-1);return p}\\nfunction i(p){if(p==null)return p;p=\\\"\\\"+p;if(6\u003c=p.length\u0026\u0026p.substring(p.length-6)===\\\"/index\\\")return p.substring(0,p.length-6);if(\\\"index\\\"===p)return\\\"\\\";return p}\\nvar p=(location.pathname||\\\"\\\").split(\\\"?\\\")[0].split(\\\"#\\\")[0]||\\\"\\\";\\nif(b)if(p===b)p=\\\"\\\";else if(0===p.indexOf(b+\\\"/\\\"))p=p.substring(b.length);\\np=a(p);p=u(p);p=i(p);p=\\\"\\\"===p||\\\"index\\\"===p?\\\"/\\\":a(p);\\ndocument.documentElement.setAttribute(\\\"data-current-path\\\",p);\\n}();\"}}],[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"(() =\u003e {\\n const isIOS =\\n /iP(hone|ad|od)/.test(navigator.userAgent) ||\\n (/Macintosh/.test(navigator.userAgent) \u0026\u0026 navigator.maxTouchPoints \u003e 1);\\n if (!isIOS) return;\\n const apply = () =\u003e {\\n for (const meta of document.querySelectorAll('meta[name=\\\"viewport\\\"]')) {\\n const content = meta.getAttribute('content') || '';\\n if (!content.includes('maximum-scale')) {\\n meta.setAttribute('content', content + ', maximum-scale=1');\\n }\\n }\\n };\\n apply();\\n new MutationObserver(apply).observe(document.head, {\\n childList: true,\\n subtree: true,\\n attributes: true,\\n attributeFilter: ['content'],\\n });\\n})();\"}}],[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"!function(){\\nfunction read(){try{\\nvar e=performance.getEntriesByType?performance.getEntriesByType(\\\"navigation\\\"):[];\\nvar st=(e[0]\u0026\u0026e[0].serverTiming)||[];\\nvar g={};\\nfor(var i=0;i\u003cst.length;i++){var n=st[i].name,d=st[i].description;if(!d)continue;try{d=decodeURIComponent(d)}catch(x){}\\nif(n===\\\"country\\\")g.country=d;else if(n===\\\"region\\\")g.region=d;else if(n===\\\"continent\\\")g.continent=d;}\\nvar w=window;w.mintlify=w.mintlify||{};w.mintlify.geo=g;\\n}catch(x){}}\\nread();document.addEventListener(\\\"DOMContentLoaded\\\",read);\\n}();\"}}],[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"!function(){try{\\nvar w=window;w.mintlify=w.mintlify||{};\\nvar q=w.mintlify.__apiPlaygroundInputsQueue;\\nif(!Array.isArray(q)){q=[];w.mintlify.__apiPlaygroundInputsQueue=q;}\\nw.mintlify.api=w.mintlify.api||{};\\nw.mintlify.api.playground=w.mintlify.api.playground||{};\\nif(typeof w.mintlify.api.playground.setServerVariables!==\\\"function\\\"){\\nw.mintlify.api.playground.setServerVariables=function(v){q.push({type:\\\"set\\\",variables:v});};\\n}\\nif(typeof w.mintlify.api.playground.clearServerVariables!==\\\"function\\\"){\\nw.mintlify.api.playground.clearServerVariables=function(){q.push({type:\\\"clear\\\"});};\\n}\\n}catch(e){}}();\"}}],\"$L2\",false]}],\"$L3\"]}]]}],{\"children\":[\"%5Fsites\",\"$L4\",{\"children\":[[\"subdomain\",\"checkly-422f444a\",\"d\"],\"$L5\",{\"children\":[\"(multitenant)\",\"$L6\",{\"children\":[[\"slug\",\"learn/incidents/slo-sla-sli\",\"oc\"],\"$L7\",{\"children\":[\"__PAGE__\",\"$L8\",{},null,false]},null,false]},null,false]},null,false]},null,false]},null,false],\"$L9\",false]],\"m\":\"$undefined\",\"G\":[\"$a\",[\"$Lb\",\"$Lc\"]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"d:I[667786,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"MintlifyApiPlaygroundInputsInit\"]\ne:I[339756,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"default\"]\nf:I[556357,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/7e6d62a1abc6c26f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"default\"]\n10:I[837457,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"11:I[894587,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"ThemeProvider\"]\n"])</script><script>self.__next_f.push([1,"12:I[152823,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"ColorVariables\"]\n"])</script><script>self.__next_f.push([1,"13:I[531961,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"FontScript\"]\n"])</script><script>self.__next_f.push([1,"14:I[649328,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"RoundedVariables\"]\n"])</script><script>self.__next_f.push([1,"15:I[702910,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b0c9c788d5ef11a3.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"RecommendedPagesList\"]\n16:I[570420,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"DataCurrentPathUpdater\"]\n17:I[341175,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/cd6b4e3f356994e0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"default\"]\n1a:I[897367,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"OutletBoundary\"]\n1c:I[711533,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"AsyncMetadataOutlet\"]\n1e:I[897367,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZ"])</script><script>self.__next_f.push([1,"Ueo2F\"],\"ViewportBoundary\"]\n20:I[897367,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"MetadataBoundary\"]\n21:\"$Sreact.suspense\"\n"])</script><script>self.__next_f.push([1,"2:[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"(function(a,b){try{let c=document.getElementById(\\\"banner\\\")?.innerText;if(c){for(let d=0;d\u003clocalStorage.length;d++){let e=localStorage.key(d);if(e?.endsWith(a)\u0026\u0026localStorage.getItem(e)===c)return void document.documentElement.setAttribute(b,\\\"hidden\\\")}document.documentElement.setAttribute(b,\\\"visible\\\");return}for(let c=0;c\u003clocalStorage.length;c++){let d=localStorage.key(c);if(d?.endsWith(a)\u0026\u0026localStorage.getItem(d))return void document.documentElement.setAttribute(b,\\\"hidden\\\")}document.documentElement.setAttribute(b,\\\"visible\\\")}catch(a){document.documentElement.setAttribute(b,\\\"hidden\\\")}})(\\n \\\"bannerDismissed\\\",\\n \\\"data-banner-state\\\",\\n)\"}}]\n"])</script><script>self.__next_f.push([1,"3:[\"$\",\"body\",null,{\"className\":\"antialiased\",\"children\":[[\"$\",\"$Ld\",null,{}],false,[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$f\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/7e6d62a1abc6c26f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true}],[\"$\",\"script\",\"script-2\",{\"src\":\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true}],[\"$\",\"script\",\"script-3\",{\"src\":\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true}],[\"$\",\"script\",\"script-4\",{\"src\":\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true}]],\"template\":[\"$\",\"$L10\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"$L11\",null,{\"children\":[[\"$\",\"$L12\",null,{}],[\"$\",\"$L13\",null,{}],[\"$\",\"$L14\",null,{}],[\"$\",\"style\",null,{\"children\":\":root {\\n --primary: 17 120 102;\\n --primary-light: 74 222 128;\\n --primary-dark: 22 101 52;\\n --background-light: 255 255 255;\\n --background-dark: 15 17 23;\\n}\"}],[\"$\",\"main\",null,{\"className\":\"h-screen bg-background-light dark:bg-background-dark text-left\",\"children\":[\"$\",\"article\",null,{\"className\":\"bg-custom bg-fixed bg-center bg-cover relative flex flex-col items-center justify-center h-full\",\"children\":[\"$\",\"div\",null,{\"className\":\"w-full max-w-xl px-10\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-flex mb-6 rounded-full px-3 py-1 text-sm font-semibold mr-4 text-white p-1 bg-primary\",\"children\":[\"Error \",404]}],[\"$\",\"h1\",null,{\"className\":\"font-semibold mb-3 text-3xl\",\"children\":\"Page not found!\"}],[\"$\",\"p\",null,{\"className\":\"text-lg text-gray-600 dark:text-gray-400 mb-6\",\"children\":\"We couldn't find the page.\"}],[\"$\",\"$L15\",null,{}]]}]}]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],false,[\"$\",\"$L16\",null,{}]]}]\n"])</script><script>self.__next_f.push([1,"4:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L10\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n"])</script><script>self.__next_f.push([1,"5:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$17\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/cd6b4e3f356994e0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true}],[\"$\",\"script\",\"script-2\",{\"src\":\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true}],[\"$\",\"script\",\"script-3\",{\"src\":\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true}],[\"$\",\"script\",\"script-4\",{\"src\":\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true}]],\"template\":[\"$\",\"$L10\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"$L11\",null,{\"children\":[[\"$\",\"$L12\",null,{}],[\"$\",\"$L13\",null,{}],[\"$\",\"$L14\",null,{}],[\"$\",\"style\",null,{\"children\":\":root {\\n --primary: 17 120 102;\\n --primary-light: 74 222 128;\\n --primary-dark: 22 101 52;\\n --background-light: 255 255 255;\\n --background-dark: 15 17 23;\\n}\"}],[\"$\",\"main\",null,{\"className\":\"h-screen bg-background-light dark:bg-background-dark text-left\",\"children\":[\"$\",\"article\",null,{\"className\":\"bg-custom bg-fixed bg-center bg-cover relative flex flex-col items-center justify-center h-full\",\"children\":[\"$\",\"div\",null,{\"className\":\"w-full max-w-xl px-10\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-flex mb-6 rounded-full px-3 py-1 text-sm font-semibold mr-4 text-white p-1 bg-primary\",\"children\":[\"Error \",404]}],[\"$\",\"h1\",null,{\"className\":\"font-semibold mb-3 text-3xl\",\"children\":\"Page not found!\"}],[\"$\",\"p\",null,{\"className\":\"text-lg text-gray-600 dark:text-gray-400 mb-6\",\"children\":\"We couldn't find the page.\"}],[\"$\",\"$L15\",null,{}]]}]}]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n"])</script><script>self.__next_f.push([1,"6:[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-6\",{\"src\":\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-7\",{\"src\":\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-8\",{\"src\":\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-9\",{\"src\":\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-10\",{\"src\":\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-11\",{\"src\":\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-12\",{\"src\":\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-13\",{\"src\":\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-14\",{\"src\":\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-15\",{\"src\":\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}]],\"$L18\"]}]\n"])</script><script>self.__next_f.push([1,"7:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L10\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n"])</script><script>self.__next_f.push([1,"8:[\"$\",\"$1\",\"c\",{\"children\":[\"$L19\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/docs/_next/static/chunks/ab9c22ad73015101.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/docs/_next/static/chunks/0eb894a8519f24ea.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/docs/_next/static/chunks/9258da1973995d9b.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/docs/_next/static/chunks/38afe2a8d82fbe85.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/docs/_next/static/chunks/b924dff5cd9af8e6.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"/docs/_next/static/chunks/2a190f8b78faf889.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-6\",{\"src\":\"/docs/_next/static/chunks/8dc817877a3a1bff.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-7\",{\"src\":\"/docs/_next/static/chunks/de1ea6e58bcc6bca.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L1a\",null,{\"children\":[\"$L1b\",[\"$\",\"$L1c\",null,{\"promise\":\"$@1d\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"9:[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$L1e\",null,{\"children\":\"$L1f\"}],null],[\"$\",\"$L20\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$21\",null,{\"fallback\":null,\"children\":\"$L22\"}]}]}]]}]\nb:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/docs/_next/static/chunks/462bacc63bed9960.css?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\nc:[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/docs/_next/static/chunks/c9c6061f3cdd5c21.css?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n"])</script><script>self.__next_f.push([1,"1f:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, viewport-fit=cover\"}]]\n1b:null\n"])</script><script>self.__next_f.push([1,"23:I[707934,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"WebMcpRegistration\"]\n"])</script><script>self.__next_f.push([1,"24:I[590280,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"LivePreviewProvider\"]\n"])</script><script>self.__next_f.push([1,"25:I[973254,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"LivePreviewFavicon\"]\n"])</script><script>self.__next_f.push([1,"26:I[197336,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"27:I[91557,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/ab9c22ad73015101.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/0eb894a8519f24ea.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/9258da1973995d9b.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/38afe2a8d82fbe85.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b924dff5cd9af8e6.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2a190f8b78faf889.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8dc817877a3a1bff.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/de1ea6e58bcc6bca.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"AuthProvider\"]\n"])</script><script>self.__next_f.push([1,"28:I[91557,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/ab9c22ad73015101.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/0eb894a8519f24ea.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/9258da1973995d9b.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/38afe2a8d82fbe85.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b924dff5cd9af8e6.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2a190f8b78faf889.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8dc817877a3a1bff.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/de1ea6e58bcc6bca.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"DeploymentMetadataProvider\"]\n"])</script><script>self.__next_f.push([1,"29:I[91557,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/ab9c22ad73015101.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/0eb894a8519f24ea.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/9258da1973995d9b.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/38afe2a8d82fbe85.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b924dff5cd9af8e6.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2a190f8b78faf889.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8dc817877a3a1bff.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/de1ea6e58bcc6bca.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"DocsConfigProvider\"]\n"])</script><script>self.__next_f.push([1,"18:[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"WebSite\\\",\\\"name\\\":\\\"Checkly Docs\\\",\\\"creator\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"name\\\":\\\"Mintlify\\\",\\\"url\\\":\\\"https://mintlify.com\\\"}}\"}}],[\"$\",\"$L23\",null,{\"subdomain\":\"checkly-422f444a\"}],[\"$\",\"$L24\",null,{\"isLivePreviewRoute\":false,\"children\":[[\"$\",\"$L25\",null,{}],[\"$\",\"$L11\",null,{\"appearance\":\"$undefined\",\"codeblockTheme\":\"system\",\"children\":[[\"$\",\"blockquote\",null,{\"className\":\"sr-only\",\"data-agent-docs-index\":true,\"aria-hidden\":\"true\",\"children\":[[\"$\",\"h2\",null,{\"children\":\"Documentation Index\"}],[\"$\",\"p\",null,{\"children\":[\"Fetch the complete documentation index at:\",\" \",[\"$\",\"a\",null,{\"href\":\"/docs/llms.txt\",\"tabIndex\":-1,\"children\":\"/docs/llms.txt\"}]]}],[\"$\",\"p\",null,{\"children\":\"Use this file to discover all available pages before exploring further.\"}]]}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root{--banner-height:0px!important}\"}}],false,null,null,[\"$\",\"script\",null,{\"id\":\"_mintlify-banner-script\",\"dangerouslySetInnerHTML\":{\"__html\":\"(function i(a,b,c,d,e){try{let f,g,h=[];try{h=window.location.pathname.split(\\\"/\\\").filter(a=\u003e\\\"\\\"!==a\u0026\u0026\\\"global\\\"!==a).slice(0,2)}catch{h=[]}let i=h.find(a=\u003ec.includes(a)),j=[];for(let c of(i?j.push(i):j.push(b),j.push(\\\"global\\\"),j)){if(!c)continue;let b=a[c];if(b?.content){f=b.content,g=c;break}}if(!f)return void document.documentElement.setAttribute(d,\\\"hidden\\\");let k=!0,l=0;for(;l\u003clocalStorage.length;){let a=localStorage.key(l);if(l++,!a?.endsWith(e))continue;let b=localStorage.getItem(a);if(b\u0026\u0026b===f){k=!1;break}g\u0026\u0026(a.startsWith(`lang:${g}_`)||!a.startsWith(\\\"lang:\\\"))\u0026\u0026(localStorage.removeItem(a),l--)}document.documentElement.setAttribute(d,k?\\\"visible\\\":\\\"hidden\\\")}catch(a){console.error(a),document.documentElement.setAttribute(d,\\\"hidden\\\")}})(\\n {},\\n \\\"en\\\",\\n [],\\n \\\"data-banner-state\\\",\\n \\\"bannerDismissed\\\",\\n)\"},\"suppressHydrationWarning\":true}],[\"$\",\"$L26\",null,{\"appId\":\"$undefined\",\"autoBoot\":true,\"children\":[\"$\",\"$L27\",null,{\"value\":{\"auth\":\"$undefined\",\"userAuth\":\"$undefined\"},\"children\":[\"$\",\"$L28\",null,{\"value\":{\"subdomain\":\"checkly-422f444a\",\"actualSubdomain\":\"checkly-422f444a\",\"customDomains\":[\"www.checklyhq.com\"],\"gitSource\":{\"type\":\"github\",\"owner\":\"checkly\",\"repo\":\"docs\",\"deployBranch\":\"main\",\"contentDirectory\":\"\",\"isPrivate\":false,\"mountPath\":\"\",\"label\":\"\"},\"chroma\":{\"liveDeploymentHistoryId\":\"6aa3e12d445a6146f42ceb08\",\"collectionId\":\"d7f9e779-0f78-4e66-ae35-ef1ca9bdadb8\",\"schemaVersion\":\"v3\",\"latestBuiltDeploymentHistoryId\":\"6aa3e12d445a6146f42ceb08\"},\"feedback\":{\"thumbs\":true,\"edits\":true,\"issues\":true},\"entitlements\":{\"AI_CHAT\":{\"status\":\"ENABLED\"}},\"buildId\":\"6aa3e12d445a6146f42ceb08\",\"clientVersion\":\"0.0.3598\",\"preview\":\"$undefined\",\"searchFilterCounts\":[{\"language\":\"default\",\"tag\":\"API Reference\",\"count\":449},{\"language\":\"default\",\"tag\":\"Docs\",\"count\":200},{\"language\":\"default\",\"tag\":\"Learn\",\"count\":100},{\"language\":\"default\",\"tag\":\"Detect\",\"count\":62},{\"language\":\"default\",\"tag\":\"Getting Started\",\"count\":53},{\"language\":\"default\",\"tag\":\"Playwright\",\"count\":49},{\"language\":\"default\",\"tag\":\"Integrations\",\"count\":46},{\"language\":\"default\",\"tag\":\"Constructs\",\"count\":41},{\"language\":\"default\",\"tag\":\"Synthetic Monitoring\",\"count\":35},{\"language\":\"default\",\"tag\":\"CLI Reference\",\"count\":33}],\"searchSettings\":\"$undefined\",\"disableKonamiCode\":\"$undefined\"},\"children\":[\"$\",\"$L29\",null,{\"value\":{\"docsConfig\":{\"theme\":\"aspen\",\"$schema\":\"https://mintlify.com/docs.json\",\"name\":\"Checkly Docs\",\"colors\":{\"primary\":\"#0075FF\",\"light\":\"#2B8AFF\",\"dark\":\"#031834\"},\"logo\":{\"light\":\"https://mintcdn.com/checkly-422f444a/KiRymP194lYB6fu_/logo/light.svg?fit=max\u0026auto=format\u0026n=KiRymP194lYB6fu_\u0026q=85\u0026s=c4c50c3b55e375fe5d06b52fad5c8032\",\"dark\":\"https://mintcdn.com/checkly-422f444a/KiRymP194lYB6fu_/logo/dark.svg?fit=max\u0026auto=format\u0026n=KiRymP194lYB6fu_\u0026q=85\u0026s=4bb854d62eeba1ed323838710a533a2f\"},\"favicon\":\"https://mintcdn.com/checkly-422f444a/9iwkS8Mlm4KfOHnA/racoon_favicon.png?fit=max\u0026auto=format\u0026n=9iwkS8Mlm4KfOHnA\u0026q=85\u0026s=005761353168b62a923dddddc298da2c\",\"navbar\":{\"links\":[{\"href\":\"https://www.checklyhq.com\",\"label\":\"Home\"},{\"href\":\"https://www.checklyhq.com/docs/changelog/changelog/\",\"label\":\"Changelog\"}],\"primary\":{\"type\":\"button\",\"label\":\"Dashboard\",\"href\":\"https://app.checklyhq.com\"}},\"footer\":{\"socials\":{\"x\":\"https://x.com/checklyhq\",\"github\":\"https://github.com/checkly\",\"linkedin\":\"https://linkedin.com/company/checkly\"}},\"seo\":{\"metatags\":{\"canonical\":\"https://www.checklyhq.com/docs\"}},\"integrations\":{\"segment\":{\"key\":\"Bjlk6vx065LS2B25zVBzcfsjTaGrrpAM\"},\"telemetry\":{\"enabled\":true}},\"errors\":{\"404\":{\"redirect\":false,\"title\":\"Looks like this page has moved!\",\"description\":\"Please try searching for the new page you're looking for in the search bar or sidebar.\"}},\"contextual\":{\"options\":[\"copy\",\"view\",\"chatgpt\",\"claude\",\"perplexity\"],\"display\":\"header\"},\"styling\":{\"latex\":false,\"codeblocks\":\"system\"},\"navigation\":{\"pages\":[]}},\"docsNavWithMetadata\":\"$undefined\",\"anonymizedNav\":\"$undefined\",\"hasFullNav\":false},\"children\":\"$L2a\"}]}]}]}]]}]]}]]\n"])</script><script>self.__next_f.push([1,"2b:I[604804,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"LoginButtonProvider\"]\n"])</script><script>self.__next_f.push([1,"2c:I[141180,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"SidebarLoginButtonProvider\"]\n"])</script><script>self.__next_f.push([1,"2d:I[343590,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"NavigationContextController\"]\n"])</script><script>self.__next_f.push([1,"2e:I[378486,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"PageListProvider\"]\n"])</script><script>self.__next_f.push([1,"2f:I[742977,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"PrefetchProvider\"]\n"])</script><script>self.__next_f.push([1,"30:I[237978,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"PageModeOverrideProvider\"]\n"])</script><script>self.__next_f.push([1,"31:I[378896,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"ConfiguredVariationProvider\"]\n"])</script><script>self.__next_f.push([1,"32:I[557611,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"Fonts\"]\n"])</script><script>self.__next_f.push([1,"33:I[330080,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"BannerProvider\"]\n"])</script><script>self.__next_f.push([1,"34:I[864506,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"NavbarTransitionScript\"]\n"])</script><script>self.__next_f.push([1,"36:I[540345,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"ConsentProvider\"]\n"])</script><script>self.__next_f.push([1,"37:I[529058,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"LocalStorageAndAnalyticsProviders\"]\n"])</script><script>self.__next_f.push([1,"38:I[958547,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"39:I[604780,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"CaptchaProvider\"]\n"])</script><script>self.__next_f.push([1,"3a:I[859465,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"AssistantUiProvider\"]\n"])</script><script>self.__next_f.push([1,"3b:I[5695,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"AssistantTransportProvider\"]\n"])</script><script>self.__next_f.push([1,"3c:I[601054,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"SearchProvider\"]\n"])</script><script>self.__next_f.push([1,"35:T9e0,"])</script><script>self.__next_f.push([1,"(function () {\n var measure = function(){let a=document.querySelectorAll(\"[id='navbar'], [data-top-chrome]\"),b=0;a.forEach(a=\u003e{let c=a.getBoundingClientRect();c.height\u003e0\u0026\u0026(b=Math.max(b,c.bottom))});let c=0,d=document.getElementById(\"content-container\");if(d){let{overflowY:a}=getComputedStyle(d);(\"auto\"===a||\"scroll\"===a)\u0026\u0026(c=Math.max(0,d.getBoundingClientRect().top))}let e=`${Math.round(Math.max(0,b-c))+40}px`,f=document.documentElement.style;f.getPropertyValue(\"--scroll-mt\")!==e\u0026\u0026f.setProperty(\"--scroll-mt\",e)};\n (function(a){let b=[],c=0,d=\"undefined\"==typeof ResizeObserver?null:new ResizeObserver(f);function e(){let c=Array.from(document.querySelectorAll(\"[id='navbar'], [data-top-chrome]\"));(c.length!==b.length||c.some((a,c)=\u003ea!==b[c]))\u0026\u0026d\u0026\u0026(d.disconnect(),c.forEach(a=\u003ed.observe(a))),b=c,a()}function f(){c||(c=requestAnimationFrame(()=\u003e{c=0,e()}))}let g=\"[id='navbar'], [data-top-chrome]\";function h(a){let b=a.target;if(b instanceof Element\u0026\u0026b.closest(g))return!0;for(let b of a.addedNodes)if(b instanceof Element\u0026\u0026(b.matches(g)||b.querySelector(g)))return!0;for(let b of a.removedNodes)if(b instanceof Element\u0026\u0026(b.matches(g)||b.querySelector(g)))return!0;return!1}new MutationObserver(a=\u003e{a.some(h)\u0026\u0026f()}).observe(document.documentElement,{childList:!0,subtree:!0}),window.addEventListener(\"resize\",f),\"loading\"===document.readyState\u0026\u0026document.addEventListener(\"DOMContentLoaded\",e),e()})(measure);\n (function(a){let b=window.location.hash.slice(1);if(!b)return;function c(){return\"smooth\"===getComputedStyle(document.documentElement).scrollBehavior}function d(c){let d=document.getElementById(b);return!!d\u0026\u0026(a(),d.scrollIntoView(c?{behavior:c}:void 0),!0)}if(\"complete\"===document.readyState)return void d();let e=new MutationObserver(()=\u003e{!c()\u0026\u0026d(\"instant\")\u0026\u0026f()});function f(){e.disconnect(),window.removeEventListener(\"load\",g)}function g(){let a=c();f(),a\u0026\u0026requestAnimationFrame(()=\u003e{d(),function(){let a=[\"wheel\",\"touchstart\",\"keydown\",\"pointerdown\"],c=0,e=window.scrollY,f=setInterval(()=\u003e{c+=1;let a=document.getElementById(b);if(!a||c\u003e=6)return g();let f=Math.abs(window.scrollY-e)\u003e1;if(e=window.scrollY,f)return;let h=parseFloat(getComputedStyle(a).scrollMarginTop)||0;Math.abs(a.getBoundingClientRect().top-h)\u003e4\u0026\u0026d()},350);function g(){clearInterval(f),a.forEach(a=\u003ewindow.removeEventListener(a,g))}a.forEach(a=\u003ewindow.addEventListener(a,g,{passive:!0}))}()})}window.addEventListener(\"load\",g),e.observe(document.documentElement,{childList:!0,subtree:!0}),!c()\u0026\u0026d(\"instant\")\u0026\u0026f()})(measure);\n})();"])</script><script>self.__next_f.push([1,"2a:[\"$\",\"$L2b\",null,{\"children\":[\"$\",\"$L2c\",null,{\"children\":[\"$\",\"$L2d\",null,{\"children\":[\"$\",\"$L2e\",null,{\"pageListDataMap\":{},\"children\":[\"$\",\"$L2f\",null,{\"disabled\":\"$undefined\",\"children\":[\"$\",\"$L30\",null,{\"children\":[\"$\",\"$L31\",null,{\"children\":[[\"$\",\"$L13\",null,{\"fonts\":\"$undefined\",\"theme\":\"aspen\",\"subdomain\":\"checkly-422f444a\"}],[[\"$\",\"$L12\",null,{\"docsConfig\":\"$18:2:props:children:1:props:children:6:props:children:props:children:props:children:props:value:docsConfig\"}],null,[\"$\",\"$L14\",null,{\"theme\":\"aspen\"}],[\"$\",\"$L32\",null,{\"fonts\":\"$undefined\",\"children\":[\"$\",\"$L33\",null,{\"bannersByLocale\":{},\"subdomain\":\"checkly-422f444a\",\"children\":[[\"$\",\"$L34\",null,{\"theme\":\"aspen\"}],[\"$\",\"script\",null,{\"id\":\"_mintlify-scroll-margin-script\",\"dangerouslySetInnerHTML\":{\"__html\":\"$35\"},\"suppressHydrationWarning\":true}],[\"$\",\"$L36\",null,{\"privacy\":\"$undefined\",\"children\":[\"$\",\"$L37\",null,{\"subdomain\":\"checkly-422f444a\",\"isAtlas\":false,\"children\":[\"$\",\"$L38\",null,{\"toggles\":[],\"children\":[\"$\",\"$L39\",null,{\"enabled\":true,\"children\":[\"$\",\"$L3a\",\"checkly-422f444a\",{\"children\":[\"$\",\"$L3b\",null,{\"children\":[\"$\",\"$L3c\",null,{\"subdomain\":\"checkly-422f444a\",\"hasChatPermissions\":true,\"isLoggedInCli\":false,\"assistantConfig\":{\"enableAskAiButton\":false,\"enableAskAiSearchBar\":true,\"deflection\":{\"enabled\":true,\"email\":\"support@checklyhq.com\",\"showHelpButton\":true}},\"starterQuestions\":\"$undefined\",\"children\":[\"$L3d\",\"$L3e\",false,\"$L3f\"]}]}]}]}]}]}]}]]}]}]]]}]}]}]}]}]}]}]\n"])</script><script>self.__next_f.push([1,"40:I[28330,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"SkipToContent\"]\n"])</script><script>self.__next_f.push([1,"41:I[382229,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"AssistantLayoutScript\"]\n"])</script><script>self.__next_f.push([1,"42:I[87732,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"AssistantLayoutWrapper\"]\n"])</script><script>self.__next_f.push([1,"43:I[118717,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/0ff3c146f41749d1.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"NotFoundHydrator\"]\n"])</script><script>self.__next_f.push([1,"3d:[\"$\",\"$L40\",null,{}]\n3e:[\"$\",\"$L41\",null,{\"hasChatPermissions\":true}]\n3f:[\"$\",\"$L42\",null,{\"children\":[[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L10\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"$L43\",null,{\"source\":\"multitenant\"}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],\"$undefined\"]}]\n"])</script><script>self.__next_f.push([1,"1d:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"SLA vs SLO vs SLI - What’s the Difference? Comparison with examples - Checkly Docs\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Avoid user‑reported outages with synthetic checks, anomaly detection, smart alerting, and rich failure traces for rapid detection.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"Checkly Docs\"}],[\"$\",\"meta\",\"3\",{\"name\":\"generator\",\"content\":\"Mintlify\"}],[\"$\",\"meta\",\"4\",{\"name\":\"msapplication-config\",\"content\":\"/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon/browserconfig.xml\"}],[\"$\",\"meta\",\"5\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Checkly Docs\"}],[\"$\",\"meta\",\"6\",{\"name\":\"msapplication-TileColor\",\"content\":\"#0075FF\"}],[\"$\",\"link\",\"7\",{\"rel\":\"canonical\",\"href\":\"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/\"}],[\"$\",\"link\",\"8\",{\"rel\":\"alternate\",\"type\":\"application/xml\",\"href\":\"/docs/sitemap.xml\"}],[\"$\",\"link\",\"9\",{\"rel\":\"alternate\",\"type\":\"text/markdown\",\"href\":\"/docs/learn/incidents/slo-sla-sli.md\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:title\",\"content\":\"SLA vs SLO vs SLI - What’s the Difference? Comparison with examples - Checkly Docs\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:description\",\"content\":\"Avoid user‑reported outages with synthetic checks, anomaly detection, smart alerting, and rich failure traces for rapid detection.\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:url\",\"content\":\"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:site_name\",\"content\":\"Checkly Docs\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image\",\"content\":\"https://checkly-422f444a.mintlify.app/_next/image?url=%2F_mintlify%2Fapi%2Fog%3Fdivision%3DDetection%26title%3DSLA%2Bvs%2BSLO%2Bvs%2BSLI%2B-%2BWhat%25E2%2580%2599s%2Bthe%2BDifference%253F%2BComparison%2Bwith%2Bexamples%26description%3DAvoid%2Buser%25E2%2580%2591reported%2Boutages%2Bwith%2Bsynthetic%2Bchecks%252C%2Banomaly%2Bdetection%252C%2Bsmart%2Balerting%252C%2Band%2Brich%2Bfailure%2Btraces%2Bfor%2Brapid%2Bdetection.%26theme%3D754b2dd68caa3eef1bb7a682\u0026w=1200\u0026q=100\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:title\",\"content\":\"SLA vs SLO vs SLI - What’s the Difference? Comparison with examples - Checkly Docs\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:description\",\"content\":\"Avoid user‑reported outages with synthetic checks, anomaly detection, smart alerting, and rich failure traces for rapid detection.\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:image\",\"content\":\"https://checkly-422f444a.mintlify.app/_next/image?url=%2F_mintlify%2Fapi%2Fog%3Fdivision%3DDetection%26title%3DSLA%2Bvs%2BSLO%2Bvs%2BSLI%2B-%2BWhat%25E2%2580%2599s%2Bthe%2BDifference%253F%2BComparison%2Bwith%2Bexamples%26description%3DAvoid%2Buser%25E2%2580%2591reported%2Boutages%2Bwith%2Bsynthetic%2Bchecks%252C%2Banomaly%2Bdetection%252C%2Bsmart%2Balerting%252C%2Band%2Brich%2Bfailure%2Btraces%2Bfor%2Brapid%2Bdetection.%26theme%3D754b2dd68caa3eef1bb7a682\u0026w=1200\u0026q=100\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"24\",{\"rel\":\"icon\",\"href\":\"/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon/android-chrome-192x192.png\",\"type\":\"image/png\",\"sizes\":\"192x192\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"link\",\"25\",{\"rel\":\"apple-touch-icon\",\"href\":\"/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon/apple-touch-icon.png\",\"type\":\"image/png\",\"sizes\":\"180x180\",\"media\":\"$undefined\"}],[\"$\",\"link\",\"26\",{\"rel\":\"icon\",\"href\":\"/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon/favicon-16x16.png\",\"type\":\"image/png\",\"sizes\":\"16x16\",\"media\":\"(prefers-color-scheme: light)\"}],\"$L44\",\"$L45\",\"$L46\",\"$L47\",\"$L48\",\"$L49\",\"$L4a\"],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"22:\"$1d:metadata\"\n"])</script><script>self.__next_f.push([1,"4b:I[27201,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"IconMark\"]\n44:[\"$\",\"link\",\"27\",{\"rel\":\"icon\",\"href\":\"/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon/favicon-32x32.png\",\"type\":\"image/png\",\"sizes\":\"32x32\",\"media\":\"(prefers-color-scheme: light)\"}]\n45:[\"$\",\"link\",\"28\",{\"rel\":\"shortcut icon\",\"href\":\"/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"$undefined\",\"media\":\"(prefers-color-scheme: light)\"}]\n46:[\"$\",\"link\",\"29\",{\"rel\":\"icon\",\"href\":\"/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon-dark/android-chrome-192x192.png\",\"type\":\"image/png\",\"sizes\":\"192x192\",\"media\":\"(prefers-color-scheme: dark)\"}]\n47:[\"$\",\"link\",\"30\",{\"rel\":\"icon\",\"href\":\"/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon-dark/favicon-16x16.png\",\"type\":\"image/png\",\"sizes\":\"16x16\",\"media\":\"(prefers-color-scheme: dark)\"}]\n48:[\"$\",\"link\",\"31\",{\"rel\":\"icon\",\"href\":\"/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon-dark/favicon-32x32.png\",\"type\":\"image/png\",\"sizes\":\"32x32\",\"media\":\"(prefers-color-scheme: dark)\"}]\n49:[\"$\",\"link\",\"32\",{\"rel\":\"shortcut icon\",\"href\":\"/docs/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon-dark/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"$undefined\",\"media\":\"(prefers-color-scheme: dark)\"}]\n4a:[\"$\",\"$L4b\",\"33\",{}]\n"])</script><script>self.__next_f.push([1,"4c:I[597003,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/ab9c22ad73015101.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/0eb894a8519f24ea.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/9258da1973995d9b.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/38afe2a8d82fbe85.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b924dff5cd9af8e6.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2a190f8b78faf889.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8dc817877a3a1bff.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/de1ea6e58bcc6bca.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"ScopedNavProvider\"]\n"])</script><script>self.__next_f.push([1,"19:[\"$\",\"$L4c\",null,{\"scopedNav\":{\"global\":null,\"tabs\":[{\"tab\":\"Docs\",\"pages\":[{\"title\":\"Docs\",\"href\":\"/what-is-checkly\"}]},{\"tab\":\"Constructs\",\"pages\":[{\"title\":\"Constructs\",\"href\":\"/constructs/overview\"}]},{\"tab\":\"CLI Reference\",\"pages\":[{\"title\":\"CLI Reference\",\"href\":\"/cli/overview\"}]},{\"tab\":\"API Reference\",\"pages\":[{\"title\":\"API Reference\",\"href\":\"/api-reference/overview\"}]},{\"tab\":\"Guides\",\"pages\":[{\"title\":\"Guides\",\"href\":\"/guides/overview\"}]},{\"tab\":\"Learn\",\"dropdowns\":[{\"dropdown\":\"Playwright\",\"icon\":\"masks-theater\",\"pages\":[{\"title\":\"Learn How to Test, Monitor, and Automate with Playwright\",\"displayTitle\":\"Learn How to Test, Monitor, and Automate with Playwright\",\"description\":\"Learn more about Playwright automation \u0026 monitoring with Checkly. Explore how to automate your web with a reliable, programmable monitoring workflow.\",\"metatags\":{\"title\":\"Learn Playwright \u0026 Checkly - Browser Automation\"},\"sidebarTitle\":\"Overview\",\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/overview/\",\"href\":\"/learn/playwright/overview\"},{\"group\":\"Getting Started\",\"pages\":[{\"title\":\"Beginner’s Guide to Playwright Automation\",\"description\":\"Learn how Playwright, a browser automation tool, simplifies testing across Chrome, Firefox, and WebKit. Start building more reliable web applications today.\",\"date\":\"2020-06-29T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"basics\"],\"weight\":10,\"sidebarTitle\":\"What is Playwright?\",\"aliases\":[\"/learn/playwright/getting-started/\"],\"learn_playwright\":{\"parent\":\"Getting started\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/what-is-playwright/\",\"href\":\"/learn/playwright/what-is-playwright\"},{\"title\":\"How to Set Up Playwright Locally\",\"description\":\"Install Playwright locally with a single npm command and run your first browser automation script, using Node.js and the bundled browser.\",\"date\":\"2020-06-20T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"basics\"],\"weight\":30,\"displayTitle\":\"How to Set Up Playwright Locally\",\"sidebarTitle\":\"Setting up Playwright\",\"learn_playwright\":{\"parent\":\"Getting started\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/how-to-set-up-locally/\",\"href\":\"/learn/playwright/how-to-set-up-locally\"},{\"title\":\"The Layers of the Testing Pyramid\",\"description\":\"This article gives a tour of the testing pyramid’s layers with examples, and shows you how each part is required for a complete picture of system performance.\",\"date\":\"2025-04-01T00:00:00.000Z\",\"author\":\"Nočnica Mellifera\",\"githubUser\":\"serverless-mom\",\"tags\":[\"basics\"],\"weight\":29,\"learn_playwright\":{\"parent\":\"Getting started\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/testing-pyramid/\",\"href\":\"/learn/playwright/testing-pyramid\"}]},{\"group\":\"Interaction\",\"pages\":[{\"title\":\"Playwright Assertions - Types \u0026 Best Practices\",\"displayTitle\":\"Playwright Assertions - Types \u0026 Best Practices\",\"metatags\":{\"title\":\"Playwright Assertions - Types \u0026 Best Practices\"},\"subTitle\":\"How to ensure elements are ready for interaction\",\"description\":\"Learn more about Playwright Assertions. Explore different types, common errors, best practices, and how to get started.\",\"tags\":[\"basics\"],\"sidebarTitle\":\"Assertions\",\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/assertions/\",\"href\":\"/learn/playwright/assertions\"},{\"title\":\"How to Click, Type, and Hover with Playwright\",\"description\":\"Replicate real user interactions in Playwright, clicking buttons, typing into fields, and hovering over elements using user-first selectors.\",\"subTitle\":\"Basic page interactions\",\"date\":\"2020-06-15T00:00:00.000Z\",\"author\":[\"Giovanni Rago\",\"Tim Nolet\"],\"githubUser\":[\"ragog\",\"tnolet\"],\"tags\":[\"basics\"],\"weight\":70,\"sidebarTitle\":\"Clicking and typing\",\"learn_playwright\":{\"parent\":\"Interaction\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/clicking-typing-hovering/\",\"href\":\"/learn/playwright/clicking-typing-hovering\"},{\"title\":\"How to Handle iFrames in Playwright\",\"description\":\"Access and interact with iframe content in Playwright using frameLocator to query elements inside a frame as if you were in the page context.\",\"subTitle\":\"Accessing and interacting with iframes\",\"date\":\"2022-08-25T00:00:00.000Z\",\"author\":\"Stefan Judis\",\"githubUser\":\"stefanjudis\",\"tags\":[\"iframes\"],\"weight\":100,\"sidebarTitle\":\"Interacting with iframes\",\"learn_playwright\":{\"parent\":\"Interaction\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/iframe-interaction/\",\"href\":\"/learn/playwright/iframe-interaction\"},{\"title\":\"How to Use Playwright to Navigate and Interact with Web Pages\",\"displayTitle\":\"How to Use Playwright for Navigation and Interaction\",\"metatags\":{\"title\":\"Navigation \u0026 Waiting Strategies in Playwright\"},\"subTitle\":\"How to ensure elements are ready for interaction\",\"description\":\"Learn how to navigate web pages and implement effective waiting mechanisms. A guide ideal for developers looking to refine their automation scripts.\",\"date\":\"2020-06-15T00:00:00.000Z\",\"author\":\"Tim Nolet\",\"githubUser\":\"tnolet\",\"tags\":[\"basics\"],\"weight\":50,\"sidebarTitle\":\"Navigation\",\"learn_playwright\":{\"parent\":\"Interaction\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/navigation/\",\"href\":\"/learn/playwright/navigation\"},{\"title\":\"How to Work with Selectors in Playwright\",\"displayTitle\":\"How to Work with Selectors in Playwright\",\"description\":\"Learn to write solid scripts using Playwright. Discover how to choose stable selectors and start enhancing your skills today.\",\"subTitle\":\"Techniques and pointers\",\"date\":\"2020-06-22T00:00:00.000Z\",\"author\":\"Nočnica Mellifera\",\"githubUser\":\"serverless-mom\",\"tags\":[\"basics\"],\"weight\":60,\"sidebarTitle\":\"UI selectors\",\"learn_playwright\":{\"parent\":\"Interaction\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/selectors/\",\"href\":\"/learn/playwright/selectors\"},{\"title\":\"Dealing with waits and timeouts in Playwright\",\"description\":\"Replace flaky hard-coded timeouts in Playwright with auto-waiting and web-first assertions to make your tests faster and more reliable.\",\"date\":\"2021-11-26T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"best practices\",\"waiting\"],\"sidebarTitle\":\"Waits and timeouts\",\"weight\":70,\"learn_playwright\":{\"parent\":\"Interaction\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/waits-and-timeouts/\",\"href\":\"/learn/playwright/waits-and-timeouts\"}]},{\"group\":\"Basics\",\"pages\":[{\"title\":\"How to Manage Authentication in Playwright\",\"subTitle\":\"Speeding up tests by skipping login, and more\",\"description\":\"Learn how to handle authentication in Playwright, including SSO, 2FA, Passkeys and more. Reuse authentication state across tests with storageState.\",\"displayDescription\":\"Learn how to handle authentication in Playwright, including SSO, 2FA, Passkeys and more. Reuse authentication state across tests with storageState.\",\"date\":\"2024-12-10T00:00:00.000Z\",\"author\":\"Tim Nolet\",\"githubUser\":\"tnolet\",\"tags\":[\"authentication\",\"storageState\",\"2fa\",\"cookies\"],\"weight\":105,\"sidebarTitle\":\"Authentication\",\"learn_playwright\":{\"parent\":\"Basics\"},\"category\":\"Playwright\",\"aliases\":[\"managing-cookies\"],\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/authentication/\",\"href\":\"/learn/playwright/authentication\"},{\"title\":\"Record Automation Scripts Using Playwright Codegen\",\"description\":\"Generate Playwright scripts automatically with the codegen command, recording your browser interactions into editable test code with user-first locators.\",\"subTitle\":\"Automatically record playwright tests with codegen\",\"date\":\"2025-02-20T00:00:00.000Z\",\"author\":\"Nočnica Mellifera\",\"githubUser\":\"serverless-mom\",\"tags\":[\"basics\"],\"weight\":40,\"sidebarTitle\":\"Codegen\",\"learn_playwright\":{\"parent\":\"Basics\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/codegen/\",\"href\":\"/learn/playwright/codegen\"},{\"title\":\"How to emulate mobile devices with Playwright\",\"description\":\"Emulate mobile devices in Playwright by setting viewport size, device pixel ratio, and user-agent strings to test responsive behavior across screens.\",\"subTitle\":\"Learn how to emulate mobile devices\",\"date\":\"2022-07-19T00:00:00.000Z\",\"author\":[\"Giovanni Rago\",\"Stefan Judis\"],\"githubUser\":[\"ragog\",\"stefanjudis\"],\"tags\":[\"basics\"],\"sidebarTitle\":\"Emulating mobile devices\",\"weight\":130,\"learn_playwright\":{\"parent\":\"Basics\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/emulating-mobile-devices/\",\"href\":\"/learn/playwright/emulating-mobile-devices\"},{\"title\":\"How to Generate PDFs with Playwright\",\"description\":\"Generate PDFs from web pages with Playwright's page.pdf() command and customize the output for archiving, invoices, and other document automation.\",\"subTitle\":\"Creating invoices, books and more from a web page\",\"date\":\"2020-11-19T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"pdf\"],\"weight\":130,\"sidebarTitle\":\"Generating PDFs\",\"learn_playwright\":{\"parent\":\"Basics\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/generating-pdfs/\",\"href\":\"/learn/playwright/generating-pdfs\"},{\"title\":\"How to detect broken links using Playwright\",\"description\":\"Detect broken links on a page with Playwright by extracting every link and checking each URL's status code, then monitor for 404s with Checkly.\",\"displayTitle\":\"How to detect broken links using Playwright\",\"date\":\"2024-11-07T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"e2e\",\"assertions\"],\"weight\":120,\"sidebarTitle\":\"Detecting broken links\",\"learn_playwright\":{\"parent\":\"Basics\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/how-to-detect-broken-links/\",\"href\":\"/learn/playwright/how-to-detect-broken-links\"},{\"title\":\"How to Intercept Requests in Playwright\",\"description\":\"Observe and manipulate network traffic in Playwright by intercepting requests and responses, logging them or modifying them during a test.\",\"subTitle\":\"Monitoring and manipulating web traffic\",\"date\":\"2020-09-03T00:00:00.000Z\",\"author\":[\"Giovanni Rago\",\"Jonathan Thompson\"],\"githubUser\":[\"ragog\",\"thompsonjonm\"],\"tags\":[\"network\"],\"weight\":105,\"sidebarTitle\":\"Intercepting requests\",\"learn_playwright\":{\"parent\":\"Basics\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/intercept-requests/\",\"href\":\"/learn/playwright/intercept-requests\"},{\"title\":\"Test Dynamic Content by Mocking API Responses\",\"description\":\"Stabilize tests for dynamic pages by mocking API responses in Playwright, fixing unpredictable data like stock counts while leaving the rest of the page live.\",\"subTitle\":\"Manipulating and mocking API responses\",\"date\":\"2025-03-12T00:00:00.000Z\",\"author\":[\"Nočnica Mellifera\"],\"githubUser\":[\"serverless-mom\"],\"tags\":[\"network\"],\"weight\":125,\"sidebarTitle\":\"Mocking API Responses\",\"learn_playwright\":{\"parent\":\"Basics\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/mock-api/\",\"href\":\"/learn/playwright/mock-api\"},{\"title\":\"Handling Multiple Tabs with Playwright\",\"description\":\"Control multiple browser tabs in Playwright, opening new pages in a context and interacting with each independently within a single test.\",\"subTitle\":\"Controlling multiple tabs\",\"date\":\"2021-08-29T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"multi-tab\",\"testing\"],\"weight\":135,\"sidebarTitle\":\"Multiple tabs\",\"learn_playwright\":{\"parent\":\"Basics\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/multitab-flows/\",\"href\":\"/learn/playwright/multitab-flows\"},{\"title\":\"Playwright Screenshots - How to Take and Automate Screenshots\",\"description\":\"Capture screenshots with Playwright's page.screenshot command, take full-page images, and automate visual comparisons to catch regressions.\",\"subTitle\":\"Leveraging images for troubleshooting and more\",\"date\":\"2020-06-23T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"basics\"],\"weight\":110,\"sidebarTitle\":\"Taking screenshots\",\"learn_playwright\":{\"parent\":\"Basics\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/taking-screenshots/\",\"href\":\"/learn/playwright/taking-screenshots\"},{\"title\":\"How to run Playwright tests in parallel\",\"description\":\"Run Playwright tests in parallel or in sequence, distinguishing stateless from stateful tests to avoid conflicts and speed up your suite.\",\"displayTitle\":\"How to run Playwright tests in parallel\",\"date\":\"2024-11-08T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"e2e\",\"assertions\"],\"weight\":110,\"sidebarTitle\":\"Parallel testing\",\"learn_playwright\":{\"parent\":\"Basics\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/testing-in-parallel/\",\"href\":\"/learn/playwright/testing-in-parallel\"}]},{\"group\":\"Best Practices\",\"pages\":[{\"title\":\"How to Handle Challenging Automation Flows in Playwright\",\"description\":\"Automate hard-to-test flows like signup, social login, and password reset in Playwright, and get past captchas and bot detection in test environments.\",\"subTitle\":\"Automation countermeasures and shortcomings\",\"date\":\"2020-07-23T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"security\"],\"weight\":4,\"sidebarTitle\":\"Complex workflows\",\"learn_playwright\":{\"parent\":\"Best practices\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/challenging-flows/\",\"href\":\"/learn/playwright/challenging-flows\"},{\"title\":\"How to Handle Test Data with Playwright\",\"description\":\"Keep Playwright tests DRY by factoring out test data and fixtures into dedicated files, so complex end-to-end scenarios stay readable and maintainable.\",\"subTitle\":\"Introduction to fixture handling\",\"date\":\"2020-07-16T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"test data\",\"testing\"],\"weight\":3,\"sidebarTitle\":\"Test data\",\"learn_playwright\":{\"parent\":\"Best practices\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/handling-test-data/\",\"href\":\"/learn/playwright/handling-test-data\"},{\"title\":\"Parameterizing your Playwright projects\",\"description\":\"Pass configuration options to Playwright fixtures and page object models, so you can parameterize page objects and your entire project cleanly.\",\"displayTitle\":\"Parameterizing Playwright Projects\",\"date\":\"2020-07-13T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"e2e\",\"assertions\"],\"weight\":3,\"sidebarTitle\":\"Parameterizing Projects\",\"learn_playwright\":{\"parent\":\"Best practices\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/how-to-parameterize-playwright-projects/\",\"href\":\"/learn/playwright/how-to-parameterize-playwright-projects\"},{\"title\":\"Measuring Page Performance Using Playwright - Best Practices\",\"description\":\"Measure web page performance with Playwright, understand why speed affects users and revenue, and track browser performance metrics over time.\",\"subTitle\":\"Explaining why it matters and how to assess it\",\"date\":\"2020-09-30T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"basics\",\"performance\"],\"weight\":1,\"sidebarTitle\":\"Performance\",\"learn_playwright\":{\"parent\":\"Best practices\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/performance/\",\"href\":\"/learn/playwright/performance\"},{\"title\":\"How to Scrape Data Behind a Login with Playwright\",\"description\":\"Scrape data that sits behind a login wall with Playwright by combining UI automation and scraping, illustrated by totalling Amazon order history.\",\"subTitle\":\"An example in accessing account-specific information\",\"date\":\"2020-12-23T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"scraping\"],\"weight\":6,\"sidebarTitle\":\"Scraping behind a login\",\"learn_playwright\":{\"parent\":\"Best practices\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/scraping-behind-login/\",\"href\":\"/learn/playwright/scraping-behind-login\"},{\"title\":\"Using Script Recorders with Playwright\",\"description\":\"Speed up script creation with Playwright recorders like codegen and the VS Code extension, then refine the generated selectors and waits for reliability.\",\"subTitle\":\"Generating scripts for beginners and pros\",\"date\":\"2020-09-16T00:00:00.000Z\",\"author\":\"Hannes Lenke\",\"githubUser\":\"hlenke\",\"tags\":[\"script generation\"],\"weight\":7,\"sidebarTitle\":\"Script recorders\",\"learn_playwright\":{\"parent\":\"Best practices\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/script-recorders/\",\"href\":\"/learn/playwright/script-recorders\"},{\"title\":\"Self-documenting tests - add automatic Playwright steps with Typescript Decorators\",\"description\":\"Structure complex Playwright tests with a single @step TypeScript decorator, replacing repetitive test.step calls to make reports easier to scan.\",\"subTitle\":\"Understand tests better with steps\",\"date\":\"2024-11-15T00:00:00.000Z\",\"author\":\"Stefan Judis\",\"githubUser\":\"stefanjudis\",\"tags\":[\"typescript\"],\"weight\":7,\"sidebarTitle\":\"Automatic Steps\",\"learn_playwright\":{\"parent\":\"Best practices\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/steps-decorators/\",\"href\":\"/learn/playwright/steps-decorators\"},{\"title\":\"Reuse code with custom test fixtures in Playwright\",\"description\":\"Share setup and logic across Playwright tests with custom fixtures, extending built-ins like page and context to keep your test base DRY and maintainable.\",\"subTitle\":\"Implement DRY practices by customizing your test environment\",\"date\":\"2024-03-16T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"tags\":[\"basics\",\"scraping\",\"assertions\"],\"weight\":7,\"sidebarTitle\":\"Test Fixtures\",\"learn_playwright\":{\"parent\":\"Best practices\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/test-fixtures/\",\"href\":\"/learn/playwright/test-fixtures\"},{\"title\":\"Testing APIs with Playwright\",\"description\":\"Use Playwright's request fixture to test REST and GraphQL APIs directly, sending requests and asserting on responses without opening a browser.\",\"displayTitle\":\"Using Playwright to test APIs\",\"date\":\"2020-07-13T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"e2e\",\"assertions\"],\"weight\":3,\"sidebarTitle\":\"Testing APIs\",\"learn_playwright\":{\"parent\":\"Best practices\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/testing-apis/\",\"href\":\"/learn/playwright/testing-apis\"},{\"title\":\"Playwright Web Scraping - How to Extract Data from Websites\",\"description\":\"Extract data from web pages with Playwright, reading element attributes and properties for testing assertions or general-purpose scraping.\",\"subTitle\":\"Extracting valuable information through automation\",\"date\":\"2020-08-26T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"basics\",\"scraping\",\"assertions\"],\"weight\":5,\"sidebarTitle\":\"Scraping\",\"learn_playwright\":{\"parent\":\"Best practices\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/web-scraping/\",\"href\":\"/learn/playwright/web-scraping\"},{\"title\":\"Best Practices for Writing Tests in Playwright\",\"description\":\"Write valuable, maintainable Playwright tests by keeping scripts short, simple, and readable, so they keep telling the truth about your system as it evolves.\",\"subTitle\":\"Principles for sustainable automated testing\",\"date\":\"2020-07-16T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"e2e\",\"testing\"],\"weight\":2,\"sidebarTitle\":\"Testing\",\"learn_playwright\":{\"parent\":\"Best practices\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/writing-tests/\",\"href\":\"/learn/playwright/writing-tests\"}]},{\"group\":\"E2E Examples\",\"pages\":[{\"title\":\"How to Bypass Time-Based 2FA Login Flows With Playwright\",\"description\":\"Automate logins protected by time-based one-time password (TOTP) two-factor authentication in Playwright by generating valid passcodes inside your test.\",\"subTitle\":\"Playwright for complex authentication tasks\",\"date\":\"2024-10-30T00:00:00.000Z\",\"author\":\"Stefan Judis\",\"githubUser\":\"stefanjudis\",\"tags\":[\"testing\"],\"weight\":5,\"sidebarTitle\":\"TOTP Authentication\",\"learn_playwright\":{\"parent\":\"E2E examples\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/bypass-totp/\",\"href\":\"/learn/playwright/bypass-totp\"},{\"title\":\"Mastering E2E Checkout Testing Using Playwright\",\"description\":\"Write end-to-end checkout tests with Playwright, adding products to a cart, entering billing details, and confirming the purchase completes successfully.\",\"subTitle\":\"Filling a basket and completing the transaction\",\"date\":\"2020-07-02T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"e2e\"],\"weight\":1,\"sidebarTitle\":\"Checkout\",\"learn_playwright\":{\"parent\":\"E2E examples\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/checkout-testing-guide/\",\"href\":\"/learn/playwright/checkout-testing-guide\"},{\"title\":\"How to Download Files with Playwright\",\"description\":\"Download files with Playwright and verify them against a fixture, using either the download event or extracting the href and fetching it with an HTTP request.\",\"subTitle\":\"Different ways of handling downloads\",\"date\":\"2020-09-09T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"e2e\",\"file download\"],\"sidebarTitle\":\"Downloading files\",\"weight\":4,\"learn_playwright\":{\"parent\":\"E2E examples\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/file-download/\",\"href\":\"/learn/playwright/file-download\"},{\"title\":\"How to Automate Google Login with Playwright\",\"description\":\"Automate social login with a Google account in Playwright, injecting credentials through environment variables to sign in via an OAuth provider flow.\",\"subTitle\":\"Dealing with Google authentication\",\"date\":\"2020-06-22T00:00:00.000Z\",\"author\":\"Tim Nolet\",\"githubUser\":\"tnolet\",\"tags\":[\"login\",\"e2e\"],\"sidebarTitle\":\"Google Auth\",\"weight\":9,\"learn_playwright\":{\"parent\":\"E2E examples\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/google-login-automation/\",\"href\":\"/learn/playwright/google-login-automation\"},{\"title\":\"How to search with Playwright\",\"description\":\"Test a site's search function end to end with Playwright by entering a term and asserting the expected number and content of results are shown.\",\"subTitle\":\"Verifying core platform functionality\",\"date\":\"2020-07-15T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"e2e\",\"assertions\",\"search\"],\"sidebarTitle\":\"Search\",\"weight\":5,\"learn_playwright\":{\"parent\":\"E2E examples\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/how-to-search/\",\"href\":\"/learn/playwright/how-to-search\"},{\"title\":\"How to Automate Login with Playwright\",\"description\":\"Automate a standard username-and-password login flow with Playwright and assert it succeeded by checking for an element only visible to logged-in users.\",\"subTitle\":\"Automating one of the most common scenarios\",\"date\":\"2020-06-25T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"e2e\",\"login\"],\"sidebarTitle\":\"Standard authentication\",\"weight\":7,\"learn_playwright\":{\"parent\":\"E2E examples\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/login-automation/\",\"href\":\"/learn/playwright/login-automation\"},{\"title\":\"How to Automate Microsoft Live Login with Playwright\",\"description\":\"Automate signing in to a Microsoft Live account with Playwright, injecting credentials through environment variables to reach the account page.\",\"subTitle\":\"Dealing with Microsoft authentication\",\"date\":\"2020-06-22T00:00:00.000Z\",\"author\":\"Tim Nolet\",\"githubUser\":\"tnolet\",\"tags\":[\"login\",\"e2e\"],\"sidebarTitle\":\"Microsoft Live Auth\",\"weight\":8,\"learn_playwright\":{\"parent\":\"E2E examples\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/microsoft-login-automation/\",\"href\":\"/learn/playwright/microsoft-login-automation\"},{\"title\":\"How to Test Coupons and Discounts with Playwright\",\"description\":\"Verify coupon and discount codes with Playwright by adding items to a cart and asserting the total price changes by the expected amount after applying the code.\",\"subTitle\":\"Applying and verifying a discount\",\"date\":\"2020-07-13T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"e2e\",\"assertions\"],\"weight\":3,\"sidebarTitle\":\"Discounts \u0026 coupons\",\"learn_playwright\":{\"parent\":\"E2E examples\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/testing-coupons/\",\"href\":\"/learn/playwright/testing-coupons\"},{\"title\":\"How to Test File Uploads with Playwright\",\"description\":\"Test file upload functionality with Playwright by logging in and attaching a file, using a profile-image upload as a worked example.\",\"subTitle\":\"Modifying account settings with a file upload\",\"date\":\"2020-07-22T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"e2e\",\"file upload\"],\"weight\":2,\"sidebarTitle\":\"File uploads\",\"learn_playwright\":{\"parent\":\"E2E examples\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/testing-file-uploads/\",\"href\":\"/learn/playwright/testing-file-uploads\"},{\"title\":\"Automating User Signup with Playwright\",\"description\":\"Automate user signup flows with Playwright by filling registration forms, submitting them, and confirming the account was created through a UI change.\",\"subTitle\":\"Handling signups flows\",\"date\":\"2020-06-30T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"e2e\",\"signup\"],\"sidebarTitle\":\"User signup\",\"weight\":6,\"learn_playwright\":{\"parent\":\"E2E examples\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/user-signup-automation/\",\"href\":\"/learn/playwright/user-signup-automation\"}]},{\"group\":\"Debugging\",\"pages\":[{\"title\":\"Playwright Debugging Errors - Common Issues and Solutions\",\"description\":\"Recognize common categories of Playwright errors and their obvious and non-obvious root causes, with links to fixes for the most frequent failures.\",\"subTitle\":\"Recurring non-trivial debugging situations and how to solve them\",\"date\":\"2021-08-05T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"debugging\"],\"weight\":2,\"sidebarTitle\":\"Common issues\",\"learn_playwright\":{\"parent\":\"Debugging\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/debugging-errors/\",\"href\":\"/learn/playwright/debugging-errors\"},{\"title\":\"Playwright Debugging - Techniques for Script Troubleshooting\",\"description\":\"Troubleshoot failing Playwright scripts by reading error messages in context, understanding expected behavior, and using the right tools to gain visibility.\",\"subTitle\":\"How to go about fixing what is not working\",\"date\":\"2021-07-26T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"debugging\"],\"weight\":1,\"sidebarTitle\":\"Debugging scripts\",\"learn_playwright\":{\"parent\":\"Debugging\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/debugging/\",\"href\":\"/learn/playwright/debugging\"},{\"title\":\"How to Fix the \\\"Click Not Executed\\\" Error in Playwright\",\"description\":\"Diagnose why a Playwright click seems to be ignored, from duplicate element IDs to the wrong element receiving the click, and use strict mode to catch it.\",\"date\":\"2021-11-18T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"debugging\"],\"weight\":3,\"sidebarTitle\":\"Click not executed\",\"learn_playwright\":{\"parent\":\"Debugging\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/error-click-not-executed/\",\"href\":\"/learn/playwright/error-click-not-executed\"},{\"title\":\"How to Fix 'Element Not Found' Errors in Playwright\",\"description\":\"Fix Playwright's element not found error, from wrong selectors and missing waits to a previous click that silently left you on the wrong page.\",\"date\":\"2021-08-05T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"debugging\"],\"weight\":4,\"sidebarTitle\":\"Element not found\",\"learn_playwright\":{\"parent\":\"Debugging\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/error-element-not-found/\",\"href\":\"/learn/playwright/error-element-not-found\"},{\"title\":\"How to Fix \\\"Element Not Visible\\\" Error in Playwright\",\"description\":\"Fix Playwright's element not visible error by checking whether an element is hidden or covered by another, using headful mode and screenshots to confirm state.\",\"date\":\"2021-08-05T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"debugging\"],\"weight\":5,\"sidebarTitle\":\"Element not visible\",\"learn_playwright\":{\"parent\":\"Debugging\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/error-element-not-visible/\",\"href\":\"/learn/playwright/error-element-not-visible\"},{\"title\":\"How to Fix \\\"Target Closed\\\" Error in Playwright\",\"description\":\"Understand and fix Playwright's Target closed error, usually caused by a browser, context, or tab closing too early or a missing await on a promise.\",\"date\":\"2021-08-05T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"debugging\"],\"weight\":6,\"sidebarTitle\":\"Target closed\",\"learn_playwright\":{\"parent\":\"Debugging\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/error-target-closed/\",\"href\":\"/learn/playwright/error-target-closed\"},{\"title\":\"How to Fix \\\"Wait Not Respected\\\" Error in Playwright\",\"description\":\"Fix Playwright waits that seem ignored, usually because the element already matches your state requirement, and confirm element state in the browser console.\",\"date\":\"2021-08-05T00:00:00.000Z\",\"author\":\"Giovanni Rago\",\"githubUser\":\"ragog\",\"tags\":[\"debugging\"],\"weight\":7,\"sidebarTitle\":\"Wait not respected\",\"learn_playwright\":{\"parent\":\"Debugging\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/error-wait-not-respected/\",\"href\":\"/learn/playwright/error-wait-not-respected\"}]},{\"group\":\"AI \u0026 Coding Agents\",\"pages\":[{\"title\":\"Debugging Playwright Tests with AI Agents\",\"description\":\"Let your coding agent debug failing Playwright tests: read the error-context.md attachment, analyze traces in the terminal with npx playwright trace, and step through live tests with --debug=cli.\",\"subTitle\":\"Playwright's debugging tools went text-first\",\"tags\":[\"debugging\",\"ai\"],\"weight\":8,\"sidebarTitle\":\"Debugging with AI agents\",\"learn_playwright\":{\"parent\":\"AI \u0026 Coding Agents\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/playwright/debugging-with-ai-agents/\",\"href\":\"/learn/playwright/debugging-with-ai-agents\"}]}]},{\"dropdown\":\"Incidents\",\"icon\":\"triangle-exclamation\",\"pages\":[{\"title\":\"Incident Response - Improve Recovery \u0026 Avoid Downtime\",\"displayTitle\":\"Learn the fundamentals of Incident Response\",\"description\":\"Master incident response with real-world insights. Learn how to reduce downtime, regain user trust, and build a resilient incident management workflow.\",\"date\":\"2025-04-07T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":null,\"sidebarTitle\":\"Overview\",\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/overview/\",\"href\":\"/learn/incidents/overview\"},{\"group\":\"Detection\",\"pages\":[{\"title\":\"Best Practices for Detecting Downtime | Incident Response\",\"displayTitle\":\"Best Practices for Detecting Downtime - A Guide for Developers\",\"sidebarTitle\":\"Detecting Downtime\",\"description\":\"Discover how to implement multi‑layered monitoring, smart alerts, third‑party checks, failure drills \u0026 global probes to catch outages fast and reduce revenue loss\",\"date\":\"2025-02-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":null,\"weight\":10,\"learn_incidents\":{\"parent\":\"Detection\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/detection-best-practices/\",\"href\":\"/learn/incidents/detection-best-practices\"},{\"title\":\"Incident Management Challenges | Checkly Guide\",\"displayTitle\":\"Incident Management Challenges\",\"sidebarTitle\":\"Incident Management Challenges\",\"description\":\"Find out what are the most common incident challenges and how to address them.\",\"date\":\"2025-05-23T00:00:00.000Z\",\"author\":\"Sara Miteva\",\"githubUser\":\"SaraMiteva\",\"displayDescription\":\"Find out what are the most common incident challenges and how to address them.\",\"learn_incidents\":{\"parent\":\"Detection\"},\"weight\":20,\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/incident-management-challenges/\",\"href\":\"/learn/incidents/incident-management-challenges\"},{\"title\":\"Reduce Mean Time to Detection MTTD - Best Practices Guide\",\"displayTitle\":\"How to Detect Problems Faster\",\"sidebarTitle\":\"MTTD Best Practices\",\"description\":\"Avoid user‑reported outages with synthetic checks, anomaly detection, smart alerting, and rich failure traces for rapid detection.\",\"date\":\"2025-02-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":null,\"weight\":120,\"learn_incidents\":{\"parent\":\"Detection\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/reduce-mttd/\",\"href\":\"/learn/incidents/reduce-mttd\"},{\"title\":\"SLA vs SLO vs SLI - What’s the Difference? Comparison with examples\",\"displayTitle\":\"SLA vs SLO vs SLI - What’s the Difference?\",\"sidebarTitle\":\"SLA vs SLO vs SLI\",\"description\":\"Avoid user‑reported outages with synthetic checks, anomaly detection, smart alerting, and rich failure traces for rapid detection.\",\"date\":\"2025-04-15T00:00:00.000Z\",\"author\":\"Sara Miteva\",\"githubUser\":\"SaraMiteva\",\"displayDescription\":null,\"weight\":121,\"learn_incidents\":{\"parent\":\"Detection\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/\",\"href\":\"/learn/incidents/slo-sla-sli\"},{\"title\":\"What is Incident Response? Fundamentals and best practices\",\"displayTitle\":\"What is Incident Response?\",\"sidebarTitle\":\"What is Incident Response?\",\"description\":\"Learn the key types and stages of incident response—outages, performance issues, security events, user‑reported problems—and keep your services resilient.\",\"date\":\"2025-02-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":null,\"weight\":1,\"learn_incidents\":{\"parent\":\"Detection\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/what-is-incident-response/\",\"href\":\"/learn/incidents/what-is-incident-response\"}]},{\"group\":\"Classification\",\"pages\":[{\"title\":\"Incident Response Automation - From Alerts to Action\",\"displayTitle\":\"Automation in incident response\",\"sidebarTitle\":\"Playbooks \u0026 Automation\",\"description\":\"Discover how to layer semi‑automated workflows, automated scripts, and safety checks into your playbooks for faster recovery.\",\"date\":\"2025-02-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":null,\"weight\":50,\"learn_incidents\":{\"parent\":\"Classification\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/automation-incident-response/\",\"href\":\"/learn/incidents/automation-incident-response\"},{\"title\":\"Incident Assessment \u0026 Severity | Checkly Guide\",\"displayTitle\":\"Incident Assessment \u0026 Severity Guide for Engineering Teams (+ Cheat Sheet)\",\"sidebarTitle\":\"Incident Assessment \u0026 Severity Guide\",\"description\":\"Not every alert is an incident—and not every incident is equally urgent. How to classify incidents and determine their severity?\",\"date\":\"2025-05-23T00:00:00.000Z\",\"author\":\"Sara Miteva\",\"githubUser\":\"SaraMiteva\",\"displayDescription\":\"How to classify incidents and determine their severity?\",\"weight\":20,\"learn_incidents\":{\"parent\":\"Classification\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/incident-assessment-severity/\",\"href\":\"/learn/incidents/incident-assessment-severity\"},{\"title\":\"How to Set an On‑Call Schedule | Checkly Incident Response\",\"displayTitle\":\"How to Set an On-Call Schedule\",\"sidebarTitle\":\"On-Call Schedules - How to\",\"description\":\"Learn to design effective on‑call rotations—shift models, clear response rules, scheduling tools, mock drills, and fairness to prevent burnout.\",\"date\":\"2025-03-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":null,\"weight\":10,\"learn_incidents\":{\"parent\":\"Classification\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/on-call-schedule/\",\"href\":\"/learn/incidents/on-call-schedule\"},{\"title\":\"Incident Response Playbooks - Culture \u0026 Compliance | Checkly\",\"displayTitle\":\"Incident Response Playbooks\",\"sidebarTitle\":\"Incident Response Playbooks\",\"description\":\"Master playbooks by setting clear standards, empowering team autonomy, and refining processes when steps are skipped.\",\"date\":\"2025-04-07T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":null,\"weight\":20,\"learn_incidents\":{\"parent\":\"Classification\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/playbooks/\",\"href\":\"/learn/incidents/playbooks\"}]},{\"group\":\"Investigation\",\"pages\":[{\"title\":\"Modern Root Cause Analysis | Checkly Guide\",\"displayTitle\":\"Modern Root Cause Analysis\",\"sidebarTitle\":\"Modern Root Cause Analysis\",\"description\":\"Discover how unified metrics, logs, traces, and synthetic tests help you pinpoint failures faster, reduce downtime, and more.\",\"date\":\"2025-04-06T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":null,\"weight\":10,\"learn_incidents\":{\"parent\":\"Investigation\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/modern-root-cause-analysis/\",\"href\":\"/learn/incidents/modern-root-cause-analysis\"},{\"title\":\"Root Cause with Traces - Faster RCA | Checkly\",\"displayTitle\":\"Tracing for Root Cause Analysis\",\"sidebarTitle\":\"Tracing for Root Cause Analysis\",\"description\":\"Combine distributed tracing with synthetic checks to pinpoint failures across microservices, preserve request context, and reduce MTTR.\",\"date\":\"2025-04-06T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":null,\"weight\":20,\"learn_incidents\":{\"parent\":\"Investigation\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/root-cause-with-traces/\",\"href\":\"/learn/incidents/root-cause-with-traces\"}]},{\"group\":\"Repair\",\"pages\":[{\"title\":\"Defining MTTR - what mean time to repair means for your team\",\"displayTitle\":\"What is MTTR? And Why Cant We Agree On It?\",\"sidebarTitle\":\"What is MTTR?\",\"description\":\"Mean Time to Repair (MTTR) is a critical metric in the world of IT operations and engineering, representing the average time it takes to repair a system or service after a failure occurs. Despite its importance, many teams fail to meet their MTTR goals.\",\"date\":\"2025-02-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":null,\"weight\":20,\"learn_incidents\":{\"parent\":\"Repair\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/defining-mttr/\",\"href\":\"/learn/incidents/defining-mttr\"},{\"title\":\"How to Use DORA Metrics the Right Way | Checkly\",\"displayTitle\":\"How to Use DORA Metrics the Right Way\",\"sidebarTitle\":\"DORA Metrics for Performance Evaluation\",\"description\":\"Learn to track and interpret DORA’s four metrics—deployments, lead time, failure rate, and restore time—to improve your software delivery.\",\"date\":\"2025-03-13T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":null,\"weight\":150,\"learn_incidents\":{\"parent\":\"Repair\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/dora-metrics/\",\"href\":\"/learn/incidents/dora-metrics\"},{\"title\":\"MTTR Challenges \u0026 Solutions | Checkly\",\"displayTitle\":\"Best Practices for Reduced Mean Time To Repair\",\"sidebarTitle\":\"Reducing Time to Repair\",\"description\":\"Find out why MTTR targets fail—from weak observability and slow detection to cloud‑native complexity—and apply practical tactics to meet your SLAs.\",\"date\":\"2025-02-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":null,\"weight\":10,\"learn_incidents\":{\"parent\":\"Repair\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/mttr-challenges/\",\"href\":\"/learn/incidents/mttr-challenges\"}]},{\"group\":\"Communication\",\"pages\":[{\"title\":\"Anatomy of a Status Page | Checkly Guide\",\"displayTitle\":\"Anatomy of a Status Page\",\"sidebarTitle\":\"Anatomy of a Status Page\",\"description\":\"Discover what makes a status page users trust - automated monitoring, clear visuals, service groupings, and more.\",\"date\":\"2025-04-08T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":null,\"weight\":20,\"learn_incidents\":{\"parent\":\"Communication\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/anatomy-of-a-status-page/\",\"href\":\"/learn/incidents/anatomy-of-a-status-page\"},{\"title\":\"Best Practices for Communicating During Outages and Incidents\",\"displayTitle\":\"Incident Communication - Best Practices\",\"sidebarTitle\":\"Incident Communication\",\"description\":\"Lack of communication, or wrong communication, can often be the part of incident response that comes in for the most criticism. While it’s critical to define playbooks for communication, this article will talk in general about the best practices for communicating with users during an incident.\",\"date\":\"2025-02-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":null,\"weight\":10,\"learn_incidents\":{\"parent\":\"Communication\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/incident-communication/\",\"href\":\"/learn/incidents/incident-communication\"},{\"title\":\"Postmortems That Drive Real Improvements (+ Template) | Checkly Guide\",\"displayTitle\":\"Postmortems That Drive Real Improvement (+ Template)\",\"sidebarTitle\":\"Postmortems That Drive Real Improvement (+ Template)\",\"description\":\"Postmortems aren’t just documentation exercises. Check out how to properly do one + get a downloadable template.\",\"date\":\"2025-05-23T00:00:00.000Z\",\"author\":\"Sara Miteva\",\"githubUser\":\"SaraMiteva\",\"displayDescription\":null,\"weight\":20,\"learn_incidents\":{\"parent\":\"Communication\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/postmortems/\",\"href\":\"/learn/incidents/postmortems\"}]}]},{\"dropdown\":\"Kubernetes\",\"icon\":\"dharmachakra\",\"pages\":[{\"title\":\"Learn How to Observe and Monitor your Kubernetes\",\"displayTitle\":\"Monitoring Kubernetes\",\"sidebarTitle\":\"Overview\",\"description\":\"Learn OpenTelemetry with Checkly. Add monitoring to every piece of your stack with the open standards and open-source tools.\",\"date\":\"2024-10-17T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":null,\"canonical\":\"https://www.checklyhq.com/docs/learn/kubernetes/overview/\",\"href\":\"/learn/kubernetes/overview\"},{\"title\":\"Centralized logging in Kubernetes with OpenTelemetry - guide with examples\",\"displayTitle\":\"Centralized logging in Kubernetes with OpenTelemetry\",\"sidebarTitle\":\"Centralized Logging\",\"description\":\"Monitoring logs effectively in a Kubernetes environment requires tools that centralize and streamline log management.\",\"date\":\"2024-11-08T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"Learn about using OpenTelemetry for centralized logging in Kubernetes\",\"weight\":30,\"canonical\":\"https://www.checklyhq.com/docs/learn/kubernetes/centralized-logging/\",\"href\":\"/learn/kubernetes/centralized-logging\"},{\"title\":\"Kubernetes Events - A Native Resource for State Insight\",\"displayTitle\":\"Kubernetes Events\",\"sidebarTitle\":\"Events\",\"description\":\"In Kubernetes, **Events** are a native resource, providing insight into actions and state changes of objects in the cluster. Events are platform-generated messages accessible through the Kubernetes API, often used by operators and users to understand what has happened to various Kubernetes objects.\",\"date\":\"2024-11-08T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"How events can help you explore change of state on your cluster\",\"weight\":65,\"canonical\":\"https://www.checklyhq.com/docs/learn/kubernetes/events/\",\"href\":\"/learn/kubernetes/events\"},{\"title\":\"Introducing klog - The Kubernetes Logging Library\",\"displayTitle\":\"klog for structured logging\",\"sidebarTitle\":\"klog\",\"description\":\"Meet klog, the Kubernetes-specific logging library designed to provide structured and reliable logging across Kubernetes components. In this post, we’ll dive into klog’s purpose, key features, and how it’s transforming logging in Kubernetes.\",\"date\":\"2024-11-08T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"klog, a permanent fork of glog, is a go logging tool focused on structured logging in a Kubernetes envrionment.\",\"weight\":60,\"canonical\":\"https://www.checklyhq.com/docs/learn/kubernetes/klog/\",\"href\":\"/learn/kubernetes/klog\"},{\"title\":\"Logging in Kubernetes - Best Practices\",\"displayTitle\":\"Logging in Kubernetes - Best Practices\",\"sidebarTitle\":\"Best Practices\",\"description\":\"Monitoring logs effectively in a Kubernetes environment requires tools that centralize and streamline log management.\",\"date\":\"2024-11-08T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"Best practices for logging in your Kubernetes-hosted applications and infrastructure.\",\"weight\":20,\"canonical\":\"https://www.checklyhq.com/docs/learn/kubernetes/logging-best-practices/\",\"href\":\"/learn/kubernetes/logging-best-practices\"},{\"title\":\"Learn How to Observe and Monitor your Kubernetes Environment with Open Source Tools\",\"displayTitle\":\"The Challenge of Monitoring Production Kubernetes - Insights and Tools\",\"sidebarTitle\":\"Monitoring Kubernetes\",\"description\":\"Managing Kubernetes in production is no small feat, especially when it comes to monitoring and observability.\",\"date\":\"2024-11-08T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"We explore the unique challenges of monitoring Kubernetes environments and the open-source tools that can improve visibility and control.\",\"weight\":1,\"canonical\":\"https://www.checklyhq.com/docs/learn/kubernetes/monitoring-challenges/\",\"href\":\"/learn/kubernetes/monitoring-challenges\"},{\"title\":\"Introduction to Node Problem Detector for Kubernetes\",\"displayTitle\":\"Node Problem Detector\",\"sidebarTitle\":\"Node Problem Detector\",\"description\":\"The Node Problem Detector (NPD) is a Kubernetes tool for monitoring the health of nodes. Designed to identify and report a range of node issues, NPD aims to maintain cluster stability by detecting faulty nodes and marking them as unschedulable\",\"date\":\"2024-11-11T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"Find unhealthy nodes with the Node Problem Detector\",\"weight\":80,\"canonical\":\"https://www.checklyhq.com/docs/learn/kubernetes/node-problem-detector/\",\"href\":\"/learn/kubernetes/node-problem-detector\"},{\"title\":\"Introduction to Kubernetes Operators - scraping metrics with Prometheus\",\"displayTitle\":null,\"sidebarTitle\":\"Operators\",\"description\":\"Operators in Kubernetes enable custom automation by encapsulating specific operational knowledge within Kubernetes itself. They function as custom controllers that manage complex applications and provide features like automated deployment, scaling, and management.\",\"date\":\"2024-11-08T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"How to create a first Kubernetes operator, and monitor the operator state with Prometheus.\",\"weight\":70,\"canonical\":\"https://www.checklyhq.com/docs/learn/kubernetes/operators-metrics/\",\"href\":\"/learn/kubernetes/operators-metrics\"},{\"title\":\"Structured Logging in Kubernetes - Why it matters and how to get started\",\"displayTitle\":\"Structured Logging in Kubernetes\",\"sidebarTitle\":\"Structured Logging\",\"description\":\"Don't put unstructured blobs of data into your Kubernetes logs!\",\"date\":\"2024-11-08T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"Best practices for structured logging. learn_kubernetes\",\"weight\":50,\"canonical\":\"https://www.checklyhq.com/docs/learn/kubernetes/structured-logging/\",\"href\":\"/learn/kubernetes/structured-logging\"}]},{\"dropdown\":\"Monitoring\",\"icon\":\"chart-line\",\"pages\":[{\"title\":\"Monitoring Resources - Tools, Metrics \u0026 Best Practices\",\"sidebarTitle\":\"Monitoring\",\"description\":\"Browse essential monitoring resources from Checkly. Learn key metrics, performance tools, and best practices to optimize your systems and user experience.\",\"date\":\"2024-10-17T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":null,\"canonical\":\"https://www.checklyhq.com/docs/learn/monitoring/overview/\",\"href\":\"/learn/monitoring/overview\"},{\"group\":\"SDLC Basics\",\"pages\":[{\"title\":\"Understanding the Software Development Life Cycle (SDLC) for Engineers\",\"displayTitle\":\"Understanding the Software Development Life Cycle (SDLC)\",\"sidebarTitle\":\"Understanding the SDLC\",\"description\":\"With fast-paced standards for development and operations; where Agile, DevOps, and continuous delivery dominate—understanding SDLC remains crucial.\",\"date\":\"2025-04-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"With fast-paced standards for development and operations; where Agile, DevOps, and continuous delivery dominate—understanding SDLC remains crucial.\",\"learn_monitoring\":{\"parent\":\"Observability Basics\"},\"weight\":10,\"canonical\":\"https://www.checklyhq.com/docs/learn/monitoring/intro-to-sdlc/\",\"href\":\"/learn/monitoring/intro-to-sdlc\"},{\"title\":\"Observability Basics - Metrics that every team needs\",\"displayTitle\":\"Metrics Every Team Needs\",\"sidebarTitle\":\"Metrics Every Team Needs\",\"description\":\"This article will help define the metrics that every team needs to get tracking of their system’s performance\",\"date\":\"2025-04-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"Define the metrics that every team needs to get tracking of their system’s performance\",\"learn_monitoring\":{\"parent\":\"Observability Basics\"},\"weight\":20,\"canonical\":\"https://www.checklyhq.com/docs/learn/monitoring/metrics-every-team-needs/\",\"href\":\"/learn/monitoring/metrics-every-team-needs\"}]},{\"group\":\"Monitoring Concepts\",\"pages\":[{\"title\":\"What is API Monitoring? - Tools, techniques, and examples\",\"displayTitle\":\"What is API Monitoring?\",\"sidebarTitle\":\"API Monitoring\",\"description\":\"The goal of API monitoring is to determine whether the APIs are functioning as they should and whether they are available and functioning at an optimal level for the other applications and services that rely on them.\",\"date\":\"2024-12-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"The goal of API monitoring is to determine whether the APIs are functioning as they should and whether they are available and functioning at an optimal level for the other applications and services that rely on them.\",\"learn_monitoring\":{\"parent\":\"Monitoring Concepts\"},\"weight\":35,\"canonical\":\"https://www.checklyhq.com/docs/learn/monitoring/api-monitoring/\",\"href\":\"/learn/monitoring/api-monitoring\"},{\"title\":\"Frontend Monitoring - Benefits, Challenges, and Top Tools\",\"displayTitle\":\"Frontend Monitoring - a beginner's guide\",\"sidebarTitle\":\"Frontend Monitoring\",\"description\":\"Discover the benefits, challenges, and top tools for frontend monitoring. Learn how to track performance, detect issues, and optimize user experience.\",\"date\":\"2024-12-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"Discover the benefits, challenges, and top tools for frontend monitoring. Learn how to track performance, detect issues, and optimize user experience.\",\"learn_monitoring\":{\"parent\":\"Monitoring Concepts\"},\"weight\":70,\"canonical\":\"https://www.checklyhq.com/docs/learn/monitoring/frontend-monitoring/\",\"href\":\"/learn/monitoring/frontend-monitoring\"},{\"title\":\"Monitoring as Code - A Practical Guide from Checkly\",\"displayTitle\":\"What is monitoring as code?\",\"description\":\"Learn how to implement monitoring as code with Checkly's guide. Bring transparency, scalability, and efficiency to your cloud infrastructure management.\",\"date\":\"2025-06-03T00:00:00.000Z\",\"author\":\"Daniel Giordano\",\"githubUser\":\"dgiordano33\",\"displayDescription\":\"Learn how to implement monitoring as code with Checkly's guide. Bring transparency, scalability, and efficiency to your cloud infrastructure management.\",\"sidebarTitle\":\"Monitoring as Code\",\"canonical\":\"https://www.checklyhq.com/docs/learn/monitoring/monitoring-as-code/\",\"href\":\"/learn/monitoring/monitoring-as-code\"},{\"title\":\"Real User Monitoring (RUM) - Benefits, Challenges, and Alternatives\",\"displayTitle\":\"Real User Monitoring (RUM) - A Practical Guide\",\"sidebarTitle\":\"Real User Monitoring\",\"description\":\"Discover the benefits, challenges, and top tools for frontend monitoring. Learn how to track performance, detect issues, and optimize user experience.\",\"date\":\"2024-12-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"Discover the benefits, challenges, and top tools for frontend monitoring. Learn how to track performance, detect issues, and optimize user experience.\",\"learn_monitoring\":{\"parent\":\"Monitoring Concepts\"},\"weight\":50,\"canonical\":\"https://www.checklyhq.com/docs/learn/monitoring/real-user-monitoring/\",\"href\":\"/learn/monitoring/real-user-monitoring\"},{\"title\":\"Synthetic Monitoring - Concepts, Benefits \u0026 Challenges\",\"displayTitle\":\"What is Synthetic Monitoring?\",\"sidebarTitle\":\"Synthetic Monitoring\",\"description\":\"Explore the what and why of synthetic monitoring.\",\"date\":\"2025-04-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"Explore the what and why of synthetic monitoring.\",\"learn_monitoring\":{\"parent\":\"Monitoring Concepts\"},\"weight\":55,\"canonical\":\"https://www.checklyhq.com/docs/learn/monitoring/synthetic-monitoring/\",\"href\":\"/learn/monitoring/synthetic-monitoring\"},{\"title\":\"Transaction Monitoring - Components, Benefits \u0026 Challenges\",\"displayTitle\":\"What is Transaction Monitoring?\",\"sidebarTitle\":\"Transaction Monitoring\",\"description\":\"Explore transaction monitoring for application developers and SREs.\",\"date\":\"2024-12-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"Explore the what and why of synthetic monitoring.\",\"learn_monitoring\":{\"parent\":\"Monitoring Concepts\"},\"weight\":60,\"canonical\":\"https://www.checklyhq.com/docs/learn/monitoring/transaction-monitoring/\",\"href\":\"/learn/monitoring/transaction-monitoring\"},{\"title\":\"Web Application Monitoring - Types, Benefits \u0026 Top 10 Tools\",\"displayTitle\":\"What is Web Application Monitoring?\",\"sidebarTitle\":\"Web Application Monitoring\",\"description\":\"Explore web application monitoring to boost performance and reliability with real user insights, performance tracking, and top tools.\",\"date\":\"2024-12-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"Explore web application monitoring to boost performance and reliability with real user insights, performance tracking, and top tools.\",\"learn_monitoring\":{\"parent\":\"Monitoring Concepts\"},\"weight\":31,\"canonical\":\"https://www.checklyhq.com/docs/learn/monitoring/web-application-monitoring/\",\"href\":\"/learn/monitoring/web-application-monitoring\"}]},{\"group\":\"Protocols\",\"pages\":[{\"title\":\"HTTPS Fundamentals - Beginner's Guide for App Developers\",\"displayTitle\":\"Intro to HTTPS\",\"sidebarTitle\":\"Intro to HTTPS\",\"description\":\"Let’s break down what HTTPS is, why it matters, and how to use it in your apps.\",\"date\":\"2025-02-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"Understanding the basics of HTTPS can help you build better, more secure applications. learn_monitoring\",\"weight\":190,\"learn_monitoring\":{\"parent\":\"Protocols\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/monitoring/https-for-app-developers/\",\"href\":\"/learn/monitoring/https-for-app-developers\"},{\"title\":\"TCP and SSL - What an application developer needs to know\",\"displayTitle\":\"TCP and SSL for App Developers\",\"description\":\"As an application developer, you need to know how TCP and SSL/TLS work together to establish secure connections, authenticate parties, and ensure data integrity. This section will explain the relationship between TCP and SSL/TLS, focusing on authentication and how it impacts your application.\",\"date\":\"2025-02-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"As an application developer, you need to know how TCP and SSL/TLS work together to establish secure connections, authenticate parties, and ensure data integrity. This section will explain the relationship between TCP and SSL/TLS, focusing on authentication and how it impacts your application.\",\"sidebarTitle\":\"TCP and SSL\",\"weight\":100,\"learn_monitoring\":{\"parent\":\"Protocols\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/monitoring/tcp-and-ssl/\",\"href\":\"/learn/monitoring/tcp-and-ssl\"},{\"title\":\"What is TCP? - how it works and why it matters to application developers\",\"displayTitle\":\"Understanding TCP for Application Developers\",\"sidebarTitle\":\"What is TCP?\",\"description\":\"Explore web application monitoring to boost performance and reliability with real user insights, performance tracking, and top tools.\",\"date\":\"2025-02-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":\"Understanding the basics of TCP can help you build better, more reliable applications. This document will explain what TCP is, how it works, and what you need to know as an application developer. learn_monitoring\",\"weight\":90,\"learn_monitoring\":{\"parent\":\"Protocols\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/monitoring/what-is-tcp/\",\"href\":\"/learn/monitoring/what-is-tcp\"}]}]},{\"dropdown\":\"OpenTelemetry\",\"icon\":\"satellite-dish\",\"pages\":[{\"title\":\"Learn How to Observe and Monitor your Software with OpenTelemetry\",\"displayTitle\":\"Getting started with OpenTelemetry and Observability\",\"sidebarTitle\":\"Overview\",\"description\":\"Learn OpenTelemetry with Checkly. Add monitoring to every piece of your stack with the open standards and open-source tools.\",\"date\":\"2024-10-17T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":null,\"canonical\":\"https://www.checklyhq.com/docs/learn/opentelemetry/overview/\",\"href\":\"/learn/opentelemetry/overview\"},{\"group\":\"OpenTelemetry Basics\",\"pages\":[{\"title\":\"Getting Started with Observability\",\"displayTitle\":\"Getting started with Observability\",\"sidebarTitle\":\"What is Observability?\",\"description\":\"Learn OpenTelemetry with Checkly. Add monitoring to every piece of your stack with the open standards and open-source tools.\",\"date\":\"2024-10-17T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"githubUser\":\"serverless-mom\",\"displayDescription\":{\"learn_otel\":null,\"parent\":\"OpenTelemetry Basics\"},\"weight\":10,\"canonical\":\"https://www.checklyhq.com/docs/learn/opentelemetry/getting-started-with-observability/\",\"href\":\"/learn/opentelemetry/getting-started-with-observability\"},{\"title\":\"How to instrument your application with OpenTelemetry\",\"sidebarTitle\":\"Instrumentation\",\"description\":\"OpenTelemetry offers two main strategies for adding observability to your application - direct instrumentation and auto-instrumentation. Each method serves specific use cases, allowing developers to capture telemetry data efficiently while balancing flexibility and simplicity. OpenTelemetry offers two main strategies for adding observability to your application, learn how they work together.\",\"date\":\"2024-10-30T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"canonical\":\"https://www.checklyhq.com/docs/learn/opentelemetry/how-to-instrument/\",\"href\":\"/learn/opentelemetry/how-to-instrument\"},{\"title\":\"Introduction to the OpenTelemetry Collector\",\"sidebarTitle\":\"The OTel Collector\",\"description\":\"The OpenTelemetry Collector is a stand-alone service designed to collect, process, and export telemetry data such as logs, metrics, and traces. It provides a vendor-neutral way to manage this data, offering flexibility in configuration and deployment. Learn more about Playwright \u0026 Monitoring with Checkly. Explore how to automate your web with a reliable, programmable monitoring workflow.\",\"date\":\"2024-10-18T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"canonical\":\"https://www.checklyhq.com/docs/learn/opentelemetry/what-is-the-otel-collector/\",\"href\":\"/learn/opentelemetry/what-is-the-otel-collector\"}]},{\"group\":\"Key Signals\",\"pages\":[{\"title\":\"Logging in OpenTelemetry, an Engineer’s Guide\",\"sidebarTitle\":\"Logging\",\"description\":\"This article will go over the basics, and answer common questions for those getting started with logging in OpenTelemetry. OpenTelemetry elevates logging from isolated text snippets to fully contextualized observability data that integrates seamlessly with traces and metrics.\",\"date\":\"2025-04-18T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"canonical\":\"https://www.checklyhq.com/docs/learn/opentelemetry/logs/\",\"href\":\"/learn/opentelemetry/logs\"},{\"title\":\"What are OpenTelemetry Metrics?\",\"sidebarTitle\":\"Metrics\",\"description\":\"OpenTelemetry Metrics play a critical role in monitoring applications by offering a way to capture and analyze key metrics in a standardized, scalable manner. Whether you're managing a complex microservices architecture or a simpler system, OpenTelemetry helps track essential statistics that reveal the health and performance of your services. Learn more about OpenTelemetry \u0026 Monitoring with Checkly. Explore metrics, one of the three pillars of observability.\",\"date\":\"2024-10-18T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"canonical\":\"https://www.checklyhq.com/docs/learn/opentelemetry/metrics/\",\"href\":\"/learn/opentelemetry/metrics\"},{\"title\":\"What are OpenTelemetry Traces? - key concepts and examples\",\"sidebarTitle\":\"Traces\",\"description\":\"OpenTelemetry traces capture how individual operations within your system interact over time. A trace follows a request as it flows through a system, recording the relationships between different operations. Traces are particularly useful in distributed systems, where multiple services or components interact. However, they are equally valuable for monolithic applications, providing insights even when everything runs in a single process. Learn more about OpenTelemetry \u0026 Monitoring with Checkly. Explore metrics, one of the three pillars of observability.\",\"date\":\"2024-10-30T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"canonical\":\"https://www.checklyhq.com/docs/learn/opentelemetry/traces/\",\"href\":\"/learn/opentelemetry/traces\"}]},{\"group\":\"Best Practices\",\"pages\":[{\"title\":\"Fundamentals of Context Propagation in OpenTelemetry\",\"sidebarTitle\":\"Context Propagation\",\"description\":\"One of the most basic features of almost any OpenTelemetry tool, is support for context propagation, a fundamental component that sends information from one service to another and allows traces to cover multiple services. Context propagation turns separate service logs into complete traces. It's what makes modern observability possible.\",\"date\":\"2025-04-15T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"canonical\":\"https://www.checklyhq.com/docs/learn/opentelemetry/context-propagation/\",\"href\":\"/learn/opentelemetry/context-propagation\"},{\"title\":\"OpenTelemetry Agent Management Protocol\",\"sidebarTitle\":\"OpAMP\",\"description\":\"The OpenTelemetry Open Agent Management Protocol (OpAMP) is an emerging standard aimed at managing telemetry agents, such as the OpenTelemetry Collector, at scale.\",\"date\":\"2024-10-30T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"canonical\":\"https://www.checklyhq.com/docs/learn/opentelemetry/otel-agent-management-protocol/\",\"href\":\"/learn/opentelemetry/otel-agent-management-protocol\"},{\"title\":\"Advanced Data Filtering with the OpenTelemetry Collector\",\"sidebarTitle\":\"Filtering\",\"description\":\"The OpenTelemetry Collector is a stand-alone service designed to collect, process, and export telemetry data such as logs, metrics, and traces. You can filter this data with the collector. An advanced guide to filtering data with processors and the OpenTelemetry Transform Language.\",\"date\":\"2024-10-18T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"canonical\":\"https://www.checklyhq.com/docs/learn/opentelemetry/otel-filtering/\",\"href\":\"/learn/opentelemetry/otel-filtering\"},{\"title\":\"A guide to the OpenTelemetry Trace API\",\"sidebarTitle\":\"Trace API\",\"description\":\"The OpenTelemetry Trace API provides developers with the tools needed to create, manage, and analyze traces, a critical component of observability.\",\"date\":\"2024-10-30T00:00:00.000Z\",\"author\":\"Nocnica Mellifera\",\"canonical\":\"https://www.checklyhq.com/docs/learn/opentelemetry/trace-api/\",\"href\":\"/learn/opentelemetry/trace-api\"}]}]}]},{\"tab\":\"Comparisons\",\"pages\":[{\"title\":\"Comparisons\",\"href\":\"/comparisons/frameworks/playwright-vs-cypress\"}]}]},\"maps\":{\"firstHrefInVersion\":{},\"firstHrefInLanguage\":{}},\"children\":\"$L4d\"}]\n"])</script><script>self.__next_f.push([1,"4e:I[763509,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/ab9c22ad73015101.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/0eb894a8519f24ea.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/9258da1973995d9b.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/38afe2a8d82fbe85.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b924dff5cd9af8e6.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2a190f8b78faf889.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8dc817877a3a1bff.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/de1ea6e58bcc6bca.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"ThemeLayout\"]\n"])</script><script>self.__next_f.push([1,"4f:I[91557,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/ab9c22ad73015101.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/0eb894a8519f24ea.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/9258da1973995d9b.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/38afe2a8d82fbe85.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b924dff5cd9af8e6.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2a190f8b78faf889.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8dc817877a3a1bff.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/de1ea6e58bcc6bca.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"ApiReferenceProvider\"]\n"])</script><script>self.__next_f.push([1,"50:I[114793,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/ab9c22ad73015101.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/0eb894a8519f24ea.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/9258da1973995d9b.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/38afe2a8d82fbe85.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b924dff5cd9af8e6.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2a190f8b78faf889.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8dc817877a3a1bff.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/de1ea6e58bcc6bca.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"PageProvider\"]\n"])</script><script>self.__next_f.push([1,"4d:[\"$\",\"$L4e\",null,{\"theme\":\"aspen\",\"pageMetadata\":{\"title\":\"SLA vs SLO vs SLI - What’s the Difference? Comparison with examples\",\"displayTitle\":\"SLA vs SLO vs SLI - What’s the Difference?\",\"sidebarTitle\":\"SLA vs SLO vs SLI\",\"description\":\"Avoid user‑reported outages with synthetic checks, anomaly detection, smart alerting, and rich failure traces for rapid detection.\",\"date\":\"2025-04-15T00:00:00.000Z\",\"author\":\"Sara Miteva\",\"githubUser\":\"SaraMiteva\",\"displayDescription\":null,\"weight\":121,\"learn_incidents\":{\"parent\":\"Detection\"},\"canonical\":\"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/\",\"href\":\"/learn/incidents/slo-sla-sli\"},\"children\":[\"$\",\"$L4f\",null,{\"value\":{\"apiReferenceData\":{},\"graphqlReferenceData\":\"$undefined\"},\"children\":[\"$\",\"$L50\",null,{\"value\":{\"pageMetadata\":\"$4d:props:pageMetadata\",\"lastModified\":\"2026-07-06T02:54:51.193Z\",\"gitLastModified\":\"$undefined\",\"originalFileLocation\":\"learn/incidents/slo-sla-sli.mdx\",\"description\":{\"compiledSource\":\"\\\"use strict\\\";\\nconst {jsx: _jsx} = arguments[0];\\nconst {useMDXComponents: _provideComponents} = arguments[0];\\nfunction _createMdxContent(props) {\\n const _components = {\\n p: \\\"p\\\",\\n ..._provideComponents(),\\n ...props.components\\n };\\n return _jsx(_components.p, {\\n children: \\\"Avoid user‑reported outages with synthetic checks, anomaly detection, smart alerting, and rich failure traces for rapid detection.\\\"\\n });\\n}\\nfunction MDXContent(props = {}) {\\n const {wrapper: MDXLayout} = {\\n ..._provideComponents(),\\n ...props.components\\n };\\n return MDXLayout ? _jsx(MDXLayout, {\\n ...props,\\n children: _jsx(_createMdxContent, {\\n ...props\\n })\\n }) : _createMdxContent(props);\\n}\\nreturn {\\n default: MDXContent\\n};\\n\",\"frontmatter\":{},\"scope\":{}},\"mdxExtracts\":{\"tableOfContents\":[{\"title\":\"What is an SLA (Service Level Agreement)\",\"slug\":\"what-is-an-sla-service-level-agreement\",\"depth\":2,\"children\":[{\"title\":\"SLA Challenges\",\"slug\":\"sla-challenges\",\"depth\":3,\"children\":[]},{\"title\":\"SLA Best Practices\",\"slug\":\"sla-best-practices\",\"depth\":3,\"children\":[]},{\"title\":\"Who Needs an SLA?\",\"slug\":\"who-needs-an-sla%3F\",\"depth\":3,\"children\":[]},{\"title\":\"SLA Examples\",\"slug\":\"sla-examples\",\"depth\":3,\"children\":[]}]},{\"title\":\"What is an SLO (Service Level Objective)\",\"slug\":\"what-is-an-slo-service-level-objective\",\"depth\":2,\"children\":[{\"title\":\"SLO Challenges\",\"slug\":\"slo-challenges\",\"depth\":3,\"children\":[]},{\"title\":\"SLO Best Practices\",\"slug\":\"slo-best-practices\",\"depth\":3,\"children\":[]},{\"title\":\"Who Needs an SLO?\",\"slug\":\"who-needs-an-slo%3F\",\"depth\":3,\"children\":[]},{\"title\":\"SLO Examples\",\"slug\":\"slo-examples\",\"depth\":3,\"children\":[]}]},{\"title\":\"What is an SLI (Service Level Indicator)\",\"slug\":\"what-is-an-sli-service-level-indicator\",\"depth\":2,\"children\":[{\"title\":\"SLI Challenges\",\"slug\":\"sli-challenges\",\"depth\":3,\"children\":[]},{\"title\":\"SLI Best Practices\",\"slug\":\"sli-best-practices\",\"depth\":3,\"children\":[]},{\"title\":\"Who Needs an SLI?\",\"slug\":\"who-needs-an-sli%3F\",\"depth\":3,\"children\":[]},{\"title\":\"SLI Examples\",\"slug\":\"sli-examples\",\"depth\":3,\"children\":[]}]},{\"title\":\"Why are SLAs, SLOs, and SLIs Important?\",\"slug\":\"why-are-slas%2C-slos%2C-and-slis-important%3F\",\"depth\":2,\"children\":[{\"title\":\"Ensuring Accountability with SLAs\",\"slug\":\"ensuring-accountability-with-slas\",\"depth\":3,\"children\":[]},{\"title\":\"Aligning Objectives with SLOs\",\"slug\":\"aligning-objectives-with-slos\",\"depth\":3,\"children\":[]},{\"title\":\"Gaining Insights Through SLIs\",\"slug\":\"gaining-insights-through-slis\",\"depth\":3,\"children\":[]},{\"title\":\"The Collective Impact\",\"slug\":\"the-collective-impact\",\"depth\":3,\"children\":[]}]},{\"title\":\"Practical Example: Implementing SLIs, SLOs, and SLAs for APIs\",\"slug\":\"practical-example%3A-implementing-slis%2C-slos%2C-and-slas-for-apis\",\"depth\":2,\"children\":[{\"title\":\"SLI: Service Level Indicator\",\"slug\":\"sli%3A-service-level-indicator\",\"depth\":3,\"children\":[]},{\"title\":\"SLO: Service Level Objective\",\"slug\":\"slo%3A-service-level-objective\",\"depth\":3,\"children\":[]},{\"title\":\"SLA: Service Level Agreement\",\"slug\":\"sla%3A-service-level-agreement\",\"depth\":3,\"children\":[]}]},{\"title\":\"How Checkly Can Help You Hit Your SLAs\",\"slug\":\"how-checkly-can-help-you-hit-your-slas\",\"depth\":2,\"children\":[{\"title\":\"API Checks\",\"slug\":\"api-checks\",\"depth\":3,\"children\":[]},{\"title\":\"Browser Checks\",\"slug\":\"browser-checks\",\"depth\":3,\"children\":[]},{\"title\":\"Checkly Best Practices\",\"slug\":\"checkly-best-practices\",\"depth\":3,\"children\":[]},{\"title\":\"Integrating Into Your Existing Workflow\",\"slug\":\"integrating-into-your-existing-workflow\",\"depth\":3,\"children\":[]}]},{\"title\":\"Conclusion\",\"slug\":\"conclusion\",\"depth\":2,\"children\":[]}],\"codeExamples\":{}},\"pageType\":\"$undefined\",\"panelMdxSource\":\"$undefined\",\"panelMdxSourceWithNoJs\":\"$undefined\",\"contextualStarterQuestions\":\"$undefined\",\"relatedPages\":\"$undefined\",\"relatedPagesConfig\":\"$undefined\"},\"children\":\"$L51\"}]}]}]\n"])</script><script>self.__next_f.push([1,"52:I[91557,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/ab9c22ad73015101.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/0eb894a8519f24ea.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/9258da1973995d9b.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/38afe2a8d82fbe85.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b924dff5cd9af8e6.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2a190f8b78faf889.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8dc817877a3a1bff.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/de1ea6e58bcc6bca.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"OpenApiProvider\"]\n"])</script><script>self.__next_f.push([1,"53:I[525343,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/ab9c22ad73015101.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/0eb894a8519f24ea.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/9258da1973995d9b.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/38afe2a8d82fbe85.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b924dff5cd9af8e6.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2a190f8b78faf889.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8dc817877a3a1bff.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/de1ea6e58bcc6bca.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"TabSyncContextProvider\"]\n"])</script><script>self.__next_f.push([1,"55:I[228341,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/ab9c22ad73015101.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/0eb894a8519f24ea.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/9258da1973995d9b.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/38afe2a8d82fbe85.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b924dff5cd9af8e6.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2a190f8b78faf889.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8dc817877a3a1bff.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/de1ea6e58bcc6bca.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"PageModeUpdater\"]\n"])</script><script>self.__next_f.push([1,"56:I[575126,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/ab9c22ad73015101.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/0eb894a8519f24ea.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/9258da1973995d9b.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/38afe2a8d82fbe85.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b924dff5cd9af8e6.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2a190f8b78faf889.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8dc817877a3a1bff.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/de1ea6e58bcc6bca.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"Background\"]\n"])</script><script>self.__next_f.push([1,"54:T91c,"])</script><script>self.__next_f.push([1,"{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.checklyhq.com/#organization\",\"name\":\"Checkly Docs\",\"url\":\"https://www.checklyhq.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/checkly-422f444a/KiRymP194lYB6fu_/logo/light.svg?fit=max\u0026auto=format\u0026n=KiRymP194lYB6fu_\u0026q=85\u0026s=c4c50c3b55e375fe5d06b52fad5c8032\"}},{\"@type\":\"WebSite\",\"@id\":\"https://www.checklyhq.com/docs#website\",\"name\":\"Checkly Docs\",\"url\":\"https://www.checklyhq.com/docs\",\"publisher\":{\"@id\":\"https://www.checklyhq.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/#webpage\",\"url\":\"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/\",\"name\":\"SLA vs SLO vs SLI - What’s the Difference? Comparison with examples\",\"description\":\"Avoid user‑reported outages with synthetic checks, anomaly detection, smart alerting, and rich failure traces for rapid detection.\",\"dateModified\":\"2026-07-06T02:54:51.193Z\",\"isPartOf\":{\"@id\":\"https://www.checklyhq.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Detection\",\"item\":\"https://www.checklyhq.com/docs/learn/incidents/detection-best-practices\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SLA vs SLO vs SLI - What’s the Difference? Comparison with examples\",\"item\":\"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/#article\",\"headline\":\"SLA vs SLO vs SLI - What’s the Difference? Comparison with examples\",\"name\":\"SLA vs SLO vs SLI - What’s the Difference? Comparison with examples\",\"description\":\"Avoid user‑reported outages with synthetic checks, anomaly detection, smart alerting, and rich failure traces for rapid detection.\",\"url\":\"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/\",\"mainEntityOfPage\":{\"@id\":\"https://www.checklyhq.com/docs/learn/incidents/slo-sla-sli/#webpage\"},\"dateModified\":\"2026-07-06T02:54:51.193Z\",\"publisher\":{\"@id\":\"https://www.checklyhq.com/#organization\"},\"isPartOf\":{\"@id\":\"https://www.checklyhq.com/docs#website\"}}]}"])</script><script>self.__next_f.push([1,"57:T95b,"])</script><script>self.__next_f.push([1,"body {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.sidebar-group-header {\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.eyebrow {\n text-transform: uppercase;\n}\n\nli .group {\n margin-bottom: 0rem !important;\n padding-bottom: .25rem !important;\n}\n\nth {\n text-align: left;\n}\n\ntr {\n border-bottom: 1px solid var(--border-color, rgba(128, 128, 128, 0.15));\n}\n\n.field .font-semibold.text-primary[data-component-part=\"field-name\"] {\n line-height: normal;\n font-weight: 700;\n font-size: 1.15rem;\n}\n\n.dark kbd {\n background-color: rgba(255, 255, 255, 0.08);\n border-color: rgba(255, 255, 255, 0.2);\n color: #e6e6e6;\n}\n\n/* Sign-up CTA card (snippets/sign-up-cta.mdx). Styled here instead of with\n Tailwind utility classes because Mintlify's production build only ships\n utilities used by its own UI — arbitrary values like from-[#0c449a] work\n in `mint dev` but are missing in the compiled production CSS. */\n.sign-up-cta {\n position: relative;\n border-radius: 0.5rem;\n padding: 1.5rem;\n margin: 1rem 0;\n background: linear-gradient(to bottom, #0c449a, #062047);\n color: #fff;\n}\n\n.sign-up-cta-title {\n font-size: 1.25rem;\n line-height: 1.75rem;\n font-weight: 700;\n text-wrap: balance;\n margin-bottom: 0.25rem;\n}\n\n.sign-up-cta-title img {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: middle;\n margin-top: -0.25rem;\n}\n\n.sign-up-cta-body {\n color: #e2e8f0;\n}\n\n.sign-up-cta a {\n color: inherit;\n}\n\n/* Stretch the link's click area over the whole card. */\n.sign-up-cta a::before {\n content: \"\";\n position: absolute;\n inset: 0;\n}\n\n/* Expand small header icon buttons to a 44x44 minimum touch target\n (WCAG 2.5.5) via an invisible hit-area overlay, so the visual header\n layout is unchanged and the theme's responsive show/hide still applies. */\nheader button[aria-label=\"Open search\"],\nheader button[aria-label=\"Toggle assistant panel\"],\nheader button[aria-label=\"Toggle dark mode\"],\nheader button[aria-label=\"More actions\"] {\n position: relative;\n}\n\nheader button[aria-label=\"Open search\"]::after,\nheader button[aria-label=\"Toggle assistant panel\"]::after,\nheader button[aria-label=\"Toggle dark mode\"]::after,\nheader button[aria-label=\"More actions\"]::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n width: 44px;\n height: 44px;\n transform: translate(-50%, -50%);\n}\n"])</script><script>self.__next_f.push([1,"51:[\"$\",\"$L52\",null,{\"pageMetadata\":\"$4d:props:pageMetadata\",\"mdxExtracts\":\"$4d:props:children:props:children:props:value:mdxExtracts\",\"openApiReferenceData\":\"$undefined\",\"children\":[\"$\",\"$L53\",null,{\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$54\"}}],[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"document.documentElement.setAttribute('data-page-mode', \\\"none\\\");\"}}],[\"$\",\"$L55\",null,{\"pageMetadata\":\"$4d:props:pageMetadata\"}]],[\"$\",\"$L56\",null,{\"pageMetadata\":\"$4d:props:pageMetadata\"}],[[\"$\",\"style\",\"0\",{\"data-custom-css-index\":0,\"data-custom-css-path\":\"style.css\",\"dangerouslySetInnerHTML\":{\"__html\":\"$57\"}}]],\"$L58\",\"$L59\"]}]}]\n"])</script><script>self.__next_f.push([1,"5a:I[36098,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/ab9c22ad73015101.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/0eb894a8519f24ea.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/9258da1973995d9b.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/38afe2a8d82fbe85.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b924dff5cd9af8e6.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2a190f8b78faf889.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8dc817877a3a1bff.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/de1ea6e58bcc6bca.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"CustomJsFiles\"]\n"])</script><script>self.__next_f.push([1,"65:I[530359,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/ab9c22ad73015101.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/0eb894a8519f24ea.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/9258da1973995d9b.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/38afe2a8d82fbe85.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b924dff5cd9af8e6.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2a190f8b78faf889.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8dc817877a3a1bff.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/de1ea6e58bcc6bca.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"MDXContentController\"]\n"])</script><script>self.__next_f.push([1,"66:I[448287,[\"/docs/_next/static/chunks/8c07cf26734391f9.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b664fc8bb1e7ab0d.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/18648634c04dd8e8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/eefca33900b5dff8.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/941a1de3f72c380e.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/a2cbb787c41ebf13.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8048dcef7298cf99.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e7cb103ff122456f.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1db8ca367503d01a.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2c09d2adf26e1020.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/3cc8177ef0797134.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/f3d21b56325afeb2.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/526cb488b5bfc024.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/701f90aea5751699.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/534145faff18d33c.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/793a8486c07f1dd0.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/1494a496888bfecb.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/e4c62502f31ab688.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/ab9c22ad73015101.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/0eb894a8519f24ea.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/9258da1973995d9b.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/38afe2a8d82fbe85.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/b924dff5cd9af8e6.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/2a190f8b78faf889.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/8dc817877a3a1bff.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\",\"/docs/_next/static/chunks/de1ea6e58bcc6bca.js?dpl=dpl_ExL1QVtJvPGDKbJ2z3azNiZUeo2F\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"5b:T71e,"])</script><script>self.__next_f.push([1,"const { chromium } = require('playwright')\n;(async () =\u003e {\n const currency = process.env.CURRENCY\n const amazonUrl = process.env.AMAZON_URL\n const amazonUser = process.env.AMAZON_USER\n const amazonPassword = process.env.AMAZON_PASSWORD\n\n const browser = await chromium.launch()\n const page = await browser.newPage()\n\n await page.goto(amazonUrl)\n\n await page.setViewportSize({ width: 1200, height: 1822 })\n\n await page.click(\n '#nav-signin-tooltip \u003e .nav-action-button \u003e .nav-action-inner'\n )\n\n await page.type('#ap_email', amazonUser)\n await page.click('#continue')\n await page.type('#ap_password', amazonPassword)\n\n await page.click('#signInSubmit')\n\n await page.click('#nav-link-accountList \u003e .nav-long-width')\n\n await page.click(\n '.ya-card__whole-card-link \u003e .a-box \u003e .a-box-inner \u003e .a-row \u003e .a-column \u003e div'\n )\n\n await page.click('#a-autoid-1-announce \u003e .a-dropdown-prompt')\n\n await page.click('#orderFilter_2')\n\n let filteredPrices = []\n let prices = []\n\n await page.waitForSelector('.a-normal')\n const pages = await page.$$('.a-normal')\n\n for (const singlePage of pages) {\n await singlePage.waitForSelector('.a-last')\n prices = await singlePage.$$eval(\n '.a-column:nth-child(2) .a-color-secondary.value',\n (nodes) =\u003e nodes.map((n) =\u003e n.innerText)\n )\n\n filteredPrices = filteredPrices.concat(\n prices.filter((price) =\u003e price.includes(currency))\n )\n await singlePage.waitForSelector('li.a-last')\n await singlePage.click('li.a-last')\n }\n\n const cleanPrices = filteredPrices.map((x) =\u003e {\n return x.replace(',', '.').replace(/[^\\d.,-]/g, '')\n })\n\n const totalExpense = cleanPrices.reduce(\n (a, b) =\u003e parseFloat(a) + parseFloat(b),\n 0\n )\n console.log(`Total expense for the year: ${currency} ${totalExpense}`)\n\n await browser.close()\n})()\n"])</script><script>self.__next_f.push([1,"5c:T452,"])</script><script>self.__next_f.push([1,"const { test, expect } = require('@playwright/test')\n\ntest('search', async ({ page }) =\u003e {\n const bookList = [\n 'The Foreigner',\n 'The Transformation',\n 'For Whom the Ball Tells',\n 'Baiting for Robot'\n ]\n\n await page.goto('https://danube-web.shop/')\n\n await page.getByRole('textbox').click()\n await page.getByRole('textbox').fill('for')\n await page.getByRole('button', { name: 'Search' }).click()\n\n await page.waitForSelector(\n '.shop-content \u003e ul \u003e .preview:nth-child(1) \u003e .preview-title'\n )\n\n // Halt immediately if results do not equal expected number\n const resultsNumber = (await page.$$('.preview-title')).length\n expect(resultsNumber).toEqual(bookList.length)\n\n // Remove every element found from the original array...\n for (let i = 0; i \u003c resultsNumber; i++) {\n const resultTitle = await page.$eval(\n `.preview:nth-child(${i + 1}) \u003e .preview-title`,\n (e) =\u003e e.innerText\n )\n\n const index = bookList.indexOf(resultTitle)\n bookList.splice(index, 1)\n }\n\n // ...then assert that the original array is now empty\n expect(bookList.length).toEqual(0)\n})\n"])</script><script>self.__next_f.push([1,"5d:T66e,"])</script><script>self.__next_f.push([1,"const puppeteer = require('puppeteer')\nconst productsNumber = process.env.PRODUCTS_NUMBER || 3\n\n;(async () =\u003e {\n const browser = await puppeteer.launch()\n\n const page = await browser.newPage()\n\n const navigationPromise = page.waitForNavigation()\n\n await page.goto('https://danube-web.shop/')\n\n await page.setViewport({ width: 1200, height: 800 })\n\n for (let i = 1; i \u003c= productsNumber; i++) {\n await page.waitForSelector(`.preview:nth-child(${i}) \u003e .preview-author`)\n await page.click(`.preview:nth-child(${i}) \u003e .preview-author`)\n\n await page.waitForSelector('.detail-wrapper \u003e .call-to-action')\n await page.click('.detail-wrapper \u003e .call-to-action')\n\n await page.waitForSelector('#logo')\n await page.click('#logo')\n\n await navigationPromise\n }\n\n await page.waitForSelector('#cart')\n await page.click('#cart')\n\n await page.waitForSelector('.cart \u003e .call-to-action')\n await page.click('.cart \u003e .call-to-action')\n\n await page.waitForSelector('#s-name')\n await page.click('#s-name')\n\n await page.type('#s-name', 'Max')\n await page.type('#s-surname', 'Mustermann')\n await page.type('#s-address', 'Charlottenstr. 57')\n await page.type('#s-zipcode', '10117')\n await page.type('#s-city', 'Berlin')\n await page.type('#s-company', 'Firma GmbH')\n\n await page.waitForSelector('.checkout \u003e form')\n await page.click('.checkout \u003e form')\n\n await page.waitForSelector('#asap')\n await page.click('#asap')\n\n await page.waitForSelector('.checkout \u003e .call-to-action')\n await page.click('.checkout \u003e .call-to-action')\n\n await page.waitForSelector('#order-confirmation', { visible: true })\n\n await browser.close()\n})()\n"])</script><script>self.__next_f.push([1,"5e:T576,"])</script><script>self.__next_f.push([1,"const puppeteer = require('puppeteer')\nconst assert = require('chai').assert\nconst productsNumber = process.env.PRODUCTS_NUMBER || 3\n\n;(async () =\u003e {\n const browser = await puppeteer.launch()\n const page = await browser.newPage()\n\n await page.goto('https://danube-web.shop/')\n\n await page.setViewport({ width: 1792, height: 925 })\n\n for (let i = 1; i \u003c= productsNumber; i++) {\n await page.waitForSelector(\n '.preview:nth-child(1) \u003e .preview-details \u003e p:nth-child(1)'\n )\n await page.click(`.preview:nth-child(${i}) \u003e .preview-author`)\n await page.waitForSelector('.detail-wrapper \u003e .call-to-action')\n await page.click('.detail-wrapper \u003e .call-to-action')\n await page.waitForSelector('#logo')\n await page.click('#logo')\n }\n\n await page.waitForSelector('#cart')\n await page.click('#cart')\n\n const price = await page.$eval('#total-price', (e) =\u003e e.innerText)\n\n await page.waitForSelector('.cart \u003e label')\n await page.click('.cart \u003e label')\n\n await page.waitForSelector('#coupon')\n await page.click('#coupon')\n\n await page.type('#coupon', 'COUPON2020')\n\n await page.waitForSelector('.cart \u003e div \u003e button')\n await page.click('.cart \u003e div \u003e button')\n\n const expectedDiscountedPrice = price * 0.8\n const discountedPrice = await page.$eval('#total-price', (e) =\u003e e.innerText)\n assert.equal(discountedPrice, expectedDiscountedPrice)\n\n await browser.close()\n})()\n"])</script><script>self.__next_f.push([1,"5f:T480,"])</script><script>self.__next_f.push([1,"const puppeteer = require('puppeteer')\nconst axios = require('axios')\nconst fs = require('fs')\nconst assert = require('chai').assert\n\n;(async () =\u003e {\n const browser = await puppeteer.launch()\n const page = await browser.newPage()\n\n await page.goto('https://danube-web.shop/')\n\n await page.setViewport({ width: 1200, height: 800 })\n\n await page.waitForSelector(' #login')\n await page.click('#login')\n\n await page.waitForSelector('#n-email')\n\n await page.type('#n-email', process.env.USER_EMAIL)\n await page.type('#n-password2', process.env.USER_PASSWORD)\n\n await page.waitForSelector('#goto-signin-btn')\n await page.click('#goto-signin-btn')\n\n await page.waitForSelector('#goto-signin-btn', { hidden: true })\n await page.click('#account')\n\n await page.waitForSelector('#orders \u003e ul \u003e li:nth-child(1) \u003e a')\n const downloadUrl = await page.$eval(\n '#orders \u003e ul \u003e li:nth-child(1) \u003e a',\n (el) =\u003e el.href\n )\n\n const response = await axios.get(downloadUrl)\n\n const newFile = Buffer.from(response.data)\n const testFile = await fs.readFileSync('fixtures/testfile.pdf')\n\n assert(newFile.equals(testFile))\n\n await browser.close()\n})()\n"])</script><script>self.__next_f.push([1,"60:T41a,"])</script><script>self.__next_f.push([1,"const puppeteer = require('puppeteer')\n\n;(async () =\u003e {\n const browser = await puppeteer.launch()\n const page = await browser.newPage()\n\n await page.goto('https://danube-web.shop/')\n\n await page.setViewport({ width: 1200, height: 800 })\n\n await page.waitForSelector('#login')\n await page.click('#login')\n\n await page.waitForSelector('#n-email')\n\n await page.type('#n-email', process.env.USER_EMAIL)\n await page.type('#n-password2', process.env.USER_PASSWORD)\n\n await page.waitForSelector('#goto-signin-btn')\n await page.click('#goto-signin-btn')\n\n page.$eval('.fa-user', (elem) =\u003e elem.click())\n\n await page.waitForSelector('#user-details \u003e div \u003e input')\n const inputUploadHandle = await page.$('#user-details \u003e div \u003e input')\n const fileToUpload = process.env.FILE_PATH\n inputUploadHandle.uploadFile(fileToUpload)\n\n await page.waitForSelector('#user-details \u003e div \u003e button')\n await page.click('#user-details \u003e div \u003e button')\n\n await page.waitForSelector('#upload-message-succcess', { visible: true })\n\n await browser.close()\n})()\n"])</script><script>self.__next_f.push([1,"61:T90c,"])</script><script>self.__next_f.push([1,"const puppeteer = require('puppeteer')\n;(async () =\u003e {\n const currency = process.env.CURRENCY\n const amazonUrl = process.env.AMAZON_URL\n const amazonUser = process.env.AMAZON_USER\n const amazonPassword = process.env.AMAZON_PASSWORD\n\n const browser = await puppeteer.launch()\n const page = await browser.newPage()\n\n await page.goto(amazonUrl)\n\n await page.setViewport({ width: 1200, height: 1822 })\n\n await page.waitForSelector(\n '#nav-signin-tooltip \u003e .nav-action-button \u003e .nav-action-inner'\n )\n await page.click(\n ' #nav-signin-tooltip \u003e .nav-action-button \u003e .nav-action-inner'\n )\n\n await page.waitForSelector('#ap_email')\n await page.type('#ap_email', amazonUser)\n\n await page.click('#continue')\n\n await page.waitForSelector('#ap_password')\n await page.type('#ap_password', amazonPassword)\n\n await page.click('#signInSubmit')\n\n await page.waitForSelector('#nav-link-accountList \u003e .nav-long-width')\n await page.click('#nav-link-accountList \u003e .nav-long-width')\n\n await page.waitForSelector(\n '.ya-card__whole-card-link \u003e .a-box \u003e .a-box-inner \u003e .a-row \u003e .a-column \u003e div'\n )\n await page.click(\n '.ya-card__whole-card-link \u003e .a-box \u003e .a-box-inner \u003e .a-row \u003e .a-column \u003e div'\n )\n\n await page.waitForSelector('#a-autoid-1-announce \u003e .a-dropdown-prompt')\n await page.click('#a-autoid-1-announce \u003e .a-dropdown-prompt')\n\n await page.waitForSelector('#orderFilter_2')\n await page.click('#orderFilter_2')\n\n let filteredPrices = []\n let prices = []\n\n await page.waitForSelector('.a-normal')\n const pages = await page.$$('.a-normal')\n\n for (const singlePage of pages) {\n await singlePage.waitForSelector('.a-last')\n prices = await singlePage.$$eval(\n '.a-column:nth-child(2) .a-color-secondary.value',\n (nodes) =\u003e nodes.map((n) =\u003e n.innerText)\n )\n\n filteredPrices = filteredPrices.concat(\n prices.filter((price) =\u003e price.includes(currency))\n )\n await singlePage.waitForSelector('li.a-last')\n await singlePage.click('li.a-last')\n }\n\n const cleanPrices = filteredPrices.map((x) =\u003e {\n return x.replace(',', '.').replace(/[^\\d.,-]/g, '')\n })\n\n const totalExpense = cleanPrices.reduce(\n (a, b) =\u003e parseFloat(a) + parseFloat(b),\n 0\n )\n console.log(`Total expense for the year: ${currency} ${totalExpense}`)\n\n await browser.close()\n})()\n"])</script><script>self.__next_f.push([1,"62:T53a,"])</script><script>self.__next_f.push([1,"const puppeteer = require('puppeteer')\nconst assert = require('chai').assert\n\n;(async () =\u003e {\n const browser = await puppeteer.launch()\n const page = await browser.newPage()\n\n const bookList = [\n 'The Foreigner',\n 'The Transformation',\n 'For Whom the Ball Tells',\n 'Baiting for Robot'\n ]\n\n await page.goto('https://danube-web.shop/')\n\n await page.setViewport({ width: 1200, height: 800 })\n\n await page.waitForSelector('.topbar \u003e input')\n await page.click('.topbar \u003e input')\n\n await page.type('.topbar \u003e input', 'for')\n\n await page.waitForSelector('#button-search')\n await page.click('#button-search')\n\n await page.waitForSelector(\n '.shop-content \u003e ul \u003e .preview:nth-child(1) \u003e .preview-title'\n )\n\n // Halt immediately if results do not equal expected number\n const resultsNumber = (await page.$$('.preview-title')).length\n assert.equal(resultsNumber, bookList.length)\n\n // Remove every element found from the original array...\n for (let i = 0; i \u003c resultsNumber; i++) {\n const resultTitle = await page.$eval(\n `.preview:nth-child(${i + 1}) \u003e .preview-title`,\n (e) =\u003e e.innerText\n )\n\n const index = bookList.indexOf(resultTitle)\n bookList.splice(index, 1)\n }\n\n // ...then assert that the original array is now empty\n assert.equal(bookList.length, 0)\n\n await browser.close()\n})()\n"])</script><script>self.__next_f.push([1,"63:T427,"])</script><script>self.__next_f.push([1,"const puppeteer = require('puppeteer')\n\n;(async () =\u003e {\n const browser = await puppeteer.launch()\n const page = await browser.newPage()\n\n await page.goto('https://danube-web.shop/')\n\n await page.setViewport({ width: 1200, height: 800 })\n\n await page.waitForSelector('#signup')\n await page.click('#signup')\n\n await page.waitForSelector('#s-name')\n await page.click('#s-name')\n\n await page.type('#s-name', 'John')\n await page.type('#s-surname', 'Doe')\n await page.type('#s-email', process.env.USER_EMAIL)\n await page.type('#s-password2', process.env.USER_PASSWORD)\n await page.type('#s-company', 'John Doe Inc.')\n\n await page.waitForSelector('#business')\n await page.click('#business')\n\n await page.waitForSelector('#marketing-agreement')\n await page.click('#marketing-agreement')\n\n await page.waitForSelector('#privacy-policy')\n await page.click('#privacy-policy')\n\n await page.waitForSelector('#register-btn')\n await page.click('#register-btn')\n\n await page.waitForSelector('#login-message', { visible: true })\n\n await browser.close()\n})()\n"])</script><script>self.__next_f.push([1,"64:T9a7,"])</script><script>self.__next_f.push([1,"// Block Segment analytics for headless browsers\n(function() {\n function isHeadlessBrowser() {\n // Check user agent for headless indicators\n const userAgent = navigator.userAgent.toLowerCase();\n const headlessIndicators = [\n 'headlesschrome',\n 'headless',\n 'phantom',\n 'selenium',\n 'webdriver',\n 'chromedriver'\n ];\n\n // Check if any headless indicators are in the user agent\n const hasHeadlessUA = headlessIndicators.some(indicator =\u003e\n userAgent.includes(indicator)\n );\n\n // Check userAgentData brands for HeadlessChrome\n let hasHeadlessBrand = false;\n if (navigator.userAgentData \u0026\u0026 navigator.userAgentData.brands) {\n hasHeadlessBrand = navigator.userAgentData.brands.some(brand =\u003e\n brand.brand.toLowerCase().includes('headlesschrome')\n );\n }\n\n // Check for webdriver property\n const hasWebDriver = navigator.webdriver === true;\n\n // Check for other headless browser indicators\n const hasNoPlugins = navigator.plugins.length === 0;\n const hasNoLanguages = navigator.languages.length === 0;\n\n return hasHeadlessUA || hasHeadlessBrand || hasWebDriver ||\n (hasNoPlugins \u0026\u0026 hasNoLanguages);\n }\n\n // If this is a headless browser, prevent Segment from loading\n if (isHeadlessBrowser()) {\n console.log('Headless browser detected - blocking Segment analytics');\n\n // Create a dummy analytics object that does nothing\n window.analytics = {\n page: function() { console.log('Segment page call blocked (headless browser)'); },\n track: function() { console.log('Segment track call blocked (headless browser)'); },\n identify: function() { console.log('Segment identify call blocked (headless browser)'); },\n alias: function() { console.log('Segment alias call blocked (headless browser)'); },\n group: function() { console.log('Segment group call blocked (headless browser)'); },\n ready: function(callback) {\n console.log('Segment ready call blocked (headless browser)');\n if (typeof callback === 'function') callback();\n },\n load: function() { console.log('Segment load call blocked (headless browser)'); },\n reset: function() { console.log('Segment reset call blocked (headless browser)'); }\n };\n\n // Prevent any future assignments to analytics\n Object.defineProperty(window, 'analytics', {\n value: window.analytics,\n writable: false,\n configurable: false\n });\n }\n})();"])</script><script>self.__next_f.push([1,"58:[\"$\",\"$L5a\",null,{\"customJsDisabled\":false,\"jsFiles\":[{\"_id\":\"68d52feed349cd094d2adadc\",\"subdomain\":\"checkly-422f444a\",\"filePath\":\"images/samples/playwright/basic-browser-navigation.spec.js\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('basic navigation', async ({ page }) =\u003e {\\n await page.goto('https://danube-web.shop/')\\n await page.click('#cart')\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adaed\",\"filePath\":\"images/samples/playwright/basic-browser-waiting.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('basic built-in waiting', async ({ page }) =\u003e {\\n await page.goto('https://danube-web.shop/')\\n await page.getByRole('button', { name: 'Log in' }).click()\\n await page.getByPlaceholder('Email').click()\\n await page.getByPlaceholder('Email').fill('test@test.com')\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adafe\",\"subdomain\":\"checkly-422f444a\",\"filePath\":\"images/samples/playwright/basic-click-type.js\",\"__v\":0,\"content\":\"const { chromium } = require('playwright')\\n\\n;(async () =\u003e {\\n const browser = await chromium.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n\\n await page.fill('input', 'some search terms')\\n\\n await page.click('button')\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adb0b\",\"filePath\":\"images/samples/playwright/basic-get-data-json.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { chromium } = require('playwright')\\nconst fs = require('fs')\\n\\n;(async () =\u003e {\\n const browser = await chromium.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n const content = await page.evaluate(() =\u003e {\\n const data = []\\n\\n const books = document.querySelectorAll('.preview')\\n books.forEach((book) =\u003e {\\n const title = book.querySelector('.preview-title').innerText\\n const author = book.querySelector('.preview-author').innerText\\n const price = book.querySelector('.preview-price').innerText\\n data.push({\\n title,\\n author,\\n price\\n })\\n })\\n return data\\n })\\n\\n const jsonData = JSON.stringify(content)\\n fs.writeFileSync('books.json', jsonData)\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adb1c\",\"filePath\":\"images/samples/playwright/basic-get-href-handle.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { chromium } = require('playwright')\\n\\n;(async () =\u003e {\\n const browser = await chromium.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n const element = await page.$('a')\\n const href = await element.evaluate((node) =\u003e node.href)\\n console.log(href)\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adb27\",\"filePath\":\"images/samples/playwright/basic-get-href-value.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { chromium } = require('playwright')\\n\\n;(async () =\u003e {\\n const browser = await chromium.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n const url = await page.$eval('a', (el) =\u003e el.href)\\n console.log(url)\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adb34\",\"filePath\":\"images/samples/playwright/basic-get-image.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { chromium } = require('playwright')\\nconst axios = require('axios')\\nconst fs = require('fs')\\n\\n;(async () =\u003e {\\n const browser = await chromium.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n const url = await page.$eval('img', (el) =\u003e el.src)\\n\\n const response = await axios.get(url)\\n fs.writeFileSync('scraped-image.svg', response.data)\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adb40\",\"filePath\":\"images/samples/playwright/basic-get-text-values.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { chromium } = require('playwright')\\n\\n;(async () =\u003e {\\n const browser = await chromium.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n const categories = await page.$$eval('li a', (nodes) =\u003e\\n nodes.map((n) =\u003e n.innerText)\\n )\\n console.log(categories)\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adb4b\",\"filePath\":\"images/samples/playwright/basic-navigation.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('basic navigation', async ({ page }) =\u003e {\\n await page.goto('https://danube-web.shop/')\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adb56\",\"filePath\":\"images/samples/playwright/basic-performance-emulation.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('basic performance emulation', async ({ page }) =\u003e {\\n const client = await page.context().newCDPSession(page)\\n await client.send('Network.enable')\\n await client.send('Network.emulateNetworkConditions', {\\n offline: false,\\n downloadThroughput: (4 * 1024 * 1024) / 8,\\n uploadThroughput: (3 * 1024 * 1024) / 8,\\n latency: 20\\n })\\n\\n await page.goto('https://danube-web.shop/')\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adb63\",\"subdomain\":\"checkly-422f444a\",\"filePath\":\"images/samples/playwright/basic-performance-largest-contentful-paint.spec.js\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('basic performance largest contentful paint', async ({ page }) =\u003e {\\n await page.goto('https://danube-web.shop/')\\n\\n const largestContentfulPaint = await page.evaluate(() =\u003e {\\n return new Promise((resolve) =\u003e {\\n new PerformanceObserver((l) =\u003e {\\n const entries = l.getEntries()\\n // the last entry is the largest contentful paint\\n const largestPaintEntry = entries.at(-1)\\n resolve(largestPaintEntry.startTime)\\n }).observe({\\n type: 'largest-contentful-paint',\\n buffered: true\\n })\\n })\\n })\\n\\n console.log(parseFloat(largestContentfulPaint)) // 1139.39\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adb6e\",\"filePath\":\"images/samples/playwright/basic-performance-layout-shift.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('basic performance layout shift', async ({ page }) =\u003e {\\n await page.goto('https://danube-web.shop/')\\n\\n const cummulativeLayoutShift = await page.evaluate(() =\u003e {\\n return new Promise((resolve) =\u003e {\\n let CLS = 0\\n\\n new PerformanceObserver((l) =\u003e {\\n const entries = l.getEntries()\\n\\n entries.forEach(entry =\u003e {\\n if (!entry.hadRecentInput) {\\n CLS += entry.value\\n }\\n })\\n\\n resolve(CLS)\\n }).observe({\\n type: 'layout-shift',\\n buffered: true\\n })\\n })\\n })\\n\\n console.log(parseFloat(cummulativeLayoutShift)) // 0.0001672498\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adb79\",\"subdomain\":\"checkly-422f444a\",\"filePath\":\"images/samples/playwright/basic-performance-lighthouse.js\",\"__v\":0,\"content\":\"const chromeLauncher = require('chrome-launcher')\\nconst { chromium } = require('playwright')\\nconst lighthouse = require('lighthouse')\\nconst request = require('request')\\nconst util = require('util')\\n\\n;(async () =\u003e {\\n const chrome = await chromeLauncher.launch()\\n\\n const resp = await util.promisify(request)(\\n `http://localhost:${chrome.port}/json/version`\\n )\\n const { webSocketDebuggerUrl } = JSON.parse(resp.body)\\n const browser = await chromium.connect({ wsEndpoint: webSocketDebuggerUrl })\\n\\n const { lhr } = await lighthouse(\\n 'https://danube-web.shop/',\\n { port: chrome.port },\\n null\\n )\\n\\n console.log('Report complete for', lhr.finalUrl)\\n\\n console.log(`\\n Time To Interactive - Score: ${lhr.audits.interactive.score},\\n Value: ${lhr.audits.interactive.numericValue} ${lhr.audits.interactive.numericUnit}\\n `)\\n\\n await browser.close()\\n await chrome.kill()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adb84\",\"filePath\":\"images/samples/playwright/basic-performance-long-task.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('basic performance long task', async ({ page }) =\u003e {\\n await page.goto('https://danube-web.shop/')\\n\\n const totalBlockingTime = await page.evaluate(() =\u003e {\\n return new Promise((resolve) =\u003e {\\n let totalBlockingTime = 0\\n new PerformanceObserver(function (list) {\\n const perfEntries = list.getEntries()\\n for (const perfEntry of perfEntries) {\\n totalBlockingTime += perfEntry.duration - 50\\n }\\n resolve(totalBlockingTime)\\n }).observe({ type: 'longtask', buffered: true })\\n\\n // Resolve promise if there haven't been long tasks\\n setTimeout(() =\u003e resolve(totalBlockingTime), 5000)\\n })\\n })\\n\\n console.log(parseFloat(totalBlockingTime)) // 0\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adb8f\",\"filePath\":\"images/samples/playwright/basic-performance-navigation.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('basic performance navigation', async ({ page }) =\u003e {\\n await page.goto('https://danube-web.shop/')\\n\\n const navigationTimingJson = await page.evaluate(() =\u003e\\n JSON.stringify(performance.getEntriesByType('navigation'))\\n )\\n\\n const navigationTiming = JSON.parse(navigationTimingJson)\\n console.log(navigationTiming)\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adb9a\",\"filePath\":\"images/samples/playwright/basic-performance-paint-timing.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('basic performance paint timing', async ({ page }) =\u003e {\\n await page.goto('https://danube-web.shop/')\\n\\n const paintTimingJson = await page.evaluate(() =\u003e\\n JSON.stringify(window.performance.getEntriesByType('paint'))\\n )\\n const paintTiming = JSON.parse(paintTimingJson)\\n console.log(paintTiming)\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adba5\",\"filePath\":\"images/samples/playwright/basic-performance-resource.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('basic performance resource', async ({ page }) =\u003e {\\n await page.goto('https://danube-web.shop/')\\n\\n const resourceTimingJson = await page.evaluate(() =\u003e\\n JSON.stringify(window.performance.getEntriesByType('resource'))\\n )\\n\\n const resourceTiming = JSON.parse(resourceTimingJson)\\n const logoResourceTiming = resourceTiming.find((element) =\u003e\\n element.name.includes('.svg')\\n )\\n\\n console.log(logoResourceTiming)\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adbb0\",\"filePath\":\"images/samples/playwright/basic-screenshot-clipped.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('take a clipped screenshot', async ({ page }) =\u003e {\\n const options = {\\n path: 'clipped_screenshot.png',\\n fullPage: false,\\n clip: {\\n x: 5,\\n y: 60,\\n width: 240,\\n height: 40\\n }\\n }\\n\\n await page.setViewportSize({ width: 1280, height: 800 })\\n await page.goto('https://danube-web.shop/')\\n await page.screenshot(options)\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adbbb\",\"subdomain\":\"checkly-422f444a\",\"filePath\":\"images/samples/playwright/basic-screenshot.spec.js\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('take a screenshot', async ({ page }) =\u003e {\\n await page.setViewportSize({ width: 1280, height: 800 })\\n await page.goto('https://danube-web.shop/')\\n await page.screenshot({ path: 'my_screenshot.png' })\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adbc8\",\"filePath\":\"images/samples/playwright/checkout.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\nconst productsNumber = process.env.PRODUCTS_NUMBER || 3\\n\\ntest('checkout', async ({ page }) =\u003e {\\n await page.goto('https://danube-web.shop/')\\n\\n for (let i = 1; i \u003c= productsNumber; i++) {\\n await page.click(`.preview:nth-child(${i}) \u003e .preview-author`)\\n await page.getByRole('button', { name: 'Add to cart' }).click()\\n await page.click('#logo')\\n }\\n\\n await page.locator('#cart').click()\\n await page.getByRole('button', { name: 'Checkout' }).click()\\n\\n await page.getByPlaceholder('Name', { exact: true }).fill('Max')\\n await page.getByPlaceholder('Surname', { exact: true }).fill('Mustermann')\\n await page.getByPlaceholder('Address').fill('Charlottenstr. 57')\\n await page.getByPlaceholder('Zipcode').fill('10117')\\n await page.getByPlaceholder('City').fill('Berlin')\\n await page.getByPlaceholder('Company (optional)').fill('Firma GmbH')\\n await page.getByLabel('as soon as possible').check()\\n await page.getByRole('button', { name: 'Buy' }).click()\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adbd3\",\"subdomain\":\"checkly-422f444a\",\"filePath\":\"images/samples/playwright/cookies-reading.js\",\"__v\":0,\"content\":\"const { chromium } = require('playwright')\\nconst fs = require('fs')\\n\\n;(async () =\u003e {\\n const browser = await chromium.launch()\\n const context = await browser.newContext()\\n\\n const page = await context.newPage()\\n\\n await page.goto('https://github.com/login')\\n\\n await page.type('#login_field', process.env.GITHUB_USER)\\n await page.type('#password', process.env.GITHUB_PWD)\\n\\n await page.waitForSelector('.js-cookie-consent-reject')\\n await page.click('.js-cookie-consent-reject')\\n await page.$eval('[name=\\\"commit\\\"]', (elem) =\u003e elem.click())\\n await page.waitForNavigation()\\n\\n const cookies = await context.cookies()\\n const cookieJson = JSON.stringify(cookies)\\n\\n fs.writeFileSync('cookies.json', cookieJson)\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adbde\",\"filePath\":\"images/samples/playwright/cookies-writing.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { chromium } = require('playwright')\\nconst fs = require('fs')\\n\\n;(async () =\u003e {\\n const browser = await chromium.launch()\\n const context = await browser.newContext()\\n\\n const cookies = fs.readFileSync('cookies.json', 'utf8')\\n\\n const deserializedCookies = JSON.parse(cookies)\\n await context.addCookies(deserializedCookies)\\n\\n const page = await context.newPage()\\n\\n await page.goto(`https://github.com/${process.env.GITHUB_USER}`)\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adbe9\",\"filePath\":\"images/samples/playwright/coupon.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const assert = require('chai').assert\\nconst { chromium } = require('playwright')\\nconst productsNumber = process.env.PRODUCTS_NUMBER || 3\\n\\n;(async () =\u003e {\\n const browser = await chromium.launch()\\n const page = await browser.newPage()\\n\\n await page.goto('https://danube-web.shop/')\\n\\n for (let i = 1; i \u003c= productsNumber; i++) {\\n await page.click(`.preview:nth-child(${i}) \u003e .preview-author`)\\n await page.click('.detail-wrapper \u003e .call-to-action')\\n await page.click('#logo')\\n }\\n\\n await page.click('#cart')\\n\\n await page.waitForSelector('#total-price')\\n const price = await page.$eval('#total-price', (e) =\u003e e.innerText)\\n\\n await page.click('.cart \u003e label')\\n await page.click('#coupon')\\n await page.type('#coupon', 'COUPON2020')\\n await page.click('.cart \u003e div \u003e button')\\n\\n const expectedDiscountedPrice = price * 0.8\\n const discountedPrice = await page.$eval('#total-price', (e) =\u003e e.innerText)\\n assert.equal(discountedPrice, expectedDiscountedPrice)\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adbf4\",\"filePath\":\"images/samples/playwright/file-download-alt.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test, expect } = require('@playwright/test')\\nconst fs = require('fs')\\n\\ntest('file download alternative', async ({ page }) =\u003e {\\n await page.goto('https://danube-web.shop/')\\n\\n await page.getByRole('button', { name: 'Log in' }).click()\\n await page.getByPlaceholder('Email').fill(process.env.USER_EMAIL)\\n await page.getByPlaceholder('Password').fill(process.env.USER_PASSWORD)\\n await page.getByRole('button', { name: 'Sign In' }).click()\\n await page.locator('#account').click()\\n\\n const downloadPromise = page.waitForEvent('download')\\n await page.getByRole('link', { name: 'Invoice' }).click()\\n const download = await downloadPromise\\n\\n await download.saveAs('/path/to/save/at/' + download.suggestedFilename())\\n\\n const path = await download.path()\\n const newFile = await fs.readFileSync(path)\\n const testFile = await fs.readFileSync('fixtures/testfile.pdf')\\n\\n expect(newFile.equals(testFile)).toBe(true)\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adbff\",\"filePath\":\"images/samples/playwright/file-download.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test, expect } = require('@playwright/test')\\nconst axios = require('axios')\\nconst fs = require('fs')\\n\\ntest('file download', async ({ page }) =\u003e {\\n await page.goto('https://danube-web.shop/')\\n\\n await page.getByRole('button', { name: 'Log in' }).click()\\n await page.getByPlaceholder('Email').fill(process.env.USER_EMAIL)\\n await page.getByPlaceholder('Password').fill(process.env.USER_PASSWORD)\\n await page.getByRole('button', { name: 'Sign In' }).click()\\n await page.locator('#account').click()\\n\\n const link = await page.getByRole('link', { name: 'Invoice' })\\n const downloadUrl = await link.evaluateHandle(el =\u003e el.href)\\n const response = await axios.get(downloadUrl)\\n const newFile = Buffer.from(response.data)\\n const testFile = fs.readFileSync('fixtures/testfile.pdf')\\n\\n expect(newFile.equals(testFile)).toBe(true)\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adc0a\",\"filePath\":\"images/samples/playwright/file-upload.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test, expect } = require('@playwright/test')\\n\\ntest('file upload', async ({ page }) =\u003e {\\n await page.goto('https://danube-web.shop/')\\n\\n await page.getByRole('button', { name: 'Log in' }).click()\\n await page.getByPlaceholder('Email').fill(process.env.USER_EMAIL)\\n await page.getByPlaceholder('Password').fill(process.env.USER_PASSWORD)\\n await page.getByRole('button', { name: 'Sign In' }).click()\\n await page.locator('#account').click()\\n\\n const handle = await page.$('input[type=\\\"file\\\"]')\\n await handle.setInputFiles(process.env.FILE_PATH)\\n\\n await page.getByRole('button', { name: 'Upload' }).click()\\n await expect(page.getByText('Upload successful.')).toBeVisible()\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adc15\",\"filePath\":\"images/samples/playwright/google-login.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('Google login', async ({ page }) =\u003e {\\n await page.goto('https://stackoverflow.com/users/login')\\n\\n await page.getByRole('button', { name: 'Log in with Google' }).click()\\n await page.getByLabel('Email or phone').fill(process.env.GOOGLE_USER)\\n await page.getByRole('button', { name: 'Next' }).click()\\n\\n await page.getByLabel('Enter your password').fill(process.env.GOOGLE_PWD)\\n await page.getByRole('button', { name: 'Next' }).click()\\n await page.getByRole('button', { name: 'Continue' }).click()\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adc20\",\"filePath\":\"images/samples/playwright/iframe-access.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('access iframe content', async ({ page }) =\u003e {\\n await page.goto('https://your-page-with-an-iframe.com')\\n const header = await page.frameLocator('iframe').locator('h1')\\n console.log(await header.innerText())\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adc2b\",\"filePath\":\"images/samples/playwright/localstorage-reading.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { chromium } = require('playwright')\\nconst fs = require('fs')\\n\\n;(async () =\u003e {\\n const browser = await chromium.launch()\\n const page = await browser.newPage()\\n\\n await page.goto('https://danube-web.shop/')\\n\\n for (let i = 1; i \u003c= 3; i++) {\\n await page.click(`.preview:nth-child(${i}) \u003e .preview-author`)\\n await page.click('.detail-wrapper \u003e .call-to-action')\\n await page.click('#logo')\\n }\\n\\n const localStorage = await page.evaluate(() =\u003e\\n JSON.stringify(window.localStorage)\\n )\\n fs.writeFileSync('localstorage.json', localStorage)\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adc37\",\"filePath\":\"images/samples/playwright/localstorage-writing.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { chromium } = require('playwright')\\nconst fs = require('fs')\\n\\n;(async () =\u003e {\\n const browser = await chromium.launch()\\n const page = await browser.newPage()\\n\\n await page.goto('https://danube-web.shop/')\\n\\n const localStorage = fs.readFileSync('localstorage.json', 'utf8')\\n\\n const deserializedStorage = JSON.parse(localStorage)\\n await page.evaluate((deserializedStorage) =\u003e {\\n for (const key in deserializedStorage) {\\n localStorage.setItem(key, deserializedStorage[key])\\n }\\n }, deserializedStorage)\\n\\n await page.waitForSelector('#cart')\\n await page.click('#cart')\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adc42\",\"filePath\":\"images/samples/playwright/login.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test, expect } = require('@playwright/test')\\n\\ntest('Login', async ({ page }) =\u003e {\\n await page.goto('https://danube-web.shop/')\\n\\n await page.getByRole('button', { name: 'Log in' }).click()\\n await page.getByPlaceholder('Email').fill(process.env.USER_EMAIL)\\n await page.getByPlaceholder('Password').fill(process.env.USER_PASSWORD)\\n await page.getByRole('button', { name: 'Sign In' }).click()\\n\\n await expect(page.getByText('Welcome back, user@email.com')).toBeVisible()\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adc4d\",\"filePath\":\"images/samples/playwright/ms-account-login.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('test', async ({ page }) =\u003e {\\n await page.goto('https://login.microsoftonline.com/')\\n\\n await page.getByRole('heading', { name: 'Sign in' }).click()\\n await page.getByPlaceholder('Email address, phone number').fill(process.env.MS_USERNAME)\\n await page.getByRole('button', { name: 'Next' }).click()\\n\\n await page.getByTestId('i0118').fill(process.env.MS_PASSWORD)\\n await page.getByTestId('textButtonContainer').getByRole('button', { name: 'Sign in' }).click()\\n await page.getByTestId('checkboxField').check()\\n await page.getByLabel('Stay signed in?').click()\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adc58\",\"filePath\":\"images/samples/playwright/multitab-flows.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('open multiple tabs', async ({ browser }) =\u003e {\\n const context = await browser.newContext()\\n const page = await context.newPage()\\n\\n await page.goto('https://www.checklyhq.com/docs/')\\n\\n const [newPage] = await Promise.all([\\n context.waitForEvent('page'),\\n await page.getByRole('link', { name: 'Checkly on Youtube' }).click()\\n ])\\n\\n await page.screenshot({ path: 'screenshot-tab-old.png' })\\n await newPage.screenshot({ path: 'screenshot-tab-new.png' })\\n\\n await browser.close()\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adc65\",\"filePath\":\"images/samples/playwright/multitab-open.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('open multiple tabs', async ({ browser }) =\u003e {\\n const context = await browser.newContext()\\n\\n const pageOne = await context.newPage()\\n const pageTwo = await context.newPage()\\n\\n await pageOne.goto('https://www.checklyhq.com/')\\n await pageTwo.goto('https://playwright.dev/')\\n\\n await pageOne.screenshot({ path: 'screenshot-tab-one.png' })\\n await pageTwo.screenshot({ path: 'screenshot-tab-two.png' })\\n\\n await browser.close()\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adc73\",\"filePath\":\"images/samples/playwright/pdf-hd.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\nconst fs = require('fs')\\n\\ntest('generate pdf with header and footer', async ({ page, browser }) =\u003e {\\n const templateHeader = fs.readFileSync('template-header.html', 'utf-8')\\n const templateFooter = fs.readFileSync('template-footer.html', 'utf-8')\\n\\n await page.goto('https://checklyhq.com/learn/headless')\\n\\n await page.pdf({\\n path: 'checkly.pdf',\\n displayHeaderFooter: true,\\n headerTemplate: templateHeader,\\n footerTemplate: templateFooter,\\n margin: {\\n top: '100px',\\n bottom: '40px'\\n },\\n printBackground: true\\n })\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adc7e\",\"filePath\":\"images/samples/playwright/pdf-minimal.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('generate pdf', async ({ page }) =\u003e {\\n await page.goto('https://checklyhq.com/learn/playwright')\\n await page.pdf({ path: 'checkly.pdf' })\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adc89\",\"subdomain\":\"checkly-422f444a\",\"filePath\":\"images/samples/playwright/request-interception-block.spec.js\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('intercept requests block', async ({ page }) =\u003e {\\n await page.route('**/*', (route) =\u003e {\\n return route.request().resourceType() === 'image'\\n ? route.abort()\\n : route.continue()\\n })\\n\\n await page.goto('https://danube-web.shop/')\\n await page.screenshot({ path: 'screenshot.png' })\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adc94\",\"filePath\":\"images/samples/playwright/request-interception-read.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('intercept requests', async ({ page }) =\u003e {\\n page.on('request', (request) =\u003e\\n console.log('\u003e\u003e', request.method(), request.url())\\n )\\n page.on('response', (response) =\u003e\\n console.log('\u003c\u003c', response.status(), response.url())\\n )\\n\\n await page.goto('https://danube-web.shop/')\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adc9f\",\"subdomain\":\"checkly-422f444a\",\"filePath\":\"images/samples/playwright/response-interception.spec.js\",\"__v\":0,\"content\":\"const { test } = require('@playwright/test')\\n\\ntest('intercept response', async ({ page }) =\u003e {\\n const mockResponseObject = [\\n {\\n id: 1,\\n title: 'How to Mock a Response',\\n author: 'A. Friend',\\n genre: 'business',\\n price: '0.00',\\n rating: '★★★★★',\\n stock: 65535\\n }\\n ]\\n\\n await page.route('https://danube-web.shop/api/books', (route) =\u003e\\n route.fulfill({\\n contentType: 'application/json',\\n body: JSON.stringify(mockResponseObject)\\n })\\n )\\n\\n await page.goto('https://danube-web.shop/')\\n await page.screenshot({ path: 'screenshot.png' })\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adcaa\",\"filePath\":\"images/samples/playwright/scraping-example-purchases.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"$5b\"},{\"_id\":\"68d52feed349cd094d2adcb6\",\"subdomain\":\"checkly-422f444a\",\"filePath\":\"images/samples/playwright/search.spec.js\",\"__v\":0,\"content\":\"$5c\"},{\"_id\":\"68d52feed349cd094d2adcc7\",\"filePath\":\"images/samples/playwright/signup.spec.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const { test, expect } = require('@playwright/test')\\n\\ntest('Sign up', async ({ page }) =\u003e {\\n await page.goto('https://danube-web.shop/')\\n\\n await page.getByRole('button', { name: 'Sign up' }).click()\\n await page.getByPlaceholder('Name', { exact: true }).fill('John')\\n await page.getByPlaceholder('Surname').fill('Doe')\\n await page.getByPlaceholder('Email').fill('user@email.com')\\n await page.getByPlaceholder('Password').fill('supersecure1')\\n\\n await page.getByPlaceholder('Company (optional)').fill('Test Inc.')\\n await page.getByLabel('Myself').check()\\n await page.getByLabel('I would like to receive').check()\\n await page.getByLabel('I have read and accept the').check()\\n\\n await page.getByRole('button', { name: 'Register' }).click()\\n await expect(page.getByText('Welcome back, user@email.com')).toBeVisible()\\n})\\n\"},{\"_id\":\"68d52feed349cd094d2adcda\",\"filePath\":\"images/samples/puppeteer/basic-browser-navigation.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n await page.click('#cart')\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adcf0\",\"filePath\":\"images/samples/puppeteer/basic-browser-waiting.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-store.herokuapp.com/')\\n await page.click('#login')\\n await page.waitForSelector('#n-email')\\n await page.type('#n-email', 'user@example.com')\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2add01\",\"filePath\":\"images/samples/puppeteer/basic-click-type.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n\\n await page.waitForSelector('input')\\n await page.type('input', 'some search terms')\\n\\n await page.waitForSelector('button')\\n await page.click('button')\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2add0f\",\"filePath\":\"images/samples/puppeteer/basic-get-data-json.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\nconst fs = require('fs')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n const content = await page.evaluate(() =\u003e {\\n const data = []\\n\\n const books = document.querySelectorAll('.preview')\\n books.forEach((book) =\u003e {\\n const title = book.querySelector('.preview-title').innerText\\n const author = book.querySelector('.preview-author').innerText\\n const price = book.querySelector('.preview-price').innerText\\n data.push({\\n title,\\n author,\\n price\\n })\\n })\\n return data\\n })\\n\\n const jsonData = JSON.stringify(content)\\n fs.writeFileSync('books.json', jsonData)\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2add1c\",\"filePath\":\"images/samples/puppeteer/basic-get-href-handle.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n const element = await page.$('a')\\n const href = await element.evaluate((node) =\u003e node.href)\\n console.log(href)\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2add27\",\"filePath\":\"images/samples/puppeteer/basic-get-href-value.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n const url = await page.$eval('a', (el) =\u003e el.href)\\n console.log(url)\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2add32\",\"filePath\":\"images/samples/puppeteer/basic-get-image.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\nconst axios = require('axios')\\nconst fs = require('fs')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n const url = await page.$eval('img', (el) =\u003e el.src)\\n\\n const response = await axios.get(url)\\n fs.writeFileSync('scraped-image.svg', response.data)\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2add3d\",\"filePath\":\"images/samples/puppeteer/basic-get-text-values.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n const categories = await page.$$eval('li a', (nodes) =\u003e\\n nodes.map((n) =\u003e n.innerText)\\n )\\n console.log(categories)\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2add48\",\"filePath\":\"images/samples/puppeteer/basic-navigation.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2add53\",\"filePath\":\"images/samples/puppeteer/basic-performance-emulation.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n\\n const client = await page.target().createCDPSession()\\n await client.send('Network.enable')\\n await client.send('Network.emulateNetworkConditions', {\\n offline: false,\\n downloadThroughput: (4 * 1024 * 1024) / 8,\\n uploadThroughput: (3 * 1024 * 1024) / 8,\\n latency: 20\\n })\\n\\n await page.goto('https://danube-web.shop/')\\n\\n // your flow and assertions\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2add5e\",\"filePath\":\"images/samples/puppeteer/basic-performance-largest-contentful-paint.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n\\n const largestContentfulPaint = await page.evaluate(() =\u003e {\\n return new Promise((resolve) =\u003e {\\n new PerformanceObserver((l) =\u003e {\\n const entries = l.getEntries()\\n // the last entry is the largest contentful paint\\n const largestPaintEntry = entries.at(-1)\\n resolve(largestPaintEntry.startTime)\\n }).observe({\\n type: 'largest-contentful-paint',\\n buffered: true\\n })\\n })\\n })\\n\\n console.log(parseFloat(largestContentfulPaint)) // 1139.39\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2add69\",\"filePath\":\"images/samples/puppeteer/basic-performance-layout-shift.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n\\n const cummulativeLayoutShift = await page.evaluate(() =\u003e {\\n return new Promise((resolve) =\u003e {\\n let CLS = 0\\n\\n new PerformanceObserver((l) =\u003e {\\n const entries = l.getEntries()\\n\\n entries.forEach(entry =\u003e {\\n if (!entry.hadRecentInput) {\\n CLS += entry.value\\n }\\n })\\n\\n resolve(CLS)\\n }).observe({\\n type: 'layout-shift',\\n buffered: true\\n })\\n })\\n })\\n\\n console.log(parseFloat(cummulativeLayoutShift)) // 0.0001672498\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2add74\",\"subdomain\":\"checkly-422f444a\",\"filePath\":\"images/samples/puppeteer/basic-performance-lighthouse.js\",\"__v\":0,\"content\":\"const chromeLauncher = require('chrome-launcher')\\nconst puppeteer = require('puppeteer')\\nconst lighthouse = require('lighthouse')\\nconst request = require('request')\\nconst util = require('util')\\n\\n;(async () =\u003e {\\n const chrome = await chromeLauncher.launch()\\n\\n const resp = await util.promisify(request)(\\n `http://localhost:${chrome.port}/json/version`\\n )\\n const { webSocketDebuggerUrl } = JSON.parse(resp.body)\\n const browser = await puppeteer.connect({\\n browserWSEndpoint: webSocketDebuggerUrl\\n })\\n\\n const { lhr } = await lighthouse(\\n 'https://danube-web.shop/',\\n { port: chrome.port },\\n null\\n )\\n\\n console.log('Report complete for', lhr.finalUrl)\\n\\n console.log(`\\n Time To Interactive - Score: ${lhr.audits.interactive.score},\\n Value: ${lhr.audits.interactive.numericValue} ${lhr.audits.interactive.numericUnit}\\n `)\\n\\n await browser.disconnect()\\n await chrome.kill()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2add80\",\"filePath\":\"images/samples/puppeteer/basic-performance-long-task.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n\\n const totalBlockingTime = await page.evaluate(() =\u003e {\\n return new Promise((resolve) =\u003e {\\n let totalBlockingTime = 0\\n new PerformanceObserver(function (list) {\\n const perfEntries = list.getEntries()\\n for (const perfEntry of perfEntries) {\\n totalBlockingTime += perfEntry.duration - 50\\n }\\n resolve(totalBlockingTime)\\n }).observe({ type: 'longtask', buffered: true })\\n\\n // Resolve promise if there haven't been long tasks\\n setTimeout(() =\u003e resolve(totalBlockingTime), 5000)\\n })\\n })\\n\\n console.log(parseFloat(totalBlockingTime)) // 0\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2add8b\",\"subdomain\":\"checkly-422f444a\",\"filePath\":\"images/samples/puppeteer/basic-performance-navigation.js\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n\\n const navigationTimingJson = await page.evaluate(() =\u003e\\n JSON.stringify(performance.getEntriesByType('navigation'))\\n )\\n const navigationTiming = JSON.parse(navigationTimingJson)\\n\\n console.log(navigationTiming)\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2add97\",\"filePath\":\"images/samples/puppeteer/basic-performance-paint-timing.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n\\n const paintTimingJson = await page.evaluate(() =\u003e\\n JSON.stringify(window.performance.getEntriesByType('paint'))\\n )\\n const paintTiming = JSON.parse(paintTimingJson)\\n\\n console.log(paintTiming)\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adda2\",\"subdomain\":\"checkly-422f444a\",\"filePath\":\"images/samples/puppeteer/basic-performance-resource.js\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.goto('https://danube-web.shop/')\\n\\n const resourceTimingJson = await page.evaluate(() =\u003e\\n JSON.stringify(window.performance.getEntriesByType('resource'))\\n )\\n\\n const resourceTiming = JSON.parse(resourceTimingJson)\\n const logoResourceTiming = resourceTiming.find((element) =\u003e\\n element.name.includes('.svg')\\n )\\n\\n console.log(logoResourceTiming)\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2addad\",\"filePath\":\"images/samples/puppeteer/basic-screenshot-clipped.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const options = {\\n path: 'clipped_screenshot.png',\\n fullPage: false,\\n clip: {\\n x: 5,\\n y: 60,\\n width: 240,\\n height: 40\\n }\\n}\\n\\nconst puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.setViewport({ width: 1280, height: 800 })\\n await page.goto('https://danube-web.shop/')\\n await page.screenshot(options)\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2addb8\",\"subdomain\":\"checkly-422f444a\",\"filePath\":\"images/samples/puppeteer/basic-screenshot.js\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.setViewport({ width: 1280, height: 800 })\\n await page.goto('https://danube-web.shop/')\\n await page.screenshot({ path: 'my_screenshot.png' })\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2addc5\",\"filePath\":\"images/samples/puppeteer/checkout.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"$5d\"},{\"_id\":\"68d52feed349cd094d2addd1\",\"filePath\":\"images/samples/puppeteer/cookies-reading.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\nconst fs = require('fs')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n\\n await page.goto('https://github.com/login')\\n\\n await page.type('#login_field', process.env.GITHUB_USER)\\n await page.type('#password', process.env.GITHUB_PWD)\\n\\n await page.waitForSelector('.js-cookie-consent-reject')\\n await page.click('.js-cookie-consent-reject')\\n await page.$eval('[name=\\\"commit\\\"]', (elem) =\u003e elem.click())\\n await page.waitForNavigation()\\n\\n const cookies = await page.cookies()\\n const cookieJson = JSON.stringify(cookies)\\n\\n fs.writeFileSync('cookies.json', cookieJson)\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2addde\",\"filePath\":\"images/samples/puppeteer/cookies-writing.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\nconst fs = require('fs')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n\\n const cookies = fs.readFileSync('cookies.json', 'utf8')\\n\\n const deserializedCookies = JSON.parse(cookies)\\n await page.setCookie(...deserializedCookies)\\n\\n await page.goto(`https://github.com/${process.env.GITHUB_USER}`)\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adde9\",\"filePath\":\"images/samples/puppeteer/coupon.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"$5e\"},{\"_id\":\"68d52feed349cd094d2addf4\",\"filePath\":\"images/samples/puppeteer/file-download.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"$5f\"},{\"_id\":\"68d52feed349cd094d2addff\",\"filePath\":\"images/samples/puppeteer/file-upload.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"$60\"},{\"_id\":\"68d52feed349cd094d2ade0d\",\"filePath\":\"images/samples/puppeteer/google-login.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n\\n await page.setViewport({ width: 1280, height: 800 })\\n await page.goto('https://stackoverflow.com/users/login')\\n\\n const navigationPromise = page.waitForNavigation()\\n\\n await page.waitForSelector('button.s-btn__google')\\n await page.click('button.s-btn__google')\\n\\n await navigationPromise\\n await page.waitForSelector('input[type=\\\"email\\\"]')\\n await page.type('input[type=\\\"email\\\"]', process.env.GOOGLE_USER)\\n await page.click('#identifierNext')\\n\\n await page.waitForSelector('input[type=\\\"password\\\"]', { visible: true })\\n await page.type('input[type=\\\"password\\\"]', process.env.GOOGLE_PWD)\\n\\n await page.waitForSelector('#passwordNext', { visible: true })\\n await page.click('#passwordNext')\\n\\n await navigationPromise\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2ade1e\",\"filePath\":\"images/samples/puppeteer/iframe-access.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer');\\n\\n(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.goto('https://your-page-with-an-iframe.com')\\n\\n const iframeHandle = await page.$('iframe')\\n const iframe = await iframeHandle.contentFrame()\\n const heading = await iframe.$('h1')\\n\\n console.log(await heading.evaluate((el) =\u003e el.innerText))\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2ade31\",\"filePath\":\"images/samples/puppeteer/localstorage-reading.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\nconst fs = require('fs')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n\\n await page.goto('https://danube-web.shop/')\\n\\n for (let i = 1; i \u003c= 3; i++) {\\n await page.waitForSelector(`.preview:nth-child(${i}) \u003e .preview-author`)\\n await page.click(`.preview:nth-child(${i}) \u003e .preview-author`)\\n\\n await page.waitForSelector('.detail-wrapper \u003e .call-to-action')\\n await page.click('.detail-wrapper \u003e .call-to-action')\\n\\n await page.waitForSelector('#logo')\\n await page.click('#logo')\\n }\\n\\n const localStorage = await page.evaluate(() =\u003e\\n JSON.stringify(window.localStorage)\\n )\\n fs.writeFileSync('localstorage.json', localStorage)\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2ade40\",\"filePath\":\"images/samples/puppeteer/localstorage-writing.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\nconst fs = require('fs')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n\\n await page.goto('https://danube-web.shop/')\\n\\n const localStorage = fs.readFileSync('localstorage.json', 'utf8')\\n\\n const deserializedStorage = JSON.parse(localStorage)\\n await page.evaluate((deserializedStorage) =\u003e {\\n for (const key in deserializedStorage) {\\n localStorage.setItem(key, deserializedStorage[key])\\n }\\n }, deserializedStorage)\\n\\n await page.waitForSelector('#cart')\\n await page.click('#cart')\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2ade4b\",\"filePath\":\"images/samples/puppeteer/login.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n\\n await page.setViewport({ width: 1280, height: 800 })\\n await page.goto('https://danube-web.shop/')\\n\\n await page.waitForSelector('#login')\\n await page.click('#login')\\n\\n await page.waitForSelector('#n-email')\\n await page.type('#n-email', process.env.USER_EMAIL)\\n\\n await page.waitForSelector('#n-password2')\\n await page.type('#n-password2', process.env.USER_PASSWORD)\\n\\n await page.waitForSelector('#goto-signin-btn')\\n await page.click('#goto-signin-btn')\\n\\n await page.waitForSelector('#login-message', { visible: true })\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2ade57\",\"filePath\":\"images/samples/puppeteer/mslive-login.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch({ headless: false })\\n const page = await browser.newPage()\\n\\n await page.setViewport({ width: 1280, height: 800 })\\n await page.goto('https://login.live.com/')\\n\\n const navigationPromise = page.waitForNavigation()\\n\\n await page.waitForSelector('[name=\\\"loginfmt\\\"]')\\n await page.type('[name=\\\"loginfmt\\\"]', process.env.MSLIVE_USER)\\n await page.click('[type=\\\"submit\\\"]')\\n\\n await navigationPromise\\n await page.waitForSelector('input[type=\\\"password\\\"]', { visible: true })\\n await page.type('input[type=\\\"password\\\"]', process.env.MSLIVE_PWD)\\n await page.keyboard.press('Enter')\\n\\n await navigationPromise\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2ade62\",\"filePath\":\"images/samples/puppeteer/multitab-flows.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n\\n await page.setViewport({ width: 1440, height: 800 })\\n\\n await page.goto('https://www.checklyhq.com/')\\n\\n const pageTarget = page.target()\\n\\n await page.waitForSelector('#menu_5_drop \u003e li:nth-child(3) \u003e a')\\n await page.click('#menu_5_drop \u003e li:nth-child(3) \u003e a')\\n\\n await page.screenshot({ path: 'screenshot-tab-old.png' })\\n\\n const newTarget = await browser.waitForTarget(\\n (target) =\u003e target.opener() === pageTarget\\n )\\n\\n const newPage = await newTarget.page()\\n\\n await newPage.waitForSelector('#pull-requests-tab')\\n await newPage.click('#pull-requests-tab')\\n await newPage.screenshot({ path: 'screenshot-tab-new.png' })\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2ade6e\",\"filePath\":\"images/samples/puppeteer/multitab-headful.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n;(async () =\u003e {\\n const browser = await puppeteer.launch({ headless: false })\\n const page = await browser.newPage()\\n\\n await page.setViewport({ width: 1440, height: 800 })\\n\\n await page.goto('https://www.checklyhq.com/')\\n\\n const pageTarget = page.target()\\n\\n await page.waitForSelector('#menu_5_drop \u003e li:nth-child(3) \u003e a')\\n await page.click('#menu_5_drop \u003e li:nth-child(3) \u003e a')\\n\\n await page.screenshot({ path: 'screenshot-tab-old.png' })\\n\\n const newTarget = await browser.waitForTarget(\\n (target) =\u003e target.opener() === pageTarget\\n )\\n\\n const newPage = await newTarget.page()\\n await newPage.bringToFront()\\n\\n await newPage.waitForSelector('#pull-requests-tab')\\n await newPage.click('#pull-requests-tab')\\n await newPage.screenshot({ path: 'screenshot-tab-new.png' })\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2ade79\",\"filePath\":\"images/samples/puppeteer/multitab-open.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n\\n const pageOne = await browser.newPage()\\n const pageTwo = await browser.newPage()\\n\\n await pageOne.goto('https://www.checklyhq.com/')\\n await pageTwo.goto('https://playwright.dev/')\\n\\n await pageOne.screenshot({ path: 'screenshot-tab-one.png' })\\n await pageTwo.screenshot({ path: 'screenshot-tab-two.png' })\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2ade85\",\"filePath\":\"images/samples/puppeteer/pdf-hd.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\nconst fs = require('fs')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n\\n const navigationPromise = page.waitForNavigation()\\n\\n const templateHeader = fs.readFileSync('template-header.html', 'utf-8')\\n const templateFooter = fs.readFileSync('template-footer.html', 'utf-8')\\n\\n await page.emulateMediaType('screen')\\n\\n await page.goto('https://checklyhq.com/learn/headless')\\n\\n await navigationPromise\\n\\n await page.pdf({\\n path: 'checkly.pdf',\\n displayHeaderFooter: true,\\n headerTemplate: templateHeader,\\n footerTemplate: templateFooter,\\n margin: {\\n top: '100px',\\n bottom: '40px'\\n },\\n printBackground: true\\n })\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2ade97\",\"filePath\":\"images/samples/puppeteer/pdf-minimal.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n await page.goto('https://checklyhq.com/learn/headless')\\n await page.pdf({ path: 'checkly.pdf' })\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adeaa\",\"filePath\":\"images/samples/puppeteer/request-interception-block.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n\\n await page.setViewport({ width: 1200, height: 800 })\\n\\n await page.setRequestInterception(true)\\n\\n page.on('request', (request) =\u003e {\\n if (request.resourceType() === 'image') request.abort()\\n else request.continue()\\n })\\n\\n await page.goto('https://danube-web.shop/')\\n\\n await page.screenshot({ path: 'screenshot.png' })\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adeb7\",\"filePath\":\"images/samples/puppeteer/request-interception-read.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n\\n await page.setViewport({ width: 1200, height: 800 })\\n\\n await page.setRequestInterception(true)\\n\\n page.on('request', (request) =\u003e {\\n console.log('\u003e\u003e', request.method(), request.url())\\n request.continue()\\n })\\n\\n page.on('response', (response) =\u003e {\\n console.log('\u003c\u003c', response.status(), response.url())\\n })\\n\\n await page.goto('https://danube-web.shop/')\\n\\n await page.screenshot({ path: 'screenshot.png' })\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adec2\",\"filePath\":\"images/samples/puppeteer/response-interception.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"const puppeteer = require('puppeteer')\\n\\nconst mockResponseObject = [\\n {\\n id: 1,\\n title: 'How to Mock a Response',\\n author: 'A. Friend',\\n genre: 'business',\\n price: '0.00',\\n rating: '★★★★★',\\n stock: 65535\\n }\\n]\\n\\n;(async () =\u003e {\\n const browser = await puppeteer.launch()\\n const page = await browser.newPage()\\n\\n await page.setRequestInterception(true)\\n\\n page.on('request', (request) =\u003e {\\n if (request.url() === 'https://danube-web.shop/api/books') {\\n request.respond({\\n content: 'application/json',\\n body: JSON.stringify(mockResponseObject)\\n })\\n } else request.continue()\\n })\\n\\n await page.setViewport({ width: 1200, height: 800 })\\n\\n await page.goto('https://danube-web.shop/')\\n\\n await page.screenshot({ path: 'screenshot.png' })\\n\\n await browser.close()\\n})()\\n\"},{\"_id\":\"68d52feed349cd094d2adecd\",\"filePath\":\"images/samples/puppeteer/scraping-example-purchases.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"$61\"},{\"_id\":\"68d52feed349cd094d2aded8\",\"subdomain\":\"checkly-422f444a\",\"filePath\":\"images/samples/puppeteer/search.js\",\"__v\":0,\"content\":\"$62\"},{\"_id\":\"68d52feed349cd094d2adee3\",\"filePath\":\"images/samples/puppeteer/signup.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"$63\"},{\"_id\":\"68d9d15ed349cd094daee740\",\"filePath\":\"block-headless.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"$64\"},{\"_id\":\"68dd2892d349cd094da6157d\",\"filePath\":\"unify-tracking.js\",\"subdomain\":\"checkly-422f444a\",\"__v\":0,\"content\":\"// Unify Intent tracking code\\n!function(){var e=[\\\"identify\\\",\\\"page\\\",\\\"startAutoPage\\\",\\\"stopAutoPage\\\",\\\"startAutoIdentify\\\",\\\"stopAutoIdentify\\\"];function t(o){return Object.assign([],e.reduce(function(r,n){return r[n]=function(){return o.push([n,[].slice.call(arguments)]),o},r},{}))}window.unify||(window.unify=t(window.unify)),window.unifyBrowser||(window.unifyBrowser=t(window.unifyBrowser));var n=document.createElement(\\\"script\\\");n.async=!0,n.setAttribute(\\\"src\\\",\\\"https://tag.unifyintent.com/v1/Eh2v4NmptH8h66TkBxkeNg/script.js\\\"),n.setAttribute(\\\"data-api-key\\\",\\\"wk_Cc6YhC2C_FFnkCsprTPhwQ6ZGaCyvduLXpa4TZSmx\\\"),n.setAttribute(\\\"id\\\",\\\"unifytag\\\"),(document.body||document.head).appendChild(n)}();\\n\"},{\"_id\":\"6a55019a7ec0f75650bed2b3\",\"subdomain\":\"checkly-422f444a\",\"filePath\":\"vercel-analytics.js\",\"__v\":0,\"content\":\"// Vercel Web Analytics\\n// These docs are served under checklyhq.com/docs via a Vercel rewrite, so the\\n// insights script and its beacon only resolve at the domain root. A path\\n// relative to /docs 404s.\\n(function () {\\n if (window.__vercelInsightsAdded) return;\\n window.__vercelInsightsAdded = true;\\n\\n var script = document.createElement('script');\\n script.src = '/_vercel/insights/script.js';\\n document.head.appendChild(script);\\n})();\\n\"}]}]\n"])</script><script>self.__next_f.push([1,"67:Ta716,"])</script><script>self.__next_f.push([1,"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,em:`em`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,OptimizedImage,Table}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`When we talk about keeping services running smoothly, we often hear about SLAs, SLOs, and SLIs. But what do these terms mean, and how are they different? SLAs, or Service Level Agreements, are like promises between a service provider and a customer. They outline what the customer can expect in terms of service quality.`}),`\n`,_jsx(_components.p,{children:`SLOs, or Service Level Objectives, are the specific goals that service providers aim to hit to meet the promises made in the SLAs. Think of them as targets for how well the service should work. Finally, SLIs, or Service Level Indicators, are the measurements used to see if the service is hitting its targets. They help us understand how well the service is doing. Together, these three help ensure services are delivered well and customers are happy.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:_jsx(_components.strong,{children:`Categories`})}),_jsx(_components.th,{children:_jsx(_components.strong,{children:`SLA (Service Level Agreements)`})}),_jsx(_components.th,{children:_jsx(_components.strong,{children:`SLO (Service Level Objectives)`})}),_jsx(_components.th,{children:_jsx(_components.strong,{children:`SLI (Service Level Indicators)`})})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`What is It?`})}),_jsx(_components.td,{children:`A contractual commitment defining agreed-upon expectations between a service provider and customers.`}),_jsx(_components.td,{children:`Specific, measurable goals set within the broader scope of SLAs.`}),_jsx(_components.td,{children:`Specific metrics measuring a service’s performance.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`How Does It Help?`})}),_jsx(_components.td,{children:`Outlines metrics, response times, and service quality to ensure performance standards.`}),_jsx(_components.td,{children:`Pinpoints desired performance levels, emphasizing reliability and user satisfaction.`}),_jsx(_components.td,{children:`Measures specific aspects of a service’s performance to assess its quality.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Who Builds It?`})}),_jsx(_components.td,{children:`A collaborative effort involving service providers and customers, often led by technical teams.`}),_jsx(_components.td,{children:`A collaborative effort involving technical teams to set measurable goals within the SLA framework.`}),_jsx(_components.td,{children:`Developed by technical teams to measure and monitor specific aspects of service performance.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`What Happens if It’s Breached?`})}),_jsx(_components.td,{children:`Breaching SLA terms may lead to penalties, legal consequences, and reputation damage to the provider.`}),_jsx(_components.td,{children:`Breaching SLOs signifies a failure to meet performance goals, triggering corrective actions and potential reevaluation.`}),_jsx(_components.td,{children:`SLI breaches indicate deviations in specific performance metrics, requiring investigation and improvement.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`what-is-an-sla-service-level-agreement`,children:`What is an SLA (Service Level Agreement)`}),`\n`,_jsxs(_components.p,{children:[`At its core, a\\xA0`,_jsx(_components.a,{href:`https://www.techtarget.com/searchitchannel/definition/service-level-agreement`,children:`Service Level Agreement (SLA)`}),`\\xA0defines the expectations between service providers and customers. Overcoming challenges such as technical intricacies, customer preferences, language clarity, and detailed documentation is key to optimizing SLA effectiveness. By embracing best practices, SLAs become dynamic tools fostering transparency, accountability, and customer satisfaction.`]}),`\n`,_jsx(Heading,{level:`3`,id:`sla-challenges`,children:`SLA Challenges`}),`\n`,_jsx(_components.p,{children:`Hitting your SLAs can bring many challenges that demand a nuanced and strategic approach. Understanding and addressing these challenges is important for the success and effectiveness of SLAs:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Defining Precise Metrics:`}),`\\xA0Accurately quantifying key performance indicators is a fundamental challenge in defining SLAs. The process requires clear definition and measurement to align with both client expectations and operational capabilities.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Balancing Flexibility and Specificity:`}),`\\xA0Achieving the right balance between flexibility and specificity is crucial. Overly rigid SLAs may hinder innovation, while overly lenient ones can lead to unmet expectations. Striking the balance is imperative for long-term success.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Adapting to Evolving Technologies:`}),`\\xA0The dynamic nature of industries and constant technological advancements pose a continuous challenge. SLAs must be flexible enough to adapt swiftly to changes, ensuring they remain relevant and effective in evolving business landscapes.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Effective Communication and Collaboration:`}),`\\xA0Successful SLAs hinge on effective communication and collaboration between service providers and clients. Clear understanding, transparent dialogue, and collaborative problem-solving are essential to preempt and address potential issues.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Monitoring Mechanisms:`}),`\\xA0Implementing robust mechanisms for\\xA0`,_jsx(_components.a,{href:`https://www.checklyhq.com/blog/how-to-monitor-all-the-nines-of-your-service-level-agreements/`,children:`monitoring service level agreements`}),`\\xA0is crucial. Regular assessments and timely feedback loops help identify and address deviations, ensuring service levels meet agreed-upon standards consistently.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Commitment to Continuous Improvement:`}),`\\xA0SLAs are not static documents. They are living agreements that demand a commitment to continuous improvement. A proactive approach to refining processes and adapting to changing circumstances is necessary for sustained success.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`sla-best-practices`,children:`SLA Best Practices`}),`\n`,_jsx(_components.p,{children:`To overcome these challenges and ensure the effectiveness of SLAs, certain best practices should be observed:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Involve Technical Teams in SLA Creation:`}),`\\xA0Collaboration with technical teams from the initial stages ensures that the SLA aligns with the technical capabilities and limitations of the services. This collaboration fosters a more accurate and realistic set of expectations.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Create SLAs Keeping Customers’ Preferences in Mind:`}),`\\xA0Considering customers’ preferences is crucial. By incorporating customer feedback and expectations, SLAs become more customer-centric. This also leads to increased satisfaction and trust.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Keep SLAs Simple and Use Clear Language:`}),`\\xA0Maintaining simplicity in SLAs is a best practice that cannot be overstated. Clear and straightforward language enhances understanding and reduces the risk of misinterpretation.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Document Everything:`}),`\\xA0Comprehensive documentation is crucial for successful SLAs. Documenting all aspects of the agreement ensures transparency. It also provides a reference point for dispute resolution and aids in continuous improvement.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`who-needs-an-sla%3F`,children:`Who Needs an SLA?`}),`\n`,_jsx(_components.p,{children:`Understanding who benefits from SLAs is essential for businesses looking to establish effective service standards. In essence, SLAs are beneficial for:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Service Providers:`}),`\\xA0They set clear expectations and define performance standards.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Customers:`}),`\\xA0They have a transparent understanding of the services they can expect.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Businesses:`}),`\\xA0SLAs contribute to accountability, transparency, and customer satisfaction, ultimately impacting the bottom line positively.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`sla-examples`,children:`SLA Examples`}),`\n`,_jsx(_components.p,{children:`To illustrate the practical application and importance of effective SLA management, let’s explore some real-world examples across various industries:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:_jsx(_components.strong,{children:`Use Cases`})}),_jsx(_components.th,{children:_jsx(_components.strong,{children:`Description`})})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Cloud Services`}),_jsx(_components.td,{children:`This SLA between a cloud service provider like Checkly and its customers specifies uptime guarantees (e.g., 99.9% uptime), data security standards, and disaster recovery protocols.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`IT Support`}),_jsx(_components.td,{children:`An agreement detailing response times for IT support requests, resolution times based on the severity of issues, and the modes of support available (e.g., phone, email, chat).`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Telecommunications`}),_jsx(_components.td,{children:`SLA for a telecom company can include network availability targets, call quality standards, and maintenance window notifications.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`what-is-an-slo-service-level-objective`,children:`What is an SLO (Service Level Objective)`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://www.gartner.com/en/information-technology/glossary/slo-service-level-objective`,children:`Service Level Objectives (SLOs)`}),`\\xA0are critical to managing and maintaining reliable and efficient systems. An SLO is a set of quantitative measures that define the level of service a system must deliver. This helps teams align their performance goals with user expectations. SLOs play a pivotal role in ensuring that services meet user needs while allowing organizations to manage their resources effectively.`]}),`\n`,_jsx(Heading,{level:`3`,id:`slo-challenges`,children:`SLO Challenges`}),`\n`,_jsx(_components.p,{children:`Implementing SLOs comes with a set of challenges. Teams often face difficulties in defining precise and meaningful objectives and striking the right balance between aggressiveness and achievability. The challenge lies in creating objectives that align with user expectations while being realistic regarding system capabilities. Additionally, unforeseen contingencies can impact the achievement of SLOs, requiring continuous adaptation and improvement.`}),`\n`,_jsx(Heading,{level:`3`,id:`slo-best-practices`,children:`SLO Best Practices`}),`\n`,_jsx(_components.p,{children:`To overcome challenges associated with SLOs, it is essential to follow best practices that streamline the process and enhance the effectiveness of these objectives:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Keep SLOs Simple and Clear:`}),`\\xA0Simplicity is key when defining SLOs. Clear and straightforward objectives facilitate better understanding and communication across teams. Avoid overly complex or ambiguous metrics that can lead to confusion and misalignment.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Account for Contingent Issues:`}),`\\xA0Recognizing that unforeseen issues can impact service levels is crucial. Build flexibility into your SLOs to account for contingent issues. This allows teams to adapt and maintain service quality despite unexpected challenges.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Create SLOs for Internal Systems:`}),`\\xA0While SLOs are often associated with customer-facing services, internal systems also benefit from performance metrics. Implementing SLOs for internal services ensures that the entire infrastructure operates at optimal levels. This contributes to overall organizational efficiency.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Don’t Create More Than Necessary SLOs:`}),`\\xA0Creating an excessive number of SLOs can be counterproductive. Focus on the most critical aspects of your services and establish a manageable set of objectives. This enables teams to prioritize effectively and dedicate resources where they are most needed.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`who-needs-an-slo%3F`,children:`Who Needs an SLO?`}),`\n`,_jsx(_components.p,{children:`The adoption of SLOs is not limited to specific roles or teams. Anyone involved in delivering, managing, or maintaining services can benefit from implementing SLOs. Development teams, operations teams, and leadership play crucial roles in defining and achieving SLOs. SLOs serve as a unifying metric that aligns the efforts of various teams toward a common goal—ensuring a high-quality user experience.`}),`\n`,_jsx(Heading,{level:`3`,id:`slo-examples`,children:`SLO Examples`}),`\n`,_jsx(_components.p,{children:`To demonstrate how Service Level Objectives (SLOs) set the stage for measuring and achieving service quality, here are examples from various industries.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:_jsx(_components.strong,{children:`Use Cases`})}),_jsx(_components.th,{children:_jsx(_components.strong,{children:`Description`})})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`E-commerce Website`}),_jsx(_components.td,{children:`An SLO for an e-commerce platform may include a page load time of under 2 seconds for 95% of all page views to enhance user experience and reduce bounce rates.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Online Banking`}),_jsx(_components.td,{children:`For an online banking service, an SLO can specify a transaction success rate of 99.5%, ensuring reliability and trust in digital transactions.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Cloud Storage`}),_jsx(_components.td,{children:`A cloud storage service can have an SLO that guarantees data retrieval times of less than 300 milliseconds for 99% of requests, providing quick access to stored information.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`what-is-an-sli-service-level-indicator`,children:`What is an SLI (Service Level Indicator)`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://www.techtarget.com/searchcustomerexperience/definition/service-level-indicator`,children:`Service Level Indicators (SLIs)`}),`\\xA0are fundamental components of service level management. They provide measurable metrics to evaluate the performance of a system. SLIs are specific, quantifiable measurements that give insights into various aspects of a service. This enables teams to assess the service’s reliability and effectiveness.`]}),`\n`,_jsx(Heading,{level:`3`,id:`sli-challenges`,children:`SLI Challenges`}),`\n`,_jsx(_components.p,{children:`Implementing SLIs comes with its share of challenges. Defining metrics that accurately represent the user experience can be complex. Teams often struggle with selecting the right indicators that align with user expectations and business goals. Additionally, ensuring that SLIs remain relevant and meaningful over time requires continuous attention and adaptation.`}),`\n`,_jsx(Heading,{level:`3`,id:`sli-best-practices`,children:`SLI Best Practices`}),`\n`,_jsx(_components.p,{children:`Overcoming challenges associated with SLIs involves following best practices that enhance their accuracy and relevance.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Create Precise and Measurable SLIs:`}),`\\xA0SLIs should be crafted with precision, reflecting the specific aspects of a service that matter most to users. Measurable metrics allow for objective evaluation and facilitate data-driven decision-making. Avoid vague or overly broad indicators to ensure the effectiveness of SLIs.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Keep SLIs Simple:`}),`\\xA0Simplicity is key when designing SLIs. Clear and straightforward indicators are easier to understand and communicate across teams. Avoid unnecessary complexity that can lead to confusion and misinterpretation of performance metrics.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`who-needs-an-sli%3F`,children:`Who Needs an SLI?`}),`\n`,_jsx(_components.p,{children:`The importance of SLIs extends to various roles within an organization. Anyone involved in the development, deployment, or maintenance of services can benefit from incorporating SLIs into their processes. Development teams use SLIs to monitor the impact of code changes. Operations teams leverage SLIs to ensure system reliability. Leadership relies on SLIs to make informed decisions about resource allocation and strategy.`}),`\n`,_jsx(Heading,{level:`3`,id:`sli-examples`,children:`SLI Examples`}),`\n`,_jsx(_components.p,{children:`To refine our understanding of service measurement further, let’s examine some Service Level Indicators (SLIs) that quantify the performance of services.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:_jsx(_components.strong,{children:`Use Cases`})}),_jsx(_components.th,{children:_jsx(_components.strong,{children:`Description`})})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Website Uptime`}),_jsx(_components.td,{children:`For a web hosting service, an SLI can measure the percentage of time the hosted websites are accessible to users, aiming for an uptime of 99.9%.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`API Response`}),_jsx(_components.td,{children:`In API services, an SLI could be the average response time for API calls, with a target of responding within 500 milliseconds for 95% of the requests.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Customer Support Response`}),_jsx(_components.td,{children:`For a customer support team, an SLI can track the average response time to customer inquiries, with a goal of responding to 90% of inquiries within 1 hour.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`why-are-slas%2C-slos%2C-and-slis-important%3F`,children:`Why are SLAs, SLOs, and SLIs Important?`}),`\n`,_jsx(_components.p,{children:`Service Level Agreements (SLAs), Service Level Objectives (SLOs), and Service Level Indicators (SLIs) are integral components of effective service management. Each of them serves a unique purpose in ensuring the delivery of high-quality services. Understanding their importance is paramount for organizations striving to meet user expectations and maintain operational excellence.`}),`\n`,_jsx(Heading,{level:`3`,id:`ensuring-accountability-with-slas`,children:`Ensuring Accountability with SLAs`}),`\n`,_jsx(_components.p,{children:`SLAs set the foundation for accountability and transparency. These agreements define the expected level of service a customer can anticipate. It also outlines measurable metrics such as response times, uptime, and resolution periods. By clearly defining these expectations, SLAs foster trust between service providers and customers. When complied with, SLAs help organizations demonstrate their commitment to delivering reliable and timely services.`}),`\n`,_jsx(Heading,{level:`3`,id:`aligning-objectives-with-slos`,children:`Aligning Objectives with SLOs`}),`\n`,_jsx(_components.p,{children:`SLOs bridge the gap between user expectations and system capabilities. These objectives establish quantifiable performance goals. This allows teams to align their efforts with user needs. SLOs serve as a roadmap for maintaining service quality. They help organizations strike a balance between ambitious targets and achievable benchmarks. Establishing SLOs encourages continuous improvement, adaptability, and a proactive approach to managing service levels.`}),`\n`,_jsx(Heading,{level:`3`,id:`gaining-insights-through-slis`,children:`Gaining Insights Through SLIs`}),`\n`,_jsx(_components.p,{children:`SLIs provide a granular view of service performance. These indicators offer specific, measurable metrics that serve as the building blocks for SLOs. SLIs enable teams to monitor various aspects of service. These range from latency and error rates to user interactions. By regularly evaluating SLIs, organizations gain valuable insights into the real-time health of their services. This process empowers them to make informed decisions, identify areas for improvement, and respond promptly to emerging issues.`}),`\n`,_jsx(Heading,{level:`3`,id:`the-collective-impact`,children:`The Collective Impact`}),`\n`,_jsx(_components.p,{children:`When integrated, SLAs, SLOs, and SLIs form a comprehensive framework for service excellence. SLAs provide a contractual foundation, SLOs establish performance objectives, and SLIs offer tangible metrics to measure success. This triad ensures a holistic approach to service management, aligning customer expectations with organizational capabilities.`}),`\n`,_jsx(Heading,{level:`2`,id:`practical-example%3A-implementing-slis%2C-slos%2C-and-slas-for-apis`,children:`Practical Example: Implementing SLIs, SLOs, and SLAs for APIs`}),`\n`,_jsx(_components.p,{children:`In the context of managing a customer-facing, business-critical API, it’s essential to establish clear standards and expectations to ensure high-quality service. Here, we dive into an example that outlines SLIs, SLOs, and SLAs, using a practical scenario.`}),`\n`,_jsx(Heading,{level:`3`,id:`sli%3A-service-level-indicator`,children:`SLI: Service Level Indicator`}),`\n`,_jsx(_components.p,{children:`The SLI acts as a measure of the performance and reliability of the API. In this case, the SLI is defined by the API’s ability to respond successfully with HTTP status codes ranging from 200 to 499, coupled with a response time of under one second. This metric is crucial because it quantifies the operational performance of the API from a technical standpoint, focusing on availability and speed.`}),`\n`,_jsx(Heading,{level:`3`,id:`slo%3A-service-level-objective`,children:`SLO: Service Level Objective`}),`\n`,_jsx(_components.p,{children:`Building on the SLI, the SLO sets a target for the level of service the API aims to deliver. For our API, the objective is that the SLI conditions (response codes within 200-499 and response times below one second) are met for the 99th percentile of all requests. This means that out of 100 requests, at least 99 should satisfy these criteria. The SLO is a commitment to maintaining a high standard of service, ensuring that nearly all requests are handled efficiently and effectively.`}),`\n`,_jsx(Heading,{level:`3`,id:`sla%3A-service-level-agreement`,children:`SLA: Service Level Agreement`}),`\n`,_jsx(_components.p,{children:`The SLA transforms the SLO into a formal agreement with the customer. It guarantees that the service will achieve the SLO targets for a specified period, in this case, a quarter. The SLA also outlines the compensation customers will receive if the service fails to meet these expectations. This compensation could take various forms, such as financial credits, discounts, or other remedies. The SLA is a crucial part of customer contracts, providing a legal framework that ensures accountability and offers reassurance to customers about the reliability of the service.`}),`\n`,_jsx(_components.p,{children:`By setting these SLIs, SLOs, and SLAs, the company not only commits to delivering a high-quality API service but also provides transparency and trust to its customers. This framework helps manage expectations, foster customer satisfaction, and drive continuous improvement in service performance.`}),`\n`,_jsx(Heading,{level:`2`,id:`how-checkly-can-help-you-hit-your-slas`,children:_jsx(_components.strong,{children:`How Checkly Can Help You Hit Your SLAs`})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://www.checklyhq.com/`,children:`Checkly`}),`\\xA0focuses on Synthetic Monitoring to track how well websites, applications, and APIs work. Its goal is to help\\xA0`,_jsx(_components.a,{href:`https://www.checklyhq.com/blog/how-to-monitor-all-the-nines-of-your-service-level-agreements/`,children:`meet Service Level Agreements (SLAs)`}),`\\xA0with customers with its features such as API checks, browser checks, heartbeat monitoring, etc.`]}),`\n`,_jsx(Heading,{level:`3`,id:`api-checks`,children:_jsx(_components.strong,{children:`API Checks`})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://www.checklyhq.com/blog/what-is-api-monitoring/`,children:`API checks`}),`\\xA0monitor vital API endpoints frequently from various global locations. They allow for the validation of response codes and bodies to ensure accuracy, while also keeping an eye on response times to maintain a quick and efficient experience. Additionally, the feature of receiving instant alerts when any monitoring checks indicate a failure provides the assurance needed for maintaining smooth API operations. This proactive approach to monitoring ensures that APIs function seamlessly, enhancing reliability and user satisfaction.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-01.png?fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=4eaf3383622adc1fb44305d7481b9820`,alt:`a checkly dashboard`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`697`,height:`697`,\"data-path\":`images/learn/images/sla-01.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-01.png?w=280\u0026fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=f33657c8b105e5b6a5e53e36e03631d9 280w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-01.png?w=560\u0026fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=ba34e3cc5a981f6ef04c866ee7cc85bd 560w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-01.png?w=840\u0026fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=aac24619c1a411ab1f88e9d805cd0ab7 840w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-01.png?w=1100\u0026fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=8129e1d918a18fcafe6049f52c00603a 1100w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-01.png?w=1650\u0026fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=d3d81867ef4e2bb1df412c3d41d7085b 1650w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-01.png?w=2500\u0026fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=b473b56fd080e3ed98813c32866a05be 2500w`}),`\n`,_jsx(_components.p,{children:_jsxs(_components.em,{children:[`Check out\\xA0`,_jsx(_components.a,{href:`https://www.youtube.com/watch?v=38ZXJy-nlvI`,children:`this tutorial`}),`\\xA0to find out how Checkly’s API checks work.`]})}),`\n`,_jsx(_components.p,{children:`Checkly’s API checks can help you achieve your SLAs through:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Continuous Monitoring:`}),`\\xA0Checkly allows you to continuously monitor your APIs from multiple global locations. This helps ensure that your services are available and responsive across different regions, aligning with SLA requirements for uptime and performance.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Automated Testing in Production:`}),`\\xA0You can automate API testing to validate the functionality, performance, and reliability of your endpoints. This includes checking for correct status codes, response times, and validating response bodies against expected outcomes. API monitoring helps in the early detection of issues that could breach SLA terms.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Alerting and Notifications:`}),`\\xA0Checkly provides real-time alerts and notifications when your APIs do not meet predefined thresholds or when failures occur. This immediate feedback loop enables you to quickly respond to and resolve issues before they impact your SLA commitments.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Customizable Check Intervals:`}),`\\xA0You can customize how frequently your APIs are checked, allowing for more frequent monitoring of critical services that have strict SLA requirements. This ensures that any downtime or performance degradation is detected and addressed promptly.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Performance Tracking:`}),`\\xA0Checkly tracks the performance of your APIs over time, offering insights into trends and potential areas of improvement. This data can help you optimize your services to not only meet but exceed SLA expectations regarding response times and reliability.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Detailed Reporting:`}),`\\xA0The platform provides detailed reports and dashboards that give visibility into API health, performance metrics, and historical data. These insights can be used to demonstrate compliance with SLAs during audits and reviews with stakeholders.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`browser-checks`,children:_jsx(_components.strong,{children:`Browser Checks`})}),`\n`,_jsxs(_components.p,{children:[`On the other hand, Checkly’s Playwright-based\\xA0`,_jsx(_components.a,{href:`/detect/synthetic-monitoring/browser-checks/overview`,children:`browser checks`}),`\\xA0mimic user actions to make sure key processes work smoothly, and the heartbeat feature checks if systems are running properly. These capabilities enable the monitoring of response times, uptime, functionality, and internal systems performance. This comprehensive monitoring supports SLAs in keeping services healthy and running efficiently.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-02.png?fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=93169167b816810cc1dab5bd13028f92`,alt:`a checkly dashboard`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`701`,height:`701`,\"data-path\":`images/learn/images/sla-02.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-02.png?w=280\u0026fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=a5cf851c5220462c0db65007c4b3fa39 280w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-02.png?w=560\u0026fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=c2d97fa785507a06c13dd5bbc0e9ac6b 560w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-02.png?w=840\u0026fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=034bebeb20cc237e2a15abba08cc41b4 840w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-02.png?w=1100\u0026fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=02342b705aee751509eb6e0465d5c1f0 1100w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-02.png?w=1650\u0026fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=21c0e9904a197062f6072b9359bd33e5 1650w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-02.png?w=2500\u0026fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=a076027e85314693ba2396dbdd6913fd 2500w`}),`\n`,_jsx(_components.p,{children:`Checkly’s browser checks can help you achieve your SLAs through:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Real User Simulation:`}),`\\xA0Checkly’s browser checks use real browsers to simulate user actions, such as clicking links, filling out forms, and navigating through web pages. This allows you to test and monitor the end-to-end user experience, ensuring that your application meets SLA requirements for functionality and user satisfaction.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Global Coverage:`}),`\\xA0By running browser checks from multiple locations worldwide, you can ensure that your web application delivers a consistent user experience across different geographical regions. This is particularly important for SLAs that specify performance standards across diverse user bases.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Performance Metrics:`}),`\\xA0Checkly provides detailed performance metrics, such as page load times, which are crucial for meeting SLAs related to website speed and responsiveness. Monitoring these metrics allows you to identify and address performance bottlenecks before they affect user satisfaction.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Visual Regression Testing:`}),`\\xA0You can use Checkly to perform\\xA0`,_jsx(_components.a,{href:`https://www.checklyhq.com/blog/visual-regression-testing-with-playwright/`,children:`visual regression testing`}),`, which ensures that your web application’s visual elements render correctly across different browsers and devices. This helps maintain a high-quality user interface, in line with SLA standards for usability and design.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Error Detection and Alerting:`}),`\\xA0Checkly alerts you in real-time if a browser check fails, enabling you to quickly identify and resolve issues such as broken links, malfunctioning features, or downtime. This rapid response capability is essential for adhering to SLAs that stipulate minimal downtime and quick issue resolution.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Customizable Check Intervals:`}),`\\xA0You can configure the frequency of your browser checks to match the criticality of different application components. For example, you might run checks on key user flows every few minutes to ensure high availability and performance, aligning with stringent SLA requirements.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Reporting and Insights:`}),`\\xA0Checkly provides comprehensive reports and dashboards that offer insights into the historical performance and reliability of your web application. These insights can be used to demonstrate compliance with SLAs during stakeholder reviews and to identify areas for improvement.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsxs(_components.em,{children:[`To find out more about Checkly’s browser checks \u0026 how to get started, check out\\xA0`,_jsx(_components.a,{href:`/detect/synthetic-monitoring/browser-checks/overview`,children:`this article`}),`.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`checkly-best-practices`,children:_jsx(_components.strong,{children:`Checkly Best Practices`})}),`\n`,_jsx(_components.p,{children:`If you’re using Checkly, here are some best practices that will help you make sure you’re doing everything you can to adhere to your SLAs.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://www.checklyhq.com/blog/how-to-monitor-all-the-nines-of-your-service-level-agreements/`,children:`Monitor your critical APIs more frequently`}),`.\\xA0To ensure that you’re always aware of the health of your critical APIs, ping them in an interval between 10s and 2min.`]}),`\n`,_jsxs(_components.li,{children:[`Use\\xA0`,_jsx(_components.a,{href:`https://www.checklyhq.com/blog/parallel-scheduling/`,children:`parallel scheduling`}),`\\xA0to detect regional outages as quickly as possible and\\xA0`,_jsx(_components.a,{href:`https://www.checklyhq.com/blog/what-is-mean-time-to-repair-mttr/`,children:`reduce your MTTR`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Use\\xA0`,_jsx(_components.a,{href:`https://www.checklyhq.com/docs/communicate/alerts/configuration#retry-strategies`,children:`smart retries`}),`–pick one of the three retry strategies we offer based on the frequency of your check runs.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`The impact of check frequency on your SLAs:`})}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-03.png?fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=f65c481f4a89c821b1b352474635565d`,alt:`a checkly dashboard`,\"data-og-width\":`1306`,width:`1306`,\"data-og-height\":`1162`,height:`1162`,\"data-path\":`images/learn/images/sla-03.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-03.png?w=280\u0026fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=734bc36463a7a8405429019a0e31ab8d 280w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-03.png?w=560\u0026fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=5396fa7f88882f23f6495cdca72ce0d0 560w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-03.png?w=840\u0026fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=7df36aa7bf5328b4dd010a2f4b261625 840w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-03.png?w=1100\u0026fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=2932fd50ee97ae1be3fb079a2957d1db 1100w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-03.png?w=1650\u0026fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=9922991a5c1153171bf7ab7fa2b3fdfb 1650w, https://mintcdn.com/checkly-422f444a/6qveEuGHBRjnnvr2/images/learn/images/sla-03.png?w=2500\u0026fit=max\u0026auto=format\u0026n=6qveEuGHBRjnnvr2\u0026q=85\u0026s=ce83c47e5f44c2d067eb6e9c0ef9ad5f 2500w`}),`\n`,_jsx(Heading,{level:`3`,id:`integrating-into-your-existing-workflow`,children:_jsx(_components.strong,{children:`Integrating Into Your Existing Workflow`})}),`\n`,_jsx(_components.p,{children:`Checkly enables you to monitor your SLAs by allowing you to monitor services closely and check how they perform worldwide in over 20 locations. You get instant alerts when there’s any issue, helping you react quickly to fix it. The platform keeps an eye on services all the time and adjusts to new needs or changes.`}),`\n`,_jsx(_components.p,{children:`Checkly integrates on-call tools like PagerDuty and Opsgenie for handling problems, and you can also set up your own connections with webhooks. This helps fix issues fast and keeps things running smoothly.`}),`\n`,_jsx(_components.p,{children:`Moreover, Checkly can integrate with your continuous integration and deployment (CI/CD) pipelines, allowing for automated checks to run as part of your development process. This ensures that any changes to your services maintain or improve compliance with SLA requirements before deployment to production.`}),`\n`,_jsx(_components.p,{children:`Checkly makes it easier for organizations to set up their monitoring in a way that meets their needs, looks after their services everywhere, and keeps their standards high by quickly dealing with any problems that come up.`}),`\n`,_jsx(Heading,{level:`2`,id:`conclusion`,children:_jsx(_components.strong,{children:`Conclusion`})}),`\n`,_jsx(_components.p,{children:`To put it simply, knowing what SLA, SLO, and SLI mean is really important for anyone working with services, whether you’re providing the service, working within a team, or you’re the customer.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`SLIs`}),`\\xA0are like measuring how well your service is doing, similar to checking your health.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`SLOs`}),`\\xA0are like your health goals, giving you something to aim for in how well your service should work.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`SLAs`}),`\\xA0make everything official, giving both the service provider and the customer clear rules and protection under the law for what the service should be like.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Think of these three terms as the basic parts you need for managing a service that’s responsible, high-quality, and always getting better.`}),`\n`,_jsx(_components.p,{children:`Whether you use them on their own or together, they help make sure you’re offering a great service and always looking to do better.`}),`\n`,_jsxs(_components.p,{children:[`Checkly can become your most valuable partner in achieving your SLIs, SLOs, and SLAs.\\xA0`,_jsx(_components.a,{href:`https://calendly.com/d/5gk-49g-f76/checkly-demo?month=2024-02`,children:`Schedule a customized demo to find out how.`})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}"])</script><script>self.__next_f.push([1,"59:[\"$\",\"$L65\",null,{\"slug\":\"learn/incidents/slo-sla-sli\",\"pageMetadata\":\"$4d:props:pageMetadata\",\"theme\":\"aspen\",\"children\":[\"$\",\"$L66\",null,{\"mdxSource\":{\"compiledSource\":\"$67\",\"frontmatter\":{},\"scope\":{\"config\":{},\"pageMetadata\":{\"title\":\"SLA vs SLO vs SLI - What’s the Difference? Comparison with examples\",\"displayTitle\":\"SLA vs SLO vs SLI - What’s the Difference?\",\"sidebarTitle\":\"SLA vs SLO vs SLI\",\"description\":\"Avoid user‑reported outages with synthetic checks, anomaly detection, smart alerting, and rich failure traces for rapid detection.\",\"date\":\"2025-04-15T00:00:00.000Z\",\"author\":\"Sara Miteva\",\"githubUser\":\"SaraMiteva\",\"displayDescription\":null,\"weight\":121,\"learn_incidents\":{\"parent\":\"Detection\"},\"href\":\"/learn/incidents/slo-sla-sli\"}}},\"mdxSourceWithNoJs\":\"$undefined\",\"displayDomain\":\"www.checklyhq.com/docs\"}]}]\n"])</script><script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"ec498eeaf978486e97df12e6f8e98ec0","spa":2}' crossorigin="anonymous"></script>
</body></html>