# Add the desired versions for cypress, node and chrome
ARG CYPRESS_VERSION="14.2.1"
ARG CHROME_VERSION="142.0.7444.59-1"
ARG NODE_VERSION="22.21.1"
ARG YARN_VERSION="1.22.22"

FROM public.ecr.aws/cypress-io/cypress/factory:latest AS fargate
ENV NODE_VERSION=22.21.1
ENV IS_DOCKER=true
# Adding needed libraries and awscli

RUN apt-mark hold google-chrome-stable

RUN apt-get update \
  && apt-get upgrade -y \
  && apt-get install -y --no-install-recommends \
  zip \
  unzip \
  awscli \
  make \
  curl \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*

# Add cypress framework files to install dependencies
COPY package.json .
COPY yarn.lock .
COPY cypress.config.js .

RUN yarn ci

COPY Makefile ./Makefile
COPY scripts ./scripts
COPY framework/src/rerunPlugin.js ./framework/src/rerunPlugin.js
COPY framework/src/rerunner.js ./framework/src/rerunner.js
COPY cypress ./cypress

RUN mkdir -p ./cypress/videos
RUN mkdir -p ./cypress/screenshots

# Set NO_COLOR environment variable to disable colored output
ENV NO_COLOR=1

# Verify cypress has been installed correctly
RUN npx cypress verify

# Add a default cmd command.
ENV CHECKENV=true
CMD ["yarn", "check:env"]

FROM 086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:node22 AS jenkins
USER root
ENV IS_DOCKER=true
# Adding needed libraries and awscli
RUN apt-get update \
  && apt-get upgrade -y \
  && apt-get install -y --no-install-recommends \
  zip \
  unzip \
  awscli \
  make \
  curl \
  git \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*
COPY /framework/package.json framework/yarn.lock /data/
WORKDIR /data

RUN yarn install
ENV PATH=/data/node_modules/.bin:$PATH
ARG UID=1103
ARG GID=1103
RUN groupadd -g $GID -o jenkins
RUN useradd -m -u $UID -g $GID -o -s /bin/bash jenkins
USER jenkins
WORKDIR /data/e2e

# Needed for runner to upload cicd.json
RUN git config --global --add safe.directory /data/e2e
