[{"data":1,"prerenderedAt":216},["ShallowReactive",2],{"term-c\u002Fci-testing":3,"related-c\u002Fci-testing":200},{"id":4,"title":5,"acronym":6,"body":7,"category":180,"description":181,"difficulty":182,"extension":183,"letter":184,"meta":185,"navigation":186,"path":187,"related":188,"seo":194,"sitemap":195,"stem":198,"subcategory":6,"__hash__":199},"terms\u002Fterms\u002Fc\u002Fci-testing.md","CI Testing",null,{"type":8,"value":9,"toc":174},"minimark",[10,15,19,23,26,30,163,167,170],[11,12,14],"h2",{"id":13},"eli5-the-vibe-check","ELI5 — The Vibe Check",[16,17,18],"p",{},"CI Testing is running all your tests automatically every time someone pushes code. The CI server (like GitHub Actions) runs them in the cloud, and if anything fails, it blocks the merge. It's like having a robot QA engineer that never sleeps and never lets bad code through.",[11,20,22],{"id":21},"real-talk","Real Talk",[16,24,25],{},"CI (Continuous Integration) testing automatically executes the test suite on every commit or pull request. It provides fast feedback on regressions, enforces quality gates before merging, and runs in an isolated environment. Failing CI blocks deployment until tests are green.",[11,27,29],{"id":28},"show-me-the-code","Show Me The Code",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# .github\u002Fworkflows\u002Ftest.yml\nname: Tests\non: [push, pull_request]\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - run: npm ci\n      - run: npm test -- --coverage\n","yaml","",[38,39,40,49,64,88,97,105,116,124,138,151],"code",{"__ignoreMap":36},[41,42,45],"span",{"class":43,"line":44},"line",1,[41,46,48],{"class":47},"sHwdD","# .github\u002Fworkflows\u002Ftest.yml\n",[41,50,52,56,60],{"class":43,"line":51},2,[41,53,55],{"class":54},"swJcz","name",[41,57,59],{"class":58},"sMK4o",":",[41,61,63],{"class":62},"sfazB"," Tests\n",[41,65,67,71,73,76,79,82,85],{"class":43,"line":66},3,[41,68,70],{"class":69},"sfNiH","on",[41,72,59],{"class":58},[41,74,75],{"class":58}," [",[41,77,78],{"class":62},"push",[41,80,81],{"class":58},",",[41,83,84],{"class":62}," pull_request",[41,86,87],{"class":58},"]\n",[41,89,91,94],{"class":43,"line":90},4,[41,92,93],{"class":54},"jobs",[41,95,96],{"class":58},":\n",[41,98,100,103],{"class":43,"line":99},5,[41,101,102],{"class":54},"  test",[41,104,96],{"class":58},[41,106,108,111,113],{"class":43,"line":107},6,[41,109,110],{"class":54},"    runs-on",[41,112,59],{"class":58},[41,114,115],{"class":62}," ubuntu-latest\n",[41,117,119,122],{"class":43,"line":118},7,[41,120,121],{"class":54},"    steps",[41,123,96],{"class":58},[41,125,127,130,133,135],{"class":43,"line":126},8,[41,128,129],{"class":58},"      -",[41,131,132],{"class":54}," uses",[41,134,59],{"class":58},[41,136,137],{"class":62}," actions\u002Fcheckout@v4\n",[41,139,141,143,146,148],{"class":43,"line":140},9,[41,142,129],{"class":58},[41,144,145],{"class":54}," run",[41,147,59],{"class":58},[41,149,150],{"class":62}," npm ci\n",[41,152,154,156,158,160],{"class":43,"line":153},10,[41,155,129],{"class":58},[41,157,145],{"class":54},[41,159,59],{"class":58},[41,161,162],{"class":62}," npm test -- --coverage\n",[11,164,166],{"id":165},"when-youll-hear-this","When You'll Hear This",[16,168,169],{},"\"CI testing caught a regression before it hit production.\" \u002F \"Don't disable CI tests just because they're slow — fix them.\"",[171,172,173],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":36,"searchDepth":51,"depth":51,"links":175},[176,177,178,179],{"id":13,"depth":51,"text":14},{"id":21,"depth":51,"text":22},{"id":28,"depth":51,"text":29},{"id":165,"depth":51,"text":166},"testing","CI Testing is running all your tests automatically every time someone pushes code.","beginner","md","c",{},true,"\u002Fterms\u002Fc\u002Fci-testing",[189,190,191,192,193],"Coverage","Test Runner","Regression Test","Test Environment","Smoke Test",{"title":5,"description":181},{"changefreq":196,"priority":197},"weekly",0.7,"terms\u002Fc\u002Fci-testing","O5XNLSOjsmmrOtlbefjieZ48GPOb6Cao6b25DeTU7jQ",[201,204,207,210,213],{"title":189,"path":202,"acronym":6,"category":180,"difficulty":182,"description":203},"\u002Fterms\u002Fc\u002Fcoverage","Coverage tells you what percentage of your code is actually tested. 80% coverage means 80% of your lines are touched by at least one test.",{"title":191,"path":205,"acronym":6,"category":180,"difficulty":182,"description":206},"\u002Fterms\u002Fr\u002Fregression-test","A regression test is a test you write AFTER fixing a bug, to make sure that bug never comes back.",{"title":193,"path":208,"acronym":6,"category":180,"difficulty":182,"description":209},"\u002Fterms\u002Fs\u002Fsmoke-test","A smoke test is the most basic sanity check: does the app even start? Does it not immediately crash?",{"title":192,"path":211,"acronym":6,"category":180,"difficulty":182,"description":212},"\u002Fterms\u002Ft\u002Ftest-environment","A test environment is a separate version of your app just for running tests.",{"title":190,"path":214,"acronym":6,"category":180,"difficulty":182,"description":215},"\u002Fterms\u002Ft\u002Ftest-runner","A test runner is the thing that actually runs your tests and tells you which ones passed and which ones failed.",1776518262395]