echo "---> cds-playwright-e2e.sh"
-# ── Install Node.js 18 LTS ────────────────────────────────────────────────────
-echo "---> Installing Node.js 18"
-sudo apt-get update -qq
-sudo apt-get install -y -qq nodejs npm > /dev/null 2>&1
-sudo npm install -g n > /dev/null 2>&1
-sudo n 18 > /dev/null 2>&1
-hash -r
+# ── Install Node.js via nvm (no sudo/apt) ───────────────────────────────────
+NODE_VERSION="${NODE_VERSION:-18}"
+NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
+export NVM_DIR
+
+echo "---> Preparing Node.js ${NODE_VERSION} with nvm"
+
+if [[ ! -s "$NVM_DIR/nvm.sh" ]]; then
+ echo "---> Installing nvm"
+ curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
+fi
+
+# shellcheck source=/dev/null disable=SC1090
+source "$NVM_DIR/nvm.sh"
+
+nvm install "$NODE_VERSION"
+nvm use "$NODE_VERSION"
+
echo "Node.js version: $(node --version)"
echo "npm version: $(npm --version)"
+npm_install() {
+ if [[ -f package-lock.json ]]; then
+ npm ci
+ else
+ npm install
+ fi
+}
+
# ── Install dependencies for each component ───────────────────────────────────
echo "---> Installing server (LoopBack BFF) dependencies"
cd "$WORKSPACE/cds-ui/server"
-npm install
+npm_install
echo "---> Installing designer-client (Angular) dependencies"
cd "$WORKSPACE/cds-ui/designer-client"
-npm install
+npm_install
echo "---> Installing e2e-playwright dependencies"
cd "$WORKSPACE/cds-ui/e2e-playwright"
-npm install
+npm_install
-# ── Install Playwright browser (Firefox, matching the config) ──────────────────
-echo "---> Installing Playwright Firefox browser with system dependencies"
-npx playwright install --with-deps firefox
+# ── Install Playwright browser (Firefox, matching the config) ────────────────
+echo "---> Installing Playwright Firefox browser"
+npx playwright install firefox
# ── Run the tests ──────────────────────────────────────────────────────────────
echo "---> Running Playwright e2e tests (CI=true)"