@@ -152,12 +152,19 @@ const files = {
152
152
` ,
153
153
} ;
154
154
155
- const VITE_CONFIG = async ( port : number ) => dedent `
155
+ const VITE_CONFIG = async ( {
156
+ port,
157
+ base,
158
+ } : {
159
+ port : number ;
160
+ base ?: string ;
161
+ } ) => dedent `
156
162
import { reactRouter } from "@react-router/dev/vite";
157
163
import { vanillaExtractPlugin } from "@vanilla-extract/vite-plugin";
158
164
159
165
export default {
160
166
${ await viteConfig . server ( { port } ) }
167
+ ${ base ? `base: "${ base } ",` : "" }
161
168
plugins: [
162
169
reactRouter(),
163
170
vanillaExtractPlugin({
@@ -182,7 +189,7 @@ test.describe("Vite CSS", () => {
182
189
"react-router.config.ts" : reactRouterConfig ( {
183
190
viteEnvironmentApi : templateName === "vite-6-template" ,
184
191
} ) ,
185
- "vite.config.ts" : await VITE_CONFIG ( port ) ,
192
+ "vite.config.ts" : await VITE_CONFIG ( { port } ) ,
186
193
...files ,
187
194
} ,
188
195
templateName
@@ -207,6 +214,45 @@ test.describe("Vite CSS", () => {
207
214
} ) ;
208
215
} ) ;
209
216
217
+ test . describe ( "vite dev with custom base" , async ( ) => {
218
+ let port : number ;
219
+ let cwd : string ;
220
+ let stop : ( ) => void ;
221
+ let base = "/custom/base/" ;
222
+
223
+ test . beforeAll ( async ( ) => {
224
+ port = await getPort ( ) ;
225
+ cwd = await createProject (
226
+ {
227
+ "react-router.config.ts" : reactRouterConfig ( {
228
+ viteEnvironmentApi : templateName === "vite-6-template" ,
229
+ basename : base ,
230
+ } ) ,
231
+ "vite.config.ts" : await VITE_CONFIG ( { port, base } ) ,
232
+ ...files ,
233
+ } ,
234
+ templateName
235
+ ) ;
236
+ stop = await dev ( { cwd, port } ) ;
237
+ } ) ;
238
+ test . afterAll ( ( ) => stop ( ) ) ;
239
+
240
+ test . describe ( ( ) => {
241
+ test . use ( { javaScriptEnabled : false } ) ;
242
+ test ( "without JS" , async ( { page } ) => {
243
+ await pageLoadWorkflow ( { page, port, base } ) ;
244
+ } ) ;
245
+ } ) ;
246
+
247
+ test . describe ( ( ) => {
248
+ test . use ( { javaScriptEnabled : true } ) ;
249
+ test ( "with JS" , async ( { page } ) => {
250
+ await pageLoadWorkflow ( { page, port, base } ) ;
251
+ await hmrWorkflow ( { page, port, cwd, base } ) ;
252
+ } ) ;
253
+ } ) ;
254
+ } ) ;
255
+
210
256
test . describe ( "express" , async ( ) => {
211
257
let port : number ;
212
258
let cwd : string ;
@@ -215,7 +261,7 @@ test.describe("Vite CSS", () => {
215
261
test . beforeAll ( async ( ) => {
216
262
port = await getPort ( ) ;
217
263
cwd = await createProject ( {
218
- "vite.config.ts" : await VITE_CONFIG ( port ) ,
264
+ "vite.config.ts" : await VITE_CONFIG ( { port } ) ,
219
265
"server.mjs" : EXPRESS_SERVER ( { port } ) ,
220
266
...files ,
221
267
} ) ;
@@ -247,7 +293,7 @@ test.describe("Vite CSS", () => {
247
293
test . beforeAll ( async ( ) => {
248
294
port = await getPort ( ) ;
249
295
cwd = await createProject ( {
250
- "vite.config.ts" : await VITE_CONFIG ( port ) ,
296
+ "vite.config.ts" : await VITE_CONFIG ( { port } ) ,
251
297
...files ,
252
298
} ) ;
253
299
@@ -290,11 +336,19 @@ test.describe("Vite CSS", () => {
290
336
} ) ;
291
337
} ) ;
292
338
293
- async function pageLoadWorkflow ( { page, port } : { page : Page ; port : number } ) {
339
+ async function pageLoadWorkflow ( {
340
+ page,
341
+ port,
342
+ base,
343
+ } : {
344
+ page : Page ;
345
+ port : number ;
346
+ base ?: string ;
347
+ } ) {
294
348
let pageErrors : Error [ ] = [ ] ;
295
349
page . on ( "pageerror" , ( error ) => pageErrors . push ( error ) ) ;
296
350
297
- await page . goto ( `http://localhost:${ port } / ` , {
351
+ await page . goto ( `http://localhost:${ port } ${ base ?? "/" } ` , {
298
352
waitUntil : "networkidle" ,
299
353
} ) ;
300
354
@@ -316,15 +370,17 @@ async function hmrWorkflow({
316
370
page,
317
371
cwd,
318
372
port,
373
+ base,
319
374
} : {
320
375
page : Page ;
321
376
cwd : string ;
322
377
port : number ;
378
+ base ?: string ;
323
379
} ) {
324
380
let pageErrors : Error [ ] = [ ] ;
325
381
page . on ( "pageerror" , ( error ) => pageErrors . push ( error ) ) ;
326
382
327
- await page . goto ( `http://localhost:${ port } / ` , {
383
+ await page . goto ( `http://localhost:${ port } ${ base ?? "/" } ` , {
328
384
waitUntil : "networkidle" ,
329
385
} ) ;
330
386
0 commit comments