From d428e25d0153ff254bf06fc5c6f80781cc31e20e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?BITARD=20Micha=C3=ABl?= <michael.bitard@beta.gouv.fr>
Date: Thu, 6 Mar 2025 13:49:32 +0000
Subject: [PATCH] chore(CI): contourne les nouvelles contraintes de la CI
 (pub/pnm-public/camino!1660)

---
 .gitlab/ci/doc.yml                        |  5 ++--
 .gitlab/ci/ui.yml                         |  5 +++-
 Makefile                                  |  3 +--
 knip.ts                                   |  1 +
 packages/api/package.json                 |  4 ++--
 packages/api/vitest.integration.config.ts | 29 +++++++++++++++++++++++
 packages/api/vitest.unit.config.ts        | 12 ++++++++++
 packages/api/vitest.workspace.ts          | 26 --------------------
 8 files changed, 52 insertions(+), 33 deletions(-)
 create mode 100644 packages/api/vitest.integration.config.ts
 create mode 100644 packages/api/vitest.unit.config.ts
 delete mode 100644 packages/api/vitest.workspace.ts

diff --git a/.gitlab/ci/doc.yml b/.gitlab/ci/doc.yml
index 64a91b980..2f879b55f 100644
--- a/.gitlab/ci/doc.yml
+++ b/.gitlab/ci/doc.yml
@@ -1,5 +1,6 @@
 doc/build-image:
-  stage: build
+  # On le met au début car c'est utilisé dans les tests de storybook
+  stage: prepare
   needs: []
   extends:
     - .rule-build-and-push
@@ -7,4 +8,4 @@ doc/build-image:
   image:
     name: gcr.io/kaniko-project/executor:debug
     entrypoint: [""]
-  script: /kaniko/executor --context "$CI_PROJECT_DIR" --build-arg GIT_SHA=${CI_COMMIT_SHA} --dockerfile "$CI_PROJECT_DIR/Dockerfile.docs" --destination "caminofr/camino-docs:${CI_COMMIT_SHA}" ${KANIKO_POST_PARAM}
+  script: /kaniko/executor --context "$CI_PROJECT_DIR" --build-arg GIT_SHA=${CI_COMMIT_SHA} --dockerfile "$CI_PROJECT_DIR/Dockerfile.docs" --destination "caminofr/camino-docs:${CI_COMMIT_SHA}"
diff --git a/.gitlab/ci/ui.yml b/.gitlab/ci/ui.yml
index b5d0314f6..08e9d84e1 100644
--- a/.gitlab/ci/ui.yml
+++ b/.gitlab/ci/ui.yml
@@ -10,8 +10,11 @@ ui/test-storybook:
   extends: .prepare-node-run
   stage: test
   retry: 2
+  services:
+    - name: caminofr/camino-docs:${CI_COMMIT_SHA}
+      alias: storybook
   script:
-    - make storybook/build
+    - ./.gitlab/wait-for-it.sh -h localhost -p 80 -t 60 -- echo 'done'
     - make storybook/test
 ui/build-and-push-image:
   stage: build
diff --git a/Makefile b/Makefile
index 367486864..0a679a87e 100644
--- a/Makefile
+++ b/Makefile
@@ -57,8 +57,7 @@ storybook/test:
 ifndef CI
 	npm run storybook:test -w packages/ui
 else
-# TODO 2024-07-04 on peut surement mieux faire, avec un sidecar
-	npx concurrently -k -s first -n "SB,TEST" -c "magenta,blue" "npx http-server packages/ui/storybook-static --port 6006 --silent"  "npx wait-on tcp:6006 && npm run storybook:test -w packages/ui"
+	npm run storybook:test -w packages/ui -- --url http://localhost/storybook/
 endif
 
 test/common:
