Enforces padding around Vitest blocks.
✅ This rule is included in the vitest preset.
Blank lines between Vitest hooks, suites, test cases, and assertion groups make test files easier to scan.
This rule applies the same spacing convention across those block types so a file reads with a more consistent rhythm.
AEimpo53 { beforeEach, expect, it <} sp ansty="le--0:#C792EA;--1:#8844">AEfr} sp>5<3 sp ansty="le--0:#D9F5DD;--1:#1111">13 sp><1"sp ansty="le--0:#ECC48D;--1:#984E">4Dvite1"sp>1<1"sp ansty="le--0:#D6DEEB;--1:#403F">51"sp><3;d ivclassNa="meec-li">d3;d>AEconsB0valAE <= sp ansty="le--0:#D9F5DD;--1:#1111">1= sp><1"sp ansty="le--0:#ECC48D;--1:#984E">4Dcher1"sp>1<1"sp ansty="le--0:#D6DEEB;--1:#403F">51"sp><3;d ivclassNa="meec-li">B0beforeEa5<3(sp ansty="le--0:#D9F5DD;--1:#1111">113(sp><()sp ansty="le--0:#D6DEEB;--1:#403F">5()sp><3 sp ansty="le--0:#C792EA;--1:#8844">AE3 sp><=>sp ansty="le--0:#D6DEEB;--1:#403F">53=>sp>3;d>< {d ivclassNa="meec-li">nt< sp ansty="le--0:#919F9F;--1:#5D63">76// . sp> {d><..d ivclassNa="meec-li">53}<);d ivclassNa="meec-li">B05<3(sp ansty="le--0:#D9F5DD;--1:#1111">13(sp><1"sp ansty="le--0:#ECC48D;--1:#984E">4Ddoes somethi1"sp>1<1"sp ansty="le--0:#D6DEEB;--1:#403F">531"sp><, sp ansty="le--0:#D9F5DD;--1:#1111">11, sp><()sp ansty="le--0:#D6DEEB;--1:#403F">5()sp><3 sp ansty="le--0:#C792EA;--1:#8844">AE3 sp><=>sp ansty="le--0:#D6DEEB;--1:#403F">53=>sp>);d>< {d ivclassNa="meec-li">nt< sp ansty="le--0:#C792EA;--1:#8844">AEcons sp>B0couAE <= sp ansty="le--0:#F78C6C;--1:#AA09">8= sp><21sp ansty="le--0:#D6DEEB;--1:#403F">521sp> {d><3;d ivclassNa="meec-li">nt< sp ansty="le--0:#82AAFF;--1:#3B61">B0expe sp>53(counAB0to5<3(sp ansty="le--0:#F78C6C;--1:#AA09">83(sp><21sp ansty="le--0:#D6DEEB;--1:#403F">5321sp>3;d><);d ivclassNa="meec-li">53< sp ansty="le--0:#D6DEEB;--1:#403F">53conso sp>AB0l53(value);d><);d ivclassNa="meec-li">53});d><);d ivclassNa="meco"> { // ...});it("does something", () => { const count = 1; expect(count).toBe(1); console.log(value);}"><);d>);d>);d>AEimpo53 { afterAll, describe, expect, test <} sp ansty="le--0:#C792EA;--1:#8844">AEfr} sp>5<3 sp ansty="le--0:#D9F5DD;--1:#1111">13 sp><1"sp ansty="le--0:#ECC48D;--1:#984E">4Dvite1"sp>1<1"sp ansty="le--0:#D6DEEB;--1:#403F">51"sp><3;d ivclassNa="meec-li">d3;d>AEconsB0servAE =< {d ivclassNa="meec-li">nt< sp ansty="le--0:#82AAFF;--1:#3B61">B0clo sp>11<()sp ansty="le--0:#C792EA;--1:#8844">AE {()sp> {d><},d ivclassNa="meec-li">AE< sp ansty="le--0:#C792EA;--1:#8844">AErunning sp><: sp ansty="le--0:#FF6A83;--1:#A248">48trA},d>A5<3;d ivclassNa="meec-li">d3;d>B0descri5<3(sp ansty="le--0:#D9F5DD;--1:#1111">13(sp><1"sp ansty="le--0:#ECC48D;--1:#984E">4Dserv1"sp>1<1"sp ansty="le--0:#D6DEEB;--1:#403F">531"sp><, sp ansty="le--0:#D9F5DD;--1:#1111">11, sp><()sp ansty="le--0:#D6DEEB;--1:#403F">5()sp><3 sp ansty="le--0:#C792EA;--1:#8844">AE3 sp><=>sp ansty="le--0:#D6DEEB;--1:#403F">53=>sp>< {d ivclassNa="meec-li">nt< sp ansty="le--0:#82AAFF;--1:#3B61">B0afterA sp>5<3(sp ansty="le--0:#D9F5DD;--1:#1111">113(sp><()sp ansty="le--0:#D6DEEB;--1:#403F">5()sp><3 sp ansty="le--0:#C792EA;--1:#8844">AE3 sp><=>sp ansty="le--0:#D6DEEB;--1:#403F">53=>sp> {d>< {d ivclassNa="meec-li">53 < sp ansty="le--0:#D6DEEB;--1:#403F">53serv sp>AB0clo53( {d><);d ivclassNa="meec-li">53< sp ansty="le--0:#D6DEEB;--1:#403F">53} sp>);d><);d ivclassNa="meec-li">nt< sp ansty="le--0:#82AAFF;--1:#3B61">B0te sp>5<3(sp ansty="le--0:#D9F5DD;--1:#1111">13(sp><1"sp ansty="le--0:#ECC48D;--1:#984E">4Drespon1"sp>1<1"sp ansty="le--0:#D6DEEB;--1:#403F">531"sp><, sp ansty="le--0:#D9F5DD;--1:#1111">11, sp><()sp ansty="le--0:#D6DEEB;--1:#403F">5()sp><3 sp ansty="le--0:#C792EA;--1:#8844">AE3 sp><=>sp ansty="le--0:#D6DEEB;--1:#403F">53=>sp>);d>< {d ivclassNa="meec-li">nt < sp ansty="le--0:#82AAFF;--1:#3B61">B0expe sp>53(servA72runni5<3)sp ansty="le--0:#C792EA;--1:#8844">A3)sp>B0to5<3(sp ansty="le--0:#FF6A83;--1:#A248">48tr3(sp>53 {d><);d ivclassNa="meec-li">53< sp ansty="le--0:#D6DEEB;--1:#403F">53} sp>);d><);d ivclassNa="meec-li">53});d><);d ivclassNa="meco"> { afterAll(() => { server.close(); }); test("responds", () => { expect(server.running).toBe(true); });}"><);d>);d>);d> 44AEim3F53 { beforeEach, expect, i44AE31<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dvi111">1<111" spans="tyle--0:#D6DEEB;--1:#40">3111">c44AEco61B0v44A1<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dch111">1<111" spans="tyle--0:#D6DEEB;--1:#40">3111">c61B0before311<11() spans="tyle--0:#D6DEEB;--1:#40">311()>44 spans="tyle--0:#D6DEEB;--1:#40">3F><53 {divclass="Nameec-">de6376//53 >< .. .divclass="Nameec-">3F5 ..><3}) ;divclass="Nameec-">c3})>6131<111" spans="tyle--0:#ECC48D;--1:#98">4E4Ddoes somet111">1<111" spans="tyle--0:#D6DEEB;--1:#40">3F111"><53, spans="tyle--0:#D9F5DD;--1:#11">1153, ><11() spans="tyle--0:#D6DEEB;--1:#40">311()>44 spans="tyle--0:#D6DEEB;--1:#40">3F><53 {divclass="Nameec-">de44AEco61B0c44A0<9821 spans="tyle--0:#D6DEEB;--1:#40">39821>53 >cde61B0ex3F53(co4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B04AE.>30<9821 spans="tyle--0:#D6DEEB;--1:#40">3F9821><53) ;divclass="Nameec-">c53)>3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F53con53 >4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B4AE.><0log spans="tyle--0:#D6DEEB;--1:#40">3F53(val0log>3F5<3}) ;divclass="Name"> { // ...});it("does something", () => { const count = 1; expect(count).toBe(1); console.log(value);"><})>})>3})><;di vdivclass="Nameexpressive-">44AEim3F53 { afterAll, describe, expect, tes44AE31<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dvi111">1<111" spans="tyle--0:#D6DEEB;--1:#40">3111">c44AEco61B0se44AE< = {divclass="Nameec-">de61B0c11<11() spans="tyle--0:#C792EA;--1:#88">44AE11()> = >< {} ,divclass="Nameec-">4444AErunni48484 {}><4AE ,divclass="Nameec-">4<4AE} spans="tyle--0:#D6DEEB;--1:#40">34AE}>4AE>c61B0desc31<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dse111">1<111" spans="tyle--0:#D6DEEB;--1:#40">3F111"><53, spans="tyle--0:#D9F5DD;--1:#11">1153, ><11() spans="tyle--0:#D6DEEB;--1:#40">311()>44 spans="tyle--0:#D6DEEB;--1:#40">3F><53 {divclass="Nameec-">de61B0afte311<11() spans="tyle--0:#D6DEEB;--1:#40">311()>44 spans="tyle--0:#D6DEEB;--1:#40">3F>53 ><53 {divclass="Nameec-">3F53< spans="tyle--0:#D6DEEB;--1:#40">3F53se >4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B0c4AE.>3F553 ><3() ;divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F553 >3()><3}) ;divclass="Nameec-">c3})>de61B031<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dresp111">1<111" spans="tyle--0:#D6DEEB;--1:#40">3F111"><53, spans="tyle--0:#D9F5DD;--1:#11">1153, ><11() spans="tyle--0:#D6DEEB;--1:#40">311()>44 spans="tyle--0:#D6DEEB;--1:#40">3F><53 {divclass="Nameec-">dent< spans="tyle--0:#82AAFF;--1:#3B">61B0ex >3F53(se4<4AE. spans="tyle--0:#7FDBCA;--1:#09">6E72run4AE.>34<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B04AE.>348483F53 ><53) ;divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F553 >53)><3}) ;divclass="Nameec-">3F53})><3}) ;divclass="Name"> { afterAll(() => { server.close(); }); test("responds", () => { expect(server.running).toBe(true); });"><})>})>3})>;di>
This rule is not configurable.
If you want spacing rules for only one part of Vitest syntax, the narrower padding rules may fit your project better.
This rule can feel too opinionated for compact test files because it applies one spacing style across multiple kinds of statements.