From 0d1e3a625a04abd5f667640ab40e01d28e017488 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 13:58:49 +0200 Subject: [PATCH] fix(deps): update testcontainers-node monorepo to v11 (major) (#3250) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> Co-authored-by: Meier Lukas --- package.json | 2 +- packages/db/package.json | 2 +- packages/db/test/mysql-migration.spec.ts | 2 +- .../integrations/test/home-assistant.spec.ts | 25 ++++---- packages/integrations/test/pi-hole.spec.ts | 15 +++-- packages/integrations/test/sabnzbd.spec.ts | 23 ++++--- pnpm-lock.yaml | 63 +++++++++---------- 7 files changed, 70 insertions(+), 62 deletions(-) diff --git a/package.json b/package.json index 09d5a008f..276560321 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "jsdom": "^26.1.0", "prettier": "^3.5.3", "semantic-release": "^24.2.5", - "testcontainers": "^10.28.0", + "testcontainers": "^11.0.0", "turbo": "^2.5.4", "typescript": "^5.8.3", "vite-tsconfig-paths": "^5.1.4", diff --git a/packages/db/package.json b/packages/db/package.json index 074b7a746..811171658 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -46,7 +46,7 @@ "@homarr/server-settings": "workspace:^0.1.0", "@mantine/core": "^8.0.2", "@paralleldrive/cuid2": "^2.2.2", - "@testcontainers/mysql": "^10.28.0", + "@testcontainers/mysql": "^11.0.0", "better-sqlite3": "^11.10.0", "dotenv": "^16.5.0", "drizzle-kit": "^0.31.1", diff --git a/packages/db/test/mysql-migration.spec.ts b/packages/db/test/mysql-migration.spec.ts index 3258df726..8b178664b 100644 --- a/packages/db/test/mysql-migration.spec.ts +++ b/packages/db/test/mysql-migration.spec.ts @@ -9,7 +9,7 @@ import * as mysqlSchema from "../schema/mysql"; describe("Mysql Migration", () => { test("should add all tables and keys specified in migration files", async () => { - const mysqlContainer = await new MySqlContainer().start(); + const mysqlContainer = await new MySqlContainer("mysql:latest").start(); const connection = mysql.createConnection({ host: mysqlContainer.getHost(), diff --git a/packages/integrations/test/home-assistant.spec.ts b/packages/integrations/test/home-assistant.spec.ts index f6bebf413..8d0442a30 100644 --- a/packages/integrations/test/home-assistant.spec.ts +++ b/packages/integrations/test/home-assistant.spec.ts @@ -64,26 +64,29 @@ describe("Home Assistant integration", () => { const prepareHomeAssistantContainerAsync = async () => { const homeAssistantContainer = createHomeAssistantContainer(); const startedContainer = await homeAssistantContainer.start(); - await startedContainer.exec(["unzip", "-o", "/tmp/config.zip", "-d", "/config"]); await startedContainer.restart(); return startedContainer; }; const createHomeAssistantContainer = () => { - return new GenericContainer(IMAGE_NAME) - .withCopyFilesToContainer([ - { - source: join(__dirname, "/volumes/home-assistant-config.zip"), - target: "/tmp/config.zip", - }, - ]) - .withPrivilegedMode() - .withExposedPorts(8123) - .withWaitStrategy(Wait.forHttp("/", 8123)); + return ( + new GenericContainer(IMAGE_NAME) + .withCopyFilesToContainer([ + { + source: join(__dirname, "/volumes/home-assistant-config.zip"), + target: "/tmp/config.zip", + }, + ]) + .withPrivilegedMode() + .withExposedPorts(8123) + // This has to be a page that is not redirected (or a status code has to be defined withStatusCode(statusCode)) + .withWaitStrategy(Wait.forHttp("/onboarding.html", 8123)) + ); }; const createHomeAssistantIntegration = (container: StartedTestContainer, apiKeyOverride?: string) => { + console.log("Creating Home Assistant integration..."); return new HomeAssistantIntegration({ id: "1", decryptedSecrets: [ diff --git a/packages/integrations/test/pi-hole.spec.ts b/packages/integrations/test/pi-hole.spec.ts index 80712a370..530cf7c82 100644 --- a/packages/integrations/test/pi-hole.spec.ts +++ b/packages/integrations/test/pi-hole.spec.ts @@ -211,12 +211,15 @@ const createPiHoleIntegrationV5 = (container: StartedTestContainer, apiKey: stri }; const createPiHoleV6Container = (password: string) => { - return new GenericContainer("pihole/pihole:latest") - .withEnvironment({ - FTLCONF_webserver_api_password: password, - }) - .withExposedPorts(80) - .withWaitStrategy(Wait.forHttp("/admin", 80)); + return ( + new GenericContainer("pihole/pihole:latest") + .withEnvironment({ + FTLCONF_webserver_api_password: password, + }) + .withExposedPorts(80) + // This has to be a page that is not redirected (or a status code has to be defined withStatusCode(statusCode)) + .withWaitStrategy(Wait.forHttp("/admin/login", 80)) + ); }; const createPiHoleIntegrationV6 = (container: StartedTestContainer, apiKey: string) => { diff --git a/packages/integrations/test/sabnzbd.spec.ts b/packages/integrations/test/sabnzbd.spec.ts index f6d36a69f..c17ca83e4 100644 --- a/packages/integrations/test/sabnzbd.spec.ts +++ b/packages/integrations/test/sabnzbd.spec.ts @@ -192,16 +192,19 @@ describe("Sabnzbd integration", () => { }); const createSabnzbdContainer = () => { - return new GenericContainer(IMAGE_NAME) - .withCopyFilesToContainer([ - { - source: join(__dirname, "/volumes/usenet/sabnzbd.ini"), - target: "/config/sabnzbd.ini", - }, - ]) - .withExposedPorts(1212) - .withEnvironment({ PUID: "0", PGID: "0" }) - .withWaitStrategy(Wait.forHttp("/", 1212)); + return ( + new GenericContainer(IMAGE_NAME) + .withCopyFilesToContainer([ + { + source: join(__dirname, "/volumes/usenet/sabnzbd.ini"), + target: "/config/sabnzbd.ini", + }, + ]) + .withExposedPorts(1212) + .withEnvironment({ PUID: "0", PGID: "0" }) + // This has to be a page that is not redirected (or a status code has to be defined withStatusCode(statusCode)) + .withWaitStrategy(Wait.forHttp("/sabnzbd/wizard/", 1212)) + ); }; const createSabnzbdIntegration = (container: StartedTestContainer, apiKey: string) => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2e43f5e81..6dd359a8d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -65,8 +65,8 @@ importers: specifier: ^24.2.5 version: 24.2.5(typescript@5.8.3) testcontainers: - specifier: ^10.28.0 - version: 10.28.0 + specifier: ^11.0.0 + version: 11.0.0 turbo: specifier: ^2.5.4 version: 2.5.4 @@ -1045,8 +1045,8 @@ importers: specifier: ^2.2.2 version: 2.2.2 '@testcontainers/mysql': - specifier: ^10.28.0 - version: 10.28.0 + specifier: ^11.0.0 + version: 11.0.0 better-sqlite3: specifier: ^11.10.0 version: 11.10.0 @@ -3184,10 +3184,6 @@ packages: resolution: {integrity: sha512-hgTjb7vHNXPiSSshAJSE6D5w2bMW6jWklj52B2SG5BI5GakkH14PxDiXHzyRZrJgVd2t1BEcA/aaM8eXazUHaA==} engines: {node: '>= 18'} - '@fastify/busboy@2.1.1': - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} - engines: {node: '>=14'} - '@floating-ui/core@1.6.8': resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} @@ -4280,8 +4276,8 @@ packages: '@tanstack/virtual-core@3.11.2': resolution: {integrity: sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==} - '@testcontainers/mysql@10.28.0': - resolution: {integrity: sha512-yZKe86Esg8mPyr957aSwdkmDqXH17vab5aUcDqwR/E2fZpZxLetwfvmoVP+V6TpQQNTYrVTyP5T+HPMgaZeIkA==} + '@testcontainers/mysql@11.0.0': + resolution: {integrity: sha512-DmvcShjr7tbikieevFYWK85MD+bVYNZIGvqvtM+tDEpXiejgJ8M3WDnrKf09XScEQ/3+NPOud4TBRU4L8+t88w==} '@tiptap/core@2.12.0': resolution: {integrity: sha512-3qX8oGVKFFZzQ0vit+ZolR6AJIATBzmEmjAA0llFhWk4vf3v64p1YcXcJsOBsr5scizJu5L6RYWEFatFwqckRg==} @@ -6001,8 +5997,8 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - docker-compose@0.24.8: - resolution: {integrity: sha512-plizRs/Vf15H+GCVxq2EUvyPK7ei9b/cVesHvjnX4xaXjM9spHe2Ytq0BitndFgvTJ3E3NljPNUEl7BAN43iZw==} + docker-compose@1.2.0: + resolution: {integrity: sha512-wIU1eHk3Op7dFgELRdmOYlPYS4gP8HhH1ZmZa13QZF59y0fblzFDFmKPhyc05phCy2hze9OEvNZAsoljrs+72w==} engines: {node: '>= 6.0.0'} docker-modem@5.0.6: @@ -9641,6 +9637,9 @@ packages: tar-fs@3.0.8: resolution: {integrity: sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==} + tar-fs@3.0.9: + resolution: {integrity: sha512-XF4w9Xp+ZQgifKakjZYmFdkLoSWd34VGKcsTCwlNWM7QG3ZbaxnTsaBwnjFZqHRf/rROxaR8rXnbtwdvaDI+lA==} + tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} @@ -9681,8 +9680,8 @@ packages: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} - testcontainers@10.28.0: - resolution: {integrity: sha512-1fKrRRCsgAQNkarjHCMKzBKXSJFmzNTiTbhb5E/j5hflRXChEtHvkefjaHlgkNUjfw92/Dq8LTgwQn6RDBFbMg==} + testcontainers@11.0.0: + resolution: {integrity: sha512-8zY2V+eovC6aylgMqMR3A7H+un2gqpqepbvBCnjo7QP2fpI0pJZhSus+A5TckHpF2CR2d1Zj/IQ5rNPW/HjS6g==} text-decoder@1.2.0: resolution: {integrity: sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==} @@ -10046,10 +10045,6 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici@5.29.0: - resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} - engines: {node: '>=14.0'} - undici@7.10.0: resolution: {integrity: sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==} engines: {node: '>=20.18.1'} @@ -11337,8 +11332,6 @@ snapshots: transitivePeerDependencies: - encoding - '@fastify/busboy@2.1.1': {} - '@floating-ui/core@1.6.8': dependencies: '@floating-ui/utils': 0.2.8 @@ -12767,9 +12760,9 @@ snapshots: '@tanstack/virtual-core@3.11.2': {} - '@testcontainers/mysql@10.28.0': + '@testcontainers/mysql@11.0.0': dependencies: - testcontainers: 10.28.0 + testcontainers: 11.0.0 transitivePeerDependencies: - bare-buffer - supports-color @@ -14678,7 +14671,7 @@ snapshots: dependencies: path-type: 4.0.0 - docker-compose@0.24.8: + docker-compose@1.2.0: dependencies: yaml: 2.5.1 @@ -19013,6 +19006,16 @@ snapshots: transitivePeerDependencies: - bare-buffer + tar-fs@3.0.9: + dependencies: + pump: 3.0.2 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 4.1.2 + bare-path: 3.0.0 + transitivePeerDependencies: + - bare-buffer + tar-stream@2.2.0: dependencies: bl: 4.1.0 @@ -19058,23 +19061,23 @@ snapshots: glob: 10.4.5 minimatch: 9.0.5 - testcontainers@10.28.0: + testcontainers@11.0.0: dependencies: '@balena/dockerignore': 1.0.2 '@types/dockerode': 3.3.39 archiver: 7.0.1 async-lock: 1.4.1 byline: 5.0.0 - debug: 4.4.0 - docker-compose: 0.24.8 + debug: 4.4.1 + docker-compose: 1.2.0 dockerode: 4.0.6 get-port: 7.1.0 proper-lockfile: 4.1.2 properties-reader: 2.3.0 ssh-remote-port-forward: 1.0.4 - tar-fs: 3.0.8 + tar-fs: 3.0.9 tmp: 0.2.3 - undici: 5.29.0 + undici: 7.10.0 transitivePeerDependencies: - bare-buffer - supports-color @@ -19442,10 +19445,6 @@ snapshots: undici-types@6.21.0: {} - undici@5.29.0: - dependencies: - '@fastify/busboy': 2.1.1 - undici@7.10.0: {} unicode-emoji-modifier-base@1.0.0: {}