@@ -3,10 +3,37 @@ import react from '@vitejs/plugin-react';
33import wyw from '@wyw-in-js/vite' ;
44import browserslist from 'browserslist' ;
55import { defineConfig } from 'vite' ;
6+ import type { BrowserCommand } from 'vitest/node' ;
67
78const isCI = process . env . CI === 'true' ;
89const isTest = process . env . NODE_ENV === 'test' ;
910
11+ // TODO: remove when `userEvent.pointer` is supported
12+ const resizeColumn : BrowserCommand < [ resizeBy : number ] > = async ( context , resizeBy ) => {
13+ const page = context . page ;
14+ const frame = await context . frame ( ) ;
15+ const resizeHandle = frame . locator ( '[role="columnheader"][aria-colindex="2"] div' ) ;
16+ const { x, y } = ( await resizeHandle . boundingBox ( ) ) ! ;
17+ await resizeHandle . hover ( {
18+ position : { x : 5 , y : 5 }
19+ } ) ;
20+ await page . mouse . down ( ) ;
21+ await page . mouse . move ( x + resizeBy + 5 , y ) ;
22+ await page . mouse . up ( ) ;
23+ } ;
24+
25+ // TODO: remove when `userEvent.pointer` is supported
26+ const dragFill : BrowserCommand < [ from : string , to : string ] > = async ( context , from , to ) => {
27+ const page = context . page ;
28+ const frame = await context . frame ( ) ;
29+ await frame . getByRole ( 'gridcell' , { name : from } ) . click ( ) ;
30+ await frame . locator ( '.rdg-cell-drag-handle' ) . hover ( ) ;
31+ await page . mouse . down ( ) ;
32+ const toCell = frame . getByRole ( 'gridcell' , { name : to } ) ;
33+ await toCell . hover ( ) ;
34+ await page . mouse . up ( ) ;
35+ } ;
36+
1037export default defineConfig ( ( { command } ) => ( {
1138 base : '/react-data-grid/' ,
1239 cacheDir : '.cache/vite' ,
@@ -17,9 +44,6 @@ export default defineConfig(({ command }) => ({
1744 sourcemap : true ,
1845 reportCompressedSize : false
1946 } ,
20- json : {
21- stringify : true
22- } ,
2347 plugins : [
2448 ! isTest &&
2549 TanStackRouterVite ( {
@@ -50,10 +74,41 @@ export default defineConfig(({ command }) => ({
5074 reporter : [ 'json' ]
5175 } ,
5276 testTimeout : isCI ? 10000 : 5000 ,
53- reporters : [ 'basic' ] ,
5477 restoreMocks : true ,
5578 sequence : {
5679 shuffle : true
57- }
80+ } ,
81+ workspace : [
82+ {
83+ extends : true ,
84+ test : {
85+ name : 'browser' ,
86+ include : [ 'test/browser/**/*.test.*' ] ,
87+ browser : {
88+ enabled : true ,
89+ provider : 'playwright' ,
90+ instances : [
91+ {
92+ browser : 'chromium'
93+ }
94+ ] ,
95+ commands : { resizeColumn, dragFill } ,
96+ viewport : { width : 1920 , height : 1080 } ,
97+ headless : true ,
98+ screenshotFailures : process . env . CI !== 'true'
99+ } ,
100+ setupFiles : [ 'test/setup.ts' , 'test/setupBrowser.ts' ]
101+ }
102+ } ,
103+ {
104+ extends : true ,
105+ test : {
106+ name : 'node' ,
107+ include : [ 'test/node/**/*.test.*' ] ,
108+ environment : 'node' ,
109+ setupFiles : [ 'test/setup.ts' ]
110+ }
111+ }
112+ ]
58113 }
59114} ) ) ;
0 commit comments