##
# Linux E2E environment for OpenHuman desktop app.
#
# Mirrors the ubuntu-22.04 CI runner so macOS developers can run the
# same Linux-based E2E stack locally via Docker.
#
# Usage:
#   docker compose -f e2e/docker-compose.yml run --rm e2e
#
# Or manually:
#   docker build -t openhuman-e2e -f e2e/Dockerfile .
#   docker run --rm -v "$(pwd):/app" openhuman-e2e yarn workspace openhuman-app test:e2e:all
#
FROM ubuntu:22.04

ENV DEBIAN_FRONTEND=noninteractive

# System dependencies for Tauri + webkit2gtk
RUN apt-get update && apt-get install -y \
  bash curl build-essential pkg-config \
  libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev \
  librsvg2-dev patchelf libssl-dev \
  xvfb at-spi2-core dbus-x11 webkit2gtk-driver \
  clang libclang-dev cmake \
  git ca-certificates \
  && rm -rf /var/lib/apt/lists/*

# Rust 1.93.0
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
  sh -s -- -y --default-toolchain 1.93.0
ENV PATH="/root/.cargo/bin:${PATH}"

# Node.js 24.x + Yarn
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
  apt-get install -y nodejs && \
  npm install -g yarn && \
  rm -rf /var/lib/apt/lists/*

# tauri-driver (WebDriver server for Tauri apps)
RUN cargo install tauri-driver --version 2.0.5

WORKDIR /app

COPY e2e/docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh

ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["yarn", "workspace", "openhuman-app", "test:e2e:all"]
