From 054a18a2635fda0070b1ba4aecd5c35c74f6f809 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 13 May 2025 13:42:41 -0400 Subject: [PATCH 1/6] node 22 base/browser internal images --- .../node-22/22.14.0-bullseye/Dockerfile | 94 +++++++++++++++++++ .../node-22/22.14.0-bullseye/build.sh | 5 + .../node-22/22.14.0-yarn-berry/Dockerfile | 68 ++++++++++++++ .../node-22/22.14.0-yarn-berry/build.sh | 5 + .../releases/node-22/22.14.0/Dockerfile | 56 +++++++++++ .../releases/node-22/22.14.0/build.sh | 5 + .../Dockerfile | 45 +++++++++ .../README.md | 21 +++++ .../build.sh | 5 + .../Dockerfile | 76 +++++++++++++++ .../README.md | 20 ++++ .../build.sh | 5 + .../global-profile.sh | 11 +++ .../node22.14.0-chrome134-ff138/Dockerfile | 76 +++++++++++++++ .../node22.14.0-chrome134-ff138/README.md | 20 ++++ .../node22.14.0-chrome134-ff138/build.sh | 5 + .../global-profile.sh | 11 +++ 17 files changed, 528 insertions(+) create mode 100644 base-internal/releases/node-22/22.14.0-bullseye/Dockerfile create mode 100755 base-internal/releases/node-22/22.14.0-bullseye/build.sh create mode 100644 base-internal/releases/node-22/22.14.0-yarn-berry/Dockerfile create mode 100755 base-internal/releases/node-22/22.14.0-yarn-berry/build.sh create mode 100644 base-internal/releases/node-22/22.14.0/Dockerfile create mode 100755 base-internal/releases/node-22/22.14.0/build.sh create mode 100644 browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138-edge/Dockerfile create mode 100644 browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138-edge/README.md create mode 100644 browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138-edge/build.sh create mode 100644 browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/Dockerfile create mode 100644 browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/README.md create mode 100644 browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/build.sh create mode 100644 browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/global-profile.sh create mode 100644 browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/Dockerfile create mode 100644 browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/README.md create mode 100644 browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/build.sh create mode 100644 browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/global-profile.sh diff --git a/base-internal/releases/node-22/22.14.0-bullseye/Dockerfile b/base-internal/releases/node-22/22.14.0-bullseye/Dockerfile new file mode 100644 index 0000000000..d106fbd0b1 --- /dev/null +++ b/base-internal/releases/node-22/22.14.0-bullseye/Dockerfile @@ -0,0 +1,94 @@ +# build it with command +# docker build -t cypress/base-internal:22.14.0-bullseye --platform linux/amd64 . +# +FROM node:22.14.0-bullseye-slim + +RUN apt-get update && \ + apt-get install --no-install-recommends -y \ + libgtk2.0-0 \ + libgtk-3-0 \ + libnotify-dev \ + libgconf-2-4 \ + libgbm-dev \ + libnss3 \ + libxss1 \ + libasound2 \ + libxtst6 \ + procps \ + xauth \ + xvfb \ + build-essential \ + # install text editors + vim-tiny \ + nano \ + # install emoji font + fonts-noto-color-emoji \ + # install Chinese fonts + # this list was copied from https://github.com/jim3ma/docker-leanote + fonts-arphic-bkai00mp \ + fonts-arphic-bsmi00lp \ + fonts-arphic-gbsn00lp \ + fonts-arphic-gkai00mp \ + fonts-arphic-ukai \ + fonts-arphic-uming \ + ttf-wqy-zenhei \ + ttf-wqy-microhei \ + xfonts-wqy \ + # clean up + && rm -rf /var/lib/apt/lists/* \ + && apt-get clean + +USER root + +RUN node --version + +# Install dependencies +RUN apt-get update && \ + apt-get install -y \ + fonts-liberation \ + git \ + libcurl4 \ + libcurl3-gnutls \ + libcurl3-nss \ + libvulkan1 \ + xdg-utils \ + wget \ + # needed for circle orb browsers to install firefox + gpg \ + # needed for circle orb browsers to install chromedriver + jq \ + curl \ + # chrome dependencies + libu2f-udev \ + # firefox dependencies + bzip2 \ + # add codecs needed for video playback in firefox + # https://github.com/cypress-io/cypress-docker-images/issues/150 + mplayer \ + \ + # clean up + && rm -rf /var/lib/apt/lists/* \ + && apt-get clean + +# install libappindicator3-1 - not included with Debian 11 +RUN wget --no-verbose /usr/src/libappindicator3-1_0.4.92-7_amd64.deb "http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-7_amd64.deb" && \ + dpkg -i /usr/src/libappindicator3-1_0.4.92-7_amd64.deb ; \ + apt-get install -f -y && \ + rm -f /usr/src/libappindicator3-1_0.4.92-7_amd64.deb + +# a few environment variables to make NPM installs easier +# good colors for most applications +ENV TERM=xterm +# avoid million NPM install messages +ENV npm_config_loglevel=warn + +RUN npm --version \ + && npm install -g yarn@latest --force \ + && yarn --version \ + && node -p process.versions \ + && node -p 'module.paths' \ + && echo " node version: $(node -v) \n" \ + "npm version: $(npm -v) \n" \ + "yarn version: $(yarn -v) \n" \ + "debian version: $(cat /etc/debian_version) \n" \ + "user: $(whoami) \n" \ No newline at end of file diff --git a/base-internal/releases/node-22/22.14.0-bullseye/build.sh b/base-internal/releases/node-22/22.14.0-bullseye/build.sh new file mode 100755 index 0000000000..5c2e3388a0 --- /dev/null +++ b/base-internal/releases/node-22/22.14.0-bullseye/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +docker build -t cypress/base-internal:22.14.0-bullseye --platform linux/amd64 . \ No newline at end of file diff --git a/base-internal/releases/node-22/22.14.0-yarn-berry/Dockerfile b/base-internal/releases/node-22/22.14.0-yarn-berry/Dockerfile new file mode 100644 index 0000000000..b418bb5068 --- /dev/null +++ b/base-internal/releases/node-22/22.14.0-yarn-berry/Dockerfile @@ -0,0 +1,68 @@ +# build it with command +# docker build -t cypress/base-internal:22.14.0-yarn-berry --platform linux/amd64 . +# +FROM node:22.14.0-bookworm-slim + +RUN apt-get update && \ + apt-get install --no-install-recommends -y \ + libgtk2.0-0 \ + libgtk-3-0 \ + libnotify-dev \ + libgconf-2-4 \ + libgbm-dev \ + libnss3 \ + libxss1 \ + libasound2 \ + libxtst6 \ + procps \ + xauth \ + xvfb \ + build-essential \ + # install text editors + vim-tiny \ + nano \ + wget \ + curl \ + git \ + # install emoji font + fonts-noto-color-emoji \ + # install Chinese fonts + # this list was copied from https://github.com/jim3ma/docker-leanote + fonts-arphic-bkai00mp \ + fonts-arphic-bsmi00lp \ + fonts-arphic-gbsn00lp \ + fonts-arphic-gkai00mp \ + fonts-arphic-ukai \ + fonts-arphic-uming \ + ttf-wqy-zenhei \ + ttf-wqy-microhei \ + xfonts-wqy \ + # clean up + && rm -rf /var/lib/apt/lists/* \ + && apt-get clean + + RUN apt-get update && \ + apt-get install --no-install-recommends -y \ + ca-certificates + +# a few environment variables to make NPM installs easier +# good colors for most applications +ENV TERM=xterm +# avoid million NPM install messages +ENV npm_config_loglevel=warn +# allow installing when the main user is root +ENV npm_config_unsafe_perm=true +# need to enable corepack to set yarn version +RUN corepack enable +# set the yarn version to 4 to get yarn berry, which does not install modules into node_modules +RUN yarn set version 4.3.1 + +RUN npm --version \ + && yarn --version \ + && node -p process.versions \ + && node -p 'module.paths' \ + && echo " node version: $(node -v) \n" \ + "npm version: $(npm -v) \n" \ + "yarn version: $(yarn -v) \n" \ + "debian version: $(cat /etc/debian_version) \n" \ + "user: $(whoami) \n" \ No newline at end of file diff --git a/base-internal/releases/node-22/22.14.0-yarn-berry/build.sh b/base-internal/releases/node-22/22.14.0-yarn-berry/build.sh new file mode 100755 index 0000000000..1ab05e0680 --- /dev/null +++ b/base-internal/releases/node-22/22.14.0-yarn-berry/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +docker build -t cypress/base-internal:22.14.0-yarn-berry --platform linux/amd64 . \ No newline at end of file diff --git a/base-internal/releases/node-22/22.14.0/Dockerfile b/base-internal/releases/node-22/22.14.0/Dockerfile new file mode 100644 index 0000000000..9f0751153c --- /dev/null +++ b/base-internal/releases/node-22/22.14.0/Dockerfile @@ -0,0 +1,56 @@ +# build it with command +# docker build -t cypress/base-internal:22.14.0 --platform linux/amd64 . +# +FROM node:22.14.0-bookworm-slim + +RUN apt-get update && \ + apt-get install --no-install-recommends -y \ + libgtk2.0-0 \ + libgtk-3-0 \ + libnotify-dev \ + libgconf-2-4 \ + libgbm-dev \ + libnss3 \ + libxss1 \ + libasound2 \ + libxtst6 \ + procps \ + xauth \ + xvfb \ + build-essential \ + # install text editors + vim-tiny \ + nano \ + # install emoji font + fonts-noto-color-emoji \ + # install Chinese fonts + # this list was copied from https://github.com/jim3ma/docker-leanote + fonts-arphic-bkai00mp \ + fonts-arphic-bsmi00lp \ + fonts-arphic-gbsn00lp \ + fonts-arphic-gkai00mp \ + fonts-arphic-ukai \ + fonts-arphic-uming \ + ttf-wqy-zenhei \ + ttf-wqy-microhei \ + xfonts-wqy \ + # clean up + && rm -rf /var/lib/apt/lists/* \ + && apt-get clean + +# a few environment variables to make NPM installs easier +# good colors for most applications +ENV TERM=xterm +# avoid million NPM install messages +ENV npm_config_loglevel=warn + +RUN npm --version \ + && npm install -g yarn@latest --force \ + && yarn --version \ + && node -p process.versions \ + && node -p 'module.paths' \ + && echo " node version: $(node -v) \n" \ + "npm version: $(npm -v) \n" \ + "yarn version: $(yarn -v) \n" \ + "debian version: $(cat /etc/debian_version) \n" \ + "user: $(whoami) \n" \ No newline at end of file diff --git a/base-internal/releases/node-22/22.14.0/build.sh b/base-internal/releases/node-22/22.14.0/build.sh new file mode 100755 index 0000000000..0fc18dc8fc --- /dev/null +++ b/base-internal/releases/node-22/22.14.0/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +docker build -t cypress/base-internal:22.14.0 --platform linux/amd64 . \ No newline at end of file diff --git a/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138-edge/Dockerfile b/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138-edge/Dockerfile new file mode 100644 index 0000000000..01ca5399a8 --- /dev/null +++ b/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138-edge/Dockerfile @@ -0,0 +1,45 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node22.14.0-bullseye-chrome134-ff138-edge --platform linux/amd64 . +# + +FROM cypress/browsers-internal:node22.14.0-bullseye-chrome134-ff138 + +USER root + +# Install dependencies +RUN apt-get update && \ + apt-get install -y \ + # edge dependencies + gnupg \ + dirmngr \ + \ + # clean up + && rm -rf /var/lib/apt/lists/* \ + && apt-get clean + +# install latest Edge +RUN node -p "process.arch === 'arm64' ? 'Not downloading Edge since we are on arm64: https://techcommunity.microsoft.com/t5/discussions/edge-for-linux-arm64/m-p/1532272' : process.exit(1)" || \ + (curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg && \ + install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/ && \ + sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-dev.list' && \ + rm microsoft.gpg && \ + ## Install Edge + apt-get update && \ + apt-get install -y microsoft-edge-dev && \ + ## Add a link to the browser that allows Cypress to find it + ln -s /usr/bin/microsoft-edge /usr/bin/edge) + +# install pnpm +RUN npm install -g pnpm@9 --force + +# versions of local tools +RUN echo " node version: $(node -v) \n" \ + "npm version: $(npm -v) \n" \ + "yarn version: $(yarn -v) \n" \ + "pnpm version: $(pnpm -v) \n" \ + "debian version: $(cat /etc/debian_version) \n" \ + "Chrome version: $(google-chrome --version) \n" \ + "Firefox version: $(firefox --version) \n" \ + "Edge version: $(edge --version) \n" \ + "git version: $(git --version) \n" \ + "whoami: $(whoami) \n" \ No newline at end of file diff --git a/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138-edge/README.md b/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138-edge/README.md new file mode 100644 index 0000000000..591aa1ad57 --- /dev/null +++ b/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138-edge/README.md @@ -0,0 +1,21 @@ +# cypress/browsers-internal:node22.14.0-bullseye-chrome134-ff138-edge + +A complete image with all operating system dependencies for Cypress, and Chrome 134.0.6998.165-1, Firefox 138.0, and Microsoft Edge browsers. + +NOTE: This image is intended for internal use with https://github.com/cypress-io/cypress. It contains a few differences from the factory, such as: + +#### Dependency Additions + +- curl +- build-essentials (to contain `make` and a few other dependencies) +- pnpm package manager + +#### Env variables + +- Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific + +[Dockerfile](Dockerfile) + +**Note:** this image uses the `root` user. You might want to switch to non-root user like `node` when running this container for security + +**Note:** Currently, the linux/arm64 build of this image does not contain any browsers except Electron. See https://github.com/cypress-io/cypress-docker-images/blob/master/README.md#browsers for more information. \ No newline at end of file diff --git a/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138-edge/build.sh b/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138-edge/build.sh new file mode 100644 index 0000000000..47f43ac028 --- /dev/null +++ b/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138-edge/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node22.14.0-bullseye-chrome134-ff138-edge +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . \ No newline at end of file diff --git a/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/Dockerfile b/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/Dockerfile new file mode 100644 index 0000000000..78eb60dc24 --- /dev/null +++ b/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/Dockerfile @@ -0,0 +1,76 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node22.14.0-bullseye-chrome134-ff138 --platform linux/amd64 . +# +FROM cypress/base-internal:22.14.0-bullseye + +USER root + +RUN node --version + +COPY ./global-profile.sh /tmp/global-profile.sh +RUN cat /tmp/global-profile.sh >> /etc/bash.bashrc && rm /tmp/global-profile.sh + +# Install dependencies +RUN apt-get update && \ + apt-get install -y \ + fonts-liberation \ + git \ + libcurl4 \ + libcurl3-gnutls \ + libcurl3-nss \ + libvulkan1 \ + xdg-utils \ + wget \ + curl \ + # chrome dependencies + libu2f-udev \ + # firefox dependencies + bzip2 \ + # add codecs needed for video playback in firefox + # https://github.com/cypress-io/cypress-docker-images/issues/150 + mplayer \ + \ + # clean up + && rm -rf /var/lib/apt/lists/* \ + && apt-get clean + +# install libappindicator3-1 - not included with Debian 11 +RUN wget --no-verbose /usr/src/libappindicator3-1_0.4.92-7_amd64.deb "http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-7_amd64.deb" && \ + dpkg -i /usr/src/libappindicator3-1_0.4.92-7_amd64.deb ; \ + apt-get install -f -y && \ + rm -f /usr/src/libappindicator3-1_0.4.92-7_amd64.deb + +# install Chrome browser +RUN node -p "process.arch === 'arm64' ? 'Not downloading Chrome since we are on arm64: https://crbug.com/677140' : process.exit(1)" || \ + (wget --no-verbose -O /usr/src/google-chrome-stable_current_amd64.deb "http://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_134.0.6998.165-1_amd64.deb" && \ + dpkg -i /usr/src/google-chrome-stable_current_amd64.deb ; \ + apt-get install -f -y && \ + rm -f /usr/src/google-chrome-stable_current_amd64.deb) + +# "fake" dbus address to prevent errors +# https://github.com/SeleniumHQ/docker-selenium/issues/87 +ENV DBUS_SESSION_BUS_ADDRESS=/dev/null + +# install Firefox browser +RUN node -p "process.arch === 'arm64' ? 'Not downloading Firefox since we are on arm64: https://bugzilla.mozilla.org/show_bug.cgi?id=1678342' : process.exit(1)" || \ + (wget --no-verbose -O /tmp/firefox.tar.xz https://download-installer.cdn.mozilla.net/pub/firefox/releases/138.0/linux-x86_64/en-US/firefox-138.0.tar.xz && \ + tar -C /opt -xf /tmp/firefox.tar.xz && \ + rm /tmp/firefox.tar.xz && \ + ln -fs /opt/firefox/firefox /usr/bin/firefox) + +# versions of local tools +RUN echo " node version: $(node -v) \n" \ + "npm version: $(npm -v) \n" \ + "yarn version: $(yarn -v) \n" \ + "debian version: $(cat /etc/debian_version) \n" \ + "Chrome version: $(google-chrome --version) \n" \ + "Firefox version: $(firefox --version) \n" \ + "Edge version: n/a \n" \ + "git version: $(git --version) \n" \ + "whoami: $(whoami) \n" + +# a few environment variables to make NPM installs easier +# good colors for most applications +ENV TERM=xterm +# avoid million NPM install messages +ENV npm_config_loglevel=warn \ No newline at end of file diff --git a/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/README.md b/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/README.md new file mode 100644 index 0000000000..e6b661e66c --- /dev/null +++ b/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node22.14.0-bullseye-chrome134-ff138 + +A complete image with all operating system dependencies for Cypress, and Chrome 134.0.6998.165-1, Firefox 138.0 browsers. + +NOTE: This image is intended for internal use with https://github.com/cypress-io/cypress. It contains a few differences from the factory, such as: + +#### Dependency Additions + +- curl +- build-essentials (to contain `make` and a few other dependencies) + +#### Env variables + +- Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific + +[Dockerfile](Dockerfile) + +**Note:** this image uses the `root` user. You might want to switch to non-root user like `node` when running this container for security + +**Note:** Currently, the linux/arm64 build of this image does not contain any browsers except Electron. See https://github.com/cypress-io/cypress-docker-images/blob/master/README.md#browsers for more information. \ No newline at end of file diff --git a/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/build.sh b/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/build.sh new file mode 100644 index 0000000000..b2abe90905 --- /dev/null +++ b/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node22.14.0-bullseye-chrome134-ff138 +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . \ No newline at end of file diff --git a/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/global-profile.sh b/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/global-profile.sh new file mode 100644 index 0000000000..7d8954e40b --- /dev/null +++ b/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/global-profile.sh @@ -0,0 +1,11 @@ +if [[ "$(uname -a)" = *"arm"* || "$(uname -a)" = *"aarch64"* ]]; then + printf "\e[31m" # red + echo "Warning: You are using the beta Arm build of a cypress/browsers or cypress/included image." + echo + echo "On Arm, non-Electron browsers are not available, because browser vendors are not yet building for Linux arm64." + echo "You must use the built-in Electron browser (--browser electron) to run Cypress or find and install unofficial Arm binary builds." + echo + echo "More details and links to upstream issues for Chrome, Firefox, and Edge can be found in the docker image ReadMe:" + echo " https://github.com/cypress-io/cypress-docker-images/blob/master/README.md#browsers" + printf "\e[0m" # reset +fi \ No newline at end of file diff --git a/browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/Dockerfile b/browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/Dockerfile new file mode 100644 index 0000000000..feba331d11 --- /dev/null +++ b/browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/Dockerfile @@ -0,0 +1,76 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node22.14.0-chrome134-ff138 --platform linux/amd64 . +# +FROM cypress/base-internal:22.14.0 + +USER root + +RUN node --version + +COPY ./global-profile.sh /tmp/global-profile.sh +RUN cat /tmp/global-profile.sh >> /etc/bash.bashrc && rm /tmp/global-profile.sh + +# Install dependencies +RUN apt-get update && \ + apt-get install -y \ + fonts-liberation \ + git \ + libcurl4 \ + libcurl3-gnutls \ + libcurl3-nss \ + libvulkan1 \ + xdg-utils \ + wget \ + curl \ + # chrome dependencies + libu2f-udev \ + # firefox dependencies + bzip2 \ + # add codecs needed for video playback in firefox + # https://github.com/cypress-io/cypress-docker-images/issues/150 + mplayer \ + \ + # clean up + && rm -rf /var/lib/apt/lists/* \ + && apt-get clean + +# install libappindicator3-1 - not included with Debian 11 +RUN wget --no-verbose /usr/src/libappindicator3-1_0.4.92-7_amd64.deb "http://ftp.us.debian.org/debian/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-7_amd64.deb" && \ + dpkg -i /usr/src/libappindicator3-1_0.4.92-7_amd64.deb ; \ + apt-get install -f -y && \ + rm -f /usr/src/libappindicator3-1_0.4.92-7_amd64.deb + +# install Chrome browser +RUN node -p "process.arch === 'arm64' ? 'Not downloading Chrome since we are on arm64: https://crbug.com/677140' : process.exit(1)" || \ + (wget --no-verbose -O /usr/src/google-chrome-stable_current_amd64.deb "http://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_134.0.6998.165-1_amd64.deb" && \ + dpkg -i /usr/src/google-chrome-stable_current_amd64.deb ; \ + apt-get install -f -y && \ + rm -f /usr/src/google-chrome-stable_current_amd64.deb) + +# "fake" dbus address to prevent errors +# https://github.com/SeleniumHQ/docker-selenium/issues/87 +ENV DBUS_SESSION_BUS_ADDRESS=/dev/null + +# install Firefox browser +RUN node -p "process.arch === 'arm64' ? 'Not downloading Firefox since we are on arm64: https://bugzilla.mozilla.org/show_bug.cgi?id=1678342' : process.exit(1)" || \ + (wget --no-verbose -O /tmp/firefox.tar.xz https://download-installer.cdn.mozilla.net/pub/firefox/releases/138.0/linux-x86_64/en-US/firefox-138.0.tar.xz && \ + tar -C /opt -xf /tmp/firefox.tar.xz && \ + rm /tmp/firefox.tar.xz && \ + ln -fs /opt/firefox/firefox /usr/bin/firefox) + +# versions of local tools +RUN echo " node version: $(node -v) \n" \ + "npm version: $(npm -v) \n" \ + "yarn version: $(yarn -v) \n" \ + "debian version: $(cat /etc/debian_version) \n" \ + "Chrome version: $(google-chrome --version) \n" \ + "Firefox version: $(firefox --version) \n" \ + "Edge version: n/a \n" \ + "git version: $(git --version) \n" \ + "whoami: $(whoami) \n" + +# a few environment variables to make NPM installs easier +# good colors for most applications +ENV TERM=xterm +# avoid million NPM install messages +ENV npm_config_loglevel=warn \ No newline at end of file diff --git a/browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/README.md b/browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/README.md new file mode 100644 index 0000000000..8f00b6ba65 --- /dev/null +++ b/browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node22.14.0-chrome134-ff138 + +A complete image with all operating system dependencies for Cypress, and Chrome 134.0.6899.109-1, Firefox 138.0 browsers. + +NOTE: This image is intended for internal use with https://github.com/cypress-io/cypress. It contains a few differences from the factory, such as: + +#### Dependency Additions + +- curl +- build-essentials (to contain `make` and a few other dependencies) + +#### Env variables + +- Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific + +[Dockerfile](Dockerfile) + +**Note:** this image uses the `root` user. You might want to switch to non-root user like `node` when running this container for security + +**Note:** Currently, the linux/arm64 build of this image does not contain any browsers except Electron. See https://github.com/cypress-io/cypress-docker-images/blob/master/README.md#browsers for more information. \ No newline at end of file diff --git a/browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/build.sh b/browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/build.sh new file mode 100644 index 0000000000..0ec8117cdb --- /dev/null +++ b/browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node22.14.0-chrome134-ff138 +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . \ No newline at end of file diff --git a/browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/global-profile.sh b/browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/global-profile.sh new file mode 100644 index 0000000000..7d8954e40b --- /dev/null +++ b/browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/global-profile.sh @@ -0,0 +1,11 @@ +if [[ "$(uname -a)" = *"arm"* || "$(uname -a)" = *"aarch64"* ]]; then + printf "\e[31m" # red + echo "Warning: You are using the beta Arm build of a cypress/browsers or cypress/included image." + echo + echo "On Arm, non-Electron browsers are not available, because browser vendors are not yet building for Linux arm64." + echo "You must use the built-in Electron browser (--browser electron) to run Cypress or find and install unofficial Arm binary builds." + echo + echo "More details and links to upstream issues for Chrome, Firefox, and Edge can be found in the docker image ReadMe:" + echo " https://github.com/cypress-io/cypress-docker-images/blob/master/README.md#browsers" + printf "\e[0m" # reset +fi \ No newline at end of file From 37baeecc8bcb5d035c67ab2fab1f7d8d12ad48ed Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 13 May 2025 13:46:33 -0400 Subject: [PATCH 2/6] prettier --- README.md | 34 +++++++++---------- .../README.md | 2 +- .../README.md | 2 +- .../node22.14.0-chrome134-ff138/README.md | 2 +- package.json | 3 +- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 67b6229565..b07aa83e72 100644 --- a/README.md +++ b/README.md @@ -27,9 +27,9 @@ Cypress Docker images [cypress/browsers](./browsers/) include browsers for the ` | Browser | `Linux/amd64` | `Linux/arm64` | | -------------------------- | :----------------: | :--------------------------------------------------------------------------- | -| [Google Chrome][Chrome] | :white_check_mark: | see [#1188](https://github.com/cypress-io/cypress-docker-images/issues/1188) | -| [Mozilla Firefox][Firefox] | :white_check_mark: | :white_check_mark: | -| [Microsoft Edge][Edge] | :white_check_mark: | see [#1189](https://github.com/cypress-io/cypress-docker-images/issues/1189) | +| [Google Chrome][chrome] | :white_check_mark: | see [#1188](https://github.com/cypress-io/cypress-docker-images/issues/1188) | +| [Mozilla Firefox][firefox] | :white_check_mark: | :white_check_mark: | +| [Microsoft Edge][edge] | :white_check_mark: | see [#1189](https://github.com/cypress-io/cypress-docker-images/issues/1189) | On POSIX-based systems, or with [Git for Windows](https://gitforwindows.org/) at a Git Bash prompt, execute `uname -m` to display your system's architecture. ([x86_64](https://en.wikipedia.org/wiki/X86-64) is equivalent to `amd64`.) @@ -41,36 +41,36 @@ For `Linux/arm64` images, the lowest available Firefox version is `136`. Building a custom image with [cypress/factory](./factory/) allows selection of individual browsers from the above list. -Cypress officially [supports][Cypress Browser Support] the latest 3 major versions of Chrome, Firefox, and Edge browsers. We recommend using up to date Cypress Docker images for supportability. +Cypress officially [supports][cypress browser support] the latest 3 major versions of Chrome, Firefox, and Edge browsers. We recommend using up to date Cypress Docker images for supportability. -[Chrome]: https://developer.chrome.com/ -[Firefox]: https://www.mozilla.org/firefox -[Firefox Channel Choice]: https://support.mozilla.org/en-US/kb/choosing-firefox-update-channel -[Edge]: https://developer.microsoft.com/microsoft-edge/ -[Chromium]: https://www.chromium.org/Home/ -[Cypress Browser Support]: https://docs.cypress.io/app/references/launching-browsers#Browser-versions-supported +[chrome]: https://developer.chrome.com/ +[firefox]: https://www.mozilla.org/firefox +[firefox channel choice]: https://support.mozilla.org/en-US/kb/choosing-firefox-update-channel +[edge]: https://developer.microsoft.com/microsoft-edge/ +[chromium]: https://www.chromium.org/Home/ +[cypress browser support]: https://docs.cypress.io/app/references/launching-browsers#Browser-versions-supported ### Debian packages -[Debian][Debian packages] provides two Cypress-compatible browsers as packages covering both `amd64` and `arm64` architectures. +[Debian][debian packages] provides two Cypress-compatible browsers as packages covering both `amd64` and `arm64` architectures. These can be used to complement the browsers that are configurable through the `cypress/factory` build process: - See the directory [examples/chromium](./examples/chromium/) to add the current version of Chromium for Debian to Cypress Docker images. - The [Debian Chromium Wiki][Debian-Chromium-Wiki] describes the [Chromium][Chromium] browser distribution details. + The [Debian Chromium Wiki][debian-chromium-wiki] describes the [Chromium][chromium] browser distribution details. Chromium is not currently included in the `cypress/factory` build process. See [#1191](https://github.com/cypress-io/cypress-docker-images/issues/1191) for progress of this integration. - See the directory [examples/firefox-esr](./examples/firefox-esr/) to add Firefox ESR for Debian to Cypress Docker images. - The [Debian Firefox Wiki][Debian-Firefox-Wiki] describes the [Firefox][Firefox] browser distribution details from the [Extended Support Release][Firefox Channel Choice] channel. - This differs from the `cypress/factory` build process which uses Firefox versions from the [Rapid Release][Firefox Channel Choice] channel. + The [Debian Firefox Wiki][debian-firefox-wiki] describes the [Firefox][firefox] browser distribution details from the [Extended Support Release][firefox channel choice] channel. + This differs from the `cypress/factory` build process which uses Firefox versions from the [Rapid Release][firefox channel choice] channel. -[Debian packages]: https://www.debian.org/distrib/packages -[Debian-Chromium-Wiki]: https://wiki.debian.org/Chromium -[Debian-Firefox-Wiki]: https://wiki.debian.org/Firefox +[debian packages]: https://www.debian.org/distrib/packages +[debian-chromium-wiki]: https://wiki.debian.org/Chromium +[debian-firefox-wiki]: https://wiki.debian.org/Firefox ## Tags diff --git a/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138-edge/README.md b/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138-edge/README.md index 591aa1ad57..b8b282e5d2 100644 --- a/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138-edge/README.md +++ b/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138-edge/README.md @@ -18,4 +18,4 @@ NOTE: This image is intended for internal use with https://github.com/cypress-io **Note:** this image uses the `root` user. You might want to switch to non-root user like `node` when running this container for security -**Note:** Currently, the linux/arm64 build of this image does not contain any browsers except Electron. See https://github.com/cypress-io/cypress-docker-images/blob/master/README.md#browsers for more information. \ No newline at end of file +**Note:** Currently, the linux/arm64 build of this image does not contain any browsers except Electron. See https://github.com/cypress-io/cypress-docker-images/blob/master/README.md#browsers for more information. diff --git a/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/README.md b/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/README.md index e6b661e66c..3b7f3bbff9 100644 --- a/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/README.md +++ b/browsers-internal/releases/node-22/node22.14.0-bullseye-chrome134-ff138/README.md @@ -17,4 +17,4 @@ NOTE: This image is intended for internal use with https://github.com/cypress-io **Note:** this image uses the `root` user. You might want to switch to non-root user like `node` when running this container for security -**Note:** Currently, the linux/arm64 build of this image does not contain any browsers except Electron. See https://github.com/cypress-io/cypress-docker-images/blob/master/README.md#browsers for more information. \ No newline at end of file +**Note:** Currently, the linux/arm64 build of this image does not contain any browsers except Electron. See https://github.com/cypress-io/cypress-docker-images/blob/master/README.md#browsers for more information. diff --git a/browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/README.md b/browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/README.md index 8f00b6ba65..4bc1c31d15 100644 --- a/browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/README.md +++ b/browsers-internal/releases/node-22/node22.14.0-chrome134-ff138/README.md @@ -17,4 +17,4 @@ NOTE: This image is intended for internal use with https://github.com/cypress-io **Note:** this image uses the `root` user. You might want to switch to non-root user like `node` when running this container for security -**Note:** Currently, the linux/arm64 build of this image does not contain any browsers except Electron. See https://github.com/cypress-io/cypress-docker-images/blob/master/README.md#browsers for more information. \ No newline at end of file +**Note:** Currently, the linux/arm64 build of this image does not contain any browsers except Electron. See https://github.com/cypress-io/cypress-docker-images/blob/master/README.md#browsers for more information. diff --git a/package.json b/package.json index efd0d0b283..e434a11430 100644 --- a/package.json +++ b/package.json @@ -33,5 +33,6 @@ "globals": "^16.0.0", "markdown-link-check": "3.12.2", "prettier": "3.5.3" - } + }, + "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" } From 3415d537949d6402757ace205b75e0444b6a7219 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 13 May 2025 14:00:20 -0400 Subject: [PATCH 3/6] Update package.json Co-authored-by: Mike McCready <66998419+MikeMcC399@users.noreply.github.com> --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index e434a11430..faec2c164a 100644 --- a/package.json +++ b/package.json @@ -34,5 +34,4 @@ "markdown-link-check": "3.12.2", "prettier": "3.5.3" }, - "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" } From f955f46ca7942eccfca8811da9b820dbebb70c3a Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 13 May 2025 14:04:02 -0400 Subject: [PATCH 4/6] comma --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index faec2c164a..efd0d0b283 100644 --- a/package.json +++ b/package.json @@ -33,5 +33,5 @@ "globals": "^16.0.0", "markdown-link-check": "3.12.2", "prettier": "3.5.3" - }, + } } From e980da3016e7d3bb53f9a5dd760c10157cd4f383 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 13 May 2025 14:06:05 -0400 Subject: [PATCH 5/6] revert prettier changes to ./README --- README.md | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index b07aa83e72..7e3cea68a6 100644 --- a/README.md +++ b/README.md @@ -27,9 +27,9 @@ Cypress Docker images [cypress/browsers](./browsers/) include browsers for the ` | Browser | `Linux/amd64` | `Linux/arm64` | | -------------------------- | :----------------: | :--------------------------------------------------------------------------- | -| [Google Chrome][chrome] | :white_check_mark: | see [#1188](https://github.com/cypress-io/cypress-docker-images/issues/1188) | -| [Mozilla Firefox][firefox] | :white_check_mark: | :white_check_mark: | -| [Microsoft Edge][edge] | :white_check_mark: | see [#1189](https://github.com/cypress-io/cypress-docker-images/issues/1189) | +| [Google Chrome][Chrome] | :white_check_mark: | see [#1188](https://github.com/cypress-io/cypress-docker-images/issues/1188) | +| [Mozilla Firefox][Firefox] | :white_check_mark: | :white_check_mark: | +| [Microsoft Edge][Edge] | :white_check_mark: | see [#1189](https://github.com/cypress-io/cypress-docker-images/issues/1189) | On POSIX-based systems, or with [Git for Windows](https://gitforwindows.org/) at a Git Bash prompt, execute `uname -m` to display your system's architecture. ([x86_64](https://en.wikipedia.org/wiki/X86-64) is equivalent to `amd64`.) @@ -41,36 +41,36 @@ For `Linux/arm64` images, the lowest available Firefox version is `136`. Building a custom image with [cypress/factory](./factory/) allows selection of individual browsers from the above list. -Cypress officially [supports][cypress browser support] the latest 3 major versions of Chrome, Firefox, and Edge browsers. We recommend using up to date Cypress Docker images for supportability. +Cypress officially [supports][Cypress Browser Support] the latest 3 major versions of Chrome, Firefox, and Edge browsers. We recommend using up to date Cypress Docker images for supportability. -[chrome]: https://developer.chrome.com/ -[firefox]: https://www.mozilla.org/firefox -[firefox channel choice]: https://support.mozilla.org/en-US/kb/choosing-firefox-update-channel -[edge]: https://developer.microsoft.com/microsoft-edge/ -[chromium]: https://www.chromium.org/Home/ -[cypress browser support]: https://docs.cypress.io/app/references/launching-browsers#Browser-versions-supported +[Chrome]: https://developer.chrome.com/ +[Firefox]: https://www.mozilla.org/firefox +[Firefox Channel Choice]: https://support.mozilla.org/en-US/kb/choosing-firefox-update-channel +[Edge]: https://developer.microsoft.com/microsoft-edge/ +[Chromium]: https://www.chromium.org/Home/ +[Cypress Browser Support]: https://docs.cypress.io/app/references/launching-browsers#Browser-versions-supported ### Debian packages -[Debian][debian packages] provides two Cypress-compatible browsers as packages covering both `amd64` and `arm64` architectures. +[Debian][Debian packages] provides two Cypress-compatible browsers as packages covering both `amd64` and `arm64` architectures. These can be used to complement the browsers that are configurable through the `cypress/factory` build process: - See the directory [examples/chromium](./examples/chromium/) to add the current version of Chromium for Debian to Cypress Docker images. - The [Debian Chromium Wiki][debian-chromium-wiki] describes the [Chromium][chromium] browser distribution details. + The [Debian Chromium Wiki][Debian-Chromium-Wiki] describes the [Chromium][Chromium] browser distribution details. Chromium is not currently included in the `cypress/factory` build process. See [#1191](https://github.com/cypress-io/cypress-docker-images/issues/1191) for progress of this integration. - See the directory [examples/firefox-esr](./examples/firefox-esr/) to add Firefox ESR for Debian to Cypress Docker images. - The [Debian Firefox Wiki][debian-firefox-wiki] describes the [Firefox][firefox] browser distribution details from the [Extended Support Release][firefox channel choice] channel. - This differs from the `cypress/factory` build process which uses Firefox versions from the [Rapid Release][firefox channel choice] channel. + The [Debian Firefox Wiki][Debian-Firefox-Wiki] describes the [Firefox][Firefox] browser distribution details from the [Extended Support Release][Firefox Channel Choice] channel. + This differs from the `cypress/factory` build process which uses Firefox versions from the [Rapid Release][Firefox Channel Choice] channel. -[debian packages]: https://www.debian.org/distrib/packages -[debian-chromium-wiki]: https://wiki.debian.org/Chromium -[debian-firefox-wiki]: https://wiki.debian.org/Firefox +[Debian packages]: https://www.debian.org/distrib/packages +[Debian-Chromium-Wiki]: https://wiki.debian.org/Chromium +[Debian-Firefox-Wiki]: https://wiki.debian.org/Firefox ## Tags @@ -221,4 +221,4 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) ## License -See [LICENSE](LICENSE) +See [LICENSE](LICENSE) \ No newline at end of file From 52327a10fbe66b2217080ed2776b4a733580b3c9 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 13 May 2025 14:07:39 -0400 Subject: [PATCH 6/6] \n --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7e3cea68a6..67b6229565 100644 --- a/README.md +++ b/README.md @@ -221,4 +221,4 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) ## License -See [LICENSE](LICENSE) \ No newline at end of file +See [LICENSE](LICENSE)