FROM node:24

RUN DEBIAN_FRONTEND="noninteractive" apt-get update \
  && apt-get install -y --no-install-recommends ca-certificates nano ffmpeg xvfb git-core tmux locales mosquitto x11vnc
RUN apt-get install -yq --no-install-recommends libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 libnss3

# Generate locales for TMUX
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

# Configure mosquitto for anonymous access (required for tests)
RUN mkdir -p /etc/mosquitto/conf.d && \
    echo "listener 1883" > /etc/mosquitto/conf.d/default.conf && \
    echo "allow_anonymous true" >> /etc/mosquitto/conf.d/default.conf && \
    echo "persistence false" >> /etc/mosquitto/conf.d/default.conf

# Install Playwright and browsers
# This ensures Playwright browsers are pre-installed in the container
RUN npm install -g playwright@1.57.0 && \
    npx playwright install --with-deps chromium

CMD /bin/bash

VOLUME /app
EXPOSE 5900
