Skip to content

describePaddingLines

Enforces padding around describe blocks.

✅ This rule is included in the vitest preset.

Blank lines around describe() blocks make suite boundaries easier to recognize. That helps nested suites read like separate sections instead of blending into surrounding setup and declarations. This rule also applies to suite(), Vitest’s alias for describe().

AEimpo53 { describe <} 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">dAEconsB0suiteNaAE <= sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Dte1<1"sp ansty="le--0:#D6DEEB;--1:#403F">5<3;d ivclassNa="meec-li">76// A comment before descriB0descri53(suiteName<, 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">B0descri5<3(sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Dtrimm1<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">nt< sp ansty="le--0:#82AAFF;--1:#3B61">B0descri5<3(sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Dr1<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="meec-li">53descriAB0sk5<3(sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Dskipp1<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 <} 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">d53descriAB0on5<3(sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Dfocus1<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">53descriAB0sk5<3(sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Dlat1<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">AEconsB0skippedNaAE <= sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4Danoth1<1"sp ansty="le--0:#D6DEEB;--1:#403F">5<3;d ivclassNa="meec-li">53descriAB0sk53(skippedName<, 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>
44AEim3F53 { describ44AE31<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dvi1<111" spans="tyle--0:#D6DEEB;--1:#40">3c44AEco61B0suite44A1<111" spans="tyle--0:#ECC48D;--1:#98">4E4D1<111" spans="tyle--0:#D6DEEB;--1:#40">3c6376// A comment before desc61B0desc3F53(suiteNa11<11() spans="tyle--0:#D6DEEB;--1:#40">344 spans="tyle--0:#D6DEEB;--1:#40">3F><53 {divclass="Nameec-">de61B0desc31<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dtri1<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-">cde61B0desc31<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:#919F9F;--1:#5D">6376//< .. .divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F5<3}) ;divclass="Nameec-">3F5<3}) ;divclass="Nameec-">c3F53desc4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B031<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dski1<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 { describ44AE31<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dvi1<111" spans="tyle--0:#D6DEEB;--1:#40">3c3F53desc4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B031<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dfoc1<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-">c3F53desc4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B031<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dl1<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-">c44AEco61B0skipped44A1<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dano1<111" spans="tyle--0:#D6DEEB;--1:#40">3c3F53desc4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B03F53(skippedNa11<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"><})>

This rule is not configurable.

If your team intentionally treats small describe() blocks like inline grouping rather than visual sections, the added blank lines may feel too spread out. That can be reasonable in short files with only one or two tiny suites.