Skip to content

Add node 22, chrome 134, and ff138 images for base-internal and browsers-internal #1345

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 17 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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) |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please don't make these case changes in your internal PR.

The case is only used internally.

All the visible names are correct.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Prettier did this automatically - I'll revert

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@cacieprins

Let me check for Prettier separately! Thanks for explaining where it came from and for reverting.


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`.)

Expand All @@ -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.

<!-- browser links -->

[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 links -->

[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

Expand Down
94 changes: 94 additions & 0 deletions base-internal/releases/node-22/22.14.0-bullseye/Dockerfile
Original file line number Diff line number Diff line change
@@ -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"
5 changes: 5 additions & 0 deletions base-internal/releases/node-22/22.14.0-bullseye/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/bash

set -e

docker build -t cypress/base-internal:22.14.0-bullseye --platform linux/amd64 .
68 changes: 68 additions & 0 deletions base-internal/releases/node-22/22.14.0-yarn-berry/Dockerfile
Original file line number Diff line number Diff line change
@@ -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"
5 changes: 5 additions & 0 deletions base-internal/releases/node-22/22.14.0-yarn-berry/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/bash

set -e

docker build -t cypress/base-internal:22.14.0-yarn-berry --platform linux/amd64 .
56 changes: 56 additions & 0 deletions base-internal/releases/node-22/22.14.0/Dockerfile
Original file line number Diff line number Diff line change
@@ -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"
5 changes: 5 additions & 0 deletions base-internal/releases/node-22/22.14.0/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/bash

set -e

docker build -t cypress/base-internal:22.14.0 --platform linux/amd64 .
Original file line number Diff line number Diff line change
@@ -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"
Original file line number Diff line number Diff line change
@@ -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.
Original file line number Diff line number Diff line change
@@ -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 .
Loading