@@ -207,6 +207,46 @@ test.describe("Datagrid with superstore data set", () => {
207207 } ) ;
208208} ) ;
209209
210+ test . describe ( "Datagrid regressions" , ( ) => {
211+ // https://github.com/perspective-dev/perspective/issues/3097
212+ test ( "Sorting a column does not break viewport metadata" , async ( {
213+ page,
214+ } ) => {
215+ await page . goto ( "/tools/test/src/html/basic-test.html" ) ;
216+ await page . evaluate ( async ( ) => {
217+ while ( ! window [ "__TEST_PERSPECTIVE_READY__" ] ) {
218+ await new Promise ( ( x ) => setTimeout ( x , 10 ) ) ;
219+ }
220+ } ) ;
221+
222+ const td = await page . evaluateHandle ( async ( ) => {
223+ const elem = await document
224+ . querySelector ( "perspective-viewer-datagrid" )
225+ . shadowRoot . querySelector ( "regular-table" ) ;
226+ elem . scrollLeft = 5000 ;
227+ await elem . draw ( ) ;
228+ return document
229+ . querySelector ( "perspective-viewer-datagrid" )
230+ . shadowRoot . querySelector ( "table thead tr th:nth-child(3)" ) ;
231+ } ) ;
232+
233+ await td . click ( ) ;
234+ await page . evaluate ( async ( ) => {
235+ await document . querySelector ( "perspective-viewer" ) . flush ( ) ;
236+ const elem = await document
237+ . querySelector ( "perspective-viewer-datagrid" )
238+ . shadowRoot . querySelector ( "regular-table" ) ;
239+ elem . scrollLeft = 0 ;
240+ await elem . draw ( ) ;
241+ } ) ;
242+
243+ compareContentsToSnapshot (
244+ await getDatagridContents ( page ) ,
245+ "sorting-a-column-does-not-break-viewport-emtadata.txt" ,
246+ ) ;
247+ } ) ;
248+ } ) ;
249+
210250test . describe ( "Datagrid with superstore arrow data set" , ( ) => {
211251 test . beforeEach ( async ( { page } ) => {
212252 await page . goto (
0 commit comments