Skip to content

testCasePaddingLines

Enforces padding around test blocks.

✅ This rule is included in the vitest preset.

Blank lines around test() and it() blocks make individual cases read like separate units. That spacing is especially helpful in suites with many neighboring cases, focused tests, or skipped tests.

AEimpo53 { it, test <} sp ansty="le--0:#C792EA;--1:#8844">AEfr5<3 sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Dvite1<1"sp ansty="le--0:#D6DEEB;--1:#403F">5<3;d ivclassNa="meec-li">dAEconsB0firAE <= sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Db1<1"sp ansty="le--0:#D6DEEB;--1:#403F">5<3;d ivclassNa="meec-li">AEconsB0secoAE <= sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Db1<1"sp ansty="le--0:#D6DEEB;--1:#403F">5<3;d ivclassNa="meec-li">B053(first<, sp ansty="le--0:#D9F5DD;--1:#1111">11<()sp ansty="le--0:#D6DEEB;--1:#403F">5<3 sp ansty="le--0:#C792EA;--1:#8844">AE<=>sp ansty="le--0:#D6DEEB;--1:#403F">53sp>< {d ivclassNa="meec-li">nt< sp ansty="le--0:#919F9F;--1:#5D63">76// .<..d ivclassNa="meec-li">53}<);d ivclassNa="meec-li">53AB0on53(second<, sp ansty="le--0:#D9F5DD;--1:#1111">11<()sp ansty="le--0:#D6DEEB;--1:#403F">5<3 sp ansty="le--0:#C792EA;--1:#8844">AE<=>sp ansty="le--0:#D6DEEB;--1:#403F">53sp>< {d ivclassNa="meec-li">nt< sp ansty="le--0:#919F9F;--1:#5D63">76// .<..d ivclassNa="meec-li">53}<);d ivclassNa="meec-li">B0te5<3(sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Dthi1<1"sp ansty="le--0:#D6DEEB;--1:#403F">53<, sp ansty="le--0:#D9F5DD;--1:#1111">11<()sp ansty="le--0:#D6DEEB;--1:#403F">5<3 sp ansty="le--0:#C792EA;--1:#8844">AE<=>sp ansty="le--0:#D6DEEB;--1:#403F">53sp>< {d ivclassNa="meec-li">nt< sp ansty="le--0:#919F9F;--1:#5D63">76// .<..d ivclassNa="meec-li">53}<);d ivclassNa="meec-li">B0te5<3(sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Dfour1<1"sp ansty="le--0:#D6DEEB;--1:#403F">53<, sp ansty="le--0:#D9F5DD;--1:#1111">11<()sp ansty="le--0:#D6DEEB;--1:#403F">5<3 sp ansty="le--0:#C792EA;--1:#8844">AE<=>sp ansty="le--0:#D6DEEB;--1:#403F">53sp>< {d ivclassNa="meec-li">nt< sp ansty="le--0:#919F9F;--1:#5D63">76// .<..d ivclassNa="meec-li">53}<);d ivclassNa="meco"><);d>AEimpo53 { describe, expect, it, test <} sp ansty="le--0:#C792EA;--1:#8844">AEfr5<3 sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Dvite1<1"sp ansty="le--0:#D6DEEB;--1:#403F">5<3;d ivclassNa="meec-li">dB0descri5<3(sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Dnest1<1"sp ansty="le--0:#D6DEEB;--1:#403F">53<, sp ansty="le--0:#D9F5DD;--1:#1111">11<()sp ansty="le--0:#D6DEEB;--1:#403F">5<3 sp ansty="le--0:#C792EA;--1:#8844">AE<=>sp ansty="le--0:#D6DEEB;--1:#403F">53sp>< {d ivclassNa="meec-li">nt< sp ansty="le--0:#C792EA;--1:#8844">AEconsB0thiAE <= sp ansty="le--0:#F78C6C;--1:#AA09">821<23sp ansty="le--0:#D6DEEB;--1:#403F">5<3;d ivclassNa="meec-li">nt< sp ansty="le--0:#82AAFF;--1:#3B61">B0te5<3(sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Do1<1"sp ansty="le--0:#D6DEEB;--1:#403F">53<, sp ansty="le--0:#D9F5DD;--1:#1111">11<()sp ansty="le--0:#D6DEEB;--1:#403F">5<3 sp ansty="le--0:#C792EA;--1:#8844">AE<=>sp ansty="le--0:#D6DEEB;--1:#403F">53sp>< {d ivclassNa="meec-li">nt < sp ansty="le--0:#82AAFF;--1:#3B61">B0expe53(thinAB0to5<3(sp ansty="le--0:#F78C6C;--1:#AA09">821<23sp ansty="le--0:#D6DEEB;--1:#403F">53<);d ivclassNa="meec-li">53< sp ansty="le--0:#D6DEEB;--1:#403F">53}<);d ivclassNa="meec-li">nt< sp ansty="le--0:#919F9F;--1:#5D63">76// With a comment< sp ansty="le--0:#82AAFF;--1:#3B61">B05<3(sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Dt1<1"sp ansty="le--0:#D6DEEB;--1:#403F">53<, sp ansty="le--0:#D9F5DD;--1:#1111">11<()sp ansty="le--0:#D6DEEB;--1:#403F">5<3 sp ansty="le--0:#C792EA;--1:#8844">AE<=>sp ansty="le--0:#D6DEEB;--1:#403F">53sp>< {d ivclassNa="meec-li">nt < sp ansty="le--0:#82AAFF;--1:#3B61">B0expe53(thinAB0to5<3(sp ansty="le--0:#F78C6C;--1:#AA09">821<23sp ansty="le--0:#D6DEEB;--1:#403F">53<);d ivclassNa="meec-li">53< sp ansty="le--0:#D6DEEB;--1:#403F">53}<);d ivclassNa="meec-li">53< sp ansty="le--0:#D6DEEB;--1:#403F">53teAB0sk5<3(sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Dthr1<1"sp ansty="le--0:#D6DEEB;--1:#403F">53<, sp ansty="le--0:#D9F5DD;--1:#1111">11<()sp ansty="le--0:#D6DEEB;--1:#403F">5<3 sp ansty="le--0:#C792EA;--1:#8844">AE<=>sp ansty="le--0:#D6DEEB;--1:#403F">53sp>< {d ivclassNa="meec-li">nt < sp ansty="le--0:#919F9F;--1:#5D63">76// .<..d ivclassNa="meec-li">53< sp ansty="le--0:#D6DEEB;--1:#403F">53}<);d ivclassNa="meec-li">53< sp ansty="le--0:#D6DEEB;--1:#403F">53AB0sk5<3(sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Dfo1<1"sp ansty="le--0:#D6DEEB;--1:#403F">53<, sp ansty="le--0:#D9F5DD;--1:#1111">11<()sp ansty="le--0:#D6DEEB;--1:#403F">5<3 sp ansty="le--0:#C792EA;--1:#8844">AE<=>sp ansty="le--0:#D6DEEB;--1:#403F">53sp>< {d ivclassNa="meec-li">nt < sp ansty="le--0:#919F9F;--1:#5D63">76// .<..d ivclassNa="meec-li">53< sp ansty="le--0:#D6DEEB;--1:#403F">53}<);d ivclassNa="meec-li">53}<);d ivclassNa="meco"><);d>
44AEim3F53 { it, tes44AE31<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dvi1<111" spans="tyle--0:#D6DEEB;--1:#40">3c44AEco61B0f44A1<111" spans="tyle--0:#ECC48D;--1:#98">4E41<111" spans="tyle--0:#D6DEEB;--1:#40">344AEco61B0se44A1<111" spans="tyle--0:#ECC48D;--1:#98">4E41<111" spans="tyle--0:#D6DEEB;--1:#40">3c613F53(fir11<11() spans="tyle--0:#D6DEEB;--1:#40">344 spans="tyle--0:#D6DEEB;--1:#40">3F><53 {divclass="Nameec-">de6376//< .. .divclass="Nameec-">3F5<3}) ;divclass="Nameec-">c3F<53it spans="tyle--0:#C792EA;--1:#88">4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B03F53(seco11<11() spans="tyle--0:#D6DEEB;--1:#40">344 spans="tyle--0:#D6DEEB;--1:#40">3F><53 {divclass="Nameec-">de6376//< .. .divclass="Nameec-">3F5<3}) ;divclass="Nameec-">c61B031<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dt1<111" spans="tyle--0:#D6DEEB;--1:#40">3F<53, spans="tyle--0:#D9F5DD;--1:#11">11<11() spans="tyle--0:#D6DEEB;--1:#40">344 spans="tyle--0:#D6DEEB;--1:#40">3F><53 {divclass="Nameec-">de6376//< .. .divclass="Nameec-">3F5<3}) ;divclass="Nameec-">c61B031<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dfo1<111" spans="tyle--0:#D6DEEB;--1:#40">3F<53, spans="tyle--0:#D9F5DD;--1:#11">11<11() spans="tyle--0:#D6DEEB;--1:#40">344 spans="tyle--0:#D6DEEB;--1:#40">3F><53 {divclass="Nameec-">de6376//< .. .divclass="Nameec-">3F5<3}) ;divclass="Name"><})><;di vdivclass="Nameexpressive-">44AEim3F53 { describe, expect, it, tes44AE31<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dvi1<111" spans="tyle--0:#D6DEEB;--1:#40">3c61B0desc31<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dne1<111" spans="tyle--0:#D6DEEB;--1:#40">3F<53, spans="tyle--0:#D9F5DD;--1:#11">11<11() spans="tyle--0:#D6DEEB;--1:#40">344 spans="tyle--0:#D6DEEB;--1:#40">3F><53 {divclass="Nameec-">de44AEco61B0t44A098<2123 spans="tyle--0:#D6DEEB;--1:#40">3cde61B031<111" spans="tyle--0:#ECC48D;--1:#98">4E41<111" spans="tyle--0:#D6DEEB;--1:#40">3F<53, spans="tyle--0:#D9F5DD;--1:#11">11<11() spans="tyle--0:#D6DEEB;--1:#40">344 spans="tyle--0:#D6DEEB;--1:#40">3F><53 {divclass="Nameec-">dent< spans="tyle--0:#82AAFF;--1:#3B">61B0ex3F53(th4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B03098<2123 spans="tyle--0:#D6DEEB;--1:#40">3F<53) ;divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F5<3}) ;divclass="Nameec-">cde6376// With a comde6131<111" spans="tyle--0:#ECC48D;--1:#98">4E41<111" spans="tyle--0:#D6DEEB;--1:#40">3F<53, spans="tyle--0:#D9F5DD;--1:#11">11<11() spans="tyle--0:#D6DEEB;--1:#40">344 spans="tyle--0:#D6DEEB;--1:#40">3F><53 {divclass="Nameec-">dent< spans="tyle--0:#82AAFF;--1:#3B">61B0ex3F53(th4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B03098<2123 spans="tyle--0:#D6DEEB;--1:#40">3F<53) ;divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F5<3}) ;divclass="Nameec-">c3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F534<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B031<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dt1<111" spans="tyle--0:#D6DEEB;--1:#40">3F<53, spans="tyle--0:#D9F5DD;--1:#11">11<11() spans="tyle--0:#D6DEEB;--1:#40">344 spans="tyle--0:#D6DEEB;--1:#40">3F><53 {divclass="Nameec-">dent< spans="tyle--0:#919F9F;--1:#5D">6376//< .. .divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F5<3}) ;divclass="Nameec-">c3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F<53it spans="tyle--0:#C792EA;--1:#88">4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B031<111" spans="tyle--0:#ECC48D;--1:#98">4E4D1<111" spans="tyle--0:#D6DEEB;--1:#40">3F<53, spans="tyle--0:#D9F5DD;--1:#11">11<11() spans="tyle--0:#D6DEEB;--1:#40">344 spans="tyle--0:#D6DEEB;--1:#40">3F><53 {divclass="Nameec-">dent< spans="tyle--0:#919F9F;--1:#5D">6376//< .. .divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F5<3}) ;divclass="Nameec-">3F5<3}) ;divclass="Name"><})>

This rule is not configurable.

If your project keeps very small test files and prefers denser case lists, the extra blank lines from this rule may not be worth it. That can be reasonable when each suite contains only a handful of short tests.