@@ -3,10 +3,10 @@ import react from '@vitejs/plugin-react';
33import { playwright , type PlaywrightProviderOptions } from '@vitest/browser-playwright' ;
44import { ecij } from 'ecij/plugin' ;
55import { defineConfig , type ViteUserConfig } from 'vitest/config' ;
6- import type { BrowserCommand , BrowserInstanceOption } from 'vitest/node' ;
6+ import type { BrowserCommand } from 'vitest/node' ;
77
88const isCI = process . env . CI === 'true' ;
9- const isTest = process . env . NODE_ENV === 'test ' ;
9+ const isTest = process . env . VITEST === 'true ' ;
1010
1111// TODO: remove when `userEvent.pointer` is supported
1212const resizeColumn : BrowserCommand < [ name : string , resizeBy : number | readonly number [ ] ] > = async (
@@ -48,59 +48,42 @@ const playwrightOptions: PlaywrightProviderOptions = {
4848 }
4949} ;
5050
51- // vitest modifies the instance objects, so we cannot rely on static objects
52- // https://github.com/vitest-dev/vitest/issues/9877
53- function getInstances ( ) : BrowserInstanceOption [ ] {
54- return [
55- {
56- browser : 'chromium' ,
57- provider : playwright ( {
58- ...playwrightOptions ,
59- launchOptions : {
60- channel : 'chromium'
61- }
62- } )
63- } ,
64- {
65- browser : 'firefox' ,
66- provider : playwright ( playwrightOptions ) ,
67- // TODO: remove when FF tests are stable
68- fileParallelism : false
69- }
70- ] ;
71- }
72-
7351export default defineConfig (
7452 ( { isPreview } ) : ViteUserConfig => ( {
7553 base : '/react-data-grid/' ,
7654 cacheDir : '.cache/vite' ,
7755 clearScreen : false ,
78- define : isTest ? { __IS_CI__ : JSON . stringify ( isCI ) } : { } ,
7956 build : {
8057 modulePreload : { polyfill : false } ,
8158 sourcemap : true ,
8259 reportCompressedSize : false ,
8360 // https://github.com/parcel-bundler/lightningcss/issues/873
8461 cssTarget : 'esnext'
8562 } ,
86- plugins : [
87- ecij ( ) ,
88- ( ! isTest || isPreview ) &&
89- tanstackRouter ( {
90- target : 'react' ,
91- generatedRouteTree : 'website/routeTree.gen.ts' ,
92- routesDirectory : 'website/routes' ,
93- autoCodeSplitting : true
94- } ) ,
95- react ( )
96- ] ,
63+ plugins : isPreview
64+ ? [ ]
65+ : [
66+ ecij ( ) ,
67+ ! isTest &&
68+ tanstackRouter ( {
69+ target : 'react' ,
70+ generatedRouteTree : 'website/routeTree.gen.ts' ,
71+ routesDirectory : 'website/routes' ,
72+ autoCodeSplitting : true
73+ } ) ,
74+ react ( )
75+ ] ,
9776 server : {
9877 open : true
9978 } ,
10079 test : {
10180 dir : 'test' ,
10281 globals : true ,
10382 printConsoleTrace : true ,
83+ env : {
84+ // @ts -expect-error
85+ CI : isCI
86+ } ,
10487 coverage : {
10588 provider : 'istanbul' ,
10689 enabled : isCI ,
@@ -120,20 +103,51 @@ export default defineConfig(
120103 }
121104 } ,
122105 slowTestThreshold : 1000 ,
106+ browser : {
107+ headless : true ,
108+ ui : false ,
109+ viewport,
110+ commands : { resizeColumn, dragFill } ,
111+ expect : {
112+ toMatchScreenshot : {
113+ resolveScreenshotPath ( {
114+ root,
115+ testFileDirectory,
116+ testFileName,
117+ arg,
118+ browserName,
119+ platform,
120+ ext
121+ } ) {
122+ return `${ root } /${ testFileDirectory } /screenshots/${ testFileName } /${ arg } -${ browserName } -${ platform } ${ ext } ` ;
123+ }
124+ }
125+ } ,
126+ instances : [
127+ {
128+ browser : 'chromium' ,
129+ provider : playwright ( {
130+ ...playwrightOptions ,
131+ launchOptions : {
132+ channel : 'chromium'
133+ }
134+ } )
135+ } ,
136+ {
137+ browser : 'firefox' ,
138+ provider : playwright ( playwrightOptions ) ,
139+ // TODO: remove when FF tests are stable
140+ fileParallelism : false
141+ }
142+ ]
143+ } ,
123144 projects : [
124145 {
125146 extends : true ,
126147 test : {
127148 name : 'browser' ,
128149 include : [ 'browser/**/*.test.*' ] ,
129- browser : {
130- enabled : true ,
131- instances : getInstances ( ) ,
132- commands : { resizeColumn, dragFill } ,
133- viewport,
134- headless : true ,
135- ui : false
136- } ,
150+ browser : { enabled : true } ,
137151 setupFiles : [ 'test/browser/styles.css' , 'test/setupBrowser.ts' , 'test/failOnConsole.ts' ]
138152 }
139153 } ,
@@ -142,28 +156,7 @@ export default defineConfig(
142156 test : {
143157 name : 'visual' ,
144158 include : [ 'visual/*.test.*' ] ,
145- browser : {
146- enabled : true ,
147- instances : getInstances ( ) ,
148- viewport,
149- headless : true ,
150- ui : false ,
151- expect : {
152- toMatchScreenshot : {
153- resolveScreenshotPath ( {
154- root,
155- testFileDirectory,
156- testFileName,
157- arg,
158- browserName,
159- platform,
160- ext
161- } ) {
162- return `${ root } /${ testFileDirectory } /screenshots/${ testFileName } /${ arg } -${ browserName } -${ platform } ${ ext } ` ;
163- }
164- }
165- }
166- } ,
159+ browser : { enabled : true } ,
167160 setupFiles : [ 'test/setupBrowser.ts' , 'test/failOnConsole.ts' ]
168161 }
169162 } ,
0 commit comments