From d251586510123fe8ada704f45323024f55ffd32e Mon Sep 17 00:00:00 2001 From: "F. Levi" <55688616+flevi29@users.noreply.github.com> Date: Wed, 24 Sep 2025 15:25:11 +0300 Subject: [PATCH 1/7] Add meilisearch target version and logic --- .github/workflows/tests.yml | 14 +++++++++++++- CONTRIBUTING.md | 17 ++++++++++++----- docker-compose.yml | 22 --------------------- package.json | 4 +++- scripts/docker-meilisearch.js | 36 +++++++++++++++++++++++++++++++++++ tests/errors.test.ts | 7 +++---- tests/setup.ts | 20 +++++++++++++++++++ vite.config.ts | 1 + 8 files changed, 88 insertions(+), 33 deletions(-) delete mode 100644 docker-compose.yml create mode 100644 scripts/docker-meilisearch.js create mode 100644 tests/setup.ts diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c154680fa..1cf339959 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -12,6 +12,17 @@ on: - main jobs: + meilisearch-version: + runs-on: ubuntu-latest + outputs: + version: ${{ steps.get-version-step.outputs.meilisearch_version }} + steps: + - uses: actions/checkout@v5 + - name: Grep docker beta version of Meilisearch + id: get-version-step + run: | + MEILISEARCH_VERSION=$(node -p "require('./package.json').meilisearchTargetVersion") + echo "meilisearch_version=$MEILISEARCH_VERSION" >> $GITHUB_OUTPUT integration_tests: # Will not run if the event is a PR to bump-meilisearch-v* (so a pre-release PR) # Will not run if the event is a PR to pre-release-beta/* @@ -25,9 +36,10 @@ jobs: !startsWith(github.base_ref, 'prototype-beta/') && !startsWith(github.head_ref, 'pre-release-beta/') runs-on: ubuntu-latest + needs: meilisearch-version services: meilisearch: - image: getmeili/meilisearch:latest + image: getmeili/meilisearch:${{ needs.meilisearch-version.outputs.version }} env: MEILI_MASTER_KEY: 'masterKey' MEILI_NO_ANALYTICS: 'true' diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f69ec2bfe..b1c5a8fe7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -34,17 +34,24 @@ First of all, thank you for contributing to Meilisearch! The goal of this docume To run this project, you will need: -- Node >= v20 and Node <= 22 -- Yarn v1.x +- [Node.js v20 or newer](https://nodejs.org/en/download) +- [Docker](https://www.docker.com/products/docker-desktop/) ### Setup -You can set up your local environment natively or using `docker`, check out the [`docker-compose.yml`](/docker-compose.yml). +To enable [corepack](https://github.com/nodejs/corepack) for +[Yarn](https://classic.yarnpkg.com/en/) to work: -Example of running all the checks with docker: +```bash +corepack enable +``` + +To run Meilisearch for testing: ```bash -docker-compose run --rm package bash -c "yarn install && yarn test && yarn lint" +yarn docker +# or if you wish to run it in the background in detached mode +yarn docker -d ``` To install dependencies: diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index cb0c9c7dc..000000000 --- a/docker-compose.yml +++ /dev/null @@ -1,22 +0,0 @@ -services: - package: - image: node:22 - tty: true - stdin_open: true - working_dir: /home/package - environment: - - MEILISEARCH_URL=http://meilisearch:7700 - depends_on: - - meilisearch - links: - - meilisearch - volumes: - - ./:/home/package - - meilisearch: - image: getmeili/meilisearch - ports: - - "7700:7700" - environment: - - MEILI_MASTER_KEY=masterKey - - MEILI_NO_ANALYTICS=true diff --git a/package.json b/package.json index e0272e35c..943d9aced 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "name": "meilisearch", "version": "0.53.0", + "meilisearchTargetVersion": "1.18.0", "description": "The Meilisearch JS client for Node.js and the browser.", "keywords": [ "meilisearch", @@ -61,7 +62,8 @@ "lint:fix": "eslint --fix", "style": "yarn fmt && yarn lint", "style:fix": "yarn fmt:fix && yarn lint:fix", - "prepare": "husky" + "prepare": "husky", + "docker": "node scripts/docker-meilisearch.js" }, "files": [ "src", diff --git a/scripts/docker-meilisearch.js b/scripts/docker-meilisearch.js new file mode 100644 index 000000000..cd8942235 --- /dev/null +++ b/scripts/docker-meilisearch.js @@ -0,0 +1,36 @@ +import { spawn } from "node:child_process"; +import { argv } from "node:process"; +import pkg from "../package.json" with { type: "json" }; + +const { meilisearchTargetVersion } = pkg; + +spawn( + "docker", + [ + // https://docs.docker.com/reference/cli/docker/container/run + "run", + + // https://docs.docker.com/reference/cli/docker/container/run/#rm + "--rm", + + // https://docs.docker.com/reference/cli/docker/container/run/#name + "--name", + "meilisearch", + + // https://docs.docker.com/reference/cli/docker/container/run/#publish + "-p", + "7700:7700", + + // https://docs.docker.com/reference/cli/docker/container/run/#env + "-e", + "MEILI_MASTER_KEY=masterKey", + "-e", + "MEILI_NO_ANALYTICS=true", + + // any other arguments passed to this script file + ...argv.slice(2), + + `getmeili/meilisearch:v${meilisearchTargetVersion}`, + ], + { stdio: "inherit" }, +); diff --git a/tests/errors.test.ts b/tests/errors.test.ts index f9596f98a..88ebb0a54 100644 --- a/tests/errors.test.ts +++ b/tests/errors.test.ts @@ -1,13 +1,12 @@ -import { test, describe, beforeEach, vi } from "vitest"; +import { test, describe, vi, beforeAll } from "vitest"; import { MeiliSearch, assert } from "./utils/meilisearch-test-utils.js"; import { MeiliSearchRequestError } from "../src/index.js"; const mockedFetch = vi.fn(); -globalThis.fetch = mockedFetch; describe("Test on updates", () => { - beforeEach(() => { - mockedFetch.mockReset(); + beforeAll(() => { + globalThis.fetch = mockedFetch; }); test(`Throw MeilisearchRequestError when thrown error is not MeiliSearchApiError`, async () => { diff --git a/tests/setup.ts b/tests/setup.ts new file mode 100644 index 000000000..ba6b3057c --- /dev/null +++ b/tests/setup.ts @@ -0,0 +1,20 @@ +import { beforeAll } from "vitest"; +import pkg from "../package.json" with { type: "json" }; +import { getClient } from "./utils/meilisearch-test-utils.js"; + +/** + * Asserts meilisearch is reachable, and version is what is configured in + * `package.json`. + */ +beforeAll(async () => { + const client = await getClient("MASTER"); + const { pkgVersion } = await client.getVersion(); + + if (pkgVersion !== pkg.meilisearchTargetVersion) { + // TODO: Also print address of meilisearch so it's super clear what the error is about + throw new Error( + "test environment Meilisearch version doesn't match configured version; " + + `expected ${pkg.meilisearchTargetVersion}, got ${pkgVersion}`, + ); + } +}); diff --git a/vite.config.ts b/vite.config.ts index 9e2244eda..9c8e044d7 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -54,6 +54,7 @@ export default defineConfig(({ mode }) => { : undefined, }, test: { + setupFiles: "tests/setup.ts", include: ["tests/**/*.test.ts"], exclude: ["tests/env/**"], fileParallelism: false, From 1b81635deb70d4da51572299e375d90cad3f17a6 Mon Sep 17 00:00:00 2001 From: "F. Levi" <55688616+flevi29@users.noreply.github.com> Date: Wed, 24 Sep 2025 15:28:23 +0300 Subject: [PATCH 2/7] Fix image version --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1cf339959..6368b6b07 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -39,7 +39,7 @@ jobs: needs: meilisearch-version services: meilisearch: - image: getmeili/meilisearch:${{ needs.meilisearch-version.outputs.version }} + image: getmeili/meilisearch:v${{ needs.meilisearch-version.outputs.version }} env: MEILI_MASTER_KEY: 'masterKey' MEILI_NO_ANALYTICS: 'true' From 7c761aa047e74460902fc11ea52e05d15305b59f Mon Sep 17 00:00:00 2001 From: "F. Levi" <55688616+flevi29@users.noreply.github.com> Date: Wed, 24 Sep 2025 16:06:27 +0300 Subject: [PATCH 3/7] Minor adjustments --- .github/workflows/tests.yml | 2 +- scripts/docker-meilisearch.js | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6368b6b07..8927226dd 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -18,7 +18,7 @@ jobs: version: ${{ steps.get-version-step.outputs.meilisearch_version }} steps: - uses: actions/checkout@v5 - - name: Grep docker beta version of Meilisearch + - name: Get required version of meilisearch id: get-version-step run: | MEILISEARCH_VERSION=$(node -p "require('./package.json').meilisearchTargetVersion") diff --git a/scripts/docker-meilisearch.js b/scripts/docker-meilisearch.js index cd8942235..d0bdeddde 100644 --- a/scripts/docker-meilisearch.js +++ b/scripts/docker-meilisearch.js @@ -1,10 +1,12 @@ -import { spawn } from "node:child_process"; +import { spawnSync } from "node:child_process"; import { argv } from "node:process"; import pkg from "../package.json" with { type: "json" }; const { meilisearchTargetVersion } = pkg; -spawn( +// TODO: On Windows this isn't always terminated properly, resulting +// in the docker container not stopping, but this is not a big issue. +spawnSync( "docker", [ // https://docs.docker.com/reference/cli/docker/container/run From a21e498b6257776ddad9b16c6e27e7349c0f0c78 Mon Sep 17 00:00:00 2001 From: "F. Levi" <55688616+flevi29@users.noreply.github.com> Date: Wed, 1 Oct 2025 12:26:37 +0300 Subject: [PATCH 4/7] Make setup fully handle docker service, other minor changes --- .github/workflows/tests.yml | 40 ++++++------ scripts/docker-meilisearch.js | 38 ----------- src/meilisearch.ts | 10 ++- tests/setup.ts | 120 +++++++++++++++++++++++++++++----- vite.config.ts | 2 +- 5 files changed, 134 insertions(+), 76 deletions(-) delete mode 100644 scripts/docker-meilisearch.js diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8927226dd..042fdd98f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -12,17 +12,17 @@ on: - main jobs: - meilisearch-version: - runs-on: ubuntu-latest - outputs: - version: ${{ steps.get-version-step.outputs.meilisearch_version }} - steps: - - uses: actions/checkout@v5 - - name: Get required version of meilisearch - id: get-version-step - run: | - MEILISEARCH_VERSION=$(node -p "require('./package.json').meilisearchTargetVersion") - echo "meilisearch_version=$MEILISEARCH_VERSION" >> $GITHUB_OUTPUT + # meilisearch-version: + # runs-on: ubuntu-latest + # outputs: + # version: ${{ steps.get-version-step.outputs.meilisearch_version }} + # steps: + # - uses: actions/checkout@v5 + # - name: Get required version of meilisearch + # id: get-version-step + # run: | + # MEILISEARCH_VERSION=$(node -p "require('./package.json').meilisearchTargetVersion") + # echo "meilisearch_version=$MEILISEARCH_VERSION" >> $GITHUB_OUTPUT integration_tests: # Will not run if the event is a PR to bump-meilisearch-v* (so a pre-release PR) # Will not run if the event is a PR to pre-release-beta/* @@ -36,15 +36,15 @@ jobs: !startsWith(github.base_ref, 'prototype-beta/') && !startsWith(github.head_ref, 'pre-release-beta/') runs-on: ubuntu-latest - needs: meilisearch-version - services: - meilisearch: - image: getmeili/meilisearch:v${{ needs.meilisearch-version.outputs.version }} - env: - MEILI_MASTER_KEY: 'masterKey' - MEILI_NO_ANALYTICS: 'true' - ports: - - '7700:7700' + # needs: meilisearch-version + # services: + # meilisearch: + # image: getmeili/meilisearch:v${{ needs.meilisearch-version.outputs.version }} + # env: + # MEILI_MASTER_KEY: 'masterKey' + # MEILI_NO_ANALYTICS: 'true' + # ports: + # - '7700:7700' strategy: fail-fast: false matrix: diff --git a/scripts/docker-meilisearch.js b/scripts/docker-meilisearch.js deleted file mode 100644 index d0bdeddde..000000000 --- a/scripts/docker-meilisearch.js +++ /dev/null @@ -1,38 +0,0 @@ -import { spawnSync } from "node:child_process"; -import { argv } from "node:process"; -import pkg from "../package.json" with { type: "json" }; - -const { meilisearchTargetVersion } = pkg; - -// TODO: On Windows this isn't always terminated properly, resulting -// in the docker container not stopping, but this is not a big issue. -spawnSync( - "docker", - [ - // https://docs.docker.com/reference/cli/docker/container/run - "run", - - // https://docs.docker.com/reference/cli/docker/container/run/#rm - "--rm", - - // https://docs.docker.com/reference/cli/docker/container/run/#name - "--name", - "meilisearch", - - // https://docs.docker.com/reference/cli/docker/container/run/#publish - "-p", - "7700:7700", - - // https://docs.docker.com/reference/cli/docker/container/run/#env - "-e", - "MEILI_MASTER_KEY=masterKey", - "-e", - "MEILI_NO_ANALYTICS=true", - - // any other arguments passed to this script file - ...argv.slice(2), - - `getmeili/meilisearch:v${meilisearchTargetVersion}`, - ], - { stdio: "inherit" }, -); diff --git a/src/meilisearch.ts b/src/meilisearch.ts index b2e7d7527..35422a8b5 100644 --- a/src/meilisearch.ts +++ b/src/meilisearch.ts @@ -473,8 +473,14 @@ export class MeiliSearch { * * @returns Promise returning an object with health details */ - async health(): Promise { - return await this.httpRequest.get({ path: "health" }); + async health( + // TODO: Need to do this for all other methods: https://github.com/meilisearch/meilisearch-js/issues/1476 + extraRequestInit?: ExtraRequestInit, + ): Promise { + return await this.httpRequest.get({ + path: "health", + extraRequestInit, + }); } /** diff --git a/tests/setup.ts b/tests/setup.ts index ba6b3057c..a3ab7ccc6 100644 --- a/tests/setup.ts +++ b/tests/setup.ts @@ -1,20 +1,110 @@ -import { beforeAll } from "vitest"; +import { spawnSync } from "node:child_process"; +import { MeiliSearch } from "../src/meilisearch.js"; import pkg from "../package.json" with { type: "json" }; -import { getClient } from "./utils/meilisearch-test-utils.js"; +const POLL_INTERVAL = 250; +const CONTAINER_NAME = "meilisearch"; +const TIMEOUT = 15_000; +const TIMEOUT_ID = Symbol(); + +function removeIfExistsMeilisearchDockerService(): void { + spawnSync( + "docker", + + // https://docs.docker.com/reference/cli/docker/container/rm/ + ["container", "rm", "-f", CONTAINER_NAME], + + // TODO: prefix + { stdio: "inherit" }, + ); +} + +function startMeilisearchDockerService(meilisearchVersion: string): void { + spawnSync( + "docker", + [ + // https://docs.docker.com/reference/cli/docker/container/run + "run", + + // https://docs.docker.com/reference/cli/docker/container/run/#rm + "--rm", + + // https://docs.docker.com/reference/cli/docker/container/run/#detach + "-d", + + // https://docs.docker.com/reference/cli/docker/container/run/#name + "--name", + CONTAINER_NAME, + + // https://docs.docker.com/reference/cli/docker/container/run/#publish + "-p", + "7700:7700", + + // https://docs.docker.com/reference/cli/docker/container/run/#env + "-e", + "MEILI_MASTER_KEY=masterKey", + "-e", + "MEILI_NO_ANALYTICS=true", + + `getmeili/meilisearch:v${meilisearchVersion}`, + ], + + // TODO: prefix + { stdio: "inherit" }, + ); +} + +/** Poll Meilisearch until its reachable. */ +async function waitForMeiliSearch(): Promise { + const ms = new MeiliSearch({ host: "http://127.0.0.1:7700" }); + let lastError; + + const ac = new AbortController(); + + const toId = setTimeout(() => void ac.abort(TIMEOUT_ID), TIMEOUT); + + for (;;) { + try { + await ms.health({ signal: ac.signal }); + + clearTimeout(toId); + + break; + } catch (error) { + if (Object.is((error as Error).cause, TIMEOUT_ID)) { + throw new Error( + `connection unsuccessful to meilisearch after ${TIMEOUT}ms`, + { cause: lastError }, + ); + } + + lastError = error; + } + + await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL)); + } +} + +// TODO /** - * Asserts meilisearch is reachable, and version is what is configured in - * `package.json`. + * Description. + * + * {@link https://vitest.dev/config/#globalsetup} */ -beforeAll(async () => { - const client = await getClient("MASTER"); - const { pkgVersion } = await client.getVersion(); - - if (pkgVersion !== pkg.meilisearchTargetVersion) { - // TODO: Also print address of meilisearch so it's super clear what the error is about - throw new Error( - "test environment Meilisearch version doesn't match configured version; " + - `expected ${pkg.meilisearchTargetVersion}, got ${pkgVersion}`, - ); +export default async function () { + const { meilisearchTargetVersion } = pkg; + + try { + removeIfExistsMeilisearchDockerService(); + + startMeilisearchDockerService(meilisearchTargetVersion); + + await waitForMeiliSearch(); + + return removeIfExistsMeilisearchDockerService; + } catch (error) { + removeIfExistsMeilisearchDockerService(); + + throw error; } -}); +} diff --git a/vite.config.ts b/vite.config.ts index 9c8e044d7..a94d82238 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -54,7 +54,7 @@ export default defineConfig(({ mode }) => { : undefined, }, test: { - setupFiles: "tests/setup.ts", + globalSetup: "tests/setup.ts", include: ["tests/**/*.test.ts"], exclude: ["tests/env/**"], fileParallelism: false, From 22f0445f560ecf1fcc19af8090f39c5fea6c02ac Mon Sep 17 00:00:00 2001 From: "F. Levi" <55688616+flevi29@users.noreply.github.com> Date: Wed, 1 Oct 2025 16:56:52 +0300 Subject: [PATCH 5/7] Check if there's already a reachable Meilisearch instance before doing anything --- .github/workflows/tests.yml | 40 ++++++++++++++++++------------------ tests/setup.ts | 41 ++++++++++++++++++++++++++++++------- 2 files changed, 54 insertions(+), 27 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 042fdd98f..8927226dd 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -12,17 +12,17 @@ on: - main jobs: - # meilisearch-version: - # runs-on: ubuntu-latest - # outputs: - # version: ${{ steps.get-version-step.outputs.meilisearch_version }} - # steps: - # - uses: actions/checkout@v5 - # - name: Get required version of meilisearch - # id: get-version-step - # run: | - # MEILISEARCH_VERSION=$(node -p "require('./package.json').meilisearchTargetVersion") - # echo "meilisearch_version=$MEILISEARCH_VERSION" >> $GITHUB_OUTPUT + meilisearch-version: + runs-on: ubuntu-latest + outputs: + version: ${{ steps.get-version-step.outputs.meilisearch_version }} + steps: + - uses: actions/checkout@v5 + - name: Get required version of meilisearch + id: get-version-step + run: | + MEILISEARCH_VERSION=$(node -p "require('./package.json').meilisearchTargetVersion") + echo "meilisearch_version=$MEILISEARCH_VERSION" >> $GITHUB_OUTPUT integration_tests: # Will not run if the event is a PR to bump-meilisearch-v* (so a pre-release PR) # Will not run if the event is a PR to pre-release-beta/* @@ -36,15 +36,15 @@ jobs: !startsWith(github.base_ref, 'prototype-beta/') && !startsWith(github.head_ref, 'pre-release-beta/') runs-on: ubuntu-latest - # needs: meilisearch-version - # services: - # meilisearch: - # image: getmeili/meilisearch:v${{ needs.meilisearch-version.outputs.version }} - # env: - # MEILI_MASTER_KEY: 'masterKey' - # MEILI_NO_ANALYTICS: 'true' - # ports: - # - '7700:7700' + needs: meilisearch-version + services: + meilisearch: + image: getmeili/meilisearch:v${{ needs.meilisearch-version.outputs.version }} + env: + MEILI_MASTER_KEY: 'masterKey' + MEILI_NO_ANALYTICS: 'true' + ports: + - '7700:7700' strategy: fail-fast: false matrix: diff --git a/tests/setup.ts b/tests/setup.ts index a3ab7ccc6..fe9f26321 100644 --- a/tests/setup.ts +++ b/tests/setup.ts @@ -7,6 +7,8 @@ const CONTAINER_NAME = "meilisearch"; const TIMEOUT = 15_000; const TIMEOUT_ID = Symbol(); +const ms = new MeiliSearch({ host: "http://127.0.0.1:7700" }); + function removeIfExistsMeilisearchDockerService(): void { spawnSync( "docker", @@ -14,7 +16,7 @@ function removeIfExistsMeilisearchDockerService(): void { // https://docs.docker.com/reference/cli/docker/container/rm/ ["container", "rm", "-f", CONTAINER_NAME], - // TODO: prefix + // TODO: prefix output { stdio: "inherit" }, ); } @@ -49,14 +51,13 @@ function startMeilisearchDockerService(meilisearchVersion: string): void { `getmeili/meilisearch:v${meilisearchVersion}`, ], - // TODO: prefix + // TODO: prefix output { stdio: "inherit" }, ); } /** Poll Meilisearch until its reachable. */ async function waitForMeiliSearch(): Promise { - const ms = new MeiliSearch({ host: "http://127.0.0.1:7700" }); let lastError; const ac = new AbortController(); @@ -85,20 +86,46 @@ async function waitForMeiliSearch(): Promise { } } -// TODO /** - * Description. + * In case there is a connection, return Meilisearch version, and + * `null`otherwise. + */ +async function checkConnectionAndVersion(): Promise { + try { + const { pkgVersion } = await ms.getVersion(); + return pkgVersion; + } catch { + return null; + } +} + +// TODO: could use docker image save/load and https://github.com/actions/cache?tab=readme-ov-file +// instead of github workflows services + +/** + * If there is no connection to Meilisearch, create a docker service of it, and + * wait for connection. * * {@link https://vitest.dev/config/#globalsetup} */ export default async function () { const { meilisearchTargetVersion } = pkg; + const meilisearchVersion = await checkConnectionAndVersion(); + + if ( + meilisearchVersion !== null && + meilisearchVersion !== meilisearchTargetVersion + ) { + throw new Error( + "Meilisearch is reachable but it is the wrong version " + + `(expected ${meilisearchTargetVersion}, got ${meilisearchVersion})`, + ); + } + try { removeIfExistsMeilisearchDockerService(); - startMeilisearchDockerService(meilisearchTargetVersion); - await waitForMeiliSearch(); return removeIfExistsMeilisearchDockerService; From b2f37ab9b9ecce43af81d408413f151e9625dc5e Mon Sep 17 00:00:00 2001 From: "F. Levi" <55688616+flevi29@users.noreply.github.com> Date: Wed, 1 Oct 2025 17:04:25 +0300 Subject: [PATCH 6/7] Fix logic --- tests/setup.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/setup.ts b/tests/setup.ts index fe9f26321..8d872ff98 100644 --- a/tests/setup.ts +++ b/tests/setup.ts @@ -112,15 +112,15 @@ export default async function () { const { meilisearchTargetVersion } = pkg; const meilisearchVersion = await checkConnectionAndVersion(); + if (meilisearchVersion !== null) { + if (meilisearchVersion !== meilisearchTargetVersion) { + throw new Error( + "Meilisearch is reachable but it is the wrong version " + + `(expected ${meilisearchTargetVersion}, got ${meilisearchVersion})`, + ); + } - if ( - meilisearchVersion !== null && - meilisearchVersion !== meilisearchTargetVersion - ) { - throw new Error( - "Meilisearch is reachable but it is the wrong version " + - `(expected ${meilisearchTargetVersion}, got ${meilisearchVersion})`, - ); + return; } try { From 30b5a7d0b582928953b16d04c3e39673d3beff8f Mon Sep 17 00:00:00 2001 From: "F. Levi" <55688616+flevi29@users.noreply.github.com> Date: Wed, 1 Oct 2025 19:28:07 +0300 Subject: [PATCH 7/7] Fix missing api key --- tests/setup.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/setup.ts b/tests/setup.ts index 8d872ff98..618f74b39 100644 --- a/tests/setup.ts +++ b/tests/setup.ts @@ -7,7 +7,10 @@ const CONTAINER_NAME = "meilisearch"; const TIMEOUT = 15_000; const TIMEOUT_ID = Symbol(); -const ms = new MeiliSearch({ host: "http://127.0.0.1:7700" }); +const ms = new MeiliSearch({ + host: "http://127.0.0.1:7700", + apiKey: "masterKey", +}); function removeIfExistsMeilisearchDockerService(): void { spawnSync( @@ -48,6 +51,7 @@ function startMeilisearchDockerService(meilisearchVersion: string): void { "-e", "MEILI_NO_ANALYTICS=true", + // https://hub.docker.com/r/getmeili/meilisearch `getmeili/meilisearch:v${meilisearchVersion}`, ],