diff --git a/knip.ts b/knip.ts
index c6cba42ae..08fd43dd2 100644
--- a/knip.ts
+++ b/knip.ts
@@ -42,6 +42,7 @@ const config = {
         "@vitest/coverage-v8",
         "eslint-config-prettier",
         "eslint-plugin-promise",
+        "vite",
       ],
     },
     "packages/common": {
diff --git a/packages/api/package.json b/packages/api/package.json
index 5ddae96cf..380213a25 100644
--- a/packages/api/package.json
+++ b/packages/api/package.json
@@ -29,8 +29,8 @@
     "lint": "prettier --write . && eslint --fix .",
     "start": "node --enable-source-maps --loader ts-node/esm/transpile-only ./src/index.ts",
     "test": "vitest",
-    "test:unit": "vitest --project unit",
-    "test:integration": "vitest --project integration",
+    "test:unit": "vitest --config ./vitest.unit.config.ts",
+    "test:integration": "vitest --config ./vitest.integration.config.ts",
     "test:generate-data": "node --enable-source-maps --loader ts-node/esm/transpile-only src/tools/demarches/tests-creation.ts",
     "test:generate-phase-data": "node --enable-source-maps --loader ts-node/esm/transpile-only src/tools/phases/tests-creation.ts",
     "test:generate-matrices-data": "node --enable-source-maps --loader ts-node/esm/transpile-only src/tools/matrices/tests-creation.ts",
diff --git a/packages/api/vitest.integration.config.ts b/packages/api/vitest.integration.config.ts
new file mode 100644
index 000000000..8ddfe9ba1
--- /dev/null
+++ b/packages/api/vitest.integration.config.ts
@@ -0,0 +1,29 @@
+/// <reference types="vitest" />
+import { defineConfig } from 'vite'
+import { testEnv } from './test-env'
+import path from 'path'
+const poolOptions =
+  process.env.CI === 'true'
+    ? {
+        poolOptions: {
+          threads: {
+            minThreads: 1,
+            maxThreads: 5,
+          },
+        },
+      }
+    : {}
+export default defineConfig({
+  test: {
+    environment: 'node',
+    root: 'src/',
+    name: 'integration',
+    include: ['**/*.test.integration.ts'],
+    setupFiles: path.resolve(__dirname, './tests/vitestSetup.ts'),
+    testTimeout: 10000,
+    hookTimeout: 45000,
+    env: testEnv,
+    pool: 'threads',
+    ...poolOptions,
+  },
+})
diff --git a/packages/api/vitest.unit.config.ts b/packages/api/vitest.unit.config.ts
new file mode 100644
index 000000000..705b5cee2
--- /dev/null
+++ b/packages/api/vitest.unit.config.ts
@@ -0,0 +1,12 @@
+import { defineConfig } from 'vitest/config'
+import path from 'path'
+import { testEnv } from './test-env'
+
+export default defineConfig({
+  test: {
+    environment: 'node',
+    root: 'src/',
+    setupFiles: path.resolve(__dirname, './tests/vitestSetup.ts'),
+    env: testEnv,
+  },
+})
diff --git a/packages/api/vitest.workspace.ts b/packages/api/vitest.workspace.ts
deleted file mode 100644
index 89d2e7d25..000000000
--- a/packages/api/vitest.workspace.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { defineWorkspace } from 'vitest/config'
-import path from 'path'
-import { testEnv } from './test-env'
-
-export default defineWorkspace([
-  {
-    test: {
-      setupFiles: path.resolve(__dirname, './tests/vitestSetup.ts'),
-      env: testEnv,
-      environment: 'node',
-      pool: 'threads',
-      root: 'src',
-      name: 'unit',
-    },
-  },
-  {
-    test: {
-      name: 'integration',
-      include: ['**/*.test.integration.ts'],
-      setupFiles: path.resolve(__dirname, './tests/vitestSetup.ts'),
-      testTimeout: 10000,
-      hookTimeout: 45000,
-      env: testEnv,
-    },
-  },
-])
-- 
GitLab