From d7623f884c8e4589166c5d0517f4061b32b5328d Mon Sep 17 00:00:00 2001
From: Daniel Roe <daniel@roe.dev>
Date: Tue, 4 Mar 2025 20:37:40 +0000
Subject: [PATCH] test: ensure dev tests have separate buildDirs

---
 test/spa-loader/spa-preloader-outside-disabled.test.ts | 6 +++++-
 test/spa-loader/spa-preloader-outside-enabled.test.ts  | 6 +++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/test/spa-loader/spa-preloader-outside-disabled.test.ts b/test/spa-loader/spa-preloader-outside-disabled.test.ts
index 9f7f8525e5..d733699e48 100644
--- a/test/spa-loader/spa-preloader-outside-disabled.test.ts
+++ b/test/spa-loader/spa-preloader-outside-disabled.test.ts
@@ -2,6 +2,7 @@ import { fileURLToPath } from 'node:url'
 import { describe, expect, it } from 'vitest'
 import { isWindows } from 'std-env'
 import { $fetch, createPage, setup, url } from '@nuxt/test-utils/e2e'
+import { join } from 'pathe'
 
 const isWebpack =
   process.env.TEST_BUILDER === 'webpack' ||
@@ -9,14 +10,17 @@ const isWebpack =
 
 const isDev = process.env.TEST_ENV === 'dev'
 
+const fixtureDir = fileURLToPath(new URL('../fixtures/spa-loader', import.meta.url))
+
 if (!isDev) {
   await setup({
-    rootDir: fileURLToPath(new URL('../fixtures/spa-loader', import.meta.url)),
+    rootDir: fixtureDir,
     dev: isDev,
     server: true,
     browser: true,
     setupTimeout: (isWindows ? 360 : 120) * 1000,
     nuxtConfig: {
+      buildDir: isDev ? join(fixtureDir, '.nuxt', 'test', Math.random().toString(36).slice(2, 8)) : undefined,
       builder: isWebpack ? 'webpack' : 'vite',
       spaLoadingTemplate: true,
       experimental: {
diff --git a/test/spa-loader/spa-preloader-outside-enabled.test.ts b/test/spa-loader/spa-preloader-outside-enabled.test.ts
index a5fd89f625..f381e09332 100644
--- a/test/spa-loader/spa-preloader-outside-enabled.test.ts
+++ b/test/spa-loader/spa-preloader-outside-enabled.test.ts
@@ -3,17 +3,21 @@ import { describe, expect, it } from 'vitest'
 import { isWindows } from 'std-env'
 import { createPage, setup, url } from '@nuxt/test-utils/e2e'
 import type { Page } from 'playwright-core'
+import { join } from 'pathe'
 
 const isWebpack = process.env.TEST_BUILDER === 'webpack' || process.env.TEST_BUILDER === 'rspack'
 const isDev = process.env.TEST_ENV === 'dev'
 
+const fixtureDir = fileURLToPath(new URL('../fixtures/spa-loader', import.meta.url))
+
 if (!isDev) {
   await setup({
-    rootDir: fileURLToPath(new URL('../fixtures/spa-loader', import.meta.url)),
+    rootDir: fixtureDir,
     server: true,
     browser: true,
     setupTimeout: (isWindows ? 360 : 120) * 1000,
     nuxtConfig: {
+      buildDir: isDev ? join(fixtureDir, '.nuxt', 'test', Math.random().toString(36).slice(2, 8)) : undefined,
       builder: isWebpack ? 'webpack' : 'vite',
       spaLoadingTemplate: true,
       experimental: {