From 594c593a0fd2667e6cd2adbea1744a9e2cab7fe6 Mon Sep 17 00:00:00 2001 From: Ryan Brooks Date: Mon, 20 Apr 2026 17:57:59 -0700 Subject: [PATCH 1/7] Add selective testing docs --- .../backend/testing/selective-testing.mdx | 54 ++++++++++++++++++ develop-docs/img/selectiveTestOverride.png | Bin 0 -> 10414 bytes 2 files changed, 54 insertions(+) create mode 100644 develop-docs/backend/testing/selective-testing.mdx create mode 100644 develop-docs/img/selectiveTestOverride.png diff --git a/develop-docs/backend/testing/selective-testing.mdx b/develop-docs/backend/testing/selective-testing.mdx new file mode 100644 index 00000000000000..9dbaeea4499389 --- /dev/null +++ b/develop-docs/backend/testing/selective-testing.mdx @@ -0,0 +1,54 @@ +# Selective testing + +Sentry's backend has a large test suite that takes a very long time to run. To mitigate long runtimes as part of a PR workflow, we employ a selective testing strategy. + +## How it works + +Selective testing uses code coverage data and direct import analysis to choose what tests to run based on what files changed in a PR. + +- Code coverage shows which tests execute specific source code. +- Direct import analysis catches tests that import changed files, covering gaps in code coverage. + +# Using selective tests + +## Locally (Sentry employees only) + +Both `sentry` and `getsentry` have a `make test-selective` make command that will leverage the same mechanisms to run only the tests you need locally. Try it out! + +You'll need the GCloud CLI authenticated with your `@sentry.io` Google workspace account to access the coverage data. + +## In CI + +Selective testing will automatically run for any PR created in the `sentry`/`getsentry` repos. + +`master` will always run the full testing suite. + +### Opting-out in CI + +Have a paritcularly sensitive PR you want to run all tests on? Add the “Trigger: Override Selective Testing” label and your PR will run all tests. + +Selective Test Override Label Example + +There are a few key exceptions that will always run a full testing suite: + +- DB Migrations +- Changes to specific options and configuration areas of `sentry` +- Notable “core” files + +## Limitations + +### Code coverage holes + +The main limitation of selective testing is code coverage gaps. Code coverage is not perfect and can miss some spots. One example when a method in a base class is used, the implementing class might not be marked as executed. Take this example: + +```bash +# my-model.py +class MyModel + +# Usage in another file +MyModel.dict() +``` + +While you might think `MyModel` would be marked as executed by the `MyModel.dict()` call, `dict()` is a function on `BaseModel` in pydantic, so code coverage sees this as `BaseModel` being used, not `MyModel`. This means if I changed `MyModel`, selective testing might miss usages of `MyModel.dict()` and therefore could miss breaking tests. + +The workaround here is simple - also run tests that directly import any changed file. \ No newline at end of file diff --git a/develop-docs/img/selectiveTestOverride.png b/develop-docs/img/selectiveTestOverride.png new file mode 100644 index 0000000000000000000000000000000000000000..a40dd7c4235496a4357e146213058f1cc8a1f2e2 GIT binary patch literal 10414 zcmbVyWmp`|()KQk%i_MU1PxAbcMldE5;Q=9ySoGl5ZpbuLvXj?4#9%EyZc9;^Bj5K z>wJIS*=we2s_(n1Yr1--XQxAy6r|9QiI4#R0Gf=nxH13$RDF>p5n*1Akfi&bmjY<7 zEF}sk8-eV;oCFwa%9zN@1L$64L;xHR3jq29dHDf=L;$$IWB@=GNc=BZ8Tk5d%!|z+ zQvmGW810wx&nEq{zp(!G-h(KwE4pV@VoH7h?d3<24pUl7FPDWE&}9# zA$VWpKWb)jvcDh><^trJ@=9c4)^^5ZoJ=fCEaZa7WMpLgc19+=%HooL(_hX6$Ui$c z*zhtlJ3BiwIkPcY+kIkw!^6YF%)-jd%F6hHV6=C&axidVw6dr8hmn8U5jVE~XlH8U zU}|ke_Q$S)p|zuf06F;|NB`RX(M|_blYe`%vj01*mjIdn)G)tcVqyMoG-DUj{}1g? z%|B>=#q|$&{C|w`YAPGsTU$8(X_g=tEB{{}{)h74?fVBo>%S5HQ~AFMigu>PFPG#m z4{!c<@SnQ>jsLfOH7ipG!GE^tf2se2^(Q)BB~uq;3oUU|OJghhzhYtGXa27h|COlu zZz3D}|6u+{&EHIZ=0Dx{AKm$nT=`4;k}QJA{LKGKJVE4MdzyCu02M?=Ttw9cc<71X zg4=rRA_SaW zPx#_5;{5>`{a-+fU537tGG@H&(MG#q1#n1Jx1nUskt!yOAIJ|R3l{d2!;>iYqrlbfwv9bpt&`iqA~dc5G@#+yBv?dPP-sR> zN=kGxGBySgUe8y`UsB((8Peh$l}od~TQz#>rhzDob`Vqg@F5tG&!fPyiL9(wAb3<^ zQ%y|*x%R-z{g{}Tcd;ytz+_xJysyfXyyMK5Vjem8Xi}&|8~ghyP7I|2-G}x);UqJ^ ze#P2u%0|dZy7QAu*<{w)k_meKzSuu>ao#z3MS7_CR@&!0sK?MEB= zZuR!|Qqa)znY+Pk!I<56i$4WFSN-^5Z*Pa=>qt+kP2y7AtibF;w28Qdjg6gkyGuxT zdwq0?jsk@HjGoJ_n9Po3B9lM03Kn;{A!{%HaB67N=9MrxNk33bt&qs#)#+kPp~&p< zySJB*gM)*MhKrioWMQ@v&whSP7>Rkp57d$bI@u%Uvhw+U`o;6}Qxt_%Bq#&jGH8SX z(!Kx%WOy}JVoN#>o}1SocA73?1XpzWusr!N)jYT-g4sL3pKGX=TN zb3ZokF89R(B^lkW<}fJ?k&(aNU7Rv8(egU+qfM{k7weI5*bRlO(`?QK6c-c6w&XQh z&DWA>7PQl4O3r^Q{v|^r5w+4D5dl)-Dmm}cBgZ7dLjJ<_eu$@m2ZR6?|8%Pj82#n6 za@UmmV8TXy6#y_}Hm#l&@G12ExzZ6KaFy7SmPUwuJKf}Pw9t?}Zf3pQ8cx^R>g9QV zCDFM&dW>JJ(dE}3=Hlu~E+rTp9gQdWcoC!cgwyt8BD&4;x2lSmfe@K7K@`Tz=!@j3 z@VG^h&d*)+`C0okvzp*BG)dsFmH z&c`B-nFj6=`XZV07foJ|zu#Mz`gRiud3pS7KbfmCv0Sc{|Lm2Lg_Yn3N(GIbMvg`P zqL9j@ILQmXT1~kn5j;5QqH51HCKh^hxcy$4%j;b9a8$VR%6VhlLbxOuyKly3AjEDRQ_26;q}H__o_cHBBoE{Rp>O=U%< zFe|a612+0AUkOI7l`9&>WY`sY!i4e!l zZ9e`)2mPgH*HNJ+L^auC{CtQ4XNo-XaGiEMxRLA!9D*A@g53|Rd{V)e8>TL&s zviXoeAS|>j1~u&#i%XzEAGu$aM&Hu*IaxOw%b1un_t*$hNaYIqa9@%}$p+9$BI`gy z|LJ8cWEo`D9|qa1v|KN(k6xidFpxQhYAs=vewoXdk))=+FXL4ZIW*9p<%ifiZk5wQ zBIT$-tW-akD!{5g4ZSs2c-5jBI5e&;^%<3+Z~m%8uw@T_L?8^I$m>&70cadmx6kNEncvE2yO?r92SxWS(^=3B=s@O;0|9>+sylkDT->CdNhQ9 zZR;)!TUze1_uOM2N0(K45b2jxz9G4c0G|vAS`9v&Y}~K3Uza^BBaFj*vR?5~x<7W0 zZBvZ5Seng6S%-gM}^)i}?=cDIVN zODqBib~p%AAN~GOzmXB~v8@MaaW!pL<3a!{+HFPsvH0ehgUH+B;^M>Y6kU}O(!mUV z`HqvL;}qZS@ImFP#65&F$)Q_lA70d4AZRvfV6nBbu%W22C?_XpM;9nA3;S$IaEZa} zUeS`!d({dAu44KR(d|Ax-e+c4W?_yKEj3CgUOU)SXW&#r$FEo*Nm$BA*+bULC8)Ii z{XDD{A1Jr0gG?3uQ5UGkTg$N8eyAob!^>W58N2L@Z`s6r{VV(0H#SS4p;g5 zR}tqx`gF}rn0yoW7rXv}A3mg7FAg!#GGI|>o{!&7=jyx`+R|BYOfePB>nv{aczhff z7&y^nV%>QoIG?3HDdxfgG(yxC3J+?uED^gW%YutSd-Yr#pxRlzQMc4Tgs7B6@LIZ4 zWw_5*{~bI!4G+IMoihlCx(!D2RoJIBi;l@C zmw+hT$Zpsu)^v5GJ3Am;D=QlxdBhA1!OAWLn415+y!Cr7ZB(K(FjTsIUK8LiN~l&G zSRm*7zVl>tkr9$AwdC>>*|3(DVqe6zk#?rq>??Kxq(e5{LDXy{4^jc?T z{RaTjk`0V&uOTcu0u7U^`i4*ScZ={WIH91((M+j4JT)2JSG{B8otC9vg!-hKIQI&X zSl~ashZ@`9jPD^XdCMy5y!tXq`~5@&!Ohq1r4vlzLP#lH8s!DP19@d(v0|s_eq04> z_t*%}x?~ohk#8smrfW+;ZxWS_wWp&l<7X@iC*WzrP_1Ea$>8II38_T;rK{CxzV48{ zHiy&oW8?TRqok*{bT47H&FmvOnpl~ zqT3nK0P^m)JjfDGZ?PnV=SzOvz#|lpI7EZ_uwHRGDCsC8-gV%fLt8`=J+d$Jo5hJv zgo8ocQ7q=FA8EctqzIyU>E;2E6!kI!wAe^eAzJh&x6N2noe?$CrDwV+swSTlo!eGg zsW}=%Q64DowUW9t10ZSskJU*?o)4ZwbOD{sHF!gi!Wy;`APEy8;~A zQIN${Ebk|_V?o^=I16fGH<-=GD0*8;aRI(+&4c_YFCwB~$PxznX%((ALWAZ25BcdK z_t>Q$6dt~OosgaTdr32DR0{Zb$)JOHVdx&(j9ytmLgZ1OUzWGESaVFqu#!YT=@B`) zJo>!VjhYU!n0^!Z@uTb)kMv3PdW%~?WT???q`9q74^XLS+BClO17?_Fa{HikQD9>a z+P)wyJ*_b{JX5gBxZRc^<@z?9cn(Z7*8m%hLh{DiL29Z8q5!M{j))>WI3$su@n~Rk zkSe@e7CG+o>N$gn%ChexKC{kVjKP-)Dhn#?+oZQdIg2N0;xJL@9Uh#-vh1)$P*Im!Br<13q9sEyzcx*%rN59yg3=Xw#1x5;9pF@7p)#vVEZ#>7$RiRTK2DM-8RBDx<2Ec{Rb8~k1_RipVkx3?77q4eQ1 z!2JI5@)F0*^q1ydOpx32lBd#BU*b;W*qC*6n^l>4L0MT~I2T3OMpU|F%ht8|5PS?t zbFm~Ev@=M{4|DtnSA-~NKHD&1oTa%5#OSB$a$o(N1cGv>$6z2|_nrO+9WP+TaJUT}m|!jaxuo>G#oA zS>bcLD?jn2*TcT1oW6GxLC~jhh1@SGxuy}?#(u`)2mUh&?f5D!lsE#o^aVUlw(<(mUnDrH1|XC(4g8m@#Bz9mFxaj&djc;=B?Z z6)*)TPMzcS-C~#?W&NL}f7e0f2yg@_JyzPw+Y~sbxu(_Cvf=u{s#s}bGGPcSrdEE> zB{BNU(Sp7}5P6rt$W2^q+;V+X!#5F0-Jbf~JKstIX19^2| z00w&V0$NnOx4v+H3(N?)t=DVF%T#*3j1<3vQ$Ah5k%)ZlXdkqx*k%(IpqcGuIyE?A zRmRJg))cxwZ{7B|zx?37bxG`AdwhX@;_Wr3+*15j%u~!&q9Gz-o6meEnPFmdi$=0H z%m;RjO_xIICqy6s9V3sok+-edEH1w;VO*cv{_K~A-V=&Q@9&ytEhXhJ0wwywC9m^R zEqfDuT>SiumY)TNPeTf!$5{CBI99)J3Keo&T`x@}bcRzK?0b89zRPxo5kfty%WjSY z5+mxK&kyNm$}HzwJ-3Dk*J%_g>gvi%3KmZKX&mFG*i1%~Ssc#}OG^4qMD!s1J0;Gk z?2gE-;uxf)Pv!my+1~@*xSJk!6}?3*!qV>$;E7b@-_L1{IT29Xn4UxiyPjj~eE2{_ zL?pD_a^Ev$oV!hfy|Q+T;;1&oLLe51>S`zQy{gLIQpa*) z$&-t<4CW#PF65>!TA{Sq`txkHZFX^x)Ee8lL14P4*LbNp7ufUia!;+i9aX0_`gH5} zb00Iq4nD!k=VPVFjOXh%OS2;D6LjPc)fSbZ#pXJemX5Bu5eZy5Fbiu2aJGQF0Sj8% zCiGW01Eb=PS!qVpLIe~6=-QimN0L_1`1B@y__s_%w&hVU-rV$|{iycfU1x{!CRcY( zqVVmJwB9BGM+GORBe$ELP3D$NXJ`S)Bj-x6ZuU!Gl99K7)0Nrhtq9IOvY9~>AM(FU&ie)Y4FrghO$ z)|IHELD&(uFYLFo_JVa+gB75Bz-|;YGy(ThKdpRHHrrH@kEDWb0X-rKUIG-XCOaFu zDucxX5qTuGS9UtLg9(h<{o`{Y#`#B3JddNbhJypXOa%Flq`>*un1t<(jg6Hxi%13` zy~cXQWnm98xIGd~kwZU98m{g91cvAXj(#cS@MuCW-Q%O4HQNPbpm$Eund~!QIYIA! z^QOLEGd#$@MNi!i5C3K2vRNSDvB5$foFVWWRuvQ)Fow7&yi=-D>ai(-4jow2W>WHr5#<^O3Y-F9{2cHj&dbznSOs><$&yOG=94p#gN z6`aT`&o{8cW|NUS1&uwwsm0b&iuIiK*F&sd`({+CP>Y9u?Xd&smA3bpvE&3>tOQUY z`?IWo%kEyXztHh_Y_^mf5pE+qhy(+R-(z8CsQDnrUvK5GWRyW$RaH6Fl@0r3rpzc+ z&|dj4Q*GY-faFjvx?jN>ibd+Sz7@Xk&{V)}GVs%+)U5yOW|@`M_DBYEana9}y;Mlw za7BHX<^WcEpzy$OS6Y7>w*WiXA?u-;grSaH-*$Dd zV9c5Hif==VfAR2AAzvY_Q;K`0^u30j20~C^76}nsr#`3mO+Nbd!BUmyJSXYT-+Vls z9v_CAZI2GLnunm4-yl3#5{bx$Ye75@S>@;kB!;6$i}Re;@00`jFcP}EyE6ksl}h$H ztP_XQ)6;8eYSd~tR--VL#@~JHAz<8kxetBwGJ+Vs%xUY=+iZYkNSt7K5a7qvxD?d) z$^H5$OXp$Q^Wn{chS!o#z}RP)*lUzSy?1Ig29NM#HZdW5Ve1vEUE_0$_t&~|ZPo6h zq`?OjSz_-<5ZZ7XPuCqcuaB?MP*d65N0RH7w3{zn`*_V>)jxVH3;z0DX^zj0&13P} zYR*>0e0v38WwcQ5w0Dqn$mh&@C&kOnSKru_D&TB#yd;oOq8Ehzz0+syK6reF`Jk>PJU5KN#9t`c*m8ZGD&n>UAQbrlxkc>A>W=!CAX+Gd7UKx>zs_Jg|vHi-IkPq^`lf3b^v9Pnx2(>Fk3dBgsT%diM}*NOAxe4Zas2v6%0XJ?o%X(-xtLhr% zYX>b;)Pk-dM=Jw!1ggJLLqYC*=iiP5GI~mKDIpMKF%Ywqk z^ZVygXNR8y9~LeGD*A#eu}ODlga}qf`On!e!so}vGQH~9to^Vuw<$Xy;^-kT<*VtB z%^vsHC>?7WUb?N*IkhVLt-qZybc7RZ;WG+}G(~%obsIg-?;QQRxv8DPtc9Ur5W#v3 zEJ)b*EV1m5f#MWqpqw^mXi+E?;FmaIyfy~A%~UsCN=^@ceAM$r=a)WMw=g>!rRBvY zC;3!v%=7Hv<;T2+N?OyI^sqrfC5@GzLF+emaAI)yBA+X5GP5qRkIz zXu|5Q=FtT9)3QW13s8o%?+QDr<{DV^uT!l(=^&q zIQ1anU?r@!lj4N&R-#YvWZ~y^+i9@>VS(J4ii;eXl;CFtX<00FtKd z&U#4D%F23u+N%%#mY*xaz8Y`{1M+^p=TbsZF`gxqHrR-iE&%csP&{OA$-tK;-1u8# zkzv5mxo|**_Q2on>q|4$+n#%`E1dxHwPIAk91Ms%@xRKL$`qMA=ngf1AEwkPkn%a+ zTOHB2X`ppaTJo@i&o}GAYgpgHI<>oTIt~mQn5wSK$WdVUL#=MPUvej)4dX7Xi(2Y?nrVBQ>W~mJ@i?e9MG8T|6TbCD%e~12 zeWnoq>Vx?Ja!rkp-Z0(I;w0bG2EhmgQ$N1||kX64sL$>nA>HOeck_Eo!!A zgaBrKqup|^>-Pa;y1GYl4pWyLHJU5k`BFBaBg5U7l?@SVeBOMuM;q$!iCJGycFP~; z%aKt~uDxozh-k={OGbu=y?9^4cH~L_lEhVGu&73 zx;#l^ZfH|>uOh^JcPK(crd;R?m98uoJGgfinFJeYJr*I(#Fx<;s{d0YO&Nj zH@3iS@-Vxw=5Y`Zn(^{(`?IiQ;o$DK_H1%M5>l^XTEHQwMv1h7{&1&~3ez9-ctNX2 zBNlTyp0l;JbyH7!9U9ucDh2htknD-mNvZ2!!Y$cC@DZW(nqksQ5@a*jMS062Ku9FO z;B-*Gm|=N(dK!|!ajq8>Gdanu0D%^d&x**K(+}Fl2ssVhbe>@ykdVdrje#*yL}7lD z8t^fgsi@eGw}?u2mrp-T_m5)^iqTP22{?4YhO>5!_%WAUjUU3>@~eVbo}9j5mi5mB z)xJLm!MuV>i|u4>Lok_SJ|va{P$zDJ%Uc47Rf*&-D@_8+ofeus_Z1Yt&M3}Si-C~s z<)#@6_Ji3L6g7QJmc5keXS8|M4DYQ58mRY=*1V_oB~bG#dM`!@0;G9 zw$1I0Aow7r4;28I->UDg$1|P{Evy3hBo|)y7h3(@fzlA6Xs7eNnyB$EjZ&94 zugO++R&f?${myJ`Y3|;@>9?$x0zjj%?OScn*@bzwq6ZZACc|_s8adr`xj99RdRN91 zKqz`S?qGbjqlJ7Ms$v0mt<~bU2nZE5HIq(rPPz3;Hyi#BtA!#udZBve{+Y%7ZsS3k zaCg|6GQC#A2=0Vom=y`G()mmdt@sCz@#fz2g5t9IHfJHt>ZkQf6MxsI=3ABgo^^$r z4u3sA{-3glx_RB*;o*e2Y{k`*%Dk`jmkt^F^+gjZVZJs74_4e|zNxk0HeCkR(j!!B zUt%vtN#RkG=-kuozGZekjvLfa2u`!%J0F=EoKeW&_a|I9*sb!qwk~htZ9JNfz-xhA9#tZ7V&)^32)EL6*-c%t=&x+@8Gqmd`fRd=tS9l}G)+hM7oj zoFiq}@SOE(_Y&*0RmE%Y_@>(~h5=mx> zqMH5wl&3O=dc}#lG3?O)`FvOCht*;p5(Owry*gRMAAZ%oJXb=36WOx<=kjrnFF0=5 z?BLdBQjqQK%?hHBP}@S2b1B6~^I7Ul^{jV0AhLo;liliTjm-jQ(adk7j@!$OO0TP^ zSYEeJPEv4j)n&DYgo5$GOE4F(NO1h4wdt<=^-AimT&V4XT@2I_19MLjRA@s>815|3 zfc@x%6Y&O*gScT|_;$$VSw?Z1!b=8g5CgmCV?kt+q@^;QDR!1w93phFGT%d|gDhBu z8C9b+s+A4Z8JBPT zXkp1$pi8gt`{X0DfA&(AUYi#h8d`nj*Kw(QY3(sQ{p#eE6*2}zL$}vWp5L^rf@3I0 zmi<7B%3fi-%>pyt{7e2f(4Yl^LOdiQ4QMcF3>x*DF^)}fX zRP=|gf|MnQIg7e;!x75(hr7QG5(?S7NcySGx_(p3X0Z?am8qHa5T;$^OHF3PN=jx; zl?gksYLE?litHYcs{^8$8K({msBeDK3VXGI+kxprp?HK3Awi#sb8MIxNEN}%cc&Hw+42R05pThm&lK67MR+^q1?kp5s9Ad!r6#5Mg#L_(|Hdb z4i&=Ee9@LYU!({XMwq<3o+RLI>ng+j7(`L*IxRTFWs4*lKS6esZs)UC@$i|?3AkUU zdYd#Mj%u^ub`qR-Sn0h@nxrC_fme;f9@u+EpZI{(AnQ>+?AZU6v}OsjiFe=_(+<3V z)bSby72ijJU{(fmCtzxwAT{l>g1SBekXmPD6mK{mt#oPqMt`wj0<^h3TaSc@h}>Be z*OX6lrDF@Vy2MK3oC^V*x&;TiV$jj>c3*>-4x(`d_TEb!?7eQ2>f^DYfu)aoey=Zy zt3We?$dW>oLRU8hO*;H_P}#nxuPhYO0g4lkGE zvW~*ZF?N|^15%IeSBTi_oET8|J*EkP`lIMMk9k|ZeMH=H;|XYV^k}nv>3wf2F|5-r zL|=@Xh-VzFL`XW4Nozb?*YRiBw=?&ERFJc%4UNR2MS(!tp?zbBtdC;`sG{MokC{8+ xFDrzWiKTQdv}^!>77P9SzbqE|*RrE0d^ql*s1jd%^goOCWF!>C%S844{vZF97I^>w literal 0 HcmV?d00001 From 07a29285b824e66e774254d4d9f1004f24e2875f Mon Sep 17 00:00:00 2001 From: Ryan Brooks Date: Mon, 20 Apr 2026 18:11:21 -0700 Subject: [PATCH 2/7] Fix image --- develop-docs/backend/testing/selective-testing.mdx | 2 +- .../selective-testing-override-label.png | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename develop-docs/img/selectiveTestOverride.png => public/selective-testing/selective-testing-override-label.png (100%) diff --git a/develop-docs/backend/testing/selective-testing.mdx b/develop-docs/backend/testing/selective-testing.mdx index 9dbaeea4499389..9b090788471769 100644 --- a/develop-docs/backend/testing/selective-testing.mdx +++ b/develop-docs/backend/testing/selective-testing.mdx @@ -27,7 +27,7 @@ Selective testing will automatically run for any PR created in the `sentry`/`get Have a paritcularly sensitive PR you want to run all tests on? Add the “Trigger: Override Selective Testing” label and your PR will run all tests. -Selective Test Override Label Example +Selective testing override There are a few key exceptions that will always run a full testing suite: diff --git a/develop-docs/img/selectiveTestOverride.png b/public/selective-testing/selective-testing-override-label.png similarity index 100% rename from develop-docs/img/selectiveTestOverride.png rename to public/selective-testing/selective-testing-override-label.png From b1639511d543505ef3311d1c0fd154dabe8cf446 Mon Sep 17 00:00:00 2001 From: Ryan Brooks Date: Mon, 20 Apr 2026 18:25:37 -0700 Subject: [PATCH 3/7] Index --- develop-docs/backend/testing/index.tsx | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 develop-docs/backend/testing/index.tsx diff --git a/develop-docs/backend/testing/index.tsx b/develop-docs/backend/testing/index.tsx new file mode 100644 index 00000000000000..7a044253495ec9 --- /dev/null +++ b/develop-docs/backend/testing/index.tsx @@ -0,0 +1,6 @@ +--- + title: Testing +sidebar_order: 70 +--- + + Guides for testing backend code at Sentry. From d44e9545165c74db977a8593d94d8efe14782ad5 Mon Sep 17 00:00:00 2001 From: Ryan Brooks Date: Mon, 20 Apr 2026 18:36:12 -0700 Subject: [PATCH 4/7] Fix --- develop-docs/backend/testing/{index.tsx => index.msx} | 0 tsconfig.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename develop-docs/backend/testing/{index.tsx => index.msx} (100%) diff --git a/develop-docs/backend/testing/index.tsx b/develop-docs/backend/testing/index.msx similarity index 100% rename from develop-docs/backend/testing/index.tsx rename to develop-docs/backend/testing/index.msx diff --git a/tsconfig.json b/tsconfig.json index 29aa1222c67e15..12383fc5e247b6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -80,5 +80,5 @@ "**/*.tsx", "next-env.d.ts", ".next/types/**/*.ts" - ] +, "develop-docs/backend/testing/index.msx" ] } From 4f7f1451a42129447daecfa6839b5c2bfa9c638d Mon Sep 17 00:00:00 2001 From: Ryan Brooks Date: Mon, 20 Apr 2026 19:10:35 -0700 Subject: [PATCH 5/7] Remove accidental msx --- develop-docs/backend/testing/index.mdx | 6 ++++++ develop-docs/backend/testing/index.msx | 6 ------ tsconfig.json | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 develop-docs/backend/testing/index.mdx delete mode 100644 develop-docs/backend/testing/index.msx diff --git a/develop-docs/backend/testing/index.mdx b/develop-docs/backend/testing/index.mdx new file mode 100644 index 00000000000000..9d1f633ea9c096 --- /dev/null +++ b/develop-docs/backend/testing/index.mdx @@ -0,0 +1,6 @@ +--- +title: Testing +sidebar_order: 70 +--- + +Guides for testing backend code at Sentry. diff --git a/develop-docs/backend/testing/index.msx b/develop-docs/backend/testing/index.msx deleted file mode 100644 index 7a044253495ec9..00000000000000 --- a/develop-docs/backend/testing/index.msx +++ /dev/null @@ -1,6 +0,0 @@ ---- - title: Testing -sidebar_order: 70 ---- - - Guides for testing backend code at Sentry. diff --git a/tsconfig.json b/tsconfig.json index 12383fc5e247b6..dccdafc56a0a74 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -80,5 +80,5 @@ "**/*.tsx", "next-env.d.ts", ".next/types/**/*.ts" -, "develop-docs/backend/testing/index.msx" ] -} + ] +} \ No newline at end of file From 3b413812f5691df663aa460445f12b55ca43383b Mon Sep 17 00:00:00 2001 From: Ryan Brooks Date: Mon, 20 Apr 2026 22:06:18 -0700 Subject: [PATCH 6/7] Fix title --- develop-docs/backend/testing/selective-testing.mdx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/develop-docs/backend/testing/selective-testing.mdx b/develop-docs/backend/testing/selective-testing.mdx index 9b090788471769..32c6f0cc5d1378 100644 --- a/develop-docs/backend/testing/selective-testing.mdx +++ b/develop-docs/backend/testing/selective-testing.mdx @@ -1,3 +1,7 @@ +--- +title: Selective Testing +--- + # Selective testing Sentry's backend has a large test suite that takes a very long time to run. To mitigate long runtimes as part of a PR workflow, we employ a selective testing strategy. From 913f43ac3fcb580e172d74dc71145f72879d131b Mon Sep 17 00:00:00 2001 From: Ryan Brooks Date: Tue, 21 Apr 2026 08:16:17 -0700 Subject: [PATCH 7/7] Typo --- develop-docs/backend/testing/selective-testing.mdx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/develop-docs/backend/testing/selective-testing.mdx b/develop-docs/backend/testing/selective-testing.mdx index 32c6f0cc5d1378..8b867a76d61beb 100644 --- a/develop-docs/backend/testing/selective-testing.mdx +++ b/develop-docs/backend/testing/selective-testing.mdx @@ -2,8 +2,6 @@ title: Selective Testing --- -# Selective testing - Sentry's backend has a large test suite that takes a very long time to run. To mitigate long runtimes as part of a PR workflow, we employ a selective testing strategy. ## How it works @@ -29,7 +27,7 @@ Selective testing will automatically run for any PR created in the `sentry`/`get ### Opting-out in CI -Have a paritcularly sensitive PR you want to run all tests on? Add the “Trigger: Override Selective Testing” label and your PR will run all tests. +Have a particularly sensitive PR you want to run all tests on? Add the “Trigger: Override Selective Testing” label and your PR will run all tests. Selective testing override