Browse Source

fix: Use external MongoDB in CI, MongoMemoryServer locally to enable parallel test execution

Co-authored-by: yuki-takei <1638767+yuki-takei@users.noreply.github.com>
copilot-swe-agent[bot] 2 months ago
parent
commit
664f0a2390
2 changed files with 17 additions and 3 deletions
  1. 17 1
      apps/app/test/setup/mongoms.ts
  2. 0 2
      apps/app/vitest.workspace.mts

+ 17 - 1
apps/app/test/setup/mongoms.ts

@@ -3,12 +3,23 @@ import mongoose from 'mongoose';
 
 import { mongoOptions } from '~/server/util/mongoose-utils';
 
+let mongoServer: MongoMemoryServer | undefined;
+
 beforeAll(async () => {
+  // Use external MongoDB if MONGO_URI is provided (e.g., in CI with GitHub Actions services)
+  if (process.env.MONGO_URI) {
+    // biome-ignore lint/suspicious/noConsole: Allow logging
+    console.log(`Using external MongoDB at ${process.env.MONGO_URI}`);
+    await mongoose.connect(process.env.MONGO_URI, mongoOptions);
+    return;
+  }
+
+  // Use MongoMemoryServer for local development
   // set debug flag
   process.env.MONGOMS_DEBUG = process.env.VITE_MONGOMS_DEBUG;
 
   // set version
-  const mongoServer = await MongoMemoryServer.create({
+  mongoServer = await MongoMemoryServer.create({
     instance: {
       dbName: 'growi_test',
     },
@@ -26,4 +37,9 @@ beforeAll(async () => {
 
 afterAll(async () => {
   await mongoose.disconnect();
+  
+  // Stop MongoMemoryServer if it was created
+  if (mongoServer) {
+    await mongoServer.stop();
+  }
 });

+ 0 - 2
apps/app/vitest.workspace.mts

@@ -32,8 +32,6 @@ export default defineWorkspace([
       environment: 'node',
       include: ['**/*.integ.ts'],
       setupFiles: ['./test/setup/mongoms.ts'],
-      // Disable file parallelism to avoid mongodb-memory-server lock conflicts
-      fileParallelism: false,
       deps: {
         // Transform inline modules (allows ESM in require context)
         interopDefault: true,