Enforces padding around beforeAll blocks.
✅ This rule is included in the vitest preset.
Blank lines around beforeAll() hooks make one-time suite setup easier to notice.
They also separate expensive or shared initialization from nearby suite declarations and other setup code.
AEimpo53 { beforeAll, describe <} 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>AEconsB0databaAE =< {d ivclassNa="meec-li">nt< sp ansty="le--0:#82AAFF;--1:#3B61">B0conne sp>11<()sp ansty="le--0:#C792EA;--1:#8844">AE {()sp> {d><},d ivclassNa="meec-li">A5},d><3;d ivclassNa="meec-li">B0beforeA5<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">53< sp ansty="le--0:#D6DEEB;--1:#403F">53databa sp>AB0conne53( {d><);d ivclassNa="meec-li">53});d><);d ivclassNa="meec-li">B0descri5<3(sp ansty="le--0:#D9F5DD;--1:#1111">13(sp><1"sp ansty="le--0:#ECC48D;--1:#984E">4Ddataba1"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:#919F9F;--1:#5D63">76// . sp> {d><..d ivclassNa="meec-li">53}<);d ivclassNa="meco"> { database.connect();});describe("database", () => { // ...}"><);d>);d>);d>AEimpo53 { beforeAll, describe <} 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>B0descri5<3(sp ansty="le--0:#D9F5DD;--1:#1111">13(sp><1"sp ansty="le--0:#ECC48D;--1:#984E">4Dque1"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:#C792EA;--1:#8844">AEcons sp>B0cacAE = {d>< {d ivclassNa="meec-li">nt < sp ansty="le--0:#82AAFF;--1:#3B61">B0wa sp>11<()sp ansty="le--0:#C792EA;--1:#8844">AE {()sp> {d><},d ivclassNa="meec-li">AE< sp ansty="le--0:#C792EA;--1:#8844">A sp>5},d><3;d ivclassNa="meec-li">nt< sp ansty="le--0:#C792EA;--1:#8844">AEcons sp>B0workAE =3;d>< {d ivclassNa="meec-li">nt < sp ansty="le--0:#82AAFF;--1:#3B61">B0sta sp>11<()sp ansty="le--0:#C792EA;--1:#8844">AE {()sp> {d><},d ivclassNa="meec-li">AE< sp ansty="le--0:#C792EA;--1:#8844">A sp>5},d><3;d ivclassNa="meec-li">nt< sp ansty="le--0:#82AAFF;--1:#3B61">B0beforeA 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>3;d>< {d ivclassNa="meec-li">53 < sp ansty="le--0:#D6DEEB;--1:#403F">53cac sp>AB0wa53( {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">B0beforeA 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">53work sp>AB0sta53( {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"> { const cache = { warm() {}, }; const worker = { start() {}, }; beforeAll(() => { cache.warm(); }); beforeAll(() => { worker.start(); });}"><);d>);d>);d> 44AEim3F53 { beforeAll, describ44AE31<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dvi111">1<111" spans="tyle--0:#D6DEEB;--1:#40">3111">c44AEco61B0data44AE< = {divclass="Nameec-">de61B0con11<11() spans="tyle--0:#C792EA;--1:#88">44AE11()> = >< {} ,divclass="Nameec-">4<4AE} spans="tyle--0:#D6DEEB;--1:#40">34AE}> {}>c61B0befor311<11() spans="tyle--0:#D6DEEB;--1:#40">311()>44 spans="tyle--0:#D6DEEB;--1:#40">3F><53 {divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F53data53 >4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B0con4AE.>3F553 ><3() ;divclass="Nameec-">3F53()><3}) ;divclass="Nameec-">c3})>61B0desc31<111" spans="tyle--0:#ECC48D;--1:#98">4E4Ddata111">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-">de6376//53 >< .. .divclass="Nameec-">3F5 ..><3}) ;divclass="Name"> { database.connect();});describe("database", () => { // ..."><})>})>3})><;di vdivclass="Nameexpressive-">44AEim3F53 { beforeAll, describ44AE31<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dvi111">1<111" spans="tyle--0:#D6DEEB;--1:#40">3111">c61B0desc31<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dq111">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-">de44AEco61B0c44AE53 >< = {divclass="Nameec-">dent< spans="tyle--0:#82AAFF;--1:#3B">61B0 >11<11() spans="tyle--0:#C792EA;--1:#88">44AE11()> = >< {} ,divclass="Nameec-">444<4AE} spans="tyle--0:#D6DEEB;--1:#40">34AE}> {}>de44AEco61B0wo44AE< = {divclass="Nameec-">dent< spans="tyle--0:#82AAFF;--1:#3B">61B0s >11<11() spans="tyle--0:#C792EA;--1:#88">44AE11()> = >< {} ,divclass="Nameec-">444<4AE} spans="tyle--0:#D6DEEB;--1:#40">34AE}> {}>cde61B0befor311<11() spans="tyle--0:#D6DEEB;--1:#40">311()>44 spans="tyle--0:#D6DEEB;--1:#40">3F><53 {divclass="Nameec-">3F53< spans="tyle--0:#D6DEEB;--1:#40">3F53c >4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B04AE.>3F553 ><3() ;divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F553 >3()><3}) ;divclass="Nameec-">c3})>de61B0befor311<11() spans="tyle--0:#D6DEEB;--1:#40">311()>44 spans="tyle--0:#D6DEEB;--1:#40">3F><53 {divclass="Nameec-">3F53< spans="tyle--0:#D6DEEB;--1:#40">3F53wo >4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B0s4AE.>3F553 ><3() ;divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F553 >3()><3}) ;divclass="Nameec-">3F53})><3}) ;divclass="Name"> { const cache = { warm() {}, }; const worker = { start() {}, }; beforeAll(() => { cache.warm(); }); beforeAll(() => { worker.start(); });"><})>})>3})>;di>
This rule is not configurable.
If your suites are very small and beforeAll() hooks are always immediately adjacent to the state they initialize, the extra spacing may not improve readability.
That tradeoff can be reasonable when your team prefers denser test files.