From 0cce7ebf25b8684709ff4a270b74ab1b1f097bec Mon Sep 17 00:00:00 2001
From: Jason Rasmussen <jason@rasm.me>
Date: Mon, 23 Sep 2024 11:16:25 -0400
Subject: [PATCH] fix: web e2e (#12869)

---
 e2e/docker-compose.yml                 | 5 -----
 e2e/playwright.config.ts               | 4 +++-
 e2e/src/setup/docker-compose.ts        | 3 ++-
 e2e/src/utils.ts                       | 3 +--
 server/src/services/storage.service.ts | 5 +++--
 5 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/e2e/docker-compose.yml b/e2e/docker-compose.yml
index dbb95f176d..6169a4bfa1 100644
--- a/e2e/docker-compose.yml
+++ b/e2e/docker-compose.yml
@@ -22,7 +22,6 @@ services:
       - IMMICH_METRICS=true
       - IMMICH_ENV=testing
     volumes:
-      - upload:/usr/src/app/upload
       - ./test-assets:/test-assets
     extra_hosts:
       - 'auth-server:host-gateway'
@@ -44,7 +43,3 @@ services:
       POSTGRES_DB: immich
     ports:
       - 5435:5432
-
-volumes:
-  model-cache:
-  upload:
diff --git a/e2e/playwright.config.ts b/e2e/playwright.config.ts
index 55032bd364..2576a2c5c9 100644
--- a/e2e/playwright.config.ts
+++ b/e2e/playwright.config.ts
@@ -53,8 +53,10 @@ export default defineConfig({
 
   /* Run your local dev server before starting the tests */
   webServer: {
-    command: 'docker compose up --build -V --remove-orphans',
+    command: 'docker compose up --build --renew-anon-volumes --force-recreate --remove-orphans',
     url: 'http://127.0.0.1:2285',
+    stdout: 'pipe',
+    stderr: 'pipe',
     reuseExistingServer: true,
   },
 });
diff --git a/e2e/src/setup/docker-compose.ts b/e2e/src/setup/docker-compose.ts
index 3ae87417a2..49a702e776 100644
--- a/e2e/src/setup/docker-compose.ts
+++ b/e2e/src/setup/docker-compose.ts
@@ -12,7 +12,8 @@ const setup = async () => {
 
   const timeout = setTimeout(() => _reject(new Error('Timeout starting e2e environment')), 60_000);
 
-  const child = spawn('docker', ['compose', 'up'], { stdio: 'pipe' });
+  const command = 'compose up --build --renew-anon-volumes --force-recreate --remove-orphans';
+  const child = spawn('docker', command.split(' '), { stdio: 'pipe' });
 
   child.stdout.on('data', (data) => {
     const input = data.toString();
diff --git a/e2e/src/utils.ts b/e2e/src/utils.ts
index c67e569697..3c9d4284ce 100644
--- a/e2e/src/utils.ts
+++ b/e2e/src/utils.ts
@@ -156,8 +156,7 @@ export const utils = {
 
       for (const table of tables) {
         if (table === 'system_metadata') {
-          // prevent reverse geocoder from being re-initialized
-          sql.push(`DELETE FROM "system_metadata" where "key" != 'reverse-geocoding-state';`);
+          sql.push(`DELETE FROM "system_metadata" where "key" NOT IN ('reverse-geocoding-state', 'system-flags');`);
         } else {
           sql.push(`DELETE FROM ${table} CASCADE;`);
         }
diff --git a/server/src/services/storage.service.ts b/server/src/services/storage.service.ts
index 15328b0c21..1591149dc2 100644
--- a/server/src/services/storage.service.ts
+++ b/server/src/services/storage.service.ts
@@ -25,12 +25,13 @@ export class StorageService {
   async onBootstrap() {
     await this.databaseRepository.withLock(DatabaseLock.SystemFileMounts, async () => {
       const flags = (await this.systemMetadata.get(SystemMetadataKey.SYSTEM_FLAGS)) || { mountFiles: false };
+      const enabled = flags.mountFiles ?? false;
 
-      this.logger.log('Verifying system mount folder checks');
+      this.logger.log(`Verifying system mount folder checks (enabled=${enabled})`);
 
       // check each folder exists and is writable
       for (const folder of Object.values(StorageFolder)) {
-        if (!flags.mountFiles) {
+        if (!enabled) {
           this.logger.log(`Writing initial mount file for the ${folder} folder`);
           await this.createMountFile(folder);
         }