@@ -75,3 +75,46 @@ testQuartoCmd(
7575 } ,
7676 } ,
7777) ;
78+
79+ // Pagination options test
80+ const paginationInput = docs ( "listings/pagination/index.qmd" ) ;
81+ const paginationOutputDir = join ( docs ( "listings/pagination" ) , "_site" ) ;
82+ const paginationHtmlOutput = join ( paginationOutputDir , "index.html" ) ;
83+
84+ const paginationVerify : Verify [ ] = [ ] ;
85+ paginationVerify . push ( fileExists ( paginationHtmlOutput ) ) ;
86+
87+ // Test pagination elements exist
88+ paginationVerify . push (
89+ ensureHtmlElements ( paginationHtmlOutput , [
90+ "#listing-default-pagination-pagination" ,
91+ "#listing-custom-pagination-pagination" ,
92+ "#listing-zero-inner-window-pagination" ,
93+ "#listing-default-pagination-pagination li.page-item a.page-link" ,
94+ ] ) ,
95+ ) ;
96+
97+ // Test pagination configuration values in generated JavaScript
98+ paginationVerify . push (
99+ ensureFileRegexMatches ( paginationHtmlOutput , [
100+ // Default pagination uses innerWindow: 2
101+ / l i s t i n g - d e f a u l t - p a g i n a t i o n .* i n n e r W i n d o w : 2 / ,
102+ // Custom pagination uses specified values
103+ / l i s t i n g - c u s t o m - p a g i n a t i o n .* i n n e r W i n d o w : 1 / ,
104+ / l i s t i n g - c u s t o m - p a g i n a t i o n .* o u t e r W i n d o w : 1 / ,
105+ // Zero inner-window should be output (regression test for falsy bug fix)
106+ / l i s t i n g - z e r o - i n n e r - w i n d o w .* i n n e r W i n d o w : 0 / ,
107+ ] ) ,
108+ ) ;
109+
110+ testQuartoCmd (
111+ "render" ,
112+ [ dirname ( paginationInput ) ] ,
113+ paginationVerify ,
114+ {
115+ name : "Pagination Options Test" ,
116+ teardown : async ( ) => {
117+ await Deno . remove ( paginationOutputDir , { recursive : true } ) ;
118+ } ,
119+ } ,
120+ ) ;
0 commit comments