diff --git a/.github/workflows/add-issue-to-triage-board.yml b/.github/workflows/add-issue-to-triage-board.yml new file mode 100644 index 0000000000..e9e74b93b9 --- /dev/null +++ b/.github/workflows/add-issue-to-triage-board.yml @@ -0,0 +1,12 @@ +name: 'Add issue/PR to Triage Board' +on: + issues: + types: + - opened + pull_request_target: + types: + - opened +jobs: + add-to-triage-project-board: + uses: cypress-io/cypress/.github/workflows/triage_add_to_project.yml@develop + secrets: inherit diff --git a/.github/workflows/example-cypress-github-action.yml b/.github/workflows/example-cypress-github-action.yml new file mode 100644 index 0000000000..ab5ff16eec --- /dev/null +++ b/.github/workflows/example-cypress-github-action.yml @@ -0,0 +1,81 @@ +name: Example Cypress GitHub Actions +# This example workflow demonstrates +# GitHub Actions (https://docs.github.com/en/actions) using the +# Cypress JavaScript GitHub Action (https://github.com/cypress-io/github-action) with +# Cypress Docker images (https://github.com/cypress-io/cypress-docker-images) + +# The workflow is triggered manually on demand, see +# https://docs.github.com/en/actions/using-workflows/manually-running-a-workflow +# To automatically trigger a workflow, for instance on a push event, see +# https://docs.github.com/en/actions/using-workflows/triggering-a-workflow + +on: workflow_dispatch + +jobs: + docker-base: + runs-on: ubuntu-24.04 + container: + # Examples use latest tag + # For production use, to avoid the risk of breaking changes, + # choose a fixed version tag from + # https://hub.docker.com/r/cypress/base/tags + image: cypress/base:latest + # User 1001 matches the owner of the HOME directory which GitHub Actions creates + # Selecting the same user minimizes permissions issues + options: --user 1001 + steps: + - uses: actions/checkout@v4 + - uses: cypress-io/github-action@v6 + with: + # Only the Electron browser is available with cypress/base + # This is the default browser and does not need to be specified + working-directory: examples/basic + + docker-browsers: + runs-on: ubuntu-24.04 + strategy: + # Makes sure that each browser test runs, even if any other test fails + fail-fast: false + matrix: + browser: [chrome, edge, firefox] + container: + # Examples use latest tag + # For production use, to avoid the risk of breaking changes, + # choose a fixed version tag from + # https://hub.docker.com/r/cypress/browser/tags + image: cypress/browsers:latest + options: --user 1001 + steps: + - uses: actions/checkout@v4 + - uses: cypress-io/github-action@v6 + with: + working-directory: examples/basic + browser: ${{ matrix.browser }} + + docker-included: + runs-on: ubuntu-24.04 + strategy: + fail-fast: false + matrix: + browser: [chrome, edge, firefox] + # from https://hub.docker.com/r/cypress/included/tags + container: + # Examples use latest tag + # For production use, to avoid the risk of breaking changes, + # choose a fixed version tag from + # https://hub.docker.com/r/cypress/included/tags + image: cypress/included:latest + options: --user 1001 + steps: + - uses: actions/checkout@v4 + - uses: cypress-io/github-action@v6 + with: + # Using Cypress project with no Cypress version pre-installed + working-directory: examples/basic-mini + browser: ${{ matrix.browser }} + env: + # Cypress binary is already installed in cypress/included image + # Use CYPRESS_INSTALL_BINARY=0 to prevent unneeded caching + # which can cause errors with non-root user + # see https://on.cypress.io/guides/references/advanced-installation#Skipping-installation + CYPRESS_INSTALL_BINARY: 0 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index 7422c80d68..0000000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Generate config -on: - push: - branches: - - master - -jobs: - build: - name: Generate - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 - - uses: bahmutov/npm-install@v1 - - run: npm run build - - run: git status - - - run: echo Current ref is ${{ github.ref }} - - # if there is a change to the circle.yml file - # then commit and push it. Only do this on "master" branch - # https://github.com/mikeal/publish-to-github-action - - uses: mikeal/publish-to-github-action@master - if: github.ref == 'refs/heads/master' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/triage_closed_issue_comment.yml b/.github/workflows/triage_closed_issue_comment.yml new file mode 100644 index 0000000000..0061e2febf --- /dev/null +++ b/.github/workflows/triage_closed_issue_comment.yml @@ -0,0 +1,9 @@ +name: 'Handle Comment Workflow' +on: + issue_comment: + types: + - created +jobs: + closed-issue-comment: + uses: cypress-io/cypress/.github/workflows/triage_handle_new_comments.yml@develop + secrets: inherit diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000000..612e33f132 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,6 @@ +# Add files here to ignore them from prettier formatting + +/base +/browsers +/included +/factory/test-project diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000000..a6c09ac4d2 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "printWidth": 120, + "semi": false, + "trailingComma": "all", + "arrowParens": "always", + "singleQuote": true +} diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index cb65de563b..0000000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,52 +0,0 @@ -# Contributor Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [hello@cypress.io](mailto:hello@cypress.io). All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5a537ac63c..49dfc34350 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,89 +4,168 @@ Thanks for taking the time to contribute! :smile: ## Code of Conduct -All contributors are expecting to abide by our [Code of Conduct](CODE_OF_CONDUCT.md). +All contributors are expected to abide by our [Code of Conduct](https://github.com/cypress-io/cypress/blob/develop/CODE_OF_CONDUCT.md). ## Development +This document describes the process to contribute Cypress Docker images for release to the public Cypress repositories on + +- [Docker Hub](https://hub.docker.com/u/cypress) +- [Amazon ECR (Elastic Container Registry) Public Gallery](https://gallery.ecr.aws/cypress-io) + +Releases to these public repositories are reserved for configurations that cover general needs, not special configurations. + +> [!TIP] +> To generate customized Cypress Docker images for private organizational use please refer to the [cypress/factory](./factory/README.md) document. + ### Replacing existing images ⚠️ As a rule, unless there are extraordinary circumstances, we do NOT replace the existing Docker images. Replacing the images already used by people is dangerous, since it replaces the versions of tools without warning. We have such failed experience once, and do not want to repeat this mistake. Thus instead of replacing an existing image, in 99% of the cases we publish a new Docker image. -### Add new base image +### Building locally + +We use `docker compose` to build the `factory` image locally. -To create a new base image follow these steps +```bash +cd factory +docker compose build factory +``` -1. run `npm run add:base -- ` script. For example `npm run add:base -- 13.6.0` +With the `factory` image built, you can now build other images -It will create a new folder `base/` and output versions of tools installed: Node, npm, yarn, etc. See [generate-base-image.js](generate-base-image.js) file for details. +```bash +# This builds the 'included' image specified in the docker-compose file. +docker compose build included -2. add new line to [base/README.md](base/README.md) with new image information. -3. add new folder to Git -4. update [circle.yml](circle.yml) file by running `npm run build` and commit the changes. -4. open a pull request. +# This builds all images specified in the docker-compose file. +docker compose build +``` -The new image will be built and tested on CI and pushed to Docker Hub once the PR is approved and merged to `master`. +Or you can then run tests in the `test-project` -**note:** we should install the latest NPM and Yarn versions in the base image to ensure old images do not include NPM and Yarn with known issues that have been fixed already. +```bash +cd test-project -**note 2:** we install Chinese fonts in the base image to allow correct testing of [cypress-documentation](https://github.com/cypress-io/cypress-documentation) site that includes several translations of the Cypress docs. Without Chinese fonts the pages have broken rendering. +# set the environment variables from factory/.env in your terminal. +set -a && . ../.env && set +a -### Add new image with browsers +# run the test in an image built on top of the factory. +docker compose run --build --rm test-factory-all-included +``` -TODO: https://github.com/cypress-io/cypress-docker-images/issues/215 +### Publishing images -**Important:** prefer to use exact browser versions for repeatable builds. You can find the previous official Chrome version numbers at [https://chromereleases.googleblog.com/](https://chromereleases.googleblog.com/). +#### Automatic -**Important:** use `https:` to download browsers +##### Primary versions -### Add new included image +The [factory/.env](./factory/.env) in the `master` branch should be maintained with the latest stable and supported versions. An exception is the `FACTORY_DEFAULT_NODE_VERSION` which should be set to the [Node.js Active LTS](https://nodejs.org/en/about/previous-releases) version, not the "Current" version. -To create a new image with Cypress pre-installed globally +To publish a new image for `factory`, `base`, `browsers`, or `included`, open a PR with the desired version(s) updated in the [factory/.env](./factory/.env) file. If you change any of the following environment variables in [factory/.env](./factory/.env), then you should also bump the `FACTORY_VERSION` in the same file and make a note of the change in the factory [CHANGELOG](./factory/CHANGELOG.md): -1. run `npm run add:included -- `. For example `npm run add:included -- 3.8.3 cypress/browsers:node12.6.0-chrome77`. +- `BASE_IMAGE` +- `FACTORY_DEFAULT_NODE_VERSION` +- `YARN_VERSION` -**important ⚠️** please use `cypress/browsers` Docker image with the Node version that **matches** the Node version bundled inside Cypress you are about to install there. +You should not change the `FACTORY_VERSION` or make an entry into the factory [CHANGELOG](./factory/CHANGELOG.md) if you are only changing browser versions or the Cypress version. -This will create new folder `included/` +Once the PR is merged into the `master` branch, the corresponding images will be pushed to [Docker Hub](https://hub.docker.com/u/cypress) and to the [Amazon ECR (Elastic Container Registry) Public Gallery](https://gallery.ecr.aws/cypress-io) via an automated script run through [CircleCI](circle.yml). Please check that the CI jobs pass after merge. Any CI failure can cause the release process to be interrupted. -2. add new line to [included/README.md](included/README.md) file with the new image information -3. add new folder to Git -4. update [circle.yml](circle.yml) file by running `npm run build` and commit the changes. -4. open a pull request. +##### Alternate versions -## Tagging the latest image +> Note: Assistance from a member of the Cypress org is required for this process -We build individual base images that match Node versions: `10.18.1`, `12.12.0`, `12.18.2`, etc. We also tag some of the images with major version: `base:10`, `base:12`. We also tag one image `base:latest`. In general, you should use the explicit version like `base:12.18.0` because it guarantees that the Docker image will never be suddenly updated. +If you need to release alternate versions that do not qualify to be primary versions, do not modify the contents of the [factory/.env](./factory/.env) file in the `master` branch. An example would be to publish images including updated [Node.js releases](https://nodejs.org/en/about/previous-releases) in the category "Maintenance LTS" or "Current". Instead, carry out the following steps: -To tag new image, like `base:12.18.2` need to do the following from a local machine +1. Create a feature branch in the form `-node--publish`, for example `13.11.0-node-18.20.3-publish`, branched from the `master` branch. If you are not a member of the Cypress org, make a request via a new issue to create a feature branch. +2. Modify [factory/.env](./factory/.env) with the desired versions. Do not modify the `FACTORY_VERSION`. No new `cypress/factory` image should be published with this process. +3. Modify [factory/docker-compose.yml](./factory/docker-compose.yml) to comment out the creation of `latest` tags. Comment out the `cypress/included` `INCLUDED_IMAGE_SHORT_TAG` to also prevent this tag from being created. This step is essential to avoid the related tags of any existing released images being moved to point to non-primary images. +4. Modify [circle.yml](circle.yml) to push releases from the feature branch. +5. Open a PR which targets the feature branch. +6. After PR merge, check Docker Hub and the associated new image(s). -```text -# pull the image to tag -$ docker pull cypress/base:12.18.2 -# tag that image with major version -$ docker tag cypress/base:12.18.2 cypress/base:12 -# tag that image with "latest" -$ docker tag cypress/base:12.18.2 cypress/base:latest - -# push the new images (which are the same) -$ docker push cypress/base:12 -$ docker push cypress/base:latest +#### Manual + +> Note: This requires being a member of the Cypress org + +`base-internal` and `browsers-internal` images are not automatically published after changes are merged. They require manual publishing to Docker Hub. To manual publish: + +1. Generate the corresponding files within the `base-internal` and/or `browsers-internal` directories that you want to generate the image from. +2. Log into Docker Desktop using `cypressdockerpublisher` credentials. +3. Follow the instructions to build the image from within the generated `Dockerfile` within the appropriate directory in order to build the image locally. +4. Select 'Push to Hub' on the generate image within Docker Desktop. + * If pushing the image fails with `(HTTP code 400) unexpected - invalid tag format`, you can try pushing the image through the CLI, `docker push ` +5. Check Docker Hub to ensure the new image is published and test that it works. + +![](https://github.com/cypress-io/cypress/assets/1271364/85507060-acc3-48b5-bc16-4160c4620e1e) + +#### To forward X11 from inside a Docker container to a host running macOS + +If you need to test that the image works with Cypress, you can follow these instructions if on a macOS machine, which might prove helpful when debugging image dependencies: + +1. Install XQuartz: https://www.xquartz.org/ +2. Launch XQuartz. Under the XQuartz menu, select Settings +3. Go to the security tab and ensure "Allow connections from network clients" is checked. +4. From the XQuarts terminal, run `xhost + ${hostname}` to allow connections to the macOS host +5. From the XQuarts terminal, set up a `HOSTNAME` env var `export HOSTNAME="host.docker.internal:0"` +6. From the XQuarts terminal, run your Docker image like such: + +```bash +docker run --rm -it -e DISPLAY="host.docker.internal:0" -v /tmp/.X11-unix:/tmp/.X11-unix --entrypoint bash ``` -## Bonus: smaller images +When executing `npx cypress open` from the Docker container, the display should now be visible! + +## Releasing a new factory version + +To release a new [factory](./factory/README.md), open a PR with the desired changes to the [factory.Dockerfile](./factory/factory.Dockerfile) or [installScripts](./factory/installScripts/). After making changes, note the changes in the factory [CHANGELOG](./factory/CHANGELOG.md) and bump the `FACTORY_VERSION` in the [.env](./factory/.env) file to trigger a new release. + +## Minimize image sizes -Pull request [#83](https://github.com/cypress-io/cypress-docker-images/pull/83) shows how to create smaller Docker images. Follow that PR's advice when creating new images. +The `BASE_IMAGE` defined in [factory/.env](./factory/.env) uses a [Debian Docker image](https://hub.docker.com/_/debian) and the current `BASE_IMAGE` is `debian:12-slim` (codename `bookworm`). To keep the image size of the generated Cypress Docker images to a minimum, choose the `slim` variant when other versions of Debian are used, for instance when [Debian releases](https://www.debian.org/releases/) a new major version. -To see the final size of an image, you can use command [`docker images`](https://docs.docker.com/engine/reference/commandline/images/) +To see the size of an image, you can use the command [`docker images`](https://docs.docker.com/engine/reference/commandline/images/), for instance with: +```shell +docker images --format "table {{.Repository}} {{.Tag}} {{.Size}}" ``` -$ docker images --format "{{.Tag}} {{.Size}}" cypress/base:11.13.0 -11.13.0 969MB + +A snapshot of current sizes shows: + +| REPOSITORY | TAG | SIZE | +| ---------------- | ----------------------------------------------------------------- | ------ | +| cypress/factory | 4.0.0 | 506MB | +| cypress/base | 20.13.1 | 640MB | +| cypress/browsers | node-20.13.1-chrome-125.0.6422.60-1-ff-126.0-edge-125.0.2535.51-1 | 2.14GB | +| cypress/included | 13.10.0 | 2.86GB | + +### Clean up `apt-get` artifacts + +Calling `apt-get` creates artifacts that are not necessary to the image, and these artifacts bloat the image size and all images that inherit from it. + +To avoid bloating the Docker layers with extraneous files, after every `RUN` call with `apt-get`, add these cleanup commands within the same `RUN`: + +```bash +rm -rf /usr/share/doc && \ +rm -rf /usr/share/man && \ +rm -rf /var/lib/apt/lists/* ``` -I would put this information into the image folder README file. +Note that due to the use of `debian:-slim` the directories `/usr/share/doc` and `/usr/share/man` already have minimal content. + +Deleting `/usr/share/man` has been removed as a default cleanup command due to side effects of preventing installation of some other Debian packages. + +### Use the `--no-install-recommends` with `apt-get` + +Whenever upgrading or installing packages with `apt-get`, use the `--no-install-recommends` flag to ensure that `apt-get` installs only the minimum packages required. + +### Omit `apt-get clean` -## Bonus 2: tool versions +Per the Docker documentation [Building best practices](https://docs.docker.com/build/building/best-practices/#apt-get), you don't need to add `apt-get clean`, since the Docker images implicitly run that command after every `apt-get` execution. + +> Official Debian and Ubuntu images automatically run `apt-get clean`, so explicit invocation is not required. + +## Tool versions It is a good idea to print versions of the installed tools and username at the end of the build, like @@ -95,6 +174,93 @@ It is a good idea to print versions of the installed tools and username at the e RUN echo " node version: $(node -v) \n" \ "npm version: $(npm -v) \n" \ "yarn version: $(yarn -v) \n" \ + "typescript version: $(tsc -v) \n" \ "debian version: $(cat /etc/debian_version) \n" \ "user: $(whoami) \n" ``` + +## Multi-Architecture Support + +As of Cypress 10.2.0, `arm64` and `x64` are both supported. + +In CI, the images are built and tested in real `arm64` and `x64` architectures. Then, via `binfmt` and `docker buildx`, we build `x64` and cross-build `arm64` from the same machine, and then publish that image to Docker Hub. The `docker buildx` step runs a second time to push to Amazon ECR: + + + +```text +┌────────────────────┐ ┌──────────────────┐ +│arm64 build+test job│ │x64 build+test job│ +└──────────┬─────────┘ └────────┬─────────┘ + │ │ +┌──────────▼────────────────────────▼─────────┐ +│x64 build+push job │ +│ ┌──────────────────────────────────────┐ │ +│ │ build+push to Docker Hub │ │ +│ └──────────────────┬───────────────────┘ │ +│ │ │ +│ ┌──────────────────▼───────────────────┐ │ +│ │ build+push to AWS ECR │ │ +│ └──────────────────────────────────────┘ │ +└─────────────────────────────────────────────┘ +``` + +A current limitation is that no `arm64` images have browser binaries - see https://github.com/cypress-io/cypress-docker-images/issues/695 for details. + +### Updating images to add `linux/arm64` + +Using the `docker` CLI, you can build the `linux/arm64` image of an image, glue the existing `linux/amd64` image to it to create a "manifest list", and then push that to update the current tag on the registry. The end result is that `amd64` users will see no change at all, while `arm64` users will now get the correct `arm64` image. + +
+Step-by-step instructions: + +These steps assume you have Docker Hub and ECR credentials. + +When following these steps, you may get into a state where you have cached copies of images causing wrong behavior. If this happens, delete the offending images, or `docker system prune --all` to be safe. + +1. Ensure that the entire `FROM` chain of this image has a `linux/arm64` version, and follow this guide for those `FROM` images if necessary. For example, generating an `arm64` `cypress/browsers:node1.2.3-chrome100` would require an `arm64` `cypress/base:1.2.3` image. +2. Re-run the `yarn add::image` command to update the `Dockerfile` folder with any changes in the build scripts. The correct command is at the top of every `build.sh` file in a comment. Verify that this has replaced the existing image and not caused any unexpected changes, like generating in the wrong directory. +3. `cd` into the `Dockerfile` folder. +4. Build the image and tag it with `tmp`: + ```shell + docker build -t cypress/:tmp --platform linux/arm64 . + ``` +5. Manually validate that the image works as expected and is really in `arm64`: + ```shell + docker run -it cypress/:tmp node -p "process.arch" # expect arm64 + ``` +6. Push the `tmp` tag, and record the digest string (`sha256:hexadecimal...`). This is your `arm64` digest string. + ```shell + docker push cypress/:tmp + # example output: + # [...] + # tmp: digest: sha256:6c38510771b756153b6f4d54c3ef9185006c1659f725e79d4999cd6304720353 size: 3659 + ``` +7. Find the current `amd64` digest string, either by using Docker Hub to browse tags, or `docker image inspect cypress/...` +8. Create a combined manifest using the existing name: + + ```shell + docker manifest create cypress/: \ + cypress/:tmp@sha256:rest-of-arm64-digest \ + cypress/:@sha256:rest-of-amd64-digest + + # example: + # docker manifest create cypress/included:10.3.0 \ + # cypress/included:tmp@sha256:6c38510771b756153b6f4d54c3ef9185006c1659f725e79d4999cd6304720353 \ + # cypress/included:10.3.0@sha256:942468cdb722c408607093f60eeb1b4ff098a384f9123bf2ded36f55d4c96352 + ``` + +9. Run `docker manifest push cypress/:` to push the completed manifest to Docker Hub. +10. Validate that the pushed image is correct. +11. To publish to ECR, use `docker login` to switch accounts and follow the below, slightly modified, steps - you don't need to rebuild the `linux/arm64` version. ECR Digest strings may differ from the Hub Digest strings since they are built separately. + ```shell + docker login --username AWS --password $(aws ecr-public get-login-password --region us-east-1) public.ecr.aws/cypress-io + # tag+push the arm64 build to public.ecr.aws + docker tag cypress/$IMAGE_NAME:$TAG@sha256:$ARM64_DIGEST public.ecr.aws/cypress-io/cypress/$IMAGE_NAME:tmp + # create a local tag for the public.ecr.aws amd64 build + docker pull public.ecr.aws/cypress-io/cypress/$IMAGE_NAME:$TAG + # create an arm64+amd64 manifest + replace the old image with the manifest + docker manifest create public.ecr.aws/cypress-io/cypress/$IMAGE_NAME:$TAG public.ecr.aws/cypress-io/cypress/$IMAGE_NAME:$TAG public.ecr.aws/cypress-io/cypress/$IMAGE_NAME:tmp + docker manifest push public.ecr.aws/cypress-io/cypress/$IMAGE_NAME:$TAG + ``` +12. Delete the `tmp` tag. +
diff --git a/README.md b/README.md index 6524d19d94..e3a878c11a 100644 --- a/README.md +++ b/README.md @@ -1,69 +1,161 @@ # Cypress Docker Images [![CircleCI](https://circleci.com/gh/cypress-io/cypress-docker-images/tree/master.svg?style=svg)](https://circleci.com/gh/cypress-io/cypress-docker-images/tree/master) -These images provide all of the required dependencies for running Cypress in Docker. +Cypress Docker images are published to [Cypress on Docker Hub](https://hub.docker.com/u/cypress). -We build three main images, click on the image name to see the available tags and versions. +These images provide all of the required dependencies for running Cypress in [Docker](https://docs.docker.com/guides/docker-overview/). -Image | Default | Description | Monthly pulls ---- | --- | --- | --- -[cypress/base](base) | `cypress/base:12` | All operating system dependencies, no Cypress, and no browsers. | [![Docker Pulls](https://img.shields.io/docker/pulls/cypress/base.svg?maxAge=604800)](https://hub.docker.com/r/cypress/base/) -[cypress/browsers](browsers) | `cypress/browsers:chrome67` | All operating system dependencies and some browsers. | [![Docker Pulls](https://img.shields.io/docker/pulls/cypress/browsers.svg?maxAge=604800)](https://hub.docker.com/r/cypress/browsers/) -[cypress/included](included) | `cypress/included:3.2.0` | All operating system dependencies, Cypress, and some browsers installed globally. | [![Docker Pulls](https://img.shields.io/docker/pulls/cypress/included.svg?maxAge=604800)](https://hub.docker.com/r/cypress/included/) +We build four images: click on the image name to see the available tags with versions, and refer to the [Tags](#tags) section below. These allow you to target specific combinations you need. -Of these images, we provide multiple tags for various operating systems and specific browser versions. These allow you to target specific combinations you need. +| Image Name | Description | Monthly pulls | +| -------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| [cypress/factory](https://hub.docker.com/r/cypress/factory/) | A base image template which can be used with ARGs to create a custom docker image. | [![Docker Pulls](https://img.shields.io/docker/pulls/cypress/factory.svg?maxAge=604800)](https://hub.docker.com/r/cypress/factory/) | +| [cypress/base](https://hub.docker.com/r/cypress/base/) | All operating system dependencies, no Cypress, and no browsers. | [![Docker Pulls](https://img.shields.io/docker/pulls/cypress/base.svg?maxAge=604800)](https://hub.docker.com/r/cypress/base/) | +| [cypress/browsers](https://hub.docker.com/r/cypress/browsers/) | All operating system dependencies, no Cypress, and some browsers. | [![Docker Pulls](https://img.shields.io/docker/pulls/cypress/browsers.svg?maxAge=604800)](https://hub.docker.com/r/cypress/browsers/) | +| [cypress/included](https://hub.docker.com/r/cypress/included/) | All operating system dependencies, Cypress, and some browsers installed globally. | [![Docker Pulls](https://img.shields.io/docker/pulls/cypress/included.svg?maxAge=604800)](https://hub.docker.com/r/cypress/included/) | -## Best practice +## Platforms -It is recommended to use a specific image tag, and not rely on the `default` tag. For example, it is better to use `cypress/base:12` than `cypress/base`. Even better it is to use full version of the image, like `cypress/base:12.18.0` - we will never overwrite the existing Docker images to prevent accidental changes. +Cypress Docker images are Linux based, using the Docker image [debian:12-slim](https://hub.docker.com/_/debian) as the default base image. Each of the above listed Cypress Docker images is published with [multi-architecture](https://docs.docker.com/contribute/style/terminology/#multi-architecture--multi-arch) support for `Linux/amd64` and `Linux/arm64` platforms. -## DockerHub +Cypress Docker images can be run as containers on Continuous Integration (CI) systems which support Docker. Cypress Docker images can also be run locally under [Docker Desktop](https://docs.docker.com/desktop/) for Mac, Linux or Windows environments. -All of the images and tags are published to DockerHub under +In the case of Windows environments, see [Docker Desktop for Windows](https://docs.docker.com/desktop/install/windows-install/) and Cypress documentation [Windows Subsystem for Linux](https://on.cypress.io/guides/references/advanced-installation#Windows-Subsystem-for-Linux) for additional information regarding Microsoft's `WSL2` and `WSLg` subsystems. The documentation and scripts in this repository assume that Docker Desktop for Windows runs in a virtual Linux environment. +## Browsers + +Cypress Docker images [cypress/browsers](./browsers/) include browsers for the `Linux/amd64` platform. Availability is pending for the `Linux/arm64` platform. + +| 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: | see [#1190](https://github.com/cypress-io/cypress-docker-images/issues/1190) and [examples/firefox-esr](./examples/firefox-esr/) | +| [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`.) + +[cypress/included](./included/) images, which are built on top of [cypress/browsers](./browsers/), contain the same set of browsers. + +[Tags](#tags) for [cypress/browsers](./browsers/) and [cypress/included](./included/) images show which versions of the browsers are loaded into the respective image. (Disregard the browser version tags for current `Linux/arm64` images however.) + +Building a custom image with [cypress/factory](./factory/) allows selection of individual browsers from the above list. + + +[Chrome]: https://developer.chrome.com/ +[Firefox]: https://www.mozilla.org/firefox +[Edge]: https://developer.microsoft.com/microsoft-edge/ +[Chromium]: https://www.chromium.org/Home/ +[Firefox Channel Choice]: https://support.mozilla.org/en-US/kb/choosing-firefox-update-channel + +### Debian packages + +[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. + 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 `amd64` versions from the [Rapid Release][Firefox Channel Choice] channel. + See [#1190](https://github.com/cypress-io/cypress-docker-images/issues/1190) for availability of Firefox `arm64` [Rapid Release][Firefox Channel Choice] versions. + + +[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 + +To select an image, use the `[REPOSITORY[:TAG]]` format. `REPOSITORY` is one of `cypress/factory`, `cypress/base`, `cypress/browsers` or `cypress/included`. If `TAG` is omitted, it defaults to `latest`. + +For each of the `REPOSITORY` image types, see the `Tags` section of each `README` document for more detail. + +| Image Type README | Example Tag | +| ---------------------------------------------------- | ----------- | +| [cypress/factory README](./factory/README.md#tags) | `5.1.0` | +| [cypress/base README](./base/README.md#tags) | `22.11.0` | +| [cypress/browsers README](./browsers/README.md#tags) | `22.11.0` | +| [cypress/included README](./included/README.md#tags) | `13.16.0` | + +Images with a specific version tag for `cypress/factory` and `cypress/base` (for example: `cypress/factory:5.1.0` and `cypress/base:22.11.0`) are frozen once they have been published. The same is true for images linked to full browser version tags for `cypress/browsers` and `cypress/included` (for example: `cypress/browsers:node-22.11.0-chrome-131.0.6778.69-1-ff-132.0.2-edge-131.0.2903.51-1` and `cypress/included:cypress-13.16.0-node-22.11.0-chrome-131.0.6778.69-1-ff-132.0.2-edge-131.0.2903.51-1`). + +`cypress/browsers` and `cypress/included` images are also offered with short-form convenience tags that do not include browser version details (example: `cypress/browsers:22.11.0` and `cypress/included:13.16.0`). The tags that these images refer to can change without notice if browser updates are made. + +Similarly, the convenience tag `latest`, for each of the image types, changes without notice. + +To avoid breaking changes when new images are released, use a corresponding frozen image tag rather than a convenience tag. + +## Usage + +📍Cypress Docker images are offered as a convenience measure. The goal is to offer Node.js, Browser and Cypress versions to streamline running tests in CI or other non-public, sandboxed environments. + +Some preparations and optimizations are not included. For example, given the near infinite permutations, images are not monitored for security vulnerabilities. Additionally, once images are published they are considered immutable and cannot be patched. That means (hypothetically) older images could become more vulnerable over time. + +This means they should **not** be used for production deployment and security scans should be performed as-needed by users of these images. + +## Docker Hub + +All of the images and tags are published to [Cypress on Docker Hub](https://hub.docker.com/u/cypress) under: + +- [https://hub.docker.com/r/cypress/factory](https://hub.docker.com/r/cypress/factory) - [https://hub.docker.com/r/cypress/base](https://hub.docker.com/r/cypress/base) - [https://hub.docker.com/r/cypress/browsers](https://hub.docker.com/r/cypress/browsers) - [https://hub.docker.com/r/cypress/included](https://hub.docker.com/r/cypress/included) +## Cypress/Factory + +Don't see the exact combination of Cypress, Node.js and browser versions you need for your test environment? Checkout our [cypress/factory](factory). You can use it to generate a custom image to fit your needs. + ## Examples -These images have all dependencies necessary to install and run Cypress. Just install your NPM dependencies (including Cypress) and run the tests. We utilize many of these docker images in our own projects, with different CI providers. +- Check out the documentation for each type of Cypress Docker image to read about example usage: [cypress/base](./base/README.md), [cypress/browsers](./browsers/README.md) and [cypress/included](./included/README.md) can all be used directly without change. Each of the Docker images can be used to build other images. [cypress/factory](./factory/README.md) is the preferred image to generate custom images. -[Check out our docs for examples.](https://on.cypress.io/docker) +- Refer to [CI Docker examples](https://on.cypress.io/guides/continuous-integration/introduction#CI-Docker-examples) for links to examples of using Cypress Docker images with different Continuous Integration (CI) providers. See also the example workflow [.github/workflows/example-cypress-github-action.yml](./.github/workflows/example-cypress-github-action.yml) in this repository for CI usage with [cypress‑io/github‑action](https://github.com/cypress-io/github-action) running under the CI provider [GitHub Actions](https://docs.github.com/en/actions). -If you want to use the `cypress/included` image, read [Run Cypress with a single Docker command](https://www.cypress.io/blog/2019/05/02/run-cypress-with-a-single-docker-command/) +## User -- [examples/included-as-non-root](examples/included-as-non-root) shows how to build a new Docker image on top of `cypress/included` image and run the tests as non-root user `node`. -- [examples/included-as-non-root-alternative](examples/included-as-non-root-alternative) shows another approach to allow built-in non-root user `node` to run tests using `cypress/included` image. -- [examples/included-as-non-root-mapped](examples/included-as-non-root-mapped) shows how to build a Docker image on top of `cypress/included` that runs with a non-root user that matches the id of the user on the host machine. This way, the permissions on any files created during the test run match the user's permissions on the host machine. -- [examples/included-with-plugins](examples/included-with-plugins) shows how to use locally installed [Cypress plugins](https://on.cypress.io/plugins) while running `cypress/included` image. +By default, Docker containers run as `root` user. [cypress/base](./base/README.md), [cypress/browsers](./browsers/README.md) and [cypress/included](./included/README.md) images provide the additional non-root user `node`. -## Common problems +If you run a Cypress Docker image locally as container with a non-root user, refer to the [Docker documentation](https://docs.docker.com/), such as [Docker Desktop FAQs](https://docs.docker.com/desktop/), for information on file-sharing between your host system and Docker. File-sharing details differ depending on the host operating system running Docker. -### Cannot run post-install hook +If you specify a Cypress Docker image in a [GitHub Actions job](https://docs.github.com/en/actions/using-jobs/running-jobs-in-a-container) `container` workflow section, add `options: --user 1001` to the workflow to avoid permissions issues. -Some versions of Node restrict running the `postinstall` hook with the following error message: +## Debug logs -```text -lifecycle realworld@1.0.0~postinstall: cannot run in wd realworld@1.0.0 -``` +To enable all Cypress debug logs when running Cypress in a Docker container, set the environment variable `DEBUG` to the value `cypress:*`. To filter the debug logs read [Log sources](https://on.cypress.io/troubleshooting#Log-sources) for alternate values of `DEBUG`. +- For `docker run` in a command line, refer to [docker run: set environment variables](https://docs.docker.com/reference/cli/docker/container/run/#env) for options to pass environment variables to a Docker container. +- In a Continuous Integration (CI) workflow using a Cypress Docker image, refer to your CI documentation for information on setting environment variables. -In that case run install with `npm install --unsafe-perm` flag, or set an environment variable in the container +## Known problems -```shell -npm_config_unsafe_perm: true -``` +## Firefox not found + +### Problem + +When running in [GitHub Actions](https://docs.github.com/en/actions) using a `cypress/browsers` or `cypress/included` image and testing against the Mozilla Firefox browser with the default `root` user, Cypress may fail to detect an installed Firefox browser. Instead Cypress shows the following error message: + +> Browser: firefox was not found on your system or is not supported by Cypress. +> Can't run because you've entered an invalid browser name. + +The [GitHub Actions Runner](https://github.com/actions/runner) creates the `/github/home` directory with non-root ownership `1001` (`runner`) and sets the environment variable `HOME` to point to this directory. Firefox will not run with these settings. If the command `firefox --version` is executed, Firefox explains the restriction: + +> Running Firefox as root in a regular user's session is not supported. ($HOME is /github/home which is owned by uid 1001.) + +See [Cypress issue #27121](https://github.com/cypress-io/cypress/issues/27121). -### Blank screen in Chrome +### Resolution -When running headed tests with X11 forwarding in Cypress v4 you might see a blank Chrome screen. Try disabling memory sharing by setting the following environment variables: +To allow Firefox to run in GitHub Actions in a Docker container, add `options: --user 1001` to the workflow to match GitHub Actions' `runner` user. -```shell -export QT_X11_NO_MITSHM=1 -export _X11_NO_MITSHM=1 -export _MITSHM=0 +```yml +container: + image: cypress/browsers + options: --user 1001 ``` -See [issue #270](https://github.com/cypress-io/cypress-docker-images/issues/270) +See [Tag Selection](#tag-selection) above for advice on selecting a non-default image tag. ## Contributing diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000000..464bd24025 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,33 @@ +# Reporting Security Issues + +If you believe you've found a potential security issue in any Cypress Docker image please consider the following: + +- Cypress Docker images released through this repo are convenience images with selected bundled and versioned components. +- They are intended for use in Continuous Integration (CI) or other non-public, isolated, sandboxed environments. +- Any security issue must be addressed by the component owner before any related fix can flow into a new Cypress Docker image. +- Released images are considered frozen and remain released. Newest packages have the tag `latest` applied. + +## Debian + +Each time a new [cypress/factory][factory] image is built, it uses the base Docker image defined as `BASE_IMAGE` in the [factory/.env](./factory/.env) file and installs any additional Debian packages from the stable distribution. This means any security issues which have been resolved by Debian are resolved in a new [cypress/factory][factory] build. Other Cypress Docker images are built on top of [cypress/factory][factory] and include any Debian security fixes as well. + +Refer to [Debian security](https://www.debian.org/security/) for further information. + +Debian is used in [cypress/factory][factory], [cypress/base][base], [cypress/browsers][browsers] and [cypress/included][included] Cypress Docker images. + +## Browsers + +Please refer to the associated browser owner's documentation regarding browser security vulnerabilities. + +Browsers are included in [cypress/browsers][browsers] and [cypress/included][included] Cypress Docker images. + +## Cypress + +For issues with Cypress, we recommend checking the [Cypress issue list](https://github.com/cypress-io/cypress/issues) to see if a vulnerability has already been reported there. Otherwise Cypress [Security and Compliance](https://cypress.io/security/) provides more information on reporting a security issue. + +Cypress is included only in [cypress/included][included] Cypress Docker images. + +[factory]: https://github.com/cypress-io/cypress-docker-images/tree/master/factory +[base]: https://github.com/cypress-io/cypress-docker-images/tree/master/base +[browsers]: https://github.com/cypress-io/cypress-docker-images/tree/master/browsers +[included]: https://github.com/cypress-io/cypress-docker-images/tree/master/included diff --git a/base-internal/README.md b/base-internal/README.md new file mode 100644 index 0000000000..28fb395f79 --- /dev/null +++ b/base-internal/README.md @@ -0,0 +1,22 @@ +# cypress/base-internal + + +> [!NOTE] +> `cypress/base-internal` Docker images are intended for internal Cypress.io use only. Please see [cypress/base](../base) for public images. + + +For content details of each image, see the corresponding [releases](./releases/) sub-directory. + +## Tags + +[cypress/base-internal](https://hub.docker.com/r/cypress/base-internal/tags) images on [Cypress on Docker Hub](https://hub.docker.com/u/cypress) use image tags in the form: + +- `` +- ``-node`` + +for example: + +- `cypress/base-internal:18.20.2` +- `cypress/base-internal:ubuntu24-node18` + +Images which do not contain an operating system in their tag are based on Debian. diff --git a/base-internal/releases/centos-7/Dockerfile b/base-internal/releases/centos-7/Dockerfile new file mode 100644 index 0000000000..869e3256a2 --- /dev/null +++ b/base-internal/releases/centos-7/Dockerfile @@ -0,0 +1,31 @@ +# build it with command +# docker build -t cypress/centos7-builder . --platform linux/amd64 . +# +FROM centos:7 + +# Update repo URLs to point to vault.centos.org +RUN for repo in /etc/yum.repos.d/*.repo; do \ + sed -i 's|mirrorlist=|#mirrorlist=|g' $repo; \ + sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' $repo; \ + sed -i 's|http://mirror.centos.org|http://vault.centos.org|g' $repo; \ + done && yum clean all + +# Install centos-release-scl to get the SCL repositories +RUN yum -y install centos-release-scl + +# Update repo URLs to point to vault.centos.org again +RUN for repo in /etc/yum.repos.d/CentOS-SCLo-scl*.repo; do \ + sed -i 's|mirrorlist=|#mirrorlist=|g' $repo; \ + sed -i 's|# baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' $repo; \ + sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' $repo; \ + sed -i 's|http://mirror.centos.org|http://vault.centos.org|g' $repo; \ + done && yum clean all + +# Install dependencies for building the addon and setting devtoolset-8 as the default compiler +RUN yum -y install curl python3 make atk-devel atk java-atk-wrapper at-spi2-atk gtk3 libXt libdrm mesa-libgbm Xvfb devtoolset-8-gcc devtoolset-8-gcc-c++ +RUN echo >> /etc/profile.d/devtoolset-8.sh 'source scl_source enable devtoolset-8' +RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash +RUN echo >> /etc/profile.d/nvm.sh 'source ~/.nvm/nvm.sh' +# Node 16 is the most recent version that supports CentOS 7. We only need it to call the +# build script for lib/addon, so there should be minimal risk of security issues. +RUN source ~/.nvm/nvm.sh && nvm install 16.20.2 && npm install -g yarn diff --git a/base-internal/releases/centos-7/README.md b/base-internal/releases/centos-7/README.md new file mode 100644 index 0000000000..6ec144b766 --- /dev/null +++ b/base-internal/releases/centos-7/README.md @@ -0,0 +1,5 @@ +# cypress/centos7-builder + +A CentOS 7 image used to build binaries against an older version of glibc (`2.17`). + +NOTE: This image is intended for internal use with https://github.com/cypress-io/cypress. \ No newline at end of file diff --git a/base-internal/releases/centos-7/build.sh b/base-internal/releases/centos-7/build.sh new file mode 100644 index 0000000000..9146d6a315 --- /dev/null +++ b/base-internal/releases/centos-7/build.sh @@ -0,0 +1,6 @@ +set e+x + +LOCAL_NAME=cypress/centos7-builder + +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME --platform linux/amd64 . diff --git a/base/16.0.0/Dockerfile b/base-internal/releases/node-18/18.15.0/Dockerfile similarity index 53% rename from base/16.0.0/Dockerfile rename to base-internal/releases/node-18/18.15.0/Dockerfile index 1c68f2641a..69e58ca506 100644 --- a/base/16.0.0/Dockerfile +++ b/base-internal/releases/node-18/18.15.0/Dockerfile @@ -1,11 +1,7 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# # build it with command -# docker build -t cypress/base:16.0.0 . +# docker build -t cypress/base-internal:18.15.0 . # -FROM node:16.0.0-buster +FROM node:18.15.0-bullseye-slim RUN apt-get update && \ apt-get install --no-install-recommends -y \ @@ -18,8 +14,10 @@ RUN apt-get update && \ libxss1 \ libasound2 \ libxtst6 \ + procps \ xauth \ xvfb \ + build-essential \ # install text editors vim-tiny \ nano \ @@ -40,28 +38,21 @@ RUN apt-get update && \ && rm -rf /var/lib/apt/lists/* \ && apt-get clean -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - # a few environment variables to make NPM installs easier # good colors for most applications -ENV TERM xterm +ENV TERM=xterm # avoid million NPM install messages -ENV npm_config_loglevel warn +ENV npm_config_loglevel=warn # allow installing when the main user is root -ENV npm_config_unsafe_perm true - -# Node libraries -RUN node -p process.versions - -# Show where Node loads required modules from -RUN node -p 'module.paths' +ENV npm_config_unsafe_perm=true -# 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" \ - "user: $(whoami) \n" +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" diff --git a/base-internal/releases/node-18/18.15.0/README.md b/base-internal/releases/node-18/18.15.0/README.md new file mode 100644 index 0000000000..5f26e3ff49 --- /dev/null +++ b/base-internal/releases/node-18/18.15.0/README.md @@ -0,0 +1,14 @@ +# cypress/base-internal:18.15.0 + +A Docker image with all dependencies pre-installed. + +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 + +- xauth (to run xvfb inside system-tests) +- build-essential to install `make` and other linux build packages + +#### Env variables + +- Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific diff --git a/base/10.18.0/build.sh b/base-internal/releases/node-18/18.15.0/build.sh old mode 100755 new mode 100644 similarity index 72% rename from base/10.18.0/build.sh rename to base-internal/releases/node-18/18.15.0/build.sh index 307b8494d6..562348f9c7 --- a/base/10.18.0/build.sh +++ b/base-internal/releases/node-18/18.15.0/build.sh @@ -1,7 +1,7 @@ set e+x # build image with Cypress dependencies -LOCAL_NAME=cypress/base:10.18.0 +LOCAL_NAME=cypress/base-internal:18.15.0 echo "Building $LOCAL_NAME" docker build -t $LOCAL_NAME . diff --git a/base/16.2.0/Dockerfile b/base-internal/releases/node-18/18.16.0/Dockerfile similarity index 53% rename from base/16.2.0/Dockerfile rename to base-internal/releases/node-18/18.16.0/Dockerfile index 5249e34b7b..81780fd073 100644 --- a/base/16.2.0/Dockerfile +++ b/base-internal/releases/node-18/18.16.0/Dockerfile @@ -1,11 +1,7 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# # build it with command -# docker build -t cypress/base:16.2.0 . +# docker build -t cypress/base-internal:18.16.0 --platform linux/amd64 . # -FROM node:16.2.0-buster +FROM node:18.16.0-bullseye-slim RUN apt-get update && \ apt-get install --no-install-recommends -y \ @@ -18,8 +14,10 @@ RUN apt-get update && \ libxss1 \ libasound2 \ libxtst6 \ + procps \ xauth \ xvfb \ + build-essential \ # install text editors vim-tiny \ nano \ @@ -40,28 +38,21 @@ RUN apt-get update && \ && rm -rf /var/lib/apt/lists/* \ && apt-get clean -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - # a few environment variables to make NPM installs easier # good colors for most applications -ENV TERM xterm +ENV TERM=xterm # avoid million NPM install messages -ENV npm_config_loglevel warn +ENV npm_config_loglevel=warn # allow installing when the main user is root -ENV npm_config_unsafe_perm true - -# Node libraries -RUN node -p process.versions - -# Show where Node loads required modules from -RUN node -p 'module.paths' +ENV npm_config_unsafe_perm=true -# 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" \ - "user: $(whoami) \n" +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" diff --git a/base-internal/releases/node-18/18.16.0/README.md b/base-internal/releases/node-18/18.16.0/README.md new file mode 100644 index 0000000000..c3a5047c7c --- /dev/null +++ b/base-internal/releases/node-18/18.16.0/README.md @@ -0,0 +1,14 @@ +# cypress/base-internal:18.16.0 + +A Docker image with all dependencies pre-installed. + +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 + +- xauth (to run xvfb inside system-tests) +- build-essential to install `make` and other linux build packages + +#### Env variables + +- Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific diff --git a/base/10.15.3/build.sh b/base-internal/releases/node-18/18.16.0/build.sh old mode 100755 new mode 100644 similarity index 72% rename from base/10.15.3/build.sh rename to base-internal/releases/node-18/18.16.0/build.sh index c932db7dd3..f639916828 --- a/base/10.15.3/build.sh +++ b/base-internal/releases/node-18/18.16.0/build.sh @@ -1,7 +1,7 @@ set e+x # build image with Cypress dependencies -LOCAL_NAME=cypress/base:10.15.3 +LOCAL_NAME=cypress/base-internal:18.16.0 echo "Building $LOCAL_NAME" docker build -t $LOCAL_NAME . diff --git a/base/16.1.0/Dockerfile b/base-internal/releases/node-18/18.17.0/Dockerfile similarity index 53% rename from base/16.1.0/Dockerfile rename to base-internal/releases/node-18/18.17.0/Dockerfile index 706ae50182..06e288e6bc 100644 --- a/base/16.1.0/Dockerfile +++ b/base-internal/releases/node-18/18.17.0/Dockerfile @@ -1,11 +1,7 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# # build it with command -# docker build -t cypress/base:16.1.0 . +# docker build -t cypress/base-internal:18.17.0 --platform linux/amd64 . # -FROM node:16.1.0-buster +FROM node:18.17.0-bullseye-slim RUN apt-get update && \ apt-get install --no-install-recommends -y \ @@ -18,8 +14,10 @@ RUN apt-get update && \ libxss1 \ libasound2 \ libxtst6 \ + procps \ xauth \ xvfb \ + build-essential \ # install text editors vim-tiny \ nano \ @@ -40,28 +38,21 @@ RUN apt-get update && \ && rm -rf /var/lib/apt/lists/* \ && apt-get clean -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - # a few environment variables to make NPM installs easier # good colors for most applications -ENV TERM xterm +ENV TERM=xterm # avoid million NPM install messages -ENV npm_config_loglevel warn +ENV npm_config_loglevel=warn # allow installing when the main user is root -ENV npm_config_unsafe_perm true - -# Node libraries -RUN node -p process.versions - -# Show where Node loads required modules from -RUN node -p 'module.paths' +ENV npm_config_unsafe_perm=true -# 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" \ - "user: $(whoami) \n" +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" diff --git a/base-internal/releases/node-18/18.17.0/README.md b/base-internal/releases/node-18/18.17.0/README.md new file mode 100644 index 0000000000..38d6dcf856 --- /dev/null +++ b/base-internal/releases/node-18/18.17.0/README.md @@ -0,0 +1,14 @@ +# cypress/base-internal:18.17.0 + +A Docker image with all dependencies pre-installed. + +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 + +- xauth (to run xvfb inside system-tests) +- build-essential to install `make` and other linux build packages + +#### Env variables + +- Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific diff --git a/base/10.11.0/build.sh b/base-internal/releases/node-18/18.17.0/build.sh old mode 100755 new mode 100644 similarity index 72% rename from base/10.11.0/build.sh rename to base-internal/releases/node-18/18.17.0/build.sh index 5c3db60da8..30ef3380ee --- a/base/10.11.0/build.sh +++ b/base-internal/releases/node-18/18.17.0/build.sh @@ -1,7 +1,7 @@ set e+x # build image with Cypress dependencies -LOCAL_NAME=cypress/base:10.11.0 +LOCAL_NAME=cypress/base-internal:18.17.0 echo "Building $LOCAL_NAME" docker build -t $LOCAL_NAME . diff --git a/base/16.3.0/Dockerfile b/base-internal/releases/node-18/18.17.1/Dockerfile similarity index 53% rename from base/16.3.0/Dockerfile rename to base-internal/releases/node-18/18.17.1/Dockerfile index 8fdf40fff1..b0488a9bc7 100644 --- a/base/16.3.0/Dockerfile +++ b/base-internal/releases/node-18/18.17.1/Dockerfile @@ -1,11 +1,7 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# # build it with command -# docker build -t cypress/base:16.3.0 . +# docker build -t cypress/base-internal:18.17.1 --platform linux/amd64 . # -FROM node:16.3.0-buster +FROM node:18.17.1-bullseye-slim RUN apt-get update && \ apt-get install --no-install-recommends -y \ @@ -18,8 +14,10 @@ RUN apt-get update && \ libxss1 \ libasound2 \ libxtst6 \ + procps \ xauth \ xvfb \ + build-essential \ # install text editors vim-tiny \ nano \ @@ -40,28 +38,21 @@ RUN apt-get update && \ && rm -rf /var/lib/apt/lists/* \ && apt-get clean -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - # a few environment variables to make NPM installs easier # good colors for most applications -ENV TERM xterm +ENV TERM=xterm # avoid million NPM install messages -ENV npm_config_loglevel warn +ENV npm_config_loglevel=warn # allow installing when the main user is root -ENV npm_config_unsafe_perm true - -# Node libraries -RUN node -p process.versions - -# Show where Node loads required modules from -RUN node -p 'module.paths' +ENV npm_config_unsafe_perm=true -# 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" \ - "user: $(whoami) \n" +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" diff --git a/base-internal/releases/node-18/18.17.1/README.md b/base-internal/releases/node-18/18.17.1/README.md new file mode 100644 index 0000000000..5eb8a935be --- /dev/null +++ b/base-internal/releases/node-18/18.17.1/README.md @@ -0,0 +1,14 @@ +# cypress/base-internal:18.17.1 + +A Docker image with all dependencies pre-installed. + +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 + +- xauth (to run xvfb inside system-tests) +- build-essential to install `make` and other linux build packages + +#### Env variables + +- Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific diff --git a/base/10.16.0/build.sh b/base-internal/releases/node-18/18.17.1/build.sh old mode 100755 new mode 100644 similarity index 72% rename from base/10.16.0/build.sh rename to base-internal/releases/node-18/18.17.1/build.sh index a1204caedd..1a9cb30b23 --- a/base/10.16.0/build.sh +++ b/base-internal/releases/node-18/18.17.1/build.sh @@ -1,7 +1,7 @@ set e+x # build image with Cypress dependencies -LOCAL_NAME=cypress/base:10.16.0 +LOCAL_NAME=cypress/base-internal:18.17.1 echo "Building $LOCAL_NAME" docker build -t $LOCAL_NAME . diff --git a/base/14.17.0/Dockerfile b/base-internal/releases/node-18/18.17.1_yarn_berry/Dockerfile similarity index 51% rename from base/14.17.0/Dockerfile rename to base-internal/releases/node-18/18.17.1_yarn_berry/Dockerfile index ceba52982d..1d7f9cd321 100644 --- a/base/14.17.0/Dockerfile +++ b/base-internal/releases/node-18/18.17.1_yarn_berry/Dockerfile @@ -1,11 +1,7 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# # build it with command -# docker build -t cypress/base:14.17.0 . +# docker build -t cypress/base-internal:18.17.1-yarn-berry --platform linux/amd64 . # -FROM node:14.17.0-buster +FROM node:18.17.1-bookworm-slim RUN apt-get update && \ apt-get install --no-install-recommends -y \ @@ -18,11 +14,16 @@ RUN apt-get update && \ 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 @@ -40,28 +41,28 @@ RUN apt-get update && \ && rm -rf /var/lib/apt/lists/* \ && apt-get clean -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version + 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 +ENV TERM=xterm # avoid million NPM install messages -ENV npm_config_loglevel warn +ENV npm_config_loglevel=warn # allow installing when the main user is root -ENV npm_config_unsafe_perm true - -# Node libraries -RUN node -p process.versions - -# Show where Node loads required modules from -RUN node -p 'module.paths' +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 -# 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" \ - "user: $(whoami) \n" +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" diff --git a/base-internal/releases/node-18/18.17.1_yarn_berry/README.md b/base-internal/releases/node-18/18.17.1_yarn_berry/README.md new file mode 100644 index 0000000000..8880e7cbf5 --- /dev/null +++ b/base-internal/releases/node-18/18.17.1_yarn_berry/README.md @@ -0,0 +1,13 @@ +# cypress/base-internal:18.17.1-yarn-berry + +A Docker image with all dependencies pre-installed. + +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 +* xauth (to run xvfb inside system-tests) +* build-essential to install `make` and other linux build packages +* has yarn 4 to test yarn PnP dependencies with Cypress in order to verify the `@cypress/webpack-batteries-included-preprocessor` works with yarn PnP (without `node_modules`) + +#### Env variables +* Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific diff --git a/base-internal/releases/node-18/18.17.1_yarn_berry/build.sh b/base-internal/releases/node-18/18.17.1_yarn_berry/build.sh new file mode 100644 index 0000000000..253475226e --- /dev/null +++ b/base-internal/releases/node-18/18.17.1_yarn_berry/build.sh @@ -0,0 +1,7 @@ +set e+x + +# build image with Cypress dependencies +LOCAL_NAME=cypress/base-internal:18.17.1-yarn-berry + +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/base-internal/releases/node-18/18.18.2/Dockerfile b/base-internal/releases/node-18/18.18.2/Dockerfile new file mode 100644 index 0000000000..52fcc55e53 --- /dev/null +++ b/base-internal/releases/node-18/18.18.2/Dockerfile @@ -0,0 +1,58 @@ +# build it with command +# docker build -t cypress/base-internal:18.18.2 --platform linux/amd64 . +# +FROM node:18.18.2-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 + +# 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 + +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" diff --git a/base-internal/releases/node-18/18.18.2/README.md b/base-internal/releases/node-18/18.18.2/README.md new file mode 100644 index 0000000000..2d978c721c --- /dev/null +++ b/base-internal/releases/node-18/18.18.2/README.md @@ -0,0 +1,14 @@ +# cypress/base-internal:18.18.2 + +A Docker image with all dependencies pre-installed. + +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 + +- xauth (to run xvfb inside system-tests) +- build-essential to install `make` and other linux build packages + +#### Env variables + +- Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific diff --git a/base-internal/releases/node-18/18.18.2/build.sh b/base-internal/releases/node-18/18.18.2/build.sh new file mode 100644 index 0000000000..beda7c1a4f --- /dev/null +++ b/base-internal/releases/node-18/18.18.2/build.sh @@ -0,0 +1,7 @@ +set e+x + +# build image with Cypress dependencies +LOCAL_NAME=cypress/base-internal:18.18.2 + +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/base-internal/releases/node-18/18.20.2/Dockerfile b/base-internal/releases/node-18/18.20.2/Dockerfile new file mode 100644 index 0000000000..bb517b7701 --- /dev/null +++ b/base-internal/releases/node-18/18.20.2/Dockerfile @@ -0,0 +1,58 @@ +# build it with command +# docker build -t cypress/base-internal:18.20.2 --platform linux/amd64 . +# +FROM node:18.20.2-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 + +# 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 + +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" diff --git a/base-internal/releases/node-18/18.20.2/README.md b/base-internal/releases/node-18/18.20.2/README.md new file mode 100644 index 0000000000..8dd9aed260 --- /dev/null +++ b/base-internal/releases/node-18/18.20.2/README.md @@ -0,0 +1,14 @@ +# cypress/base-internal:18.20.2 + +A Docker image with all dependencies pre-installed. + +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 + +- xauth (to run xvfb inside system-tests) +- build-essential to install `make` and other linux build packages + +#### Env variables + +- Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific diff --git a/base-internal/releases/node-18/18.20.2/build.sh b/base-internal/releases/node-18/18.20.2/build.sh new file mode 100644 index 0000000000..6539650b74 --- /dev/null +++ b/base-internal/releases/node-18/18.20.2/build.sh @@ -0,0 +1,7 @@ +set e+x + +# build image with Cypress dependencies +LOCAL_NAME=cypress/base-internal:18.20.2 + +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/base-internal/releases/node-20/20.15.0-buster-python3.8-gcc-10.5/Dockerfile b/base-internal/releases/node-20/20.15.0-buster-python3.8-gcc-10.5/Dockerfile new file mode 100644 index 0000000000..bff051eb45 --- /dev/null +++ b/base-internal/releases/node-20/20.15.0-buster-python3.8-gcc-10.5/Dockerfile @@ -0,0 +1,51 @@ +# build it with command +# docker build -t cypress/base-internal:20.15.0-buster-python3.8-gcc-10.5 --platform linux/amd64 . +# +FROM cypress/base-internal:20.15.0-buster + +RUN apt-get update && \ + apt-get install -y \ + wget \ + xz-utils \ + bzip2 \ + make \ + autoconf \ + gcc-multilib \ + g++-multilib \ + # clean up + && rm -rf /var/lib/apt/lists/* \ + && apt-get clean + + +# Install GCC 10.5. Note that there may be ways to optimize this +# but it is functional and takes a long time to build (over 8 hours) +# so it is not worth optimizing for now +RUN wget https://ftp.gnu.org/gnu/gcc/gcc-10.5.0/gcc-10.5.0.tar.gz \ + && tar xf gcc-10.5.0.tar.gz \ + && cd gcc-10.5.0 \ + && wget https://gmplib.org/download/gmp/gmp-6.2.0.tar.xz \ + && tar xf gmp-6.2.0.tar.xz \ + && mv gmp-6.2.0 gmp \ + && wget https://ftp.gnu.org/gnu/mpfr/mpfr-4.1.0.tar.gz \ + && tar xf mpfr-4.1.0.tar.gz \ + && mv mpfr-4.1.0 mpfr \ + && wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.2.1.tar.gz \ + && tar xf mpc-1.2.1.tar.gz \ + && mv mpc-1.2.1 mpc \ + && wget ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2 \ + && tar xf isl-0.18.tar.bz2 \ + && mv isl-0.18 isl \ + && ./configure --prefix=/usr --enable-languages=c,c++ \ + && make -j$(nproc) \ + && make install + +# Clean up +RUN rm -rf gcc-10.5.0 gcc-10.5.0.tar.gz + +# Install Python 3.8 +RUN wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz +RUN tar xvf Python-3.8.0.tgz +RUN cd Python-3.8.0 && ./configure --enable-optimizations --prefix=/usr && make altinstall +RUN rm /usr/bin/python3 && ln -s /usr/bin/python3.8 /usr/bin/python3 +# Clean up +RUN rm -rf Python-3.8.0 Python-3.8.0.tgz diff --git a/base-internal/releases/node-20/20.15.0-buster-python3.8-gcc-10.5/README.md b/base-internal/releases/node-20/20.15.0-buster-python3.8-gcc-10.5/README.md new file mode 100644 index 0000000000..bfb494f834 --- /dev/null +++ b/base-internal/releases/node-20/20.15.0-buster-python3.8-gcc-10.5/README.md @@ -0,0 +1,15 @@ +# cypress/base-internal:20.15.0-buster-python3.8-gcc-10.5 + +A Docker image with all dependencies pre-installed. + +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 + +- xauth (to run xvfb inside system-tests) +- build-essential to install `make` and other linux build packages +- python3.8 and gcc-10.5 to be able to build better-sqlite3 + +#### Env variables + +- Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific diff --git a/base-internal/releases/node-20/20.15.0-buster-python3.8-gcc-10.5/build.sh b/base-internal/releases/node-20/20.15.0-buster-python3.8-gcc-10.5/build.sh new file mode 100755 index 0000000000..d719e445f0 --- /dev/null +++ b/base-internal/releases/node-20/20.15.0-buster-python3.8-gcc-10.5/build.sh @@ -0,0 +1,7 @@ +set e+x + +# build image with Cypress dependencies +LOCAL_NAME=cypress/base-internal:20.15.0-buster-python3.8-gcc-10.5 + +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/base-internal/releases/node-20/20.15.0-buster/Dockerfile b/base-internal/releases/node-20/20.15.0-buster/Dockerfile new file mode 100644 index 0000000000..0799e35b98 --- /dev/null +++ b/base-internal/releases/node-20/20.15.0-buster/Dockerfile @@ -0,0 +1,56 @@ +# build it with command +# docker build -t cypress/base-internal:20.15.0-buster --platform linux/amd64 . +# +FROM node:20.15.0-buster-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" diff --git a/base-internal/releases/node-20/20.15.0-buster/README.md b/base-internal/releases/node-20/20.15.0-buster/README.md new file mode 100644 index 0000000000..a668cdedc1 --- /dev/null +++ b/base-internal/releases/node-20/20.15.0-buster/README.md @@ -0,0 +1,14 @@ +# cypress/base-internal:20.15.0-buster + +A Docker image with all dependencies pre-installed. + +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 + +- xauth (to run xvfb inside system-tests) +- build-essential to install `make` and other linux build packages + +#### Env variables + +- Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific diff --git a/base-internal/releases/node-20/20.15.0-buster/build.sh b/base-internal/releases/node-20/20.15.0-buster/build.sh new file mode 100755 index 0000000000..e41eb1f930 --- /dev/null +++ b/base-internal/releases/node-20/20.15.0-buster/build.sh @@ -0,0 +1,7 @@ +set e+x + +# build image with Cypress dependencies +LOCAL_NAME=cypress/base-internal:20.15.0-buster + +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/base-internal/releases/node-20/20.15.0/Dockerfile b/base-internal/releases/node-20/20.15.0/Dockerfile new file mode 100644 index 0000000000..26c5086b84 --- /dev/null +++ b/base-internal/releases/node-20/20.15.0/Dockerfile @@ -0,0 +1,56 @@ +# build it with command +# docker build -t cypress/base-internal:20.15.0 --platform linux/amd64 . +# +FROM node:20.15.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" diff --git a/base-internal/releases/node-20/20.15.0/README.md b/base-internal/releases/node-20/20.15.0/README.md new file mode 100644 index 0000000000..0108d627bd --- /dev/null +++ b/base-internal/releases/node-20/20.15.0/README.md @@ -0,0 +1,14 @@ +# cypress/base-internal:20.15.0 + +A Docker image with all dependencies pre-installed. + +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 + +- xauth (to run xvfb inside system-tests) +- build-essential to install `make` and other linux build packages + +#### Env variables + +- Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific diff --git a/base-internal/releases/node-20/20.15.0/build.sh b/base-internal/releases/node-20/20.15.0/build.sh new file mode 100755 index 0000000000..f50ef64c55 --- /dev/null +++ b/base-internal/releases/node-20/20.15.0/build.sh @@ -0,0 +1,7 @@ +set e+x + +# build image with Cypress dependencies +LOCAL_NAME=cypress/base-internal:20.15.0 + +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/base-internal/releases/node-20/20.18.0-bullseye/Dockerfile b/base-internal/releases/node-20/20.18.0-bullseye/Dockerfile new file mode 100644 index 0000000000..55c12f5b9f --- /dev/null +++ b/base-internal/releases/node-20/20.18.0-bullseye/Dockerfile @@ -0,0 +1,56 @@ +# build it with command +# docker build -t cypress/base-internal:20.18.0-bullseye --platform linux/amd64 . +# +FROM node:20.18.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 + +# 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" diff --git a/base-internal/releases/node-20/20.18.0-bullseye/README.md b/base-internal/releases/node-20/20.18.0-bullseye/README.md new file mode 100644 index 0000000000..0125be3d77 --- /dev/null +++ b/base-internal/releases/node-20/20.18.0-bullseye/README.md @@ -0,0 +1,14 @@ +# cypress/base-internal:20.18.0-bullseye + +A Docker image with all dependencies pre-installed. + +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 + +- xauth (to run xvfb inside system-tests) +- build-essential to install `make` and other linux build packages + +#### Env variables + +- Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific diff --git a/base-internal/releases/node-20/20.18.0-bullseye/build.sh b/base-internal/releases/node-20/20.18.0-bullseye/build.sh new file mode 100755 index 0000000000..cc443c9fb1 --- /dev/null +++ b/base-internal/releases/node-20/20.18.0-bullseye/build.sh @@ -0,0 +1,7 @@ +set e+x + +# build image with Cypress dependencies +LOCAL_NAME=cypress/base-internal:20.18.0-bullseye + +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/base/14.17.3/Dockerfile b/base-internal/releases/node-20/20.18.0-yarn-berry/Dockerfile similarity index 51% rename from base/14.17.3/Dockerfile rename to base-internal/releases/node-20/20.18.0-yarn-berry/Dockerfile index 5db844b0df..68448c93a8 100644 --- a/base/14.17.3/Dockerfile +++ b/base-internal/releases/node-20/20.18.0-yarn-berry/Dockerfile @@ -1,11 +1,7 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# # build it with command -# docker build -t cypress/base:14.17.3 . +# docker build -t cypress/base-internal:20.18.0-yarn-berry --platform linux/amd64 . # -FROM node:14.17.3-buster +FROM node:20.18.0-bookworm-slim RUN apt-get update && \ apt-get install --no-install-recommends -y \ @@ -18,11 +14,16 @@ RUN apt-get update && \ 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 @@ -40,28 +41,28 @@ RUN apt-get update && \ && rm -rf /var/lib/apt/lists/* \ && apt-get clean -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version + 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 +ENV TERM=xterm # avoid million NPM install messages -ENV npm_config_loglevel warn +ENV npm_config_loglevel=warn # allow installing when the main user is root -ENV npm_config_unsafe_perm true - -# Node libraries -RUN node -p process.versions - -# Show where Node loads required modules from -RUN node -p 'module.paths' +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 -# 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" \ - "user: $(whoami) \n" +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" diff --git a/base-internal/releases/node-20/20.18.0-yarn-berry/README.md b/base-internal/releases/node-20/20.18.0-yarn-berry/README.md new file mode 100644 index 0000000000..78fd64ecee --- /dev/null +++ b/base-internal/releases/node-20/20.18.0-yarn-berry/README.md @@ -0,0 +1,13 @@ +# cypress/base-internal:20.18.0-yarn-berry + +A Docker image with all dependencies pre-installed. + +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 +* xauth (to run xvfb inside system-tests) +* build-essential to install `make` and other linux build packages +* has yarn 4 to test yarn PnP dependencies with Cypress in order to verify the `@cypress/webpack-batteries-included-preprocessor` works with yarn PnP (without `node_modules`) + +#### Env variables +* Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific diff --git a/base-internal/releases/node-20/20.18.0-yarn-berry/build.sh b/base-internal/releases/node-20/20.18.0-yarn-berry/build.sh new file mode 100644 index 0000000000..f297d678b2 --- /dev/null +++ b/base-internal/releases/node-20/20.18.0-yarn-berry/build.sh @@ -0,0 +1,7 @@ +set e+x + +# build image with Cypress dependencies +LOCAL_NAME=cypress/base-internal:20.18.0-yarn-berry + +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/base-internal/releases/node-20/20.18.0/Dockerfile b/base-internal/releases/node-20/20.18.0/Dockerfile new file mode 100644 index 0000000000..df549d7957 --- /dev/null +++ b/base-internal/releases/node-20/20.18.0/Dockerfile @@ -0,0 +1,56 @@ +# build it with command +# docker build -t cypress/base-internal:20.18.0 --platform linux/amd64 . +# +FROM node:20.18.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" diff --git a/base-internal/releases/node-20/20.18.0/README.md b/base-internal/releases/node-20/20.18.0/README.md new file mode 100644 index 0000000000..58c58f2bc1 --- /dev/null +++ b/base-internal/releases/node-20/20.18.0/README.md @@ -0,0 +1,14 @@ +# cypress/base-internal:20.18.0 + +A Docker image with all dependencies pre-installed. + +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 + +- xauth (to run xvfb inside system-tests) +- build-essential to install `make` and other linux build packages + +#### Env variables + +- Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific diff --git a/base-internal/releases/node-20/20.18.0/build.sh b/base-internal/releases/node-20/20.18.0/build.sh new file mode 100755 index 0000000000..ba35348dbc --- /dev/null +++ b/base-internal/releases/node-20/20.18.0/build.sh @@ -0,0 +1,7 @@ +set e+x + +# build image with Cypress dependencies +LOCAL_NAME=cypress/base-internal:20.18.0 + +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/base-internal/releases/node-20/20.18.1-bullseye/Dockerfile b/base-internal/releases/node-20/20.18.1-bullseye/Dockerfile new file mode 100644 index 0000000000..5c516250c5 --- /dev/null +++ b/base-internal/releases/node-20/20.18.1-bullseye/Dockerfile @@ -0,0 +1,56 @@ +# build it with command +# docker build -t cypress/base-internal:20.18.1-bullseye --platform linux/amd64 . +# +FROM node:20.18.1-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 + +# 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" diff --git a/base-internal/releases/node-20/20.18.1-bullseye/README.md b/base-internal/releases/node-20/20.18.1-bullseye/README.md new file mode 100644 index 0000000000..2961b00911 --- /dev/null +++ b/base-internal/releases/node-20/20.18.1-bullseye/README.md @@ -0,0 +1,14 @@ +# cypress/base-internal:20.18.1-bullseye + +A Docker image with all dependencies pre-installed. + +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 + +- xauth (to run xvfb inside system-tests) +- build-essential to install `make` and other linux build packages + +#### Env variables + +- Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific diff --git a/base-internal/releases/node-20/20.18.1-bullseye/build.sh b/base-internal/releases/node-20/20.18.1-bullseye/build.sh new file mode 100755 index 0000000000..8938179b55 --- /dev/null +++ b/base-internal/releases/node-20/20.18.1-bullseye/build.sh @@ -0,0 +1,7 @@ +set e+x + +# build image with Cypress dependencies +LOCAL_NAME=cypress/base-internal:20.18.1-bullseye + +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/base-internal/releases/node-20/20.18.1-yarn-berry/Dockerfile b/base-internal/releases/node-20/20.18.1-yarn-berry/Dockerfile new file mode 100644 index 0000000000..76ca8e50c3 --- /dev/null +++ b/base-internal/releases/node-20/20.18.1-yarn-berry/Dockerfile @@ -0,0 +1,68 @@ +# build it with command +# docker build -t cypress/base-internal:20.18.1-yarn-berry --platform linux/amd64 . +# +FROM node:20.18.1-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" diff --git a/base-internal/releases/node-20/20.18.1-yarn-berry/README.md b/base-internal/releases/node-20/20.18.1-yarn-berry/README.md new file mode 100644 index 0000000000..7e8cf8e068 --- /dev/null +++ b/base-internal/releases/node-20/20.18.1-yarn-berry/README.md @@ -0,0 +1,13 @@ +# cypress/base-internal:20.18.1-yarn-berry + +A Docker image with all dependencies pre-installed. + +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 +* xauth (to run xvfb inside system-tests) +* build-essential to install `make` and other linux build packages +* has yarn 4 to test yarn PnP dependencies with Cypress in order to verify the `@cypress/webpack-batteries-included-preprocessor` works with yarn PnP (without `node_modules`) + +#### Env variables +* Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific diff --git a/base-internal/releases/node-20/20.18.1-yarn-berry/build.sh b/base-internal/releases/node-20/20.18.1-yarn-berry/build.sh new file mode 100644 index 0000000000..61e3196746 --- /dev/null +++ b/base-internal/releases/node-20/20.18.1-yarn-berry/build.sh @@ -0,0 +1,7 @@ +set e+x + +# build image with Cypress dependencies +LOCAL_NAME=cypress/base-internal:20.18.1-yarn-berry + +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/base-internal/releases/node-20/20.18.1/Dockerfile b/base-internal/releases/node-20/20.18.1/Dockerfile new file mode 100644 index 0000000000..649be58a8f --- /dev/null +++ b/base-internal/releases/node-20/20.18.1/Dockerfile @@ -0,0 +1,56 @@ +# build it with command +# docker build -t cypress/base-internal:20.18.1 --platform linux/amd64 . +# +FROM node:20.18.1-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" diff --git a/base-internal/releases/node-20/20.18.1/README.md b/base-internal/releases/node-20/20.18.1/README.md new file mode 100644 index 0000000000..fc94b7a283 --- /dev/null +++ b/base-internal/releases/node-20/20.18.1/README.md @@ -0,0 +1,14 @@ +# cypress/base-internal:20.18.1 + +A Docker image with all dependencies pre-installed. + +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 + +- xauth (to run xvfb inside system-tests) +- build-essential to install `make` and other linux build packages + +#### Env variables + +- Does not contain the `CACHE_FOLDER` and `FACTORY_DEFAULT_NODE_VERSION` env variables to keep unit tests non environment specific diff --git a/base-internal/releases/node-20/20.18.1/build.sh b/base-internal/releases/node-20/20.18.1/build.sh new file mode 100755 index 0000000000..6be7a54253 --- /dev/null +++ b/base-internal/releases/node-20/20.18.1/build.sh @@ -0,0 +1,7 @@ +set e+x + +# build image with Cypress dependencies +LOCAL_NAME=cypress/base-internal:20.18.1 + +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/base/ubuntu19-node12.14.1/Dockerfile b/base-internal/releases/ubuntu/ubuntu20-node16/Dockerfile similarity index 95% rename from base/ubuntu19-node12.14.1/Dockerfile rename to base-internal/releases/ubuntu/ubuntu20-node16/Dockerfile index 7a0d19d4de..e158597e92 100644 --- a/base/ubuntu19-node12.14.1/Dockerfile +++ b/base-internal/releases/ubuntu/ubuntu20-node16/Dockerfile @@ -1,9 +1,9 @@ -FROM ubuntu:19.04 +FROM ubuntu:20.04 RUN apt-get update && \ apt-get install -y apt-transport-https curl -RUN curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh +RUN curl -sL https://deb.nodesource.com/setup_16.x -o nodesource_setup.sh RUN bash nodesource_setup.sh RUN apt-get install -y nodejs diff --git a/base-internal/releases/ubuntu/ubuntu20-node16/README.md b/base-internal/releases/ubuntu/ubuntu20-node16/README.md new file mode 100644 index 0000000000..151ac5727f --- /dev/null +++ b/base-internal/releases/ubuntu/ubuntu20-node16/README.md @@ -0,0 +1,22 @@ +# cypress/base-internal:ubuntu20-node16 + +Image with Ubuntu 20.04 and Node 16.x.x. To be used internally by Cypress.io and is not intended for public use. + +``` +node version: v16.x.x +npm version: +yarn version: +debian version: +user: root +git: git version 2.20.1 +DISTRIB_ID=Ubuntu +DISTRIB_RELEASE=20.04 +DISTRIB_CODENAME=focal +DISTRIB_DESCRIPTION="Ubuntu 20.04" +NAME="Ubuntu" +VERSION="20.04 (Focal Fossa)" +ID=ubuntu +ID_LIKE=debian +PRETTY_NAME="Ubuntu 20.04" +VERSION_ID="20.04" +``` diff --git a/base-internal/releases/ubuntu/ubuntu20-node16/build.sh b/base-internal/releases/ubuntu/ubuntu20-node16/build.sh new file mode 100644 index 0000000000..0761051042 --- /dev/null +++ b/base-internal/releases/ubuntu/ubuntu20-node16/build.sh @@ -0,0 +1,7 @@ +set e+x + +# build image with Cypress dependencies +LOCAL_NAME=cypress/base-internal:ubuntu20-node16 + +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/base-internal/releases/ubuntu/ubuntu20-node18/Dockerfile b/base-internal/releases/ubuntu/ubuntu20-node18/Dockerfile new file mode 100644 index 0000000000..64d7d1f81c --- /dev/null +++ b/base-internal/releases/ubuntu/ubuntu20-node18/Dockerfile @@ -0,0 +1,61 @@ +FROM ubuntu:20.04 + +RUN apt-get update && \ + apt-get install -y apt-transport-https ca-certificates curl gnupg +RUN mkdir -p /etc/apt/keyrings +RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list +RUN apt-get update && apt-get install -y nodejs +# Install latest NPM and Yarn +RUN npm install -g npm@latest +RUN npm install -g yarn@latest + +# install additional native dependencies build tools +RUN apt install -y build-essential + +# install Git client +RUN apt-get install -y git +# install unzip utility to speed up Cypress unzips +# https://github.com/cypress-io/cypress/releases/tag/v3.8.0 +RUN apt-get install -y unzip + +# avoid any prompts +ENV DEBIAN_FRONTEND noninteractive +#install tzdata package +RUN apt-get install -y tzdata +# set your timezone +RUN ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime +RUN dpkg-reconfigure --frontend noninteractive tzdata + +# install Cypress dependencies (separate commands to avoid time outs) +RUN apt-get install -y \ + libgtk2.0-0 +RUN apt-get install -y \ + libnotify-dev +RUN apt-get install -y \ + libgconf-2-4 \ + libnss3 \ + libxss1 +RUN apt-get install -y \ + libasound2 \ + xvfb + +# 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 + +# 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" \ + "user: $(whoami) \n" \ + "git: $(git --version) \n" + +RUN echo "More version info" +RUN cat /etc/lsb-release +RUN cat /etc/os-release diff --git a/base-internal/releases/ubuntu/ubuntu20-node18/README.md b/base-internal/releases/ubuntu/ubuntu20-node18/README.md new file mode 100644 index 0000000000..9fc0df2846 --- /dev/null +++ b/base-internal/releases/ubuntu/ubuntu20-node18/README.md @@ -0,0 +1,22 @@ +# cypress/base-internal:ubuntu20-node18 + +Image with Ubuntu 20.04 and Node 18.x.x. To be used internally by Cypress.io and is not intended for public use. + +``` +node version: v18.x.x +npm version: +yarn version: +debian version: +user: root +git: git version 2.20.1 +DISTRIB_ID=Ubuntu +DISTRIB_RELEASE=20.04 +DISTRIB_CODENAME=focal +DISTRIB_DESCRIPTION="Ubuntu 20.04" +NAME="Ubuntu" +VERSION="20.04 (Focal Fossa)" +ID=ubuntu +ID_LIKE=debian +PRETTY_NAME="Ubuntu 20.04" +VERSION_ID="20.04" +``` diff --git a/base-internal/releases/ubuntu/ubuntu20-node18/build.sh b/base-internal/releases/ubuntu/ubuntu20-node18/build.sh new file mode 100644 index 0000000000..91b5046b7c --- /dev/null +++ b/base-internal/releases/ubuntu/ubuntu20-node18/build.sh @@ -0,0 +1,7 @@ +set e+x + +# build image with Cypress dependencies +LOCAL_NAME=cypress/base-internal:ubuntu20-node18 + +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/base/ubuntu18-node12.14.1/Dockerfile b/base-internal/releases/ubuntu/ubuntu22-node16/Dockerfile similarity index 75% rename from base/ubuntu18-node12.14.1/Dockerfile rename to base-internal/releases/ubuntu/ubuntu22-node16/Dockerfile index aea906ffb6..836ea29dcb 100644 --- a/base/ubuntu18-node12.14.1/Dockerfile +++ b/base-internal/releases/ubuntu/ubuntu22-node16/Dockerfile @@ -1,9 +1,9 @@ -FROM ubuntu:18.04 +FROM ubuntu:22.04 RUN apt-get update && \ apt-get install -y apt-transport-https curl -RUN curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh +RUN curl -sL https://deb.nodesource.com/setup_16.x -o nodesource_setup.sh RUN bash nodesource_setup.sh RUN apt-get install -y nodejs @@ -20,9 +20,23 @@ RUN apt-get install -y git # https://github.com/cypress-io/cypress/releases/tag/v3.8.0 RUN apt-get install -y unzip +# avoid any prompts +ENV DEBIAN_FRONTEND noninteractive +# install tzdata package +RUN apt-get install -y tzdata +# set your timezone +RUN ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime +RUN dpkg-reconfigure --frontend noninteractive tzdata + # install Cypress dependencies (separate commands to avoid time outs) RUN apt-get install -y \ - libgtk2.0-0 + libatk1.0-0 \ + libgtk2.0-0 \ + libglib2.0-0 \ + libatk-bridge2.0-0 \ + libcups2 \ + libgtk-3-0 \ + libgbm1 RUN apt-get install -y \ libnotify-dev RUN apt-get install -y \ diff --git a/base-internal/releases/ubuntu/ubuntu22-node16/README.md b/base-internal/releases/ubuntu/ubuntu22-node16/README.md new file mode 100644 index 0000000000..e62a8294b3 --- /dev/null +++ b/base-internal/releases/ubuntu/ubuntu22-node16/README.md @@ -0,0 +1,22 @@ +# cypress/base-internal:ubuntu22-node16 + +Image with Ubuntu 22.04 and Node 16.x.x. To be used internally by Cypress.io and is not intended for public use. + +``` +node version: v16.x.x +npm version: +yarn version: +debian version: +user: root +git: git version 2.20.1 +DISTRIB_ID=Ubuntu +DISTRIB_RELEASE=22.04.2 +DISTRIB_CODENAME=jammy +DISTRIB_DESCRIPTION="Ubuntu 22.04" +NAME="Ubuntu" +VERSION="22.04 (Jammy Jellyfish)" +ID=ubuntu +ID_LIKE=debian +PRETTY_NAME="Ubuntu 22.04" +VERSION_ID="22.04" +``` diff --git a/base-internal/releases/ubuntu/ubuntu22-node16/build.sh b/base-internal/releases/ubuntu/ubuntu22-node16/build.sh new file mode 100644 index 0000000000..93b6ed70fa --- /dev/null +++ b/base-internal/releases/ubuntu/ubuntu22-node16/build.sh @@ -0,0 +1,7 @@ +set e+x + +# build image with Cypress dependencies +LOCAL_NAME=cypress/base-internal:ubuntu22-node16 + +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/base-internal/releases/ubuntu/ubuntu22-node18/Dockerfile b/base-internal/releases/ubuntu/ubuntu22-node18/Dockerfile new file mode 100644 index 0000000000..9d636e2fdc --- /dev/null +++ b/base-internal/releases/ubuntu/ubuntu22-node18/Dockerfile @@ -0,0 +1,68 @@ +FROM ubuntu:22.04 + +RUN apt-get update && \ + apt-get install -y apt-transport-https ca-certificates curl gnupg +RUN mkdir -p /etc/apt/keyrings +RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list +RUN apt-get update && apt-get install -y nodejs + +# Install latest NPM and Yarn +RUN npm install -g npm@latest +RUN npm install -g yarn@latest + +# install additional native dependencies build tools +RUN apt install -y build-essential + +# install Git client +RUN apt-get install -y git +# install unzip utility to speed up Cypress unzips +# https://github.com/cypress-io/cypress/releases/tag/v3.8.0 +RUN apt-get install -y unzip + +# avoid any prompts +ENV DEBIAN_FRONTEND noninteractive +# install tzdata package +RUN apt-get install -y tzdata +# set your timezone +RUN ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime +RUN dpkg-reconfigure --frontend noninteractive tzdata + +# install Cypress dependencies (separate commands to avoid time outs) +RUN apt-get install -y \ + libatk1.0-0 \ + libgtk2.0-0 \ + libglib2.0-0 \ + libatk-bridge2.0-0 \ + libcups2 \ + libgtk-3-0 \ + libgbm1 +RUN apt-get install -y \ + libnotify-dev +RUN apt-get install -y \ + libgconf-2-4 \ + libnss3 \ + libxss1 +RUN apt-get install -y \ + libasound2 \ + xvfb + +# 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 + +# 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" \ + "user: $(whoami) \n" \ + "git: $(git --version) \n" + +RUN echo "More version info" +RUN cat /etc/lsb-release +RUN cat /etc/os-release diff --git a/base-internal/releases/ubuntu/ubuntu22-node18/README.md b/base-internal/releases/ubuntu/ubuntu22-node18/README.md new file mode 100644 index 0000000000..9509f903bc --- /dev/null +++ b/base-internal/releases/ubuntu/ubuntu22-node18/README.md @@ -0,0 +1,22 @@ +# cypress/base-internal:ubuntu22-node18 + +Image with Ubuntu 22.04 and Node 18.x.x. To be used internally by Cypress.io and is not intended for public use. + +``` +node version: v18.x.x +npm version: +yarn version: +debian version: +user: root +git: git version 2.20.1 +DISTRIB_ID=Ubuntu +DISTRIB_RELEASE=22.04.2 +DISTRIB_CODENAME=jammy +DISTRIB_DESCRIPTION="Ubuntu 22.04" +NAME="Ubuntu" +VERSION="22.04 (Jammy Jellyfish)" +ID=ubuntu +ID_LIKE=debian +PRETTY_NAME="Ubuntu 22.04" +VERSION_ID="22.04" +``` diff --git a/base-internal/releases/ubuntu/ubuntu22-node18/build.sh b/base-internal/releases/ubuntu/ubuntu22-node18/build.sh new file mode 100644 index 0000000000..4771752765 --- /dev/null +++ b/base-internal/releases/ubuntu/ubuntu22-node18/build.sh @@ -0,0 +1,7 @@ +set e+x + +# build image with Cypress dependencies +LOCAL_NAME=cypress/base-internal:ubuntu22-node18 + +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/base-internal/releases/ubuntu/ubuntu24-node18/Dockerfile b/base-internal/releases/ubuntu/ubuntu24-node18/Dockerfile new file mode 100644 index 0000000000..825151367d --- /dev/null +++ b/base-internal/releases/ubuntu/ubuntu24-node18/Dockerfile @@ -0,0 +1,77 @@ +FROM ubuntu:24.04 + +# set up NodeJS +RUN apt-get update && \ + apt-get install -y apt-transport-https ca-certificates curl gnupg +RUN mkdir -p /etc/apt/keyrings +RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list +RUN apt-get update && apt-get install -y nodejs + +# set up Python 3.11 +RUN apt-get install software-properties-common -y +RUN add-apt-repository ppa:deadsnakes/ppa +RUN apt-get update && apt-get upgrade -y +RUN apt-get install g++ make python3.11 -y +ENV NODE_GYP_FORCE_PYTHON=/usr/bin/python3.11 + +# Install latest NPM and Yarn +RUN npm install -g npm@latest +RUN npm install -g yarn@latest + +# install additional native dependencies build tools +RUN apt install -y build-essential + +# install Git client +RUN apt-get install -y git +# install unzip utility to speed up Cypress unzips +# https://github.com/cypress-io/cypress/releases/tag/v3.8.0 +RUN apt-get install -y unzip + +# avoid any prompts +ENV DEBIAN_FRONTEND noninteractive +# install tzdata package +RUN apt-get install -y tzdata +# set your timezone +RUN ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime +RUN dpkg-reconfigure --frontend noninteractive tzdata + +# install Cypress dependencies (separate commands to avoid time outs) +RUN apt-get install -y \ + libatk1.0-0 \ + libgtk2.0-0t64 \ + libglib2.0-0 \ + libatk-bridge2.0-0 \ + libcups2 \ + libgtk-3-0t64 \ + libgbm1 \ + libgbm-dev +RUN apt-get install -y \ + libnotify-dev +RUN apt-get install -y \ + libnss3 \ + libxss1 +RUN apt-get install -y \ + libasound2t64 \ + libxtst6 \ + xauth \ + xvfb +# 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 + +# 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" \ + "user: $(whoami) \n" \ + "git: $(git --version) \n" + +RUN echo "More version info" +RUN cat /etc/lsb-release +RUN cat /etc/os-release diff --git a/base-internal/releases/ubuntu/ubuntu24-node18/README.md b/base-internal/releases/ubuntu/ubuntu24-node18/README.md new file mode 100644 index 0000000000..f2e66161b3 --- /dev/null +++ b/base-internal/releases/ubuntu/ubuntu24-node18/README.md @@ -0,0 +1,22 @@ +# cypress/base-internal:ubuntu24-node18 + +Image with Ubuntu 24.04 and Node 18.x.x. To be used internally by Cypress.io and is not intended for public use. + +``` +node version: v18.x.x +npm version: +yarn version: +debian version: +user: root +git: git version 2.20.1 +DISTRIB_ID=Ubuntu +DISTRIB_RELEASE=24.04 +DISTRIB_CODENAME=noble +DISTRIB_DESCRIPTION="Ubuntu 24.04" +NAME="Ubuntu" +VERSION="24.04 (Noble Numbat)" +ID=ubuntu +ID_LIKE=debian +PRETTY_NAME="Ubuntu 24.04" +VERSION_ID="24.04" +``` diff --git a/base-internal/releases/ubuntu/ubuntu24-node18/build.sh b/base-internal/releases/ubuntu/ubuntu24-node18/build.sh new file mode 100644 index 0000000000..01b7131c5f --- /dev/null +++ b/base-internal/releases/ubuntu/ubuntu24-node18/build.sh @@ -0,0 +1,7 @@ +set e+x + +# build image with Cypress dependencies +LOCAL_NAME=cypress/base-internal:ubuntu24-node18 + +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/base/10.0.0/Dockerfile b/base/10.0.0/Dockerfile deleted file mode 100644 index 00881a2711..0000000000 --- a/base/10.0.0/Dockerfile +++ /dev/null @@ -1,52 +0,0 @@ -FROM node:10.0.0 - -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 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/10.0.0/README.md b/base/10.0.0/README.md deleted file mode 100644 index b725c59321..0000000000 --- a/base/10.0.0/README.md +++ /dev/null @@ -1,26 +0,0 @@ - -# cypress/base:10.0.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -``` -node version: v10.0.0 -npm version: 6.14.5 -yarn version: 1.22.4 -debian version: 8.10 -user: root -``` - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:10.0.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/10.0.0/build.sh b/base/10.0.0/build.sh deleted file mode 100755 index 06675289ba..0000000000 --- a/base/10.0.0/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:10.0.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/10.11.0/Dockerfile b/base/10.11.0/Dockerfile deleted file mode 100644 index 4c518dfa0c..0000000000 --- a/base/10.11.0/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -FROM node:10.11.0 - -## https://superuser.com/a/1423685/458816 -RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@6.9.0 -RUN npm install -g yarn@1.16.0 - -# 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 - -# 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" \ - "user: $(whoami) \n" diff --git a/base/10.11.0/README.md b/base/10.11.0/README.md deleted file mode 100644 index 49dabf99ea..0000000000 --- a/base/10.11.0/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:10.11.0 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:10.11.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/10.15.3/Dockerfile b/base/10.15.3/Dockerfile deleted file mode 100644 index 33d8e70d58..0000000000 --- a/base/10.15.3/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM node:10.15.3 - -RUN apt-get update && \ - apt-get install -y \ - libgtk2.0-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - xvfb - -RUN npm install -g npm@6.9.0 -RUN npm install -g yarn@1.15.2 - -# 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" diff --git a/base/10.15.3/README.md b/base/10.15.3/README.md deleted file mode 100644 index f7e5a2c6e6..0000000000 --- a/base/10.15.3/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:10.15.3 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:10.15.3 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/10.16.0/Dockerfile b/base/10.16.0/Dockerfile deleted file mode 100644 index a911bbd4b5..0000000000 --- a/base/10.16.0/Dockerfile +++ /dev/null @@ -1,22 +0,0 @@ -FROM node:10.16.0 - -RUN echo "user $(whoami)" - -RUN apt-get update && \ - apt-get install -y \ - libgtk2.0-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - xvfb - -RUN npm install -g npm@6.9.0 -RUN npm install -g yarn@1.16.0 - -# 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" diff --git a/base/10.16.0/README.md b/base/10.16.0/README.md deleted file mode 100644 index 2d4edc1da0..0000000000 --- a/base/10.16.0/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:10.16.0 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:10.16.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/10.16.3/Dockerfile b/base/10.16.3/Dockerfile deleted file mode 100644 index faa9f3984d..0000000000 --- a/base/10.16.3/Dockerfile +++ /dev/null @@ -1,58 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:10.16.3 . -# -FROM node:10.16.3-buster - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/10.16.3/README.md b/base/10.16.3/README.md deleted file mode 100644 index 79fcaf99db..0000000000 --- a/base/10.16.3/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:10.16.3 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:10.16.3 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/10.16.3/build.sh b/base/10.16.3/build.sh deleted file mode 100755 index 41b3b153e0..0000000000 --- a/base/10.16.3/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:10.16.3 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/10.18.0/Dockerfile b/base/10.18.0/Dockerfile deleted file mode 100644 index bccbf93024..0000000000 --- a/base/10.18.0/Dockerfile +++ /dev/null @@ -1,22 +0,0 @@ -FROM node:10.18.0 - -RUN echo "user $(whoami)" - -RUN apt-get update && \ - apt-get install -y \ - libgtk2.0-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - xvfb - -RUN npm install -g npm@latest -RUN npm install -g -f yarn@latest - -# 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" diff --git a/base/10.18.0/README.md b/base/10.18.0/README.md deleted file mode 100644 index 0a2feb2a21..0000000000 --- a/base/10.18.0/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:10.18.0 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:10.18.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/10.18.1/Dockerfile b/base/10.18.1/Dockerfile deleted file mode 100644 index 65fda53238..0000000000 --- a/base/10.18.1/Dockerfile +++ /dev/null @@ -1,52 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:10.18.1 . -# -FROM node:10.18.1-buster - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm install -g yarn@latest --force - -# 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 - -# 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" \ - "user: $(whoami) \n" diff --git a/base/10.18.1/README.md b/base/10.18.1/README.md deleted file mode 100644 index c35f56b6e2..0000000000 --- a/base/10.18.1/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# cypress/base:10.18.1 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:10.18.1 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/10.18.1/build.sh b/base/10.18.1/build.sh deleted file mode 100755 index ef9ad1bece..0000000000 --- a/base/10.18.1/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:10.18.1 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/10.2.1/Dockerfile b/base/10.2.1/Dockerfile deleted file mode 100644 index 108f0b60b0..0000000000 --- a/base/10.2.1/Dockerfile +++ /dev/null @@ -1,39 +0,0 @@ -FROM node:10.2.1 - -## https://superuser.com/a/1423685/458816 -RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@6.9.0 -RUN npm install -g yarn@1.16.0 - -# versions of local tools -RUN node -v -# NPM version should already be pretty new (> 6.4.0) -RUN npm -v -RUN yarn -v diff --git a/base/10.2.1/README.md b/base/10.2.1/README.md deleted file mode 100644 index 997b824708..0000000000 --- a/base/10.2.1/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:10.2.1 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:10.2.1 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/10.2.1/build.sh b/base/10.2.1/build.sh deleted file mode 100755 index 80d24bcb36..0000000000 --- a/base/10.2.1/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:10.2.1 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/10.22.0/Dockerfile b/base/10.22.0/Dockerfile deleted file mode 100644 index 81b787babc..0000000000 --- a/base/10.22.0/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:10.22.0 . -# -FROM node:10.22.0-buster - -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 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/10.22.0/README.md b/base/10.22.0/README.md deleted file mode 100644 index d9cae50d8f..0000000000 --- a/base/10.22.0/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:10.22.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:10.22.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/10.22.0/build.sh b/base/10.22.0/build.sh deleted file mode 100755 index ccca63f8aa..0000000000 --- a/base/10.22.0/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:10.22.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/10/Dockerfile b/base/10/Dockerfile deleted file mode 100644 index b75b87ea82..0000000000 --- a/base/10/Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -FROM node:10.13 - -RUN apt-get update && \ - apt-get install -y \ - libgtk2.0-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - xvfb - -# versions of local tools -RUN node -v -# NPM version should already be pretty new (> 6.4.0) -RUN npm -v -RUN yarn -v diff --git a/base/10/README.md b/base/10/README.md deleted file mode 100644 index ffd80d81dc..0000000000 --- a/base/10/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:10 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:10 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/10/build.sh b/base/10/build.sh deleted file mode 100755 index e16db5ad2b..0000000000 --- a/base/10/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:10 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/11.13.0/Dockerfile b/base/11.13.0/Dockerfile deleted file mode 100644 index 3295a9a5e2..0000000000 --- a/base/11.13.0/Dockerfile +++ /dev/null @@ -1,31 +0,0 @@ -FROM node:11.13.0 - -# install Cypress OS dependencies -# but do not install recommended libs and clean temp files -# -# note: -# Gtk2 for Cypress < 3.3.0 -# Gtk3 for Cypress >= 3.3.0 -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb && \ - rm -rf /var/lib/apt/lists/* - -RUN npm install -g npm@6.9.0 -RUN npm install -g yarn@1.15.2 - -# 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" \ - "user: $(whoami) \n" diff --git a/base/11.13.0/README.md b/base/11.13.0/README.md deleted file mode 100644 index 309b52c231..0000000000 --- a/base/11.13.0/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# cypress/base:11.13.0 - -Size - -``` -$ docker images --format "{{.Tag}} {{.Size}}" cypress/base:11.13.0 -11.13.0 969MB -``` - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:11.13.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/11.13.0/build.sh b/base/11.13.0/build.sh deleted file mode 100755 index 09a14269d1..0000000000 --- a/base/11.13.0/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:11.13.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/12.0.0-libgbm/Dockerfile b/base/12.0.0-libgbm/Dockerfile deleted file mode 100644 index 6dfef83e1e..0000000000 --- a/base/12.0.0-libgbm/Dockerfile +++ /dev/null @@ -1,35 +0,0 @@ -FROM node:12.0.0 - -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 \ - xauth \ - xvfb \ - # 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/* - -# 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" \ - "user: $(whoami) \n" diff --git a/base/12.0.0-libgbm/README.md b/base/12.0.0-libgbm/README.md deleted file mode 100644 index 3898903bc1..0000000000 --- a/base/12.0.0-libgbm/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cypress/base:12.0.0-libgbm - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:12.0.0-libgbm -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` - -``` -node version: v12.0.0 -npm version: 6.9.0 -yarn version: 1.15.2 -debian version: 9.8 -user: root -``` diff --git a/base/12.0.0-libgbm/build.sh b/base/12.0.0-libgbm/build.sh deleted file mode 100755 index b8fed6f692..0000000000 --- a/base/12.0.0-libgbm/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:12.0.0-libgbm - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/12.0.0/Dockerfile b/base/12.0.0/Dockerfile deleted file mode 100644 index d2aca13828..0000000000 --- a/base/12.0.0/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -FROM node:12.0.0 - -## https://superuser.com/a/1423685/458816 -RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@6.10.0 -RUN npm install -g yarn@1.16.0 - -# 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 - -# 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" \ - "user: $(whoami) \n" diff --git a/base/12.0.0/README.md b/base/12.0.0/README.md deleted file mode 100644 index 22e85b9399..0000000000 --- a/base/12.0.0/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:12.0.0 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:12.0.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/12.0.0/build.sh b/base/12.0.0/build.sh deleted file mode 100755 index 90cfe88f2d..0000000000 --- a/base/12.0.0/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:12.0.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/12.1.0/Dockerfile b/base/12.1.0/Dockerfile deleted file mode 100644 index 44cb9d0297..0000000000 --- a/base/12.1.0/Dockerfile +++ /dev/null @@ -1,28 +0,0 @@ -FROM node:12.1.0 - -# install Cypress OS dependencies -# but do not install recommended libs and clean temp files -# -# note: -# Gtk2 for Cypress < 3.3.0 -# Gtk3 for Cypress >= 3.3.0 -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb && \ - rm -rf /var/lib/apt/lists/* - -# 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" \ - "user: $(whoami) \n" diff --git a/base/12.1.0/README.md b/base/12.1.0/README.md deleted file mode 100644 index d5c1bbda55..0000000000 --- a/base/12.1.0/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:12.1.0 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:12.1.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/12.1.0/build.sh b/base/12.1.0/build.sh deleted file mode 100755 index b7ff48888f..0000000000 --- a/base/12.1.0/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:12.1.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/12.12.0/Dockerfile b/base/12.12.0/Dockerfile deleted file mode 100644 index 4ddfdc8c54..0000000000 --- a/base/12.12.0/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -FROM node:12.12.0 - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm install -g yarn@latest - -# 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 - -# 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" \ - "user: $(whoami) \n" diff --git a/base/12.12.0/README.md b/base/12.12.0/README.md deleted file mode 100644 index 7da3c670d2..0000000000 --- a/base/12.12.0/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:12.12.0 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:12.12.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/12.12.0/build.sh b/base/12.12.0/build.sh deleted file mode 100755 index f5086d595e..0000000000 --- a/base/12.12.0/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:12.12.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/12.13.0/Dockerfile b/base/12.13.0/Dockerfile deleted file mode 100644 index 55895bf9d6..0000000000 --- a/base/12.13.0/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -FROM node:12.13.0 - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm install -g yarn@latest - -# 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 - -# 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" \ - "user: $(whoami) \n" diff --git a/base/12.13.0/README.md b/base/12.13.0/README.md deleted file mode 100644 index cf55bc9329..0000000000 --- a/base/12.13.0/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:12.13.0 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:12.13.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/12.13.0/build.sh b/base/12.13.0/build.sh deleted file mode 100755 index 315ec7c122..0000000000 --- a/base/12.13.0/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:12.13.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/12.14.0/Dockerfile b/base/12.14.0/Dockerfile deleted file mode 100644 index 082e8821c6..0000000000 --- a/base/12.14.0/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -FROM node:12.14.0 - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm install -g -f yarn@latest - -# 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 - -# 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" \ - "user: $(whoami) \n" diff --git a/base/12.14.0/README.md b/base/12.14.0/README.md deleted file mode 100644 index b9d356b5ac..0000000000 --- a/base/12.14.0/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:12.14.0 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:12.14.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/12.14.0/build.sh b/base/12.14.0/build.sh deleted file mode 100755 index 58777ee6f1..0000000000 --- a/base/12.14.0/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:12.14.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/12.14.1/Dockerfile b/base/12.14.1/Dockerfile deleted file mode 100644 index e77f81b8b4..0000000000 --- a/base/12.14.1/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:12.14.1 . -# -FROM node:12.14.1-buster - -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 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/12.14.1/README.md b/base/12.14.1/README.md deleted file mode 100644 index f1a0296e0f..0000000000 --- a/base/12.14.1/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:12.14.1 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:12.14.1 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/12.14.1/build.sh b/base/12.14.1/build.sh deleted file mode 100755 index 2345bb6753..0000000000 --- a/base/12.14.1/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:12.14.1 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/12.16.0/Dockerfile b/base/12.16.0/Dockerfile deleted file mode 100644 index 23c6a5b9f2..0000000000 --- a/base/12.16.0/Dockerfile +++ /dev/null @@ -1,52 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:12.16.0 . -# -FROM node:12.16.0-buster - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@6.13.7 -RUN npm install -g yarn@1.22.0 --force - -# 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 - -# 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" \ - "user: $(whoami) \n" diff --git a/base/12.16.0/README.md b/base/12.16.0/README.md deleted file mode 100644 index 2c1581548e..0000000000 --- a/base/12.16.0/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# cypress/base:12.16.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:12.16.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/12.16.0/build.sh b/base/12.16.0/build.sh deleted file mode 100755 index aaee01bc0b..0000000000 --- a/base/12.16.0/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:12.16.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/12.16.1/Dockerfile b/base/12.16.1/Dockerfile deleted file mode 100644 index eb79105fe5..0000000000 --- a/base/12.16.1/Dockerfile +++ /dev/null @@ -1,58 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:12.16.1 . -# -FROM node:12.16.1-buster - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@6.14.1 -RUN npm --version - -RUN npm install -g yarn@1.22.0 --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/12.16.1/README.md b/base/12.16.1/README.md deleted file mode 100644 index 60f1df0146..0000000000 --- a/base/12.16.1/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:12.16.1 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:12.16.1 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/12.16.1/build.sh b/base/12.16.1/build.sh deleted file mode 100755 index 730bf643dd..0000000000 --- a/base/12.16.1/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:12.16.1 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/12.16.2/Dockerfile b/base/12.16.2/Dockerfile deleted file mode 100644 index d1a58380c5..0000000000 --- a/base/12.16.2/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:12.16.2 . -# -FROM node:12.16.2-buster - -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 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/12.16.2/README.md b/base/12.16.2/README.md deleted file mode 100644 index 3f9bbfff71..0000000000 --- a/base/12.16.2/README.md +++ /dev/null @@ -1,26 +0,0 @@ - -# cypress/base:12.16.2 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -``` -node version: v12.16.2 -npm version: 6.14.5 -yarn version: 1.22.4 -debian version: 10.3 -user: root -``` - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:12.16.2 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/12.16.2/build.sh b/base/12.16.2/build.sh deleted file mode 100755 index 162be53d0a..0000000000 --- a/base/12.16.2/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:12.16.2 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/12.18.0/Dockerfile b/base/12.18.0/Dockerfile deleted file mode 100644 index c0b258c16c..0000000000 --- a/base/12.18.0/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:12.18.0 . -# -FROM node:12.18.0-buster - -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 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/12.18.0/README.md b/base/12.18.0/README.md deleted file mode 100644 index 2f8f62bed1..0000000000 --- a/base/12.18.0/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:12.18.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:12.18.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/12.18.0/build.sh b/base/12.18.0/build.sh deleted file mode 100755 index 50280f5439..0000000000 --- a/base/12.18.0/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:12.18.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/12.18.2/Dockerfile b/base/12.18.2/Dockerfile deleted file mode 100644 index 2cbcec3961..0000000000 --- a/base/12.18.2/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:12.18.2 . -# -FROM node:12.18.2-buster - -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 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/12.18.2/README.md b/base/12.18.2/README.md deleted file mode 100644 index 7ba7669764..0000000000 --- a/base/12.18.2/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:12.18.2 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:12.18.2 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/12.18.2/build.sh b/base/12.18.2/build.sh deleted file mode 100755 index 0747f06549..0000000000 --- a/base/12.18.2/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:12.18.2 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/12.18.3/Dockerfile b/base/12.18.3/Dockerfile deleted file mode 100644 index ac47b8d5d3..0000000000 --- a/base/12.18.3/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:12.18.3 . -# -FROM node:12.18.3-buster - -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 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/12.18.3/README.md b/base/12.18.3/README.md deleted file mode 100644 index 0e53882dad..0000000000 --- a/base/12.18.3/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:12.18.3 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:12.18.3 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/12.18.3/build.sh b/base/12.18.3/build.sh deleted file mode 100755 index 40eb86304a..0000000000 --- a/base/12.18.3/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:12.18.3 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/12.18.4/Dockerfile b/base/12.18.4/Dockerfile deleted file mode 100644 index 1b1cc2e2a2..0000000000 --- a/base/12.18.4/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:12.18.4 . -# -FROM node:12.18.4-buster - -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 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/12.18.4/README.md b/base/12.18.4/README.md deleted file mode 100644 index 16d19eb3e2..0000000000 --- a/base/12.18.4/README.md +++ /dev/null @@ -1,28 +0,0 @@ - -# cypress/base:12.18.4 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:12.18.4 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` - -Versions - -``` -node version: v12.18.4 -npm version: 6.14.8 -yarn version: 1.22.10 -debian version: 10.5 -user: root -``` diff --git a/base/12.18.4/build.sh b/base/12.18.4/build.sh deleted file mode 100755 index ce3ebcecce..0000000000 --- a/base/12.18.4/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:12.18.4 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/12.19.0/Dockerfile b/base/12.19.0/Dockerfile deleted file mode 100644 index 962f5e584a..0000000000 --- a/base/12.19.0/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:12.19.0 . -# -FROM node:12.19.0-buster - -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 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/12.19.0/README.md b/base/12.19.0/README.md deleted file mode 100644 index 45dc7dcb29..0000000000 --- a/base/12.19.0/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:12.19.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:12.19.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/12.19.0/build.sh b/base/12.19.0/build.sh deleted file mode 100644 index 4389630147..0000000000 --- a/base/12.19.0/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:12.19.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/12.4.0/Dockerfile b/base/12.4.0/Dockerfile deleted file mode 100644 index ffdacfe403..0000000000 --- a/base/12.4.0/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -FROM node:12.4.0 - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@6.10.2 -RUN npm install -g yarn@1.17.3 - -# 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 - -# 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" \ - "user: $(whoami) \n" diff --git a/base/12.4.0/README.md b/base/12.4.0/README.md deleted file mode 100644 index 8831da9de4..0000000000 --- a/base/12.4.0/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:12.4.0 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:12.4.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/12.4.0/build.sh b/base/12.4.0/build.sh deleted file mode 100755 index c7d42686f7..0000000000 --- a/base/12.4.0/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:12.4.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/12.6.0/Dockerfile b/base/12.6.0/Dockerfile deleted file mode 100644 index c695495b48..0000000000 --- a/base/12.6.0/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -FROM node:12.6.0 - -## https://superuser.com/a/1423685/458816 -# RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@6.10.0 -RUN npm install -g yarn@1.16.0 - -# 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 - -# 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" \ - "user: $(whoami) \n" diff --git a/base/12.6.0/README.md b/base/12.6.0/README.md deleted file mode 100644 index c5ea71c043..0000000000 --- a/base/12.6.0/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:12.6.0 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:12.6.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/12.6.0/build.sh b/base/12.6.0/build.sh deleted file mode 100755 index 36f99df76c..0000000000 --- a/base/12.6.0/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:12.6.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/12.8.1/Dockerfile b/base/12.8.1/Dockerfile deleted file mode 100644 index 6c4a55da8c..0000000000 --- a/base/12.8.1/Dockerfile +++ /dev/null @@ -1,52 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:12.8.1 . -# -FROM node:12.8.1-buster - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm install -g yarn@latest --force - -# 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 - -# 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" \ - "user: $(whoami) \n" diff --git a/base/12.8.1/README.md b/base/12.8.1/README.md deleted file mode 100644 index 3fd8683c16..0000000000 --- a/base/12.8.1/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# cypress/base:12.8.1 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:12.8.1 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/12.8.1/build.sh b/base/12.8.1/build.sh deleted file mode 100755 index 50e7753f4b..0000000000 --- a/base/12.8.1/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:12.8.1 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/13.1.0/Dockerfile b/base/13.1.0/Dockerfile deleted file mode 100644 index 8196fc5a8d..0000000000 --- a/base/13.1.0/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -FROM node:13.1.0 - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm install -g -f yarn@latest - -# 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 - -# 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" \ - "user: $(whoami) \n" diff --git a/base/13.1.0/README.md b/base/13.1.0/README.md deleted file mode 100644 index 9d682bef68..0000000000 --- a/base/13.1.0/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:13.1.0 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:13.1.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/13.1.0/build.sh b/base/13.1.0/build.sh deleted file mode 100755 index c82fb44b1a..0000000000 --- a/base/13.1.0/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:13.1.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/13.3.0/Dockerfile b/base/13.3.0/Dockerfile deleted file mode 100644 index ade9854fb1..0000000000 --- a/base/13.3.0/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -FROM node:13.3.0 - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm install -g yarn@latest --force - -# 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 - -# 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" \ - "user: $(whoami) \n" diff --git a/base/13.3.0/README.md b/base/13.3.0/README.md deleted file mode 100644 index 3da635f933..0000000000 --- a/base/13.3.0/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:13.3.0 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:13.3.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/13.3.0/build.sh b/base/13.3.0/build.sh deleted file mode 100755 index 93fd146162..0000000000 --- a/base/13.3.0/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:13.3.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/13.6.0/Dockerfile b/base/13.6.0/Dockerfile deleted file mode 100644 index b3a4debda5..0000000000 --- a/base/13.6.0/Dockerfile +++ /dev/null @@ -1,52 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:13.6.0 . -# -FROM node:13.6.0-buster - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm install -g yarn@latest --force - -# 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 - -# 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" \ - "user: $(whoami) \n" diff --git a/base/13.6.0/README.md b/base/13.6.0/README.md deleted file mode 100644 index 88a3e1fe0f..0000000000 --- a/base/13.6.0/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# cypress/base:13.6.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:13.6.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/13.6.0/build.sh b/base/13.6.0/build.sh deleted file mode 100755 index 97b989dbec..0000000000 --- a/base/13.6.0/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:13.6.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/13.8.0/Dockerfile b/base/13.8.0/Dockerfile deleted file mode 100644 index 9a1d902f8a..0000000000 --- a/base/13.8.0/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:13.8.0 . -# -FROM node:13.8.0-buster - -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 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/13.8.0/README.md b/base/13.8.0/README.md deleted file mode 100644 index 76fa6bf61e..0000000000 --- a/base/13.8.0/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:13.8.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:13.8.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/13.8.0/build.sh b/base/13.8.0/build.sh deleted file mode 100755 index 054928ef83..0000000000 --- a/base/13.8.0/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:13.8.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/14.0.0/Dockerfile b/base/14.0.0/Dockerfile deleted file mode 100644 index b6e6ca962d..0000000000 --- a/base/14.0.0/Dockerfile +++ /dev/null @@ -1,58 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:14.0.0 . -# -FROM node:14.0.0-buster - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/14.0.0/README.md b/base/14.0.0/README.md deleted file mode 100644 index 11f2417642..0000000000 --- a/base/14.0.0/README.md +++ /dev/null @@ -1,26 +0,0 @@ - -# cypress/base:14.0.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:14.0.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` - -``` -node version: v14.0.0 -npm version: 6.14.4 -yarn version: 1.22.4 -debian version: 10.3 -user: root -``` diff --git a/base/14.0.0/build.sh b/base/14.0.0/build.sh deleted file mode 100755 index de9c8e0846..0000000000 --- a/base/14.0.0/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:14.0.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/14.10.1/Dockerfile b/base/14.10.1/Dockerfile deleted file mode 100644 index 06355d56a4..0000000000 --- a/base/14.10.1/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:14.10.1 . -# -FROM node:14.10.1-buster - -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 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/14.10.1/README.md b/base/14.10.1/README.md deleted file mode 100644 index cc13b82b4d..0000000000 --- a/base/14.10.1/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:14.10.1 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:14.10.1 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/14.10.1/build.sh b/base/14.10.1/build.sh deleted file mode 100755 index 45d90f47f8..0000000000 --- a/base/14.10.1/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:14.10.1 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/14.15.0/Dockerfile b/base/14.15.0/Dockerfile deleted file mode 100644 index 6568ba543a..0000000000 --- a/base/14.15.0/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:14.15.0 . -# -FROM node:14.15.0-buster - -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 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/14.15.0/README.md b/base/14.15.0/README.md deleted file mode 100644 index 54f51d91e2..0000000000 --- a/base/14.15.0/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:14.15.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:14.15.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/14.15.0/build.sh b/base/14.15.0/build.sh deleted file mode 100755 index 2433abbd12..0000000000 --- a/base/14.15.0/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:14.15.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/14.15.4/Dockerfile b/base/14.15.4/Dockerfile deleted file mode 100644 index 6d1558357c..0000000000 --- a/base/14.15.4/Dockerfile +++ /dev/null @@ -1,61 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:14.15.4 . -# -FROM node:14.15.4-buster - -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 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/14.15.4/README.md b/base/14.15.4/README.md deleted file mode 100644 index b6620bbc80..0000000000 --- a/base/14.15.4/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:14.15.4 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:14.15.4 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/14.15.4/build.sh b/base/14.15.4/build.sh deleted file mode 100755 index a5c964e06f..0000000000 --- a/base/14.15.4/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:14.15.4 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/14.16.0/Dockerfile b/base/14.16.0/Dockerfile deleted file mode 100644 index 6c31c43dab..0000000000 --- a/base/14.16.0/Dockerfile +++ /dev/null @@ -1,60 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:14.16.0 . -# -FROM node:14.16.0-buster - -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 \ - xauth \ - xvfb \ - # 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/* - -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/14.16.0/README.md b/base/14.16.0/README.md deleted file mode 100644 index 60810859e6..0000000000 --- a/base/14.16.0/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:14.16.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:14.16.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/14.16.0/build.sh b/base/14.16.0/build.sh deleted file mode 100755 index 03ab1cd921..0000000000 --- a/base/14.16.0/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:14.16.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/14.17.0/README.md b/base/14.17.0/README.md deleted file mode 100644 index 599ca1b02d..0000000000 --- a/base/14.17.0/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:14.17.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:14.17.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/14.17.0/build.sh b/base/14.17.0/build.sh deleted file mode 100755 index 0d88856cf9..0000000000 --- a/base/14.17.0/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:14.17.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/14.17.3/README.md b/base/14.17.3/README.md deleted file mode 100644 index 071d42ff98..0000000000 --- a/base/14.17.3/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:14.17.3 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:14.17.3 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/14.17.3/build.sh b/base/14.17.3/build.sh deleted file mode 100755 index b6b085ad6f..0000000000 --- a/base/14.17.3/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:14.17.3 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/14.5.0/Dockerfile b/base/14.5.0/Dockerfile deleted file mode 100644 index c930c26eda..0000000000 --- a/base/14.5.0/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:14.5.0 . -# -FROM node:14.5.0-buster - -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 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/14.5.0/README.md b/base/14.5.0/README.md deleted file mode 100644 index 8091a3d81c..0000000000 --- a/base/14.5.0/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:14.5.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:14.5.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/14.5.0/build.sh b/base/14.5.0/build.sh deleted file mode 100755 index 6d0c4ee5a9..0000000000 --- a/base/14.5.0/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:14.5.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/14.7.0/Dockerfile b/base/14.7.0/Dockerfile deleted file mode 100644 index d8334466e0..0000000000 --- a/base/14.7.0/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:14.7.0 . -# -FROM node:14.7.0-buster - -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 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/14.7.0/README.md b/base/14.7.0/README.md deleted file mode 100644 index 871a227c4e..0000000000 --- a/base/14.7.0/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:14.7.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:14.7.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/14.7.0/build.sh b/base/14.7.0/build.sh deleted file mode 100755 index 1f2f0113a9..0000000000 --- a/base/14.7.0/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:14.7.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/16.0.0/README.md b/base/16.0.0/README.md deleted file mode 100644 index 72e1a55f0b..0000000000 --- a/base/16.0.0/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:16.0.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:16.0.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/16.0.0/build.sh b/base/16.0.0/build.sh deleted file mode 100755 index df2f44a388..0000000000 --- a/base/16.0.0/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:16.0.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/16.1.0/README.md b/base/16.1.0/README.md deleted file mode 100644 index 6dca93e5c8..0000000000 --- a/base/16.1.0/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:16.1.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:16.1.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/16.1.0/build.sh b/base/16.1.0/build.sh deleted file mode 100755 index 299e652eeb..0000000000 --- a/base/16.1.0/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:16.1.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/16.2.0/README.md b/base/16.2.0/README.md deleted file mode 100644 index 0fd23c3382..0000000000 --- a/base/16.2.0/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:16.2.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:16.2.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/16.2.0/build.sh b/base/16.2.0/build.sh deleted file mode 100755 index bed3d15e6f..0000000000 --- a/base/16.2.0/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:16.2.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/16.3.0/README.md b/base/16.3.0/README.md deleted file mode 100644 index 5c9fe874b7..0000000000 --- a/base/16.3.0/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:16.3.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:16.3.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/16.3.0/build.sh b/base/16.3.0/build.sh deleted file mode 100755 index c5bce4e2b0..0000000000 --- a/base/16.3.0/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:16.3.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/16.4.0/Dockerfile b/base/16.4.0/Dockerfile deleted file mode 100644 index 750a7f00d5..0000000000 --- a/base/16.4.0/Dockerfile +++ /dev/null @@ -1,67 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:16.4.0 . -# -FROM node:16.4.0-buster - -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 \ - xauth \ - xvfb \ - # 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 - -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# Show where Node loads required modules from -RUN node -p 'module.paths' - -# 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" \ - "user: $(whoami) \n" diff --git a/base/16.4.0/README.md b/base/16.4.0/README.md deleted file mode 100644 index 03dc4f6fe7..0000000000 --- a/base/16.4.0/README.md +++ /dev/null @@ -1,19 +0,0 @@ - - -# cypress/base:16.4.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:16.4.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/16.4.0/build.sh b/base/16.4.0/build.sh deleted file mode 100755 index beaaf41416..0000000000 --- a/base/16.4.0/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:16.4.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/16.5.0/Dockerfile b/base/16.5.0/Dockerfile deleted file mode 100644 index 180b6a69d3..0000000000 --- a/base/16.5.0/Dockerfile +++ /dev/null @@ -1,67 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:16.5.0 . -# -FROM node:16.5.0-buster - -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 \ - xauth \ - xvfb \ - # 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 - -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# Show where Node loads required modules from -RUN node -p 'module.paths' - -# 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" \ - "user: $(whoami) \n" diff --git a/base/16.5.0/README.md b/base/16.5.0/README.md deleted file mode 100644 index 3545a2a72c..0000000000 --- a/base/16.5.0/README.md +++ /dev/null @@ -1,19 +0,0 @@ - - -# cypress/base:16.5.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:16.5.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/16.5.0/build.sh b/base/16.5.0/build.sh deleted file mode 100755 index 4b5ece5302..0000000000 --- a/base/16.5.0/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:16.5.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/6/Dockerfile b/base/6/Dockerfile deleted file mode 100644 index ae212250ed..0000000000 --- a/base/6/Dockerfile +++ /dev/null @@ -1,16 +0,0 @@ -FROM node:6.14 - -RUN apt-get update && \ - apt-get install -y \ - libgtk2.0-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - xvfb - -# versions of local tools -RUN node -v -RUN npm -v -RUN yarn -v diff --git a/base/6/README.md b/base/6/README.md deleted file mode 100644 index d52297f2f8..0000000000 --- a/base/6/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:6 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:6 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/6/build.sh b/base/6/build.sh deleted file mode 100755 index 66a767ee1a..0000000000 --- a/base/6/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:6 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/8.0.0/Dockerfile b/base/8.0.0/Dockerfile deleted file mode 100644 index 2c24299165..0000000000 --- a/base/8.0.0/Dockerfile +++ /dev/null @@ -1,74 +0,0 @@ -# this file was manually changed to re-install latest NPM -# otherwise the default NPM was broken and could not install files and urls -# see https://github.com/cypress-io/cypress/pull/6569 - -# WARNING: this file was autogenerated by generate-base-image.js -# contains all dependencies for running Cypress.io Test Runner -# https://on.cypress.io/docker and https://on.cypress.io/ci -# -# build it with command -# docker build -t cypress/base:8.0.0 . -# - -# NOTE: manual edit - there is no node:8.0.0-buster that we typically use -FROM node:8.0.0 - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -# the current tools -RUN which node -RUN which npm -RUN npm --version -RUN npm install npm@latest -RUN echo "current bin path $(npm bin)" -# npm fails to install over it globally -# so we will install the latest npm locally and thenk link in place of global npm -RUN which npm -RUN rm /usr/local/bin/npm -RUN ln -s /node_modules/.bin/npm /usr/local/bin/npm -RUN npm --version - -RUN npm install -g yarn@latest --force -RUN yarn --version - -# 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 - -# Node libraries -RUN node -p process.versions - -# 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" \ - "user: $(whoami) \n" diff --git a/base/8.0.0/README.md b/base/8.0.0/README.md deleted file mode 100644 index c808efc377..0000000000 --- a/base/8.0.0/README.md +++ /dev/null @@ -1,18 +0,0 @@ - -# cypress/base:8.0.0 - -A Docker image with all dependencies pre-installed. -Just add your NPM packages (including Cypress) and run the tests. -See [Cypress Docker docs](https://on.cypress.io/docker) and -[Cypress CI guide](https://on.cypress.io/ci). - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:8.0.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/8.0.0/build.sh b/base/8.0.0/build.sh deleted file mode 100755 index 034cd28eee..0000000000 --- a/base/8.0.0/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -# WARNING: this file was autogenerated by generate-base-image.js -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:8.0.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/8.15.1/Dockerfile b/base/8.15.1/Dockerfile deleted file mode 100644 index 5c4f3e65c8..0000000000 --- a/base/8.15.1/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM node:8.15.1 - -RUN apt-get update && \ - apt-get install -y \ - libgtk2.0-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - xvfb - -RUN npm install -g npm@6.9.0 -RUN npm install -g yarn@1.15.2 - -# 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" diff --git a/base/8.15.1/README.md b/base/8.15.1/README.md deleted file mode 100644 index 57d27a1588..0000000000 --- a/base/8.15.1/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:8.15.1 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:8.15.1 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/8.15.1/build.sh b/base/8.15.1/build.sh deleted file mode 100755 index e43ce9a21c..0000000000 --- a/base/8.15.1/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:8.15.1 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/8.16.0/Dockerfile b/base/8.16.0/Dockerfile deleted file mode 100644 index 0ffcd34f9b..0000000000 --- a/base/8.16.0/Dockerfile +++ /dev/null @@ -1,43 +0,0 @@ -FROM node:8.16.0 - -# install Cypress OS dependencies -# but do not install recommended libs and clean temp files -# -# note: -# Gtk2 for Cypress < 3.3.0 -# Gtk3 for Cypress >= 3.3.0 -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@6.9.0 -RUN npm install -g yarn@1.16.0 - -# 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" \ - "user: $(whoami) \n" diff --git a/base/8.16.0/README.md b/base/8.16.0/README.md deleted file mode 100644 index 63c1a0de39..0000000000 --- a/base/8.16.0/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# cypress/base:8.16.0 - -Includes Chinese fonts, see [Dockerfile](Dockerfile) - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:8.16.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/8.16.0/build.sh b/base/8.16.0/build.sh deleted file mode 100755 index 28e9f9d871..0000000000 --- a/base/8.16.0/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:8.16.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/8.2.1/Dockerfile b/base/8.2.1/Dockerfile deleted file mode 100644 index 3a07f9dfe9..0000000000 --- a/base/8.2.1/Dockerfile +++ /dev/null @@ -1,87 +0,0 @@ -# take same base as 8.15.1 Docker file -# https://github.com/nodejs/docker-node/blob/de76fb48b532d6be012098dc3538bd15329a27d0/8/jessie/Dockerfile -FROM buildpack-deps:jessie - -RUN groupadd --gid 1000 node \ - && useradd --uid 1000 --gid node --shell /bin/bash --create-home node - -ENV NODE_VERSION 8.2.1 - -RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \ - && case "${dpkgArch##*-}" in \ - amd64) ARCH='x64';; \ - ppc64el) ARCH='ppc64le';; \ - s390x) ARCH='s390x';; \ - arm64) ARCH='arm64';; \ - armhf) ARCH='armv7l';; \ - i386) ARCH='x86';; \ - *) echo "unsupported architecture"; exit 1 ;; \ - esac \ - # gpg keys listed at https://github.com/nodejs/node#release-keys - && set -ex \ - && for key in \ - 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ - FD3A5288F042B6850C66B31F09FE44734EB7990E \ - 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ - DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ - C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ - B9AE9905FFD7803F25714661B63B535A4C206CA9 \ - 77984A986EBC2AA786BC0F66B01FBB92821C587A \ - 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \ - 4ED778F539E3634C779C87C6D7062848A1AB005C \ - A48C2BEE680E841632CD4E44F07496B3EB3C1762 \ - B9E2F5981AA6E0CD28160D9FF13993A75599653C \ - ; do \ - gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \ - gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \ - gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \ - done \ - && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \ - && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ - && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ - && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ - && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ - && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \ - && ln -s /usr/local/bin/node /usr/local/bin/nodejs - -ENV YARN_VERSION 1.12.3 - -RUN set -ex \ - && for key in \ - 6A010C5166006599AA17F08146C2130DFD2497F5 \ - ; do \ - gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \ - gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \ - gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \ - done \ - && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \ - && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \ - && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ - && mkdir -p /opt \ - && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \ - && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \ - && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \ - && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz - -# CMD [ "node" ] - -# install Cypress OS dependencies - -RUN apt-get update && \ - apt-get install -y \ - libgtk2.0-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - xvfb - -# RUN npm install -g npm@6.9.0 -# RUN npm install -g yarn - -# 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" diff --git a/base/8.2.1/README.md b/base/8.2.1/README.md deleted file mode 100644 index 555c93b085..0000000000 --- a/base/8.2.1/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:8.2.1 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:8.2.1 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/8.2.1/build.sh b/base/8.2.1/build.sh deleted file mode 100755 index 9e009e0e86..0000000000 --- a/base/8.2.1/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:8.2.1 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/8.9.3-npm-6.10.1/Dockerfile b/base/8.9.3-npm-6.10.1/Dockerfile deleted file mode 100644 index c7b8b8d090..0000000000 --- a/base/8.9.3-npm-6.10.1/Dockerfile +++ /dev/null @@ -1,56 +0,0 @@ -FROM node:8.9.3 - -# 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 - -# install Cypress OS dependencies -# but do not install recommended libs and clean temp files -# -# note: -# Gtk2 for Cypress < 3.3.0 -# Gtk3 for Cypress >= 3.3.0 -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm -v -# getting around "npmlog" missing bug -# https://github.com/npm/npm/issues/16807#issuecomment-369375380 -RUN npx npm@5.6 i -g npm@6.10.1 -RUN npm -v -RUN npm install -g yarn@1.17.3 - -# 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" \ - "user: $(whoami) \n" diff --git a/base/8.9.3-npm-6.10.1/README.md b/base/8.9.3-npm-6.10.1/README.md deleted file mode 100644 index 6e2f5a00b1..0000000000 --- a/base/8.9.3-npm-6.10.1/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# cypress/base:8.9.3-npm-6.10.1 - -Includes Chinese fonts, see [Dockerfile](Dockerfile) - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:8.9.3-npm-6.10.1 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/8.9.3-npm-6.10.1/build.sh b/base/8.9.3-npm-6.10.1/build.sh deleted file mode 100755 index 6ca3d91f6e..0000000000 --- a/base/8.9.3-npm-6.10.1/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:8.9.3-npm-6.10.1 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/8.9.3/Dockerfile b/base/8.9.3/Dockerfile deleted file mode 100644 index 8ac5dbcbee..0000000000 --- a/base/8.9.3/Dockerfile +++ /dev/null @@ -1,91 +0,0 @@ -# take same base as 8.15.1 Docker file -# https://github.com/nodejs/docker-node/blob/de76fb48b532d6be012098dc3538bd15329a27d0/8/jessie/Dockerfile -FROM buildpack-deps:jessie - -RUN groupadd --gid 1000 node \ - && useradd --uid 1000 --gid node --shell /bin/bash --create-home node - -ENV NODE_VERSION 8.9.3 - -RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \ - && case "${dpkgArch##*-}" in \ - amd64) ARCH='x64';; \ - ppc64el) ARCH='ppc64le';; \ - s390x) ARCH='s390x';; \ - arm64) ARCH='arm64';; \ - armhf) ARCH='armv7l';; \ - i386) ARCH='x86';; \ - *) echo "unsupported architecture"; exit 1 ;; \ - esac \ - # gpg keys listed at https://github.com/nodejs/node#release-keys - && set -ex \ - && for key in \ - 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ - FD3A5288F042B6850C66B31F09FE44734EB7990E \ - 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ - DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ - C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ - B9AE9905FFD7803F25714661B63B535A4C206CA9 \ - 77984A986EBC2AA786BC0F66B01FBB92821C587A \ - 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \ - 4ED778F539E3634C779C87C6D7062848A1AB005C \ - A48C2BEE680E841632CD4E44F07496B3EB3C1762 \ - B9E2F5981AA6E0CD28160D9FF13993A75599653C \ - ; do \ - gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \ - gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \ - gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \ - done \ - && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \ - && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ - && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ - && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ - && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ - && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \ - && ln -s /usr/local/bin/node /usr/local/bin/nodejs - -ENV YARN_VERSION 1.12.3 - -RUN set -ex \ - && for key in \ - 6A010C5166006599AA17F08146C2130DFD2497F5 \ - ; do \ - gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \ - gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \ - gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \ - done \ - && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \ - && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \ - && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ - && mkdir -p /opt \ - && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \ - && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \ - && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \ - && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz - -# install Cypress OS dependencies -# but do not install recommended libs and clean temp files -# -# note: -# Gtk2 for Cypress < 3.3.0 -# Gtk3 for Cypress >= 3.3.0 -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb && \ - rm -rf /var/lib/apt/lists/* - -# 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" \ - "user: $(whoami) \n" diff --git a/base/8.9.3/README.md b/base/8.9.3/README.md deleted file mode 100644 index 12824153a0..0000000000 --- a/base/8.9.3/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:8.9.3 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:8.9.3 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/8.9.3/build.sh b/base/8.9.3/build.sh deleted file mode 100755 index d0f1556dd4..0000000000 --- a/base/8.9.3/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:8.9.3 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/8/Dockerfile b/base/8/Dockerfile deleted file mode 100644 index 7c48e66ea6..0000000000 --- a/base/8/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM node:8.12 - -RUN apt-get update && \ - apt-get install -y \ - libgtk2.0-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - xvfb - -RUN npm install -g npm@6.4.1 - -# versions of local tools -RUN node -v -RUN npm -v -RUN yarn -v diff --git a/base/8/README.md b/base/8/README.md deleted file mode 100644 index 2078c5e56b..0000000000 --- a/base/8/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:8 - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:8 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/8/build.sh b/base/8/build.sh deleted file mode 100755 index 6e34b8d6b2..0000000000 --- a/base/8/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:8 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/CHANGELOG.md b/base/CHANGELOG.md new file mode 100644 index 0000000000..ebec3d0c8c --- /dev/null +++ b/base/CHANGELOG.md @@ -0,0 +1,7 @@ +# CHANGELOG cypress/base + +A separate CHANGELOG is no longer maintained for `cypress/base` Docker images. + +- See [cypress/factory/CHANGELOG](../factory/CHANGELOG.md) for major changes to the `cypress/factory` images since January 2023. `cypress/base` images are built on top of `cypress/factory` images. +- See the [archived cypress/base/CHANGELOG](https://github.com/cypress-io/cypress-docker-images/blob/757749f1b0624d80c429e9f49152dba7dfb0e1be/base/CHANGELOG.md) for a list of older images published up until Nov 30, 2022. +- See [cypress/base](https://hub.docker.com/r/cypress/base) on [Cypress at Docker Hub](https://hub.docker.com/u/cypress) for available `cypress/base` images. diff --git a/base/README.md b/base/README.md index dbed6dc947..5b44258a87 100644 --- a/base/README.md +++ b/base/README.md @@ -4,104 +4,61 @@ > Docker images that include all operating system dependencies necessary to run Cypress, **but NOT Cypress itself** and no pre-installed browsers. See [cypress/included](../included) images if you need Cypress pre-installed in the image. See [cypress/browsers](../browsers) images if you need some browsers pre-installed in the image. -Each tag is in a sub folder, named after Node version or OS it is built on. - -Image `cypress/base:12` is tagged [`latest`](https://hub.docker.com/r/cypress/base/tags/) - -| Name + Tag | Node | Operating System | Link | NPM version | Yarn version | Notes | -| --------------------------------- | ------- | ---------------- | -------------------------------------------- | ----------- | ------------ | ----------- | -| cypress/base:6 | 6 | Debian | [/6](6) | 3.10.10 | 1.6.0 | -| cypress/base:8 | 8 | Debian | [/8](8) | 6.4.1 | 1.9.4 | -| cypress/base:8.0.0 | 8.0.0 | Debian | [/8.0.0](8.0.0) | 6.14.1 | 1.22.0 | -| cypress/base:8.2.1 | 8.2.1 | Debian | [/8.2.1](8.2.1) | 5.3.0 | 1.12.3 | -| cypress/base:8.9.3 | 8.9.3 | Debian | [/8.9.3](8.9.3) | 5.5.1 | 1.12.3 | -| cypress/base:8.9.3-npm-6.10.1 | 8.9.3 | Debian | [/8.9.3](8.9.3-npm-6.10.1) | 6.10.1 | 1.17.3 | -| cypress/base:8.15.1 | 8.15.1 | Debian | [/8.15.1](8.15.1) | 6.9.0 | 1.15.2 | -| cypress/base:8.16.0 | 8.16.0 | Debian | [/8.16.0](8.16.0) | 6.9.0 | 1.16.0 | [1](#note1) | -| cypress/base:10.0.0 | 10.0.0 | Debian 8.10 | [/10.0.0](10.0.0) | 6.14.5 | 1.22.4 | [1](#note1) | -| cypress/base:10 | 10.13 | Debian | [/10](10) | 6.4.1 | 1.9.4 | -| cypress/base:10.2.1 | 10.2.1 | Debian | [/10.2.1](10.2.1) | 6.9.0 | 1.16.0 | [1](#note1) | -| cypress/base:10.11.0 | 10.11.0 | Debian | [/10.11.0](10.11.0) | 6.9.0 | 1.16.0 | [1](#note1) | -| cypress/base:10.15.3 | 10.15.3 | Debian | [/10.15.3](10.15.3) | 6.9.0 | 1.15.2 | -| cypress/base:10.16.0 | 10.16.0 | Debian | [/10.16.0](10.16.0) | 6.9.0 | 1.16.0 | -| cypress/base:10.16.3 | 10.16.3 | Debian | [/10.16.3](10.16.3) | 6.14.1 | 1.22.0 | -| cypress/base:10.18.0 | 10.18.0 | Debian | [/10.18.0](10.18.0) | 6.13.4 | 1.21.1 | -| cypress/base:10.22.0 | 10.22.0 | Debian 10.5 | [/10.22.0](10.22.0) | 6.14.8 | 1.22.4 | -| cypress/base:11.13.0 | 11.13.0 | Debian | [/11.13.0](11.13.0) | 6.9.0 | 1.15.2 | -| cypress/base:12.0.0 | 12.0.0 | Debian | [/12.0.0](12.0.0) | 6.10.0 | 1.16.0 | [1](#note1) | -| cypress/base:12.0.0-libgbm | 12.0.0 | Debian 9.8 | [/12.0.0-libgbm](12.0.0-libgbm) | 6.9.0 | 1.15.2 | [1](#note1) | -| cypress/base:12.1.0 | 12.1.0 | Debian | [/12.1.0](12.1.0) | 6.9.0 | 1.15.2 | -| cypress/base:12.4.0 | 12.4.0 | Debian | [/12.4.0](12.4.0) | 6.10.2 | 1.17.3 | [1](#note1) | -| cypress/base:12.6.0 | 12.6.0 | Debian | [/12.6.0](12.6.0) | 6.10.0 | 1.16.0 | [1](#note1) | -| cypress/base:12.8.1 | 12.8.1 | Debian | [/12.8.1](12.8.1) | 6.13.7 | 1.22.0 | [1](#note1) | -| cypress/base:12.12.0 | 12.12.0 | Debian | [/12.12.0](12.12.0) | 6.12.0 | 1.19.1 | [1](#note1) | -| cypress/base:12.13.0 | 12.13.0 | Debian | [/12.13.0](12.13.0) | 6.13.0 | 1.19.1 | [1](#note1) | -| cypress/base:12.14.0 | 12.14.0 | Debian | [/12.14.0](12.14.0) | 6.13.4 | 1.21.1 | [1](#note1) | -| cypress/base:12.14.1 | 12.14.1 | Debian | [/12.14.1](12.14.1) | 6.14.5 | 1.22.4 | [1](#note1) | -| cypress/base:12.16.0 | 12.16.0 | Debian | [/12.16.0](12.16.0) | 6.13.7 | 1.22.0 | [1](#note1) | -| cypress/base:12.16.1 | 12.16.1 | Debian | [/12.16.1](12.16.1) | 6.14.1 | 1.22.0 | [1](#note1) | -| cypress/base:12.16.2 | 12.16.2 | Debian | [/12.16.2](12.16.2) | 6.14.5 | 1.22.4 | [1](#note1) | -| cypress/base:12.18.0 | 12.18.0 | Debian | [/12.18.0](12.18.0) | 6.14.4 | 1.22.4 | [1](#note1) | -| cypress/base:12.18.2 | 12.18.2 | Debian 10.4 | [/12.18.2](12.18.2) | 6.14.7 | 1.22.4 | [1](#note1) | -| cypress/base:12.18.3 | 12.18.3 | Debian 10.5 | [/12.18.3](12.18.3) | 6.14.8 | 1.22.4 | [1](#note1) | -| cypress/base:12.18.4 | 12.18.4 | Debian 10.5 | [/12.18.4](12.18.4) | 6.14.8 | 1.22.10 | [1](#note1) | -| cypress/base:12.19.0 | 12.19.0 | Debian 10.6 | [/12.19.0](12.19.0) | 6.14.8 | 1.22.10 | [1](#note1) | -| cypress/base:13.1.0 | 13.1.0 | Debian | [/13.1.0](13.1.0) | 6.13.1 | 1.19.1 | [1](#note1) | -| cypress/base:13.3.0 | 13.3.0 | Debian | [/13.3.0](13.3.0) | 6.13.4 | 1.21.1 | [1](#note1) | -| cypress/base:13.6.0 | 13.6.0 | Debian 10.2 | [/13.6.0](13.6.0) | 6.13.6 | 1.21.1 | [1](#note1) | -| cypress/base:13.6.0 | 13.8.0 | Debian 10.2 | [/13.8.0](13.8.0) | 6.13.6 | 1.21.1 | [1](#note1) | -| cypress/base:14.0.0 | 14.0.0 | Debian 10.3 | [/14.0.0](14.0.0) | 6.14.4 | 1.22.4 | [1](#note1) | -| cypress/base:14.5.0 | 14.5.0 | Debian 10.4 | [/14.5.0](14.5.0) | 6.14.7 | 1.22.4 | [1](#note1) | -| cypress/base:14.7.0 | 14.7.0 | Debian 10.5 | [/14.7.0](14.7.0) | 6.14.7 | 1.22.4 | [1](#note1) | -| cypress/base:14.10.1 | 14.10.1 | Debian 10.5 | [/14.10.1](14.10.1) | 6.14.8 | 1.22.5 | [1](#note1) | -| cypress/base:14.15.0 | 14.15.0 | Debian 10.5 | [/14.15.0](14.15.0) | 6.14.8 | 1.22.10 | [1](#note1) | -| cypress/base:14.15.4 | 14.15.4 | Debian 10.5 | [/14.15.4](14.15.4) | 6.14.11 | 1.22.10 | [1](#note1) | -| cypress/base:14.16.0 | 14.16.0 | Debian 10.8 | [/14.16.0](14.16.0) | 7.6.0 | 1.22.10 | [1](#note1) | -| cypress/base:14.17.0 | 14.17.0 | Debian 10.9 | [/14.17.0](14.17.0) | 6.14.13 | 1.22.10 | [1](#note1) | -| cypress/base:14.17.3 | 14.17.3 | Debian 10.10 | [/14.17.3](14.17.3) | 6.14.13 | 1.22.10 | [1](#note1) | -| cypress/base:16.0.0 | 16.0.0 | Debian 10.9 | [/16.0.0](16.0.0) | 7.10.0 | 1.22.10 | [1](#note1) | -| cypress/base:16.1.0 | 16.1.0 | Debian 10.9 | [/16.1.0](16.1.0) | 7.10.0 | 1.22.10 | [1](#note1) | -| cypress/base:16.2.0 | 16.2.0 | Debian 10.9 | [/16.2.0](16.2.0) | 7.10.0 | 1.22.10 | [1](#note1) | -| cypress/base:16.3.0 | 16.3.0 | Debian 10.9 | [/16.3.0](16.3.0) | 7.10.0 | 1.22.10 | [1](#note1) | -| cypress/base:16.4.0 | 16.4.0 | Debian 10.9 | [/16.4.0](16.4.0) | 7.10.0 | 1.22.10 | [1](#note1) | -| cypress/base:16.5.0 | 16.5.0 | Debian 10.9 | [/16.5.0](16.5.0) | 7.10.0 | 1.22.10 | [1](#note1) | -| cypress/base:centos7 | 6 | CentOS | [/centos7](centos7) | 3.10.10 | 🚫 | -| cypress/base:centos7-12.4.0 | 12.4.0 | CentOS | [/centos7](centos7) | 6.9.0 | 1.16.0 | -| cypress/base:ubuntu16 | 6 | Ubuntu | [/ubuntu16](ubuntu16) | 3.10.10 | 🚫 | -| cypress/base:ubuntu16-8 | 8.16.2 | Ubuntu | [/ubuntu16-8](ubuntu16-8) | 6.4.1 | 🚫 | -| cypress/base:ubuntu16-12.13.1 | 12.13.1 | Ubuntu | [/ubuntu16-12.13.1](ubuntu16-12.13.1) | 6.12.1 | 🚫 | -| cypress/base:ubuntu18-node12.14.1 | 12.14.1 | Ubuntu 18.04.3 | [ubuntu18-node12.14.1](ubuntu18-node12.14.1) | 6.13.6 | 1.21.1 | -| cypress/base:ubuntu19-node12.14.1 | 12.14.1 | Ubuntu 19.0.4 | [ubuntu19-node12.14.1](ubuntu19-node12.14.1) | 6.13.6 | 1.21.1 | -| cypress/base:manjaro-node14.12.0 | 14.12.0 | Manjaro | [manjaro-14.12.0](manjaro-14.12.0) | 6.14.8 | 1.22.10 | - -## ⚠️ Node.js Support - -Cypress 4.0+ no longer supports Node.js versions below 8.0.0. See our [Migration Guide](https://on.cypress.io/migration-guide#Node-js-8-support). - -Using 6.x images is not recommended, and we do not plan to release new versions of Cypress tested on Node.js below 8.0.0. - -## Information - -Node release schedule at [nodejs/Release](https://github.com/nodejs/Release) and one can find LTS versions using [nvm](https://github.com/creationix/nvm) tool - -```text -nvm ls-remote | grep LTS -... - v8.16.1 (LTS: Carbon) - v8.16.2 (LTS: Carbon) - v8.17.0 (Latest LTS: Carbon) -... - v10.18.0 (LTS: Dubnium) - v10.18.1 (LTS: Dubnium) - v10.19.0 (Latest LTS: Dubnium) -... - v12.14.1 (LTS: Erbium) - v12.15.0 (LTS: Erbium) - v12.16.0 (Latest LTS: Erbium) +## Tags + +[cypress/base](https://hub.docker.com/r/cypress/base/tags) images on [Cypress on Docker Hub](https://hub.docker.com/u/cypress) use image tags in the form: + +- `` +- `latest` + +for example: + +- `cypress/base:20.14.0` +- `cypress/base:latest` + +To avoid unplanned breaking changes, specify a fixed `` tag, not the `latest` tag. + +The `latest` tag is linked to the latest released `cypress/base` image for the [Node.js Active LTS version](https://github.com/nodejs/release#release-schedule) and is updated without notice. + +## CMD + +When running a container from a `cypress/base` image, `bash` is executed, as defined by the [CMD](https://docs.docker.com/reference/dockerfile/#cmd) parameter of the image. + +### Docker interactive + +In this example we first run the unchanged image `cypress/base` as a container: + +```shell +cd examples/basic # Use a pre-configured simple Cypress E2E project +npm ci # Install Cypress +docker run -it --rm -v .:/app -w /app cypress/base # Run image as container ``` -## Notes +At the `bash` prompt `:/app#`, we can then enter the following commands: + +```shell +npx cypress install # Install Cypress binary into running Docker container +npx cypress run # Run Cypress test +``` + +### Docker build and run + +In this example we use a customized `Dockerfile` which bases a new image on `cypress/base`, copies the complete Cypress project into the image, including installed dependencies, then installs the Cypress binary. -
+The file is [examples/basic/Dockerfile.base](../examples/basic/Dockerfile.base) and it has the following contents: -**1:** this image includes fonts with Chinese characters +```dockerfile +FROM cypress/base +COPY . /opt/app +WORKDIR /opt/app +RUN npx cypress install # Install Cypress binary into image +``` + +We build the new image, run the container from the image and execute the Cypress command `npx cypress run` to run the test: + +```shell +cd examples/basic # Use a pre-configured simple Cypress E2E project +npm ci # Install Cypress +docker build . -f Dockerfile.base -t test-base # Build a new image +docker run -it --rm --entrypoint bash test-base -c "npx cypress run" # Run Cypress test in container +``` diff --git a/base/centos7-12.4.0/Dockerfile b/base/centos7-12.4.0/Dockerfile deleted file mode 100644 index 20bde93091..0000000000 --- a/base/centos7-12.4.0/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -FROM centos:7 - -# To find which package provides missing dependency, for example libXss.so -# yum whatprovides libXss* -# and then install displayed answer like -# yum install -y libXScrnSaver* - -# install commands taken from -# https://tecadmin.net/install-latest-nodejs-and-npm-on-centos/ -RUN yum install -y gcc-c++ make -RUN curl -sL https://rpm.nodesource.com/setup_12.x | bash - - -# Install Node -RUN yum install -y nodejs -RUN node -v -RUN npm -v - -# Install dependencies -RUN yum install -y xorg-x11-server-Xvfb -RUN yum install -y xorg-x11-xauth -# note: -# Gtk2 for Cypress < 3.3.0 -# Gtk3 for Cypress >= 3.3.0 -RUN yum install -y gtk2-2.24* -RUN yum install -y gtk3-3.22* -RUN yum install -y libXtst* -# provides libXss -RUN yum install -y libXScrnSaver* -# provides libgconf-2 -RUN yum install -y GConf2* -# provides libasound -RUN yum install -y alsa-lib* - -RUN npm install yarn -g - -# there is some dependency I cannot figure out missing -# which gets installed when installing "git*" -RUN yum install -y git* - -# versions of local tools -RUN echo " node version: $(node -v) \n" \ - "npm version: $(npm -v) \n" \ - "yarn version: $(yarn -v) \n" \ - "centOS version: $(cat /etc/centos-release) \n" \ - "user: $(whoami) \n" diff --git a/base/centos7-12.4.0/README.md b/base/centos7-12.4.0/README.md deleted file mode 100644 index 5dd6a69853..0000000000 --- a/base/centos7-12.4.0/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# cypress/base:centos7 - -This image was built to resolve [issue #18](https://github.com/cypress-io/cypress-docker-images/issues/18) - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:centos7 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/centos7-12.4.0/build.sh b/base/centos7-12.4.0/build.sh deleted file mode 100755 index 5bf0a68e18..0000000000 --- a/base/centos7-12.4.0/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:centos7-12.4.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/centos7/Dockerfile b/base/centos7/Dockerfile deleted file mode 100644 index 045f33f0dc..0000000000 --- a/base/centos7/Dockerfile +++ /dev/null @@ -1,31 +0,0 @@ -FROM centos:7 - -# To find which package provides missing dependency, for example libXss.so -# yum whatprovides libXss* -# and then install displayed answer like -# yum install -y libXScrnSaver* - -# Install dependencies -RUN yum install -y xorg-x11-server-Xvfb -RUN yum install -y gtk2-2.24* -RUN yum install -y libXtst* -# provides libXss -RUN yum install -y libXScrnSaver* -# provides libgconf-2 -RUN yum install -y GConf2* -# provides libasound -RUN yum install -y alsa-lib* - -# Install Node -RUN yum install -y epel-release -RUN yum install -y nodejs-6.11.3 -# comment out installing NPM 5 because fails -# with error: -# Error: Cannot find module 'semver' -# RUN npm install -g npm@5 -RUN node -v -RUN npm -v - -# there is some dependency I cannot figure out missing -# which gets installed when installing "git*" -RUN yum install -y git* diff --git a/base/centos7/README.md b/base/centos7/README.md deleted file mode 100644 index 5dd6a69853..0000000000 --- a/base/centos7/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# cypress/base:centos7 - -This image was built to resolve [issue #18](https://github.com/cypress-io/cypress-docker-images/issues/18) - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:centos7 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/centos7/build.sh b/base/centos7/build.sh deleted file mode 100644 index d4ff1b09b9..0000000000 --- a/base/centos7/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:centos7 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/manjaro-14.12.0/Dockerfile b/base/manjaro-14.12.0/Dockerfile deleted file mode 100644 index d1cbedae55..0000000000 --- a/base/manjaro-14.12.0/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -# if manjaro linux had tags, I would prefer to use them -# but seems they only have "latest" -# https://hub.docker.com/r/manjarolinux/base/tags -FROM manjarolinux/base@sha256:d16e6028ce6abfa28721b803745fe92a476ad8de523eb3239bbbe7e5eb117c46 - -# set environment to annoy me less -# 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 -# avoid gazillions of progress messages -ENV CI=1 - - -#### OS setup #### -RUN pacman --noconfirm -Syyu -# Install tooling -# How to specify Node / NPM / Yarn versions? -RUN pacman --noconfirm -S nodejs npm yarn git unzip -# set your timezone -RUN ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime -# Install Cypress dependencies -RUN pacman --noconfirm -S \ - gtk2 \ - gtk3 \ - libnotify \ - gconf \ - nss \ - xscreensaver \ - alsa-lib \ - libxtst \ - libxss \ - xorg-xauth \ - xorg-server-xvfb - -RUN npm i -g yarn@latest npm@latest -RUN npm config -g set user $(whoami) -RUN id - -# versions of local tools -RUN echo -e \ - " node: $(node -v)\n" \ - "npm: $(npm -v)\n" \ - "yarn: $(yarn -v)\n" \ - "user: $(whoami)\n" \ - "git: $(git --version)\n" diff --git a/base/manjaro-14.12.0/README.md b/base/manjaro-14.12.0/README.md deleted file mode 100644 index 90400c90f7..0000000000 --- a/base/manjaro-14.12.0/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# cypress/base:manjaro-14.12.0 - -This image was built to resolve [issue #378](https://github.com/cypress-io/cypress-docker-images/issues/378) - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:manjaro-14.12.0 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/manjaro-14.12.0/build.sh b/base/manjaro-14.12.0/build.sh deleted file mode 100755 index 34442c2976..0000000000 --- a/base/manjaro-14.12.0/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:manjaro-14.12.0 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/ubuntu16-12.13.1/Dockerfile b/base/ubuntu16-12.13.1/Dockerfile deleted file mode 100644 index f27bbf3f1f..0000000000 --- a/base/ubuntu16-12.13.1/Dockerfile +++ /dev/null @@ -1,46 +0,0 @@ -FROM ubuntu:16.04 - -RUN apt-get update && \ - apt-get install -y apt-transport-https curl - -RUN touch /etc/apt/sources.list.d/nodesource.list -RUN echo "deb https://deb.nodesource.com/node_12.x xenial main" > /etc/apt/sources.list.d/nodesource.list -RUN echo "deb-src https://deb.nodesource.com/node_12.x xenial main" >> /etc/apt/sources.list.d/nodesource.list - -RUN curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - -RUN apt-get update - -# Should install Node 6 -RUN apt-get install -y nodejs - -# Install Git client -RUN apt-get update && apt-get install -y git -RUN git --version - -# Install Cypress dependencies (separate commands to avoid time outs) -RUN apt-get install -y \ - libgtk2.0-0 -RUN apt-get install -y \ - libnotify-dev -RUN apt-get install -y \ - libgconf-2-4 \ - libnss3 \ - libxss1 -RUN apt-get install -y \ - libasound2 \ - xvfb - -# 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 - -# 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" \ - "user: $(whoami) \n" diff --git a/base/ubuntu16-12.13.1/README.md b/base/ubuntu16-12.13.1/README.md deleted file mode 100644 index b518eeacd7..0000000000 --- a/base/ubuntu16-12.13.1/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# cypress/base:ubuntu16-12.13.1 - -Image with Ubuntu 16 and Node 12.13.1 - -``` -node version: v12.13.1 -npm version: 6.12.1 -yarn version: -debian version: stretch/sid -user: root -``` diff --git a/base/ubuntu16-12.13.1/build.sh b/base/ubuntu16-12.13.1/build.sh deleted file mode 100755 index 62223727c2..0000000000 --- a/base/ubuntu16-12.13.1/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:ubuntu16-12.13.1 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/ubuntu16-8/Dockerfile b/base/ubuntu16-8/Dockerfile deleted file mode 100644 index 3091cbc53a..0000000000 --- a/base/ubuntu16-8/Dockerfile +++ /dev/null @@ -1,46 +0,0 @@ -FROM ubuntu:16.04 - -RUN apt-get update && \ - apt-get install -y apt-transport-https curl - -RUN touch /etc/apt/sources.list.d/nodesource.list -RUN echo "deb https://deb.nodesource.com/node_8.x xenial main" > /etc/apt/sources.list.d/nodesource.list -RUN echo "deb-src https://deb.nodesource.com/node_8.x xenial main" >> /etc/apt/sources.list.d/nodesource.list - -RUN curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - -RUN apt-get update - -# Should install Node 6 -RUN apt-get install -y nodejs - -# Install Git client -RUN apt-get update && apt-get install -y git -RUN git --version - -# Install Cypress dependencies (separate commands to avoid time outs) -RUN apt-get install -y \ - libgtk2.0-0 -RUN apt-get install -y \ - libnotify-dev -RUN apt-get install -y \ - libgconf-2-4 \ - libnss3 \ - libxss1 -RUN apt-get install -y \ - libasound2 \ - xvfb - -# 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 - -# 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" \ - "user: $(whoami) \n" diff --git a/base/ubuntu16-8/README.md b/base/ubuntu16-8/README.md deleted file mode 100644 index 825b15b1d1..0000000000 --- a/base/ubuntu16-8/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# cypress/base:ubuntu16-12.13.1 - -Image with Ubuntu 16 and Node 12.13.1 - -``` -node version: v8.16.2 -npm version: 6.4.1 -yarn version: -debian version: stretch/sid -user: root -``` diff --git a/base/ubuntu16-8/build.sh b/base/ubuntu16-8/build.sh deleted file mode 100755 index abbeb778d2..0000000000 --- a/base/ubuntu16-8/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:ubuntu16-8 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/ubuntu16/Dockerfile b/base/ubuntu16/Dockerfile deleted file mode 100644 index 619f603aba..0000000000 --- a/base/ubuntu16/Dockerfile +++ /dev/null @@ -1,31 +0,0 @@ -FROM ubuntu:16.04 - -RUN apt-get update && \ - apt-get install -y apt-transport-https curl - -RUN touch /etc/apt/sources.list.d/nodesource.list -RUN echo "deb https://deb.nodesource.com/node_6.x xenial main" > /etc/apt/sources.list.d/nodesource.list -RUN echo "deb-src https://deb.nodesource.com/node_6.x xenial main" >> /etc/apt/sources.list.d/nodesource.list - -RUN curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - -RUN apt-get update - -# Should install Node 6 -RUN apt-get install -y nodejs - -# Install Git client -RUN apt-get update && apt-get install -y git -RUN git --version - -# Install Cypress dependencies (separate commands to avoid time outs) -RUN apt-get install -y \ - libgtk2.0-0 -RUN apt-get install -y \ - libnotify-dev -RUN apt-get install -y \ - libgconf-2-4 \ - libnss3 \ - libxss1 -RUN apt-get install -y \ - libasound2 \ - xvfb diff --git a/base/ubuntu16/README.md b/base/ubuntu16/README.md deleted file mode 100644 index 908c1c3086..0000000000 --- a/base/ubuntu16/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# cypress/base:ubuntu16 - -This image was built to resolve [issue #19](https://github.com/cypress-io/cypress-docker-images/issues/19) - -## Example - -Sample Dockerfile - -``` -FROM cypress/base:ubuntu16 -RUN npm install --save-dev cypress -RUN $(npm bin)/cypress verify -RUN $(npm bin)/cypress run -``` diff --git a/base/ubuntu16/build.sh b/base/ubuntu16/build.sh deleted file mode 100644 index 80e79b0486..0000000000 --- a/base/ubuntu16/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:ubuntu16 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/ubuntu18-node12.14.1/README.md b/base/ubuntu18-node12.14.1/README.md deleted file mode 100644 index e3fd732de4..0000000000 --- a/base/ubuntu18-node12.14.1/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# cypress/base:ubuntu18-node12.14.1 - -Image with Ubuntu 18 and Node 12.14.1 - -``` -node version: v12.14.1 -npm version: 6.13.6 -yarn version: 1.21.1 -debian version: buster/sid -user: root -git: git version 2.17.1 -``` diff --git a/base/ubuntu18-node12.14.1/build.sh b/base/ubuntu18-node12.14.1/build.sh deleted file mode 100755 index 785ad17cf9..0000000000 --- a/base/ubuntu18-node12.14.1/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:ubuntu18-node12.14.1 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/base/ubuntu19-node12.14.1/README.md b/base/ubuntu19-node12.14.1/README.md deleted file mode 100644 index a55876f0c8..0000000000 --- a/base/ubuntu19-node12.14.1/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# cypress/base:ubuntu19-node12.14.1 - -Image with Ubuntu 19 and Node 12.14.1 - -``` -node version: v12.14.1 -npm version: 6.13.6 -yarn version: 1.21.1 -debian version: buster/sid -user: root -git: git version 2.20.1 -DISTRIB_ID=Ubuntu -DISTRIB_RELEASE=19.04 -DISTRIB_CODENAME=disco -DISTRIB_DESCRIPTION="Ubuntu 19.04" -NAME="Ubuntu" -VERSION="19.04 (Disco Dingo)" -ID=ubuntu -ID_LIKE=debian -PRETTY_NAME="Ubuntu 19.04" -VERSION_ID="19.04" -``` diff --git a/base/ubuntu19-node12.14.1/build.sh b/base/ubuntu19-node12.14.1/build.sh deleted file mode 100755 index 8ce80dad0f..0000000000 --- a/base/ubuntu19-node12.14.1/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -set e+x - -# build image with Cypress dependencies -LOCAL_NAME=cypress/base:ubuntu19-node12.14.1 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers-internal/README.md b/browsers-internal/README.md new file mode 100644 index 0000000000..682aff23ae --- /dev/null +++ b/browsers-internal/README.md @@ -0,0 +1,18 @@ +# cypress/browsers-internal + + +> [!NOTE] +> `cypress/browsers-internal` Docker images are intended for internal Cypress.io use only. Please see [cypress/browsers](../browsers) for public images. + + +Images are generally built from [cypress/base-internal](../base-internal/) images. For content details of each image, see the corresponding [releases](./releases/) sub-directory. + +## Tags + +[cypress/browsers-internal](https://hub.docker.com/r/cypress/browsers-internal/tags) images on [Cypress on Docker Hub](https://hub.docker.com/u/cypress) use image tags in the form: + +- node``-chrome``-ff``-edge + +for example: + +- `cypress/browsers-internal:node18.18.2-chrome125-ff126-edge` diff --git a/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115-edge/Dockerfile b/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115-edge/Dockerfile new file mode 100644 index 0000000000..1ed48a97a3 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115-edge/Dockerfile @@ -0,0 +1,92 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node18.15.0-chrome1114-ff115-edge . +# +FROM cypress/base-internal:18.15.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 \ + 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 \ + # edge dependencies + gnupg \ + dirmngr \ + \ + # 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_114.0.5735.198-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.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/115.0.1/linux-x86_64/en-US/firefox-115.0.1.tar.bz2 && \ + tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ + rm /tmp/firefox.tar.bz2 && \ + ln -fs /opt/firefox/firefox /usr/bin/firefox) + +# 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) + +# 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 +# allow installing when the main user is root +ENV npm_config_unsafe_perm=true diff --git a/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115-edge/README.md b/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115-edge/README.md new file mode 100644 index 0000000000..acafcbed6e --- /dev/null +++ b/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115-edge/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node18.15.0-chrome114-ff115-edge + +A complete image with all operating system dependencies for Cypress, and Chrome 114.0.5735.198-1, Firefox 115.0.1, Edge latest 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/issues/695 for more information. diff --git a/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115-edge/build.sh b/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115-edge/build.sh new file mode 100644 index 0000000000..f3c3d5fbcf --- /dev/null +++ b/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115-edge/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node18.15.0-chrome114-ff115-edge +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115-edge/global-profile.sh b/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115-edge/global-profile.sh new file mode 100644 index 0000000000..d59493aa55 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115-edge/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 at Cypress's issue tracker:" + echo " https://github.com/cypress-io/cypress-docker-images/issues/695" + printf "\e[0m" # reset +fi \ No newline at end of file diff --git a/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115/Dockerfile b/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115/Dockerfile new file mode 100644 index 0000000000..a4bbcdd617 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115/Dockerfile @@ -0,0 +1,77 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node18.15.0-chrome1114-ff115 . +# +FROM cypress/base-internal:18.15.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 \ + 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_114.0.5735.198-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.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/115.0.1/linux-x86_64/en-US/firefox-115.0.1.tar.bz2 && \ + tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ + rm /tmp/firefox.tar.bz2 && \ + 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 +# allow installing when the main user is root +ENV npm_config_unsafe_perm=true diff --git a/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115/README.md b/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115/README.md new file mode 100644 index 0000000000..7ba447958a --- /dev/null +++ b/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node18.15.0-chrome114-ff115 + +A complete image with all operating system dependencies for Cypress, and Chrome 114.0.5735.198-1, Firefox 115.0.1, Edge undefined 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/issues/695 for more information. diff --git a/browsers/chrome67/build.sh b/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115/build.sh old mode 100755 new mode 100644 similarity index 51% rename from browsers/chrome67/build.sh rename to browsers-internal/releases/node-18/node18.15.0-chrome114-ff115/build.sh index 3e632bc00c..1c7cc42b15 --- a/browsers/chrome67/build.sh +++ b/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115/build.sh @@ -1,6 +1,5 @@ set e+x -LOCAL_NAME=cypress/browsers:chrome67 - +LOCAL_NAME=cypress/browsers-internal:node18.15.0-chrome114-ff115 echo "Building $LOCAL_NAME" docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115/global-profile.sh b/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115/global-profile.sh new file mode 100644 index 0000000000..d59493aa55 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.15.0-chrome114-ff115/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 at Cypress's issue tracker:" + echo " https://github.com/cypress-io/cypress-docker-images/issues/695" + printf "\e[0m" # reset +fi \ No newline at end of file diff --git a/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115-edge/Dockerfile b/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115-edge/Dockerfile new file mode 100644 index 0000000000..97889f9429 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115-edge/Dockerfile @@ -0,0 +1,41 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node18.16.0-chrome116-ff115-edge --platform linux/amd64 . +# +FROM cypress/browsers-internal:node18.16.0-chrome116-ff115 + +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) + +# 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" + diff --git a/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115-edge/README.md b/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115-edge/README.md new file mode 100644 index 0000000000..219e01a83a --- /dev/null +++ b/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115-edge/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node18.16.0-chrome116-ff115-edge + +A complete image with all operating system dependencies for Cypress, and Chrome 116.0.5845.187-1, Firefox 115.0.1, Edge latest 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/issues/695 for more information. diff --git a/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115-edge/build.sh b/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115-edge/build.sh new file mode 100644 index 0000000000..0043816445 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115-edge/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node18.16.0-chrome116-ff115-edge +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115-edge/global-profile.sh b/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115-edge/global-profile.sh new file mode 100644 index 0000000000..d59493aa55 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115-edge/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 at Cypress's issue tracker:" + echo " https://github.com/cypress-io/cypress-docker-images/issues/695" + printf "\e[0m" # reset +fi \ No newline at end of file diff --git a/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115/Dockerfile b/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115/Dockerfile new file mode 100644 index 0000000000..11f8bacf6a --- /dev/null +++ b/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115/Dockerfile @@ -0,0 +1,77 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node18.16.0-chrome116-ff115 --platform linux/amd64 . +# +FROM cypress/base-internal:18.16.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 \ + 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_116.0.5845.187-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.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/115.0.1/linux-x86_64/en-US/firefox-115.0.1.tar.bz2 && \ + tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ + rm /tmp/firefox.tar.bz2 && \ + 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 +# allow installing when the main user is root +ENV npm_config_unsafe_perm=true diff --git a/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115/README.md b/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115/README.md new file mode 100644 index 0000000000..032864c3f9 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node18.15.0-chrome116-ff115 + +A complete image with all operating system dependencies for Cypress, and Chrome 116.0.5845.187-1, Firefox 115.0.1 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/issues/695 for more information. diff --git a/browsers/chrome67-ff57/build.sh b/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115/build.sh old mode 100755 new mode 100644 similarity index 51% rename from browsers/chrome67-ff57/build.sh rename to browsers-internal/releases/node-18/node18.16.0-chrome116-ff115/build.sh index 07e878afaf..e9726821ea --- a/browsers/chrome67-ff57/build.sh +++ b/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115/build.sh @@ -1,6 +1,5 @@ set e+x -LOCAL_NAME=cypress/browsers:chrome67-ff57 - +LOCAL_NAME=cypress/browsers-internal:node18.16.0-chrome116-ff115 echo "Building $LOCAL_NAME" docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115/global-profile.sh b/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115/global-profile.sh new file mode 100644 index 0000000000..d59493aa55 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.16.0-chrome116-ff115/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 at Cypress's issue tracker:" + echo " https://github.com/cypress-io/cypress-docker-images/issues/695" + printf "\e[0m" # reset +fi \ No newline at end of file diff --git a/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115-edge/Dockerfile b/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115-edge/Dockerfile new file mode 100644 index 0000000000..1fc3092b40 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115-edge/Dockerfile @@ -0,0 +1,41 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node18.17.0-chrome118-ff115-edge --platform linux/amd64 . +# +FROM cypress/browsers-internal:node18.17.0-chrome118-ff115 + +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) + +# 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" + diff --git a/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115-edge/README.md b/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115-edge/README.md new file mode 100644 index 0000000000..9287cfe33c --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115-edge/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node18.17.0-chrome118-ff115 + +A complete image with all operating system dependencies for Cypress, and Chrome 118.0.5993.117-1, Firefox 115.0.1, Edge latest 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/issues/695 for more information. diff --git a/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115-edge/build.sh b/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115-edge/build.sh new file mode 100644 index 0000000000..44f514f5ec --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115-edge/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node18.17.0-chrome118-ff115-edge +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115-edge/global-profile.sh b/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115-edge/global-profile.sh new file mode 100644 index 0000000000..d59493aa55 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115-edge/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 at Cypress's issue tracker:" + echo " https://github.com/cypress-io/cypress-docker-images/issues/695" + printf "\e[0m" # reset +fi \ No newline at end of file diff --git a/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115/Dockerfile b/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115/Dockerfile new file mode 100644 index 0000000000..c18445d4d8 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115/Dockerfile @@ -0,0 +1,77 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node18.17.0-chrome118-ff115 --platform linux/amd64 . +# +FROM cypress/base-internal:18.17.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 \ + 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_118.0.5993.117-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.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/115.0.1/linux-x86_64/en-US/firefox-115.0.1.tar.bz2 && \ + tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ + rm /tmp/firefox.tar.bz2 && \ + 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 +# allow installing when the main user is root +ENV npm_config_unsafe_perm=true diff --git a/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115/README.md b/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115/README.md new file mode 100644 index 0000000000..d33d181027 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node18.17.0-chrome118-ff115 + +A complete image with all operating system dependencies for Cypress, and Chrome 118.0.5993.117-1, Firefox 115.0.1 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/issues/695 for more information. diff --git a/browsers/chrome69/build.sh b/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115/build.sh old mode 100755 new mode 100644 similarity index 51% rename from browsers/chrome69/build.sh rename to browsers-internal/releases/node-18/node18.17.0-chrome118-ff115/build.sh index 1e52ace1c0..ce6ecebc9a --- a/browsers/chrome69/build.sh +++ b/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115/build.sh @@ -1,6 +1,5 @@ set e+x -LOCAL_NAME=cypress/browsers:chrome69 - +LOCAL_NAME=cypress/browsers-internal:node18.17.0-chrome118-ff115 echo "Building $LOCAL_NAME" docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115/global-profile.sh b/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115/global-profile.sh new file mode 100644 index 0000000000..d59493aa55 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.0-chrome118-ff115/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 at Cypress's issue tracker:" + echo " https://github.com/cypress-io/cypress-docker-images/issues/695" + printf "\e[0m" # reset +fi \ No newline at end of file diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115-edge/Dockerfile b/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115-edge/Dockerfile new file mode 100644 index 0000000000..111afb7b4f --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115-edge/Dockerfile @@ -0,0 +1,41 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node18.17.1-chrome118-ff115-edge --platform linux/amd64 . +# +FROM cypress/browsers-internal:node18.17.1-chrome118-ff115 + +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) + +# 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" + diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115-edge/README.md b/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115-edge/README.md new file mode 100644 index 0000000000..53f25b629c --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115-edge/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node18.17.1-chrome118-ff115-edge + +A complete image with all operating system dependencies for Cypress, and Chrome 118.0.5993.117-1, Firefox 115.0.1, Edge latest 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/issues/695 for more information. diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115-edge/build.sh b/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115-edge/build.sh new file mode 100644 index 0000000000..fe9acb37f7 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115-edge/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node18.17.1-chrome118-ff115-edge +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115-edge/global-profile.sh b/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115-edge/global-profile.sh new file mode 100644 index 0000000000..d59493aa55 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115-edge/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 at Cypress's issue tracker:" + echo " https://github.com/cypress-io/cypress-docker-images/issues/695" + printf "\e[0m" # reset +fi \ No newline at end of file diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115/Dockerfile b/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115/Dockerfile new file mode 100644 index 0000000000..83870132bd --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115/Dockerfile @@ -0,0 +1,77 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node18.17.1-chrome118-ff115 --platform linux/amd64 . +# +FROM cypress/base-internal:18.17.1 + +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 \ + 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_118.0.5993.117-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.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/115.0.1/linux-x86_64/en-US/firefox-115.0.1.tar.bz2 && \ + tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ + rm /tmp/firefox.tar.bz2 && \ + 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 +# allow installing when the main user is root +ENV npm_config_unsafe_perm=true diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115/README.md b/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115/README.md new file mode 100644 index 0000000000..fb3ad5214d --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node18.17.1-chrome118-ff115 + +A complete image with all operating system dependencies for Cypress, and Chrome 118.0.5993.117-1, Firefox 115.0.1 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/issues/695 for more information. diff --git a/browsers/chrome65-ff57/build.sh b/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115/build.sh old mode 100755 new mode 100644 similarity index 51% rename from browsers/chrome65-ff57/build.sh rename to browsers-internal/releases/node-18/node18.17.1-chrome118-ff115/build.sh index 6f8b6c7ea8..e656c1de32 --- a/browsers/chrome65-ff57/build.sh +++ b/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115/build.sh @@ -1,6 +1,5 @@ set e+x -LOCAL_NAME=cypress/browsers:chrome65-ff57 - +LOCAL_NAME=cypress/browsers-internal:node18.17.1-chrome118-ff115 echo "Building $LOCAL_NAME" docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115/global-profile.sh b/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115/global-profile.sh new file mode 100644 index 0000000000..d59493aa55 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome118-ff115/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 at Cypress's issue tracker:" + echo " https://github.com/cypress-io/cypress-docker-images/issues/695" + printf "\e[0m" # reset +fi \ No newline at end of file diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125-edge/Dockerfile b/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125-edge/Dockerfile new file mode 100644 index 0000000000..61c77ce4da --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125-edge/Dockerfile @@ -0,0 +1,41 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node18.17.1-chrome124-ff125-edge --platform linux/amd64 . +# +FROM cypress/browsers-internal:node18.17.1-chrome124-ff125 + +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) + +# 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" + diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125-edge/README.md b/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125-edge/README.md new file mode 100644 index 0000000000..34a8b8d313 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125-edge/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node18.17.1-chrome124-ff125-edge + +A complete image with all operating system dependencies for Cypress, and Chrome 124.0.6367.60-1, Firefox 125.0.2, Edge latest 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/issues/695 for more information. diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125-edge/build.sh b/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125-edge/build.sh new file mode 100644 index 0000000000..cdbefb44e8 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125-edge/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node18.17.1-chrome124-ff125-edge +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125-edge/global-profile.sh b/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125-edge/global-profile.sh new file mode 100644 index 0000000000..d59493aa55 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125-edge/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 at Cypress's issue tracker:" + echo " https://github.com/cypress-io/cypress-docker-images/issues/695" + printf "\e[0m" # reset +fi \ No newline at end of file diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125/Dockerfile b/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125/Dockerfile new file mode 100644 index 0000000000..398392c18f --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125/Dockerfile @@ -0,0 +1,77 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node18.17.1-chrome124-ff125 --platform linux/amd64 . +# +FROM cypress/base-internal:18.17.1 + +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 \ + 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_124.0.6367.60-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.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/125.0.2/linux-x86_64/en-US/firefox-125.0.2.tar.bz2 && \ + tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ + rm /tmp/firefox.tar.bz2 && \ + 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 +# allow installing when the main user is root +ENV npm_config_unsafe_perm=true diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125/README.md b/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125/README.md new file mode 100644 index 0000000000..1a3a6dc86e --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node18.17.1-chrome124-ff125 + +A complete image with all operating system dependencies for Cypress, and Chrome 124.0.6367.60-1, Firefox 125.0.2 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/issues/695 for more information. diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125/build.sh b/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125/build.sh new file mode 100644 index 0000000000..bbc434e6c0 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node18.17.1-chrome124-ff125 +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125/global-profile.sh b/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125/global-profile.sh new file mode 100644 index 0000000000..d59493aa55 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome124-ff125/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 at Cypress's issue tracker:" + echo " https://github.com/cypress-io/cypress-docker-images/issues/695" + printf "\e[0m" # reset +fi \ No newline at end of file diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome128-ff130/Dockerfile b/browsers-internal/releases/node-18/node18.17.1-chrome128-ff130/Dockerfile new file mode 100644 index 0000000000..538709b85c --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome128-ff130/Dockerfile @@ -0,0 +1,77 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node18.17.1-chrome128-ff130 --platform linux/amd64 . +# +FROM cypress/base-internal:18.17.1 + +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 \ + 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_128.0.6613.137-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.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/130.0.1/linux-x86_64/en-US/firefox-130.0.1.tar.bz2 && \ + tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ + rm /tmp/firefox.tar.bz2 && \ + 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 +# allow installing when the main user is root +ENV npm_config_unsafe_perm=true diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome128-ff130/README.md b/browsers-internal/releases/node-18/node18.17.1-chrome128-ff130/README.md new file mode 100644 index 0000000000..f315a8c614 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome128-ff130/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node18.17.1-chrome128-ff130 + +A complete image with all operating system dependencies for Cypress, and Chrome 128.0.6613.137-1, Firefox 130.0.1 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. diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome128-ff130/build.sh b/browsers-internal/releases/node-18/node18.17.1-chrome128-ff130/build.sh new file mode 100644 index 0000000000..e2f4f0c1e5 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome128-ff130/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node18.17.1-chrome128-ff130 +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome128-ff130/global-profile.sh b/browsers-internal/releases/node-18/node18.17.1-chrome128-ff130/global-profile.sh new file mode 100644 index 0000000000..7a76a3d651 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome128-ff130/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 at Cypress's issue tracker:" + 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-18/node18.17.1-chrome128-ff131/Dockerfile b/browsers-internal/releases/node-18/node18.17.1-chrome128-ff131/Dockerfile new file mode 100644 index 0000000000..8e9572a31d --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome128-ff131/Dockerfile @@ -0,0 +1,78 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node18.17.1-chrome128-ff131 --platform linux/amd64 . +# +FROM cypress/base-internal:18.17.1 + +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_128.0.6613.137-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.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/131.0.2/linux-x86_64/en-US/firefox-131.0.2.tar.bz2 && \ + tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ + rm /tmp/firefox.tar.bz2 && \ + 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 +# allow installing when the main user is root +ENV npm_config_unsafe_perm=true diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome128-ff131/README.md b/browsers-internal/releases/node-18/node18.17.1-chrome128-ff131/README.md new file mode 100644 index 0000000000..be11e9386e --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome128-ff131/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node18.17.1-chrome128-ff131 + +A complete image with all operating system dependencies for Cypress, and Chrome 128.0.6613.137-1, Firefox 131.0.2 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. diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome128-ff131/build.sh b/browsers-internal/releases/node-18/node18.17.1-chrome128-ff131/build.sh new file mode 100644 index 0000000000..8e7c442bb0 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome128-ff131/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node18.17.1-chrome128-ff131 +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-18/node18.17.1-chrome128-ff131/global-profile.sh b/browsers-internal/releases/node-18/node18.17.1-chrome128-ff131/global-profile.sh new file mode 100644 index 0000000000..7a76a3d651 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.17.1-chrome128-ff131/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 at Cypress's issue tracker:" + 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-18/node18.18.2-chrome120-ff115-edge/Dockerfile b/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115-edge/Dockerfile new file mode 100644 index 0000000000..5596115591 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115-edge/Dockerfile @@ -0,0 +1,41 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node18.18.2-chrome120-ff115-edge --platform linux/amd64 . +# +FROM cypress/browsers-internal:node18.18.2-chrome120-ff115 + +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) + +# 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" + diff --git a/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115-edge/README.md b/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115-edge/README.md new file mode 100644 index 0000000000..10388068e5 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115-edge/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node18.18.2-chrome120-ff115-edge + +A complete image with all operating system dependencies for Cypress, and Chrome 120.0.6099.224-1, Firefox 115.0.1, Edge latest 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/issues/695 for more information. diff --git a/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115-edge/build.sh b/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115-edge/build.sh new file mode 100644 index 0000000000..d930a5634f --- /dev/null +++ b/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115-edge/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node18.18.2-chrome120-ff115-edge +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115-edge/global-profile.sh b/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115-edge/global-profile.sh new file mode 100644 index 0000000000..d59493aa55 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115-edge/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 at Cypress's issue tracker:" + echo " https://github.com/cypress-io/cypress-docker-images/issues/695" + printf "\e[0m" # reset +fi \ No newline at end of file diff --git a/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115/Dockerfile b/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115/Dockerfile new file mode 100644 index 0000000000..bee15636d5 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115/Dockerfile @@ -0,0 +1,77 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node18.18.2-chrome120-ff115 --platform linux/amd64 . +# +FROM cypress/base-internal:18.18.2 + +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 \ + 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_120.0.6099.224-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.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/115.0.1/linux-x86_64/en-US/firefox-115.0.1.tar.bz2 && \ + tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ + rm /tmp/firefox.tar.bz2 && \ + 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 +# allow installing when the main user is root +ENV npm_config_unsafe_perm=true diff --git a/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115/README.md b/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115/README.md new file mode 100644 index 0000000000..4686be3dea --- /dev/null +++ b/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node18.18.2-chrome120-ff115 + +A complete image with all operating system dependencies for Cypress, and Chrome 120.0.6099.224-1, Firefox 115.0.1 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/issues/695 for more information. diff --git a/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115/build.sh b/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115/build.sh new file mode 100644 index 0000000000..84a10b9a88 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node18.18.2-chrome120-ff115 +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115/global-profile.sh b/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115/global-profile.sh new file mode 100644 index 0000000000..d59493aa55 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.18.2-chrome120-ff115/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 at Cypress's issue tracker:" + echo " https://github.com/cypress-io/cypress-docker-images/issues/695" + printf "\e[0m" # reset +fi \ No newline at end of file diff --git a/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126-edge/Dockerfile b/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126-edge/Dockerfile new file mode 100644 index 0000000000..5a41184d53 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126-edge/Dockerfile @@ -0,0 +1,41 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node18.18.2-chrome125-ff126-edge --platform linux/amd64 . +# +FROM cypress/browsers-internal:node18.18.2-chrome125-ff126 + +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) + +# 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" + diff --git a/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126-edge/README.md b/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126-edge/README.md new file mode 100644 index 0000000000..3d137d3a82 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126-edge/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node18.18.2-chrome125-ff126-edge + +A complete image with all operating system dependencies for Cypress, and Chrome 125.0.6422.60-1, Firefox 126.0, Edge latest 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/issues/695 for more information. diff --git a/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126-edge/build.sh b/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126-edge/build.sh new file mode 100644 index 0000000000..1341d45b98 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126-edge/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node18.18.2-chrome125-ff126-edge +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126-edge/global-profile.sh b/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126-edge/global-profile.sh new file mode 100644 index 0000000000..d59493aa55 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126-edge/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 at Cypress's issue tracker:" + echo " https://github.com/cypress-io/cypress-docker-images/issues/695" + printf "\e[0m" # reset +fi \ No newline at end of file diff --git a/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126/Dockerfile b/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126/Dockerfile new file mode 100644 index 0000000000..3835a5d592 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126/Dockerfile @@ -0,0 +1,77 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node18.18.2-chrome125-ff126 --platform linux/amd64 . +# +FROM cypress/base-internal:18.18.2 + +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 \ + 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_125.0.6422.60-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.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/126.0/linux-x86_64/en-US/firefox-126.0.tar.bz2 && \ + tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ + rm /tmp/firefox.tar.bz2 && \ + 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 +# allow installing when the main user is root +ENV npm_config_unsafe_perm=true diff --git a/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126/README.md b/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126/README.md new file mode 100644 index 0000000000..29498790d5 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node18.18.2-chrome125-ff126 + +A complete image with all operating system dependencies for Cypress, and Chrome 125.0.6422.60-1, Firefox 126.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/issues/695 for more information. diff --git a/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126/build.sh b/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126/build.sh new file mode 100644 index 0000000000..ee36585a31 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node18.18.2-chrome125-ff126 +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126/global-profile.sh b/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126/global-profile.sh new file mode 100644 index 0000000000..d59493aa55 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.18.2-chrome125-ff126/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 at Cypress's issue tracker:" + echo " https://github.com/cypress-io/cypress-docker-images/issues/695" + printf "\e[0m" # reset +fi \ No newline at end of file diff --git a/browsers-internal/releases/node-18/node18.20.2-chrome124-ff125/Dockerfile b/browsers-internal/releases/node-18/node18.20.2-chrome124-ff125/Dockerfile new file mode 100644 index 0000000000..c5491d4028 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.20.2-chrome124-ff125/Dockerfile @@ -0,0 +1,77 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node18.20.2-chrome124-ff125 --platform linux/amd64 . +# +FROM cypress/base-internal:18.20.2 + +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 \ + 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_124.0.6367.60-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.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/125.0.2/linux-x86_64/en-US/firefox-125.0.2.tar.bz2 && \ + tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ + rm /tmp/firefox.tar.bz2 && \ + 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 +# allow installing when the main user is root +ENV npm_config_unsafe_perm=true diff --git a/browsers-internal/releases/node-18/node18.20.2-chrome124-ff125/README.md b/browsers-internal/releases/node-18/node18.20.2-chrome124-ff125/README.md new file mode 100644 index 0000000000..9b167b7920 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.20.2-chrome124-ff125/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node18.20.2-chrome124-ff125 + +A complete image with all operating system dependencies for Cypress, and Chrome 124.0.6367.60-1, Firefox 125.0.2 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/issues/695 for more information. diff --git a/browsers-internal/releases/node-18/node18.20.2-chrome124-ff125/build.sh b/browsers-internal/releases/node-18/node18.20.2-chrome124-ff125/build.sh new file mode 100644 index 0000000000..7e17fa6f64 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.20.2-chrome124-ff125/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node18.20.2-chrome124-ff125 +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-18/node18.20.2-chrome124-ff125/global-profile.sh b/browsers-internal/releases/node-18/node18.20.2-chrome124-ff125/global-profile.sh new file mode 100644 index 0000000000..d59493aa55 --- /dev/null +++ b/browsers-internal/releases/node-18/node18.20.2-chrome124-ff125/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 at Cypress's issue tracker:" + echo " https://github.com/cypress-io/cypress-docker-images/issues/695" + printf "\e[0m" # reset +fi \ No newline at end of file diff --git a/browsers-internal/releases/node-20/node20.15.0-chrome126-ff127/Dockerfile b/browsers-internal/releases/node-20/node20.15.0-chrome126-ff127/Dockerfile new file mode 100644 index 0000000000..179ee18195 --- /dev/null +++ b/browsers-internal/releases/node-20/node20.15.0-chrome126-ff127/Dockerfile @@ -0,0 +1,75 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node20.15.0-chrome126-ff127 --platform linux/amd64 . +# +FROM cypress/base-internal:20.15.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 \ + 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_126.0.6478.126-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.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/127.0.2/linux-x86_64/en-US/firefox-127.0.2.tar.bz2 && \ + tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ + rm /tmp/firefox.tar.bz2 && \ + 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 diff --git a/browsers-internal/releases/node-20/node20.15.0-chrome126-ff127/README.md b/browsers-internal/releases/node-20/node20.15.0-chrome126-ff127/README.md new file mode 100644 index 0000000000..95820f7a53 --- /dev/null +++ b/browsers-internal/releases/node-20/node20.15.0-chrome126-ff127/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node20.15.0-chrome126-ff127 + +A complete image with all operating system dependencies for Cypress, and Chrome 126.0.6478.126-1, Firefox 127.0.2 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/issues/695 for more information. diff --git a/browsers-internal/releases/node-20/node20.15.0-chrome126-ff127/build.sh b/browsers-internal/releases/node-20/node20.15.0-chrome126-ff127/build.sh new file mode 100644 index 0000000000..4f78ffd718 --- /dev/null +++ b/browsers-internal/releases/node-20/node20.15.0-chrome126-ff127/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node20.15.0-chrome126-ff127 +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-20/node20.15.0-chrome126-ff127/global-profile.sh b/browsers-internal/releases/node-20/node20.15.0-chrome126-ff127/global-profile.sh new file mode 100644 index 0000000000..d59493aa55 --- /dev/null +++ b/browsers-internal/releases/node-20/node20.15.0-chrome126-ff127/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 at Cypress's issue tracker:" + echo " https://github.com/cypress-io/cypress-docker-images/issues/695" + printf "\e[0m" # reset +fi \ No newline at end of file diff --git a/browsers-internal/releases/node-20/node20.15.0-chrome126-ff131/Dockerfile b/browsers-internal/releases/node-20/node20.15.0-chrome126-ff131/Dockerfile new file mode 100644 index 0000000000..e20e04ed1e --- /dev/null +++ b/browsers-internal/releases/node-20/node20.15.0-chrome126-ff131/Dockerfile @@ -0,0 +1,76 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node20.15.0-chrome126-ff131 --platform linux/amd64 . +# +FROM cypress/base-internal:20.15.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_126.0.6478.126-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.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/131.0.2/linux-x86_64/en-US/firefox-131.0.2.tar.bz2 && \ + tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ + rm /tmp/firefox.tar.bz2 && \ + 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 diff --git a/browsers-internal/releases/node-20/node20.15.0-chrome126-ff131/README.md b/browsers-internal/releases/node-20/node20.15.0-chrome126-ff131/README.md new file mode 100644 index 0000000000..1162df0413 --- /dev/null +++ b/browsers-internal/releases/node-20/node20.15.0-chrome126-ff131/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node20.15.0-chrome126-ff131 + +A complete image with all operating system dependencies for Cypress, and Chrome 126.0.6478.126-1, Firefox 131.0.2 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/issues/695 for more information. diff --git a/browsers-internal/releases/node-20/node20.15.0-chrome126-ff131/build.sh b/browsers-internal/releases/node-20/node20.15.0-chrome126-ff131/build.sh new file mode 100644 index 0000000000..bc225d87b0 --- /dev/null +++ b/browsers-internal/releases/node-20/node20.15.0-chrome126-ff131/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node20.15.0-chrome126-ff31 +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-20/node20.15.0-chrome126-ff131/global-profile.sh b/browsers-internal/releases/node-20/node20.15.0-chrome126-ff131/global-profile.sh new file mode 100644 index 0000000000..d59493aa55 --- /dev/null +++ b/browsers-internal/releases/node-20/node20.15.0-chrome126-ff131/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 at Cypress's issue tracker:" + echo " https://github.com/cypress-io/cypress-docker-images/issues/695" + printf "\e[0m" # reset +fi \ No newline at end of file diff --git a/browsers-internal/releases/node-20/node20.18.0-bullseye-chrome129-ff131/Dockerfile b/browsers-internal/releases/node-20/node20.18.0-bullseye-chrome129-ff131/Dockerfile new file mode 100644 index 0000000000..a6505e01e8 --- /dev/null +++ b/browsers-internal/releases/node-20/node20.18.0-bullseye-chrome129-ff131/Dockerfile @@ -0,0 +1,76 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node20.18.0-bullseye-chrome129-ff131 --platform linux/amd64 . +# +FROM cypress/base-internal:20.18.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_129.0.6668.100-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.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/131.0.2/linux-x86_64/en-US/firefox-131.0.2.tar.bz2 && \ + tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ + rm /tmp/firefox.tar.bz2 && \ + 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 diff --git a/browsers-internal/releases/node-20/node20.18.0-bullseye-chrome129-ff131/README.md b/browsers-internal/releases/node-20/node20.18.0-bullseye-chrome129-ff131/README.md new file mode 100644 index 0000000000..2031066bf6 --- /dev/null +++ b/browsers-internal/releases/node-20/node20.18.0-bullseye-chrome129-ff131/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node20.18.0-bullseye-chrome129-ff131 + +A complete image with all operating system dependencies for Cypress, and Chrome 129.0.6668.100-1, Firefox 131.0.2 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. diff --git a/browsers-internal/releases/node-20/node20.18.0-bullseye-chrome129-ff131/build.sh b/browsers-internal/releases/node-20/node20.18.0-bullseye-chrome129-ff131/build.sh new file mode 100755 index 0000000000..739cbb9263 --- /dev/null +++ b/browsers-internal/releases/node-20/node20.18.0-bullseye-chrome129-ff131/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node20.18.0-bullseye-chrome129-ff131 +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-20/node20.18.0-bullseye-chrome129-ff131/global-profile.sh b/browsers-internal/releases/node-20/node20.18.0-bullseye-chrome129-ff131/global-profile.sh new file mode 100644 index 0000000000..7d8954e40b --- /dev/null +++ b/browsers-internal/releases/node-20/node20.18.0-bullseye-chrome129-ff131/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-20/node20.18.0-chrome129-ff131/Dockerfile b/browsers-internal/releases/node-20/node20.18.0-chrome129-ff131/Dockerfile new file mode 100644 index 0000000000..5c0779ee38 --- /dev/null +++ b/browsers-internal/releases/node-20/node20.18.0-chrome129-ff131/Dockerfile @@ -0,0 +1,76 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node20.18.0-chrome129-ff131 --platform linux/amd64 . +# +FROM cypress/base-internal:20.18.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_129.0.6668.100-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.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/131.0.2/linux-x86_64/en-US/firefox-131.0.2.tar.bz2 && \ + tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ + rm /tmp/firefox.tar.bz2 && \ + 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 diff --git a/browsers-internal/releases/node-20/node20.18.0-chrome129-ff131/README.md b/browsers-internal/releases/node-20/node20.18.0-chrome129-ff131/README.md new file mode 100644 index 0000000000..523b69d6e1 --- /dev/null +++ b/browsers-internal/releases/node-20/node20.18.0-chrome129-ff131/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node20.18.0-chrome129-ff131 + +A complete image with all operating system dependencies for Cypress, and Chrome 129.0.6668.100-1, Firefox 131.0.2 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. diff --git a/browsers-internal/releases/node-20/node20.18.0-chrome129-ff131/build.sh b/browsers-internal/releases/node-20/node20.18.0-chrome129-ff131/build.sh new file mode 100755 index 0000000000..0849a93ed1 --- /dev/null +++ b/browsers-internal/releases/node-20/node20.18.0-chrome129-ff131/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node20.18.0-chrome129-ff131 +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-20/node20.18.0-chrome129-ff131/global-profile.sh b/browsers-internal/releases/node-20/node20.18.0-chrome129-ff131/global-profile.sh new file mode 100644 index 0000000000..7d8954e40b --- /dev/null +++ b/browsers-internal/releases/node-20/node20.18.0-chrome129-ff131/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-20/node20.18.1-bullseye-chrome131-ff133/Dockerfile b/browsers-internal/releases/node-20/node20.18.1-bullseye-chrome131-ff133/Dockerfile new file mode 100644 index 0000000000..fb0bc83bbf --- /dev/null +++ b/browsers-internal/releases/node-20/node20.18.1-bullseye-chrome131-ff133/Dockerfile @@ -0,0 +1,76 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node20.18.1-bullseye-chrome131-ff133 --platform linux/amd64 . +# +FROM cypress/base-internal:20.18.1-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_131.0.6778.108-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.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/133.0/linux-x86_64/en-US/firefox-133.0.tar.bz2 && \ + tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ + rm /tmp/firefox.tar.bz2 && \ + 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 diff --git a/browsers-internal/releases/node-20/node20.18.1-bullseye-chrome131-ff133/README.md b/browsers-internal/releases/node-20/node20.18.1-bullseye-chrome131-ff133/README.md new file mode 100644 index 0000000000..2168628208 --- /dev/null +++ b/browsers-internal/releases/node-20/node20.18.1-bullseye-chrome131-ff133/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node20.18.1-bullseye-chrome131-ff133 + +A complete image with all operating system dependencies for Cypress, and Chrome 131.0.6778.108-1, Firefox 133.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. diff --git a/browsers-internal/releases/node-20/node20.18.1-bullseye-chrome131-ff133/build.sh b/browsers-internal/releases/node-20/node20.18.1-bullseye-chrome131-ff133/build.sh new file mode 100755 index 0000000000..6144e4bd58 --- /dev/null +++ b/browsers-internal/releases/node-20/node20.18.1-bullseye-chrome131-ff133/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node20.18.1-bullseye-chrome131-ff133 +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-20/node20.18.1-bullseye-chrome131-ff133/global-profile.sh b/browsers-internal/releases/node-20/node20.18.1-bullseye-chrome131-ff133/global-profile.sh new file mode 100644 index 0000000000..7d8954e40b --- /dev/null +++ b/browsers-internal/releases/node-20/node20.18.1-bullseye-chrome131-ff133/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-20/node20.18.1-chrome131-ff133/Dockerfile b/browsers-internal/releases/node-20/node20.18.1-chrome131-ff133/Dockerfile new file mode 100644 index 0000000000..7470de15cd --- /dev/null +++ b/browsers-internal/releases/node-20/node20.18.1-chrome131-ff133/Dockerfile @@ -0,0 +1,76 @@ +# build this image with command +# docker build -t cypress/browsers-internal:node20.18.1-chrome131-ff133 --platform linux/amd64 . +# +FROM cypress/base-internal:20.18.1 + +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_131.0.6778.108-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.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/133.0/linux-x86_64/en-US/firefox-133.0.tar.bz2 && \ + tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ + rm /tmp/firefox.tar.bz2 && \ + 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 diff --git a/browsers-internal/releases/node-20/node20.18.1-chrome131-ff133/README.md b/browsers-internal/releases/node-20/node20.18.1-chrome131-ff133/README.md new file mode 100644 index 0000000000..0150a1e5e9 --- /dev/null +++ b/browsers-internal/releases/node-20/node20.18.1-chrome131-ff133/README.md @@ -0,0 +1,20 @@ +# cypress/browsers-internal:node20.18.1-chrome131-ff133 + +A complete image with all operating system dependencies for Cypress, and Chrome 131.0.6778.108-1, Firefox 133.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. diff --git a/browsers-internal/releases/node-20/node20.18.1-chrome131-ff133/build.sh b/browsers-internal/releases/node-20/node20.18.1-chrome131-ff133/build.sh new file mode 100755 index 0000000000..94cf04e28c --- /dev/null +++ b/browsers-internal/releases/node-20/node20.18.1-chrome131-ff133/build.sh @@ -0,0 +1,5 @@ +set e+x + +LOCAL_NAME=cypress/browsers-internal:node20.18.1-chrome131-ff133 +echo "Building $LOCAL_NAME" +docker build -t $LOCAL_NAME . diff --git a/browsers-internal/releases/node-20/node20.18.1-chrome131-ff133/global-profile.sh b/browsers-internal/releases/node-20/node20.18.1-chrome131-ff133/global-profile.sh new file mode 100644 index 0000000000..7d8954e40b --- /dev/null +++ b/browsers-internal/releases/node-20/node20.18.1-chrome131-ff133/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/CHANGELOG.md b/browsers/CHANGELOG.md new file mode 100644 index 0000000000..fe481bc76e --- /dev/null +++ b/browsers/CHANGELOG.md @@ -0,0 +1,7 @@ +# CHANGELOG cypress/browsers + +A separate CHANGELOG is no longer maintained for `cypress/browsers` Docker images. + +- See [cypress/factory/CHANGELOG](../factory/CHANGELOG.md) for major changes to the `cypress/factory` images since January 2023. `cypress/browsers` images are built on top of `cypress/factory` images. +- See the [archived cypress/browsers/CHANGELOG](https://github.com/cypress-io/cypress-docker-images/blob/b70e17873b70eebb9e67cd3faf7312b12ad5225d/browsers/CHANGELOG.md) for a list of older images published up until Nov 30, 2022. +- See [cypress/browsers](https://hub.docker.com/r/cypress/browsers) on [Cypress at Docker Hub](https://hub.docker.com/u/cypress) for available `cypress/browsers` images. diff --git a/browsers/README.md b/browsers/README.md index 0f9ce35c0e..b0ac6a4aa5 100644 --- a/browsers/README.md +++ b/browsers/README.md @@ -4,77 +4,70 @@ > Docker image with all operating system dependencies and some pre-installed browsers, **but NOT Cypress itself**. See [cypress/included](../included) images if you need Cypress pre-installed in the image. -Name + Tag | Base image | Chrome | Firefox | Edge ---- | --- | --- | --- | --- -[cypress/browsers:node8.9.3-npm6.10.1-chrome75](./node8.9.3-npm6.10.1-chrome75) | `cypress/base:8.9.3-npm-6.10.1` | `75.0.3770.100` | 🚫 -[cypress/browsers:node10.16.0-chrome77-ff71](./node10.16.0-chrome77-ff71) | `cypress/browsers:node10.16.0-chrome77` | `77.0.3865.90` | `71.0` -[cypress/browsers:node12.4.0-chrome76](./node12.4.0-chrome76) | `cypress/base:12.4.0` | `76.0.3809.87` | 🚫 -[cypress/browsers:node12.6.0-chrome75](./node12.6.0-chrome75) | `cypress/base:12.6.0` | `75.0.3770.100` | 🚫 -[cypress/browsers:node12.8.1-chrome78-ff70](./node12.8.1-chrome78-ff70) | `cypress/browsers:node12.13.0-chrome78-ff70` | `78.0.3904.97` | `70.0.1` -[cypress/browsers:node12.13.0-chrome78-ff70](./node12.13.0-chrome78-ff70) | `cypress/base:12.13.0` | `78.0.3904.97` | `70.0.1` -[cypress/browsers:node12.13.0-chrome80-ff74](./node12.13.0-chrome80-ff74) | `node:12.13.0-buster` | `80.0.3987.116` | `74.0` -[cypress/browsers:node12.14.1-chrome83-ff77](./node12.14.1-chrome83-ff77) | `cypress/base:12.14.1` | `83.0.4103.61` | `77.0` -[cypress/browsers:node12.16.1-chrome80-ff73](./node12.16.1-chrome80-ff73) | `cypress/base:12.16.1` | `80.0.3987.122` | `73.0.1` -[cypress/browsers:node12.16.2-chrome81-ff75](./node12.16.2-chrome81-ff75) | `cypress/base:12.16.2` | `81.0.4044.113` | `75.0` -[cypress/browsers:node12.18.0-chrome83-ff77](./node12.18.0-chrome83-ff77) | `cypress/base:12.18.0` | `83.0.4103.61` | `77.0` -[cypress/browsers:node12.19.0-chrome86-ff82](./node12.19.0-chrome86-ff82) | `cypress/base:12.19.0` | `86.0.4240.193` | `82.0.3` -[cypress/browsers:node12.8.1-chrome80-ff72](./node12.8.1-chrome80-ff72) | `cypress/base:node12.8.1` | `80.0.3987.87` | `72.0.2` -[cypress/browsers:node12.18.3-chrome87-ff82](./node12.18.3-chrome87-ff82) | `cypress/base:node12.18.3` | `87.0.4280.66` | `82.0` -[cypress/browsers:node12.18.3-chrome89-ff86](./node12.18.3-chrome89-ff86) | `cypress/base:12.18.3` | `89.0.4389.72` | `86.0.1` -[cypress/browsers:node12.18.4-edge88](./node12.18.4-edge88) | `cypress/base:12.18.4` | 🚫 | 🚫 | `88.0.673.0 dev` -[cypress/browsers:node13.6.0-chrome80-ff72](./node13.6.0-chrome80-ff72) | `cypress/base:13.6.0` | `80.0.3987.87` | `72.0.2` -[cypress/browsers:node13.8.0-chrome81-ff75](./node13.8.0-chrome81-ff75) | `cypress/base:13.8.0` | `81.0.4044.113` | `75.0` -[cypress/browsers:node14.7.0-chrome84](./node14.7.0-chrome84) | `cypress/base:14.7.0` | `84.0.4147.105` | 🚫 -[cypress/browsers:node12.14.1-chrome85-ff81](./node12.14.1-chrome85-ff81) | `cypress/base:12.14.1` | `85.0.4183.121` | `81.0` -[cypress/browsers:node14.10.1-edge88](./node14.10.1-edge88) | `cypress/base:14.10.1` | 🚫 | 🚫 | `88.0.673.0 dev` -[cypress/browsers:node14.15.0-chrome86-ff82](./node14.15.0-chrome86-ff82) | `cypress/base:14.15.0` | `86.0.4240.193` | `82.0.3` -[cypress/browsers:node14.17.0-chrome88-ff89](./node14.17.0-chrome88-ff89) | `cypress/base:14.17.0` | `88.0.4324.96` | `89.0.2` -[cypress/browsers:node14.16.0-chrome89-ff77](./node14.16.0-chrome89-ff77) | `cypress/base:14.16.0` | `89.0.4389.72` | `77.0` -[cypress/browsers:node14.16.0-chrome89-ff86](./node14.16.0-chrome89-ff86) | `cypress/base:14.16.0` | `89.0.4389.72` | `86.0.1` -[cypress/browsers:node14.17.0-chrome91-ff89](./node14.17.0-chrome91-ff89) | `cypress/base:14.17.0` | `91.0.4472.114` | `89.0.2` -[cypress/browsers:node16.5.0-chrome94-ff93](./node16.5.0-chrome94-ff93) | `cypress/base:16.5.0` | `94.0.4606.71` | `93.0` - -To find the available Chrome versions, check [https://chromium.cypress.io/](https://chromium.cypress.io/) - -## Naming scheme - -Each Docker image is named `cypress/browsers:node-chrome`. If the image has Firefox browser, then it is named `cypress/browsers:node-chrome-ff`. - -## Other images - -Other (older) images: - -- Node 8 + Chrome 65 + Firefox 57 [/chrome65-ff57](chrome65-ff57) -- Node 8 + Chrome 67 + Firefox 57 [/chrome67-ff57](chrome67-ff57) -- Node 8 + Chrome 67 [/chrome67](chrome67) -- Node 8.2.1 + Chrome 73 [/node8.2.1-chrome73](node8.2.1-chrome73) -- Node 8.9.3 + Chrome 73 [/node8.9.3-chrome73](node8.9.3-chrome73) -- Node 8.9.3 + Chrome 76 + Firefox 68 [/node8.9.3-npm6.10.1-chrome76-ff68](node8.9.3-npm6.10.1-chrome76-ff68) -- Node 8.15.1 + Chrome 73 [/node8.15.1-chrome73](node8.15.1-chrome73) -- Node 10 + Chrome 69 [/chrome69](chrome69) -- Node 10.2.1 + Chrome 74 [/node10.2.1-chrome74](node10.2.1-chrome74) -- Node 10.11.0 + Chrome 75 [/node10.11.0-chrome75](node10.11.0-chrome75) -- Node 10.16.0 + Chrome 76 [/node10.16.0-chrome75](node10.16.0-chrome76) -- Node 10.16.0 + Chrome 77 [/node10.16.0-chrome77](node10.16.0-chrome77) -- Node 11.13.0 + Chrome 73 [/node11.13.0-chrome73](node11.13.0-chrome73) -- Node 12.0.0 + Chrome 73 [/node12.0.0-chrome73](node12.0.0-chrome73) -- Node 12.0.0 + Chrome 73 + Firefox 68 [/node12.0.0-chrome73-ff68](node12.0.0-chrome73-ff68) -- Node 12.0.0 + Chrome 75 [/node12.0.0-chrome75](node12.0.0-chrome75) -- Node 12.6.0 + Chrome 77 [/node12.6.0-chrome77](node12.6.0-chrome77) -- [/node12.13.0-chrome78-ff70-brave78](node12.13.0-chrome78-ff70-brave78) -- Node 13.1.0 + Chrome 78 + Firefox 70 [node13.1.0-chrome78-ff70](node13.1.0-chrome78-ff70) -- Node 13.3.0 + Chrome 79 + Firefox 70 [node13.3.0-chrome79-ff70](node13.3.0-chrome79-ff70) - -We only provide browsers for `Debian`, but you can use our base images and build your own. See Cypress [Docker documentation](https://on.cypress.io/docker). +## Platforms + +`cypress/browsers` images are available for `Linux/amd64` and `Linux/arm64` platforms. +`Linux/arm64` images do **not** currently contain additional browsers. ## Tags -You can find all published image tags in the tables above or at [Docker Hub](https://hub.docker.com/r/cypress/browsers/tags/). We recommend using a full image tag, rather than `latest` for immutable builds. +[cypress/browsers](https://hub.docker.com/r/cypress/browsers/tags) images on [Cypress on Docker Hub](https://hub.docker.com/u/cypress) use image tags in the form: + +- `node--chrome--ff--edge-` +- ``
This is a moveable short-form convenience tag, equivalent to the above full tag. +- `latest` + +for example: + +- `cypress/browsers:node-20.14.0-chrome-125.0.6422.141-1-ff-126.0.1-edge-125.0.2535.85-1` +- `cypress/browsers:22.11.0` +- `cypress/browsers:latest` + +To avoid unplanned breaking changes, specify a fixed `` & `` combination tag. + +The short-form `` convenience tag is linked to the latest image release for the named Node.js version. The contents of the image may be updated with newer browser versions without notice when they are released. `cypress/browsers:22.11.0` is the first image with a `cypress/browsers` short-form tag. Previously published `cypress/browsers` images do not have the short-form tag available. + +The `latest` tag is linked to the latest released `cypress/browsers` image for the [Node.js Active LTS version](https://github.com/nodejs/release#release-schedule) and is updated without notice. + +## CMD + +When running a container from a `cypress/browsers` image, `bash` is executed, as defined by the [CMD](https://docs.docker.com/reference/dockerfile/#cmd) parameter of the image. + +### Docker interactive +In this example we first run the unchanged image `cypress/browsers` as a container: + +```shell +cd examples/basic # Use a pre-configured simple Cypress E2E project +npm ci # Install Cypress +docker run -it --rm -v .:/app -w /app cypress/browsers # Run image as container +``` + +At the `bash` prompt `:/app#`, we can then enter the following commands: + +```shell +npx cypress install # Install Cypress binary into running Docker container +npx cypress run -b chrome # Run Cypress test in Chrome +``` + +### Docker build and run + +In this example we use a customized `Dockerfile` which bases a new image on `cypress/browsers`, copies the complete Cypress project into the image, including installed dependencies, then installs the Cypress binary. + +The file is [examples/basic/Dockerfile.browsers](../examples/basic/Dockerfile.browsers) and it has the following contents: + +```dockerfile +FROM cypress/browsers +COPY . /opt/app +WORKDIR /opt/app +RUN npx cypress install # Install Cypress binary into image ``` -# NOT RECOMMENDED -FROM cypress/browsers:latest -# Best practice -FROM cypress/browsers:node13.6.0-chrome80-ff72 +We build the new image, run the container from the image and execute the Cypress command `npx cypress run -b chrome` to run the test using the Chrome browser: + +```shell +cd examples/basic # Use a pre-configured simple Cypress E2E project +npm ci # Install Cypress +docker build . -f Dockerfile.browsers -t test-browsers # Build a new image +docker run -it --rm --entrypoint bash test-browsers -c "npx cypress run -b chrome" # Run Cypress test in container using Chrome ``` diff --git a/browsers/check-chrome-versions.sh b/browsers/check-chrome-versions.sh deleted file mode 100755 index 7ce250a108..0000000000 --- a/browsers/check-chrome-versions.sh +++ /dev/null @@ -1,72 +0,0 @@ -#!/bin/bash - -# misc -# could not rebuild this image - cannot find Chrome 67 -docker pull cypress/browsers:chrome67-ff57 -docker run cypress/browsers:chrome67-ff57 google-chrome --version -echo "" - -# Node 8 -docker pull cypress/browsers:node8.9.3-npm6.10.1-chrome76-ff68 -docker run cypress/browsers:node8.9.3-npm6.10.1-chrome76-ff68 google-chrome --version -echo "" - -# Node 12 -docker pull cypress/browsers:node10.16.0-chrome77-ff71 -docker run cypress/browsers:node10.16.0-chrome77-ff71 google-chrome --version -echo "" - -# Node 11 -docker pull cypress/browsers:node11.13.0-chrome73 -docker run cypress/browsers:node11.13.0-chrome73 google-chrome --version -echo "" - -# Node 12 -docker pull cypress/browsers:node12.0.0-chrome75 -docker run cypress/browsers:node12.0.0-chrome75 google-chrome --version -echo "" - -docker pull cypress/browsers:node12.4.0-chrome76 -docker run cypress/browsers:node12.4.0-chrome76 google-chrome --version -echo "" - -docker pull cypress/browsers:node12.6.0-chrome75 -docker run cypress/browsers:node12.6.0-chrome75 google-chrome --version -echo "" - -docker pull cypress/browsers:node12.6.0-chrome77 -docker run cypress/browsers:node12.6.0-chrome77 google-chrome --version -echo "" - -docker pull cypress/browsers:node12.8.1-chrome78-ff70 -docker run cypress/browsers:node12.8.1-chrome78-ff70 google-chrome --version -echo "" - -docker pull cypress/browsers:node12.13.0-chrome78-ff70 -docker run cypress/browsers:node12.13.0-chrome78-ff70 google-chrome --version -echo "" - -docker pull cypress/browsers:node12.16.2-chrome81-ff75 -docker run cypress/browsers:node12.16.2-chrome81-ff75 google-chrome --version -echo "" - -docker pull cypress/browsers:node12.18.0-chrome83-ff77 -docker run cypress/browsers:node12.18.0-chrome83-ff77 google-chrome --version -echo "" - -# Node 13 -docker pull cypress/browsers:node13.1.0-chrome78-ff70 -docker run cypress/browsers:node13.1.0-chrome78-ff70 google-chrome --version -echo "" - -docker pull cypress/browsers:node13.3.0-chrome79-ff70 -docker run cypress/browsers:node13.3.0-chrome79-ff70 google-chrome --version -echo "" - -docker pull cypress/browsers:node13.6.0-chrome-80-ff72 -docker run cypress/browsers:node13.6.0-chrome-80-ff72 google-chrome --version -echo "" - -docker pull cypress/browsers:node13.8.0-chrome81-ff75 -docker run cypress/browsers:node13.8.0-chrome81-ff75 google-chrome --version -echo "" diff --git a/browsers/chrome65-ff57/Dockerfile b/browsers/chrome65-ff57/Dockerfile deleted file mode 100644 index 2fdabfc3da..0000000000 --- a/browsers/chrome65-ff57/Dockerfile +++ /dev/null @@ -1,43 +0,0 @@ -FROM cypress/base:8 - -ARG FIREFOX_VERSION=57.0.2 - -USER root - -RUN node --version -RUN echo "force new chrome here" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list && \ - apt-get update && \ - apt-get install -y dbus-x11 google-chrome-stable && \ - rm -rf /var/lib/apt/lists/* - -# "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 wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && ln -fs /opt/firefox/firefox /usr/bin/firefox - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# versions of local tools -RUN google-chrome --version -RUN firefox --version -RUN zip --version -RUN git --version - -# 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 diff --git a/browsers/chrome65-ff57/README.md b/browsers/chrome65-ff57/README.md deleted file mode 100644 index d3080043e5..0000000000 --- a/browsers/chrome65-ff57/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cypress/browsers:chrome65-ff57 - -A complete image with all dependencies for Cypress included browsers Chrome, Firefox - -[Dockerfile](Dockerfile) - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:chrome65-ff57 -RUN npm i cypress -RUN firefox --version -RUN $(npm bin)/cypress run --browser chrome -RUN $(npm bin)/cypress run --browser firefox -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/chrome67-ff57/Dockerfile b/browsers/chrome67-ff57/Dockerfile deleted file mode 100644 index de45cce619..0000000000 --- a/browsers/chrome67-ff57/Dockerfile +++ /dev/null @@ -1,50 +0,0 @@ -FROM cypress/base:8 - -ARG FIREFOX_VERSION=57.0.2 - -USER root - -RUN node --version -RUN echo "force new chrome here" - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils lsb-release - -# install Chrome browser -ENV CHROME_VERSION 67.0.3396.62 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "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 wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && ln -fs /opt/firefox/firefox /usr/bin/firefox - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# 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" \ - "git version: $(git --version) \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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/chrome67-ff57/README.md b/browsers/chrome67-ff57/README.md deleted file mode 100644 index 80d323bcc1..0000000000 --- a/browsers/chrome67-ff57/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cypress/browsers:chrome67-ff57 - -A complete image with all dependencies for Cypress included browsers Chrome, Firefox - -[Dockerfile](Dockerfile) - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:chrome67-ff57 -RUN npm i cypress -RUN firefox --version -RUN $(npm bin)/cypress run --browser chrome -RUN $(npm bin)/cypress run --browser firefox -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/chrome67/Dockerfile b/browsers/chrome67/Dockerfile deleted file mode 100644 index 6a438d54da..0000000000 --- a/browsers/chrome67/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -FROM cypress/base:8 - -USER root - -RUN node --version -RUN echo "force new chrome here" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list && \ - apt-get update && \ - apt-get install -y dbus-x11 google-chrome-stable && \ - rm -rf /var/lib/apt/lists/* - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# versions of local tools -RUN node -v -RUN npm -v -RUN yarn -v -RUN google-chrome --version -RUN zip --version -RUN git --version - -# 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 diff --git a/browsers/chrome67/README.md b/browsers/chrome67/README.md deleted file mode 100644 index ba97d2e852..0000000000 --- a/browsers/chrome67/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# cypress/browsers:chrome67 - -A complete image with all dependencies for Cypress included browsers Chrome 67 - -[Dockerfile](Dockerfile) - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:chrome67 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/chrome69/Dockerfile b/browsers/chrome69/Dockerfile deleted file mode 100644 index 9d173a30aa..0000000000 --- a/browsers/chrome69/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -FROM cypress/base:10 - -USER root - -RUN node --version -RUN echo "force new chrome here" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list && \ - apt-get update && \ - apt-get install -y dbus-x11 google-chrome-stable && \ - rm -rf /var/lib/apt/lists/* - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# versions of local tools -RUN node -v -RUN npm -v -RUN yarn -v -RUN google-chrome --version -RUN zip --version -RUN git --version - -# 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 diff --git a/browsers/chrome69/README.md b/browsers/chrome69/README.md deleted file mode 100644 index 690bde3456..0000000000 --- a/browsers/chrome69/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# cypress/browsers:chrome69 - -A complete image with all dependencies for Cypress included browsers Chrome 69 - -[Dockerfile](Dockerfile) - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:chrome69 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/node10.11.0-chrome75/Dockerfile b/browsers/node10.11.0-chrome75/Dockerfile deleted file mode 100644 index ce6434d5d5..0000000000 --- a/browsers/node10.11.0-chrome75/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM cypress/base:10.11.0 - -USER root - -RUN node --version -RUN echo "force new chrome here" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list && \ - apt-get update && \ - apt-get install -y dbus-x11 google-chrome-stable && \ - rm -rf /var/lib/apt/lists/* - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# 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" \ - "git version: $(git --version) \n" diff --git a/browsers/node10.11.0-chrome75/README.md b/browsers/node10.11.0-chrome75/README.md deleted file mode 100644 index d0a35a16e9..0000000000 --- a/browsers/node10.11.0-chrome75/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cypress/browsers:node10.11.0-chrome75 - -A complete image with all operating system dependencies for Cypress and Chrome 75 browser - -[Dockerfile](Dockerfile) - -Note: this image is mostly used for internal building and testing of Cypress test runner v3.3.x - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:node10.11.0-chrome75 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/node10.11.0-chrome75/build.sh b/browsers/node10.11.0-chrome75/build.sh deleted file mode 100755 index c0d4bafee9..0000000000 --- a/browsers/node10.11.0-chrome75/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node10.11.0-chrome75 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node10.16.0-chrome76/Dockerfile b/browsers/node10.16.0-chrome76/Dockerfile deleted file mode 100644 index fe41a586f3..0000000000 --- a/browsers/node10.16.0-chrome76/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM cypress/base:10.16.0 - -USER root - -RUN node --version -RUN echo "force new chrome here" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list && \ - apt-get update && \ - apt-get install -y dbus-x11 google-chrome-stable && \ - rm -rf /var/lib/apt/lists/* - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# 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" \ - "git version: $(git --version) \n" diff --git a/browsers/node10.16.0-chrome76/README.md b/browsers/node10.16.0-chrome76/README.md deleted file mode 100644 index 55c169fbe8..0000000000 --- a/browsers/node10.16.0-chrome76/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cypress/browsers:node10.16.0-chrome76 - -A complete image with all operating system dependencies for Cypress and Chrome 76 browser - -[Dockerfile](Dockerfile) - -Note: this image is mostly used for internal building and testing of Cypress test runner v3.3.x - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:node10.16.0-chrome76 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/node10.16.0-chrome76/build.sh b/browsers/node10.16.0-chrome76/build.sh deleted file mode 100755 index 9206979aae..0000000000 --- a/browsers/node10.16.0-chrome76/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node10.16.0-chrome76 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node10.16.0-chrome77-ff71/Dockerfile b/browsers/node10.16.0-chrome77-ff71/Dockerfile deleted file mode 100644 index 705795b704..0000000000 --- a/browsers/node10.16.0-chrome77-ff71/Dockerfile +++ /dev/null @@ -1,41 +0,0 @@ -FROM cypress/browsers:node10.16.0-chrome77 - -USER root - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install apt-transport-https -y && \ - curl https://download.videolan.org/pub/debian/videolan-apt.asc | apt-key add - && \ - echo 'deb https://download.videolan.org/pub/debian/stable ./' | tee /etc/apt/sources.list.d/libdvdcss.list && \ - apt-get update && \ - apt-get install mplayer2 -y - -ARG FIREFOX_VERSION=71.0 - -# install Firefox browser -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 && \ - tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ - rm /tmp/firefox.tar.bz2 && \ - ln -fs /opt/firefox/firefox /usr/bin/firefox - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install apt-transport-https -y && \ -curl https://download.videolan.org/pub/debian/videolan-apt.asc | apt-key add - && \ -echo 'deb https://download.videolan.org/pub/debian/stable ./' | tee /etc/apt/sources.list.d/libdvdcss.list && \ -apt-get update && \ -apt-get install mplayer2 -y - -# Upgrade NPM and Yarn -RUN npm i -g npm -RUN npm i -g yarn - -# versions of local tools -RUN zip -v -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" \ - "git version: $(git --version) \n" diff --git a/browsers/node10.16.0-chrome77-ff71/README.md b/browsers/node10.16.0-chrome77-ff71/README.md deleted file mode 100644 index 6d3dee83cc..0000000000 --- a/browsers/node10.16.0-chrome77-ff71/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# cypress/browsers:node10.16.0-chrome77 - -A complete image with all operating system dependencies for Cypress and Chrome 77 browser - -[Dockerfile](Dockerfile) - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:node10.16.0-chrome77 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/node10.16.0-chrome77-ff71/build.sh b/browsers/node10.16.0-chrome77-ff71/build.sh deleted file mode 100755 index f916eab262..0000000000 --- a/browsers/node10.16.0-chrome77-ff71/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node10.16.0-chrome77-ff71 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node10.16.0-chrome77/Dockerfile b/browsers/node10.16.0-chrome77/Dockerfile deleted file mode 100644 index eaa70549ea..0000000000 --- a/browsers/node10.16.0-chrome77/Dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -FROM cypress/base:10.16.0 - -USER root - -RUN node --version -RUN echo "force new chrome here" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list -RUN apt-get update -# disabled dbus install - could not get it to install -# but tested an example project, and Chrome seems to run fine -# RUN apt-get install -y dbus-x11 -RUN apt-get install -y google-chrome-stable -RUN rm -rf /var/lib/apt/lists/* - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# 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" \ - "git version: $(git --version) \n" diff --git a/browsers/node10.16.0-chrome77/README.md b/browsers/node10.16.0-chrome77/README.md deleted file mode 100644 index 6d3dee83cc..0000000000 --- a/browsers/node10.16.0-chrome77/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# cypress/browsers:node10.16.0-chrome77 - -A complete image with all operating system dependencies for Cypress and Chrome 77 browser - -[Dockerfile](Dockerfile) - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:node10.16.0-chrome77 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/node10.16.0-chrome77/build.sh b/browsers/node10.16.0-chrome77/build.sh deleted file mode 100755 index 278553c22c..0000000000 --- a/browsers/node10.16.0-chrome77/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node10.16.0-chrome77 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node10.16.3-chrome80-ff73/Dockerfile b/browsers/node10.16.3-chrome80-ff73/Dockerfile deleted file mode 100644 index bc394d6a0b..0000000000 --- a/browsers/node10.16.3-chrome80-ff73/Dockerfile +++ /dev/null @@ -1,60 +0,0 @@ -FROM cypress/base:10.16.3 - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 80.0.3987.116 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# disable shared memory X11 affecting Cypress v4 and Chrome -# https://github.com/cypress-io/cypress-docker-images/issues/270 -ENV QT_X11_NO_MITSHM=1 -ENV _X11_NO_MITSHM=1 -ENV _MITSHM=0 - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=73.0.1 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node10.16.3-chrome80-ff73/README.md b/browsers/node10.16.3-chrome80-ff73/README.md deleted file mode 100644 index 0afa89e26e..0000000000 --- a/browsers/node10.16.3-chrome80-ff73/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# cypress/browsers:node10.16.3-chrome80-ff73 - -A complete image with all operating system dependencies for Cypress, Chrome, and Firefox - -[Dockerfile](Dockerfile) - -```text -node version: v10.16.3 -npm version: 6.14.1 -yarn version: 1.22.0 -debian version: 10.1 -Chrome version: Google Chrome 80.0.3987.116 -Firefox version: Mozilla Firefox 73.0.1 -git version: git version 2.20.1 -whoami: root -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node10.16.3-chrome80-ff73/build.sh b/browsers/node10.16.3-chrome80-ff73/build.sh deleted file mode 100755 index 8a82ff9f81..0000000000 --- a/browsers/node10.16.3-chrome80-ff73/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node10.16.3-chrome80-ff73 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node10.2.1-chrome74/Dockerfile b/browsers/node10.2.1-chrome74/Dockerfile deleted file mode 100644 index 41d2b3c2e7..0000000000 --- a/browsers/node10.2.1-chrome74/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -FROM cypress/base:10.2.1 - -USER root - -RUN node --version -RUN echo "force new chrome here" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list && \ - apt-get update && \ - apt-get install -y dbus-x11 google-chrome-stable && \ - rm -rf /var/lib/apt/lists/* - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# 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" \ - "git version: $(git --version) \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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node10.2.1-chrome74/README.md b/browsers/node10.2.1-chrome74/README.md deleted file mode 100644 index 5603d6168c..0000000000 --- a/browsers/node10.2.1-chrome74/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cypress/browsers:node10.2.1-chrome74 - -A complete image with all operating system dependencies for Cypress and Chrome 74 browser - -[Dockerfile](Dockerfile) - -Note: this image is mostly used for internal building and testing of Cypress test runner v3.3.x - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:node10.2.1-chrome74 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/node10.2.1-chrome74/build.sh b/browsers/node10.2.1-chrome74/build.sh deleted file mode 100755 index 20ac299192..0000000000 --- a/browsers/node10.2.1-chrome74/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node10.2.1-chrome74 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node11.13.0-chrome73/Dockerfile b/browsers/node11.13.0-chrome73/Dockerfile deleted file mode 100644 index ce9600d73f..0000000000 --- a/browsers/node11.13.0-chrome73/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -FROM cypress/base:11.13.0 - -USER root - -RUN node --version -RUN echo "force new chrome here" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list && \ - apt-get update && \ - apt-get install -y dbus-x11 google-chrome-stable && \ - rm -rf /var/lib/apt/lists/* - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# 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" \ - "git version: $(git --version) \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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node11.13.0-chrome73/README.md b/browsers/node11.13.0-chrome73/README.md deleted file mode 100644 index 99b9eb6e48..0000000000 --- a/browsers/node11.13.0-chrome73/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# cypress/browsers:node11.13.0-chrome73 - -A complete image with all operating system dependencies for Cypress and Chrome 73 browser - -[Dockerfile](Dockerfile) - -Size - -```bash -$ docker images --format "{{.Tag}} {{.Size}}" cypress/browsers:node11.13.0-chrome73 -node11.13.0-chrome73 1.28GB -``` - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:node11.13.0-chrome73 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/node11.13.0-chrome73/build.sh b/browsers/node11.13.0-chrome73/build.sh deleted file mode 100755 index 290e2a3e0c..0000000000 --- a/browsers/node11.13.0-chrome73/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node11.13.0-chrome73 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.0.0-chrome73-ff68/Dockerfile b/browsers/node12.0.0-chrome73-ff68/Dockerfile deleted file mode 100644 index d360c6a18c..0000000000 --- a/browsers/node12.0.0-chrome73-ff68/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM cypress/browsers:node12.0.0-chrome73 - -USER root - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install apt-transport-https -y && \ -curl https://download.videolan.org/pub/debian/videolan-apt.asc | apt-key add - && \ -echo 'deb https://download.videolan.org/pub/debian/stable ./' | tee /etc/apt/sources.list.d/libdvdcss.list && \ -apt-get update && \ -apt-get install mplayer2 -y - -ARG FIREFOX_VERSION=68.0.2 - -# install Firefox browser -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 && \ - tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ - rm /tmp/firefox.tar.bz2 && \ - ln -fs /opt/firefox/firefox /usr/bin/firefox - diff --git a/browsers/node12.0.0-chrome73-ff68/README.md b/browsers/node12.0.0-chrome73-ff68/README.md deleted file mode 100644 index 8a6048319f..0000000000 --- a/browsers/node12.0.0-chrome73-ff68/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# cypress/browsers:node12.0.0-chrome73-ff68 - -A complete image with all operating system dependencies for Cypress, Chrome 73, and Firefox 68 - -[Dockerfile](Dockerfile) - -## Versions - -``` -node version: v12.0.0 -npm version: 6.10.3 -yarn version: 1.17.3 -debian version: 9.8 -Chrome version: Google Chrome 73.0.3683.103 -Firefox version: Firefox 68.0.2 -git version: git version 2.11.0 -``` - -## Size - -```bash -$ docker images --format "{{.Tag}} {{.Size}}" cypress/browsers:node12.0.0-chrome73-ff68 -node12.0.0-chrome73-ff68 1.39GB -``` - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:node12.0.0-chrome73-ff68 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/node12.0.0-chrome73-ff68/build.sh b/browsers/node12.0.0-chrome73-ff68/build.sh deleted file mode 100755 index 0692abf424..0000000000 --- a/browsers/node12.0.0-chrome73-ff68/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.0.0-chrome73-ff68 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.0.0-chrome73/Dockerfile b/browsers/node12.0.0-chrome73/Dockerfile deleted file mode 100644 index 80e66f9d8e..0000000000 --- a/browsers/node12.0.0-chrome73/Dockerfile +++ /dev/null @@ -1,56 +0,0 @@ -# since this was created well after Chrome 73 was published, must be based off existing snapshot of Chrome 73 -FROM cypress/browsers:node11.13.0-chrome73 - -USER root - -# install desired node version -# see: https://github.com/nodejs/docker-node/blob/bd2ecff0929173daa8e6099d59097f24718d428e/10/jessie/Dockerfile -ENV NODE_VERSION 12.0.0 -RUN rm /usr/local/bin/node /usr/local/bin/nodejs -RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \ - && case "${dpkgArch##*-}" in \ - amd64) ARCH='x64';; \ - ppc64el) ARCH='ppc64le';; \ - s390x) ARCH='s390x';; \ - arm64) ARCH='arm64';; \ - armhf) ARCH='armv7l';; \ - i386) ARCH='x86';; \ - *) echo "unsupported architecture"; exit 1 ;; \ - esac \ - && set -ex \ - && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \ - && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ - && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ - && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ - && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ - && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \ - && ln -s /usr/local/bin/node /usr/local/bin/nodejs - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -RUN npm i -g npm@6.10.3 yarn@1.17.3 - -# Install xauth for Cypress development work -RUN apt-get install -y xauth -RUN xauth version - -# 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" \ - "git version: $(git --version) \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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node12.0.0-chrome73/README.md b/browsers/node12.0.0-chrome73/README.md deleted file mode 100644 index 483f4341fb..0000000000 --- a/browsers/node12.0.0-chrome73/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# cypress/browsers:node12.0.0-chrome73 - -A complete image with all operating system dependencies for Cypress and Chrome 73 browser - -[Dockerfile](Dockerfile) - -## Versions - -``` -node version: v12.0.0 -npm version: 6.10.3 -yarn version: 1.17.3 -debian version: 9.8 -Chrome version: Google Chrome 73.0.3683.103 -git version: git version 2.11.0 -``` - -## Size - -```bash -$ docker images --format "{{.Tag}} {{.Size}}" cypress/browsers:node12.0.0-chrome73 -node12.0.0-chrome73 1.39GB -``` - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:node12.0.0-chrome73 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/node12.0.0-chrome73/build.sh b/browsers/node12.0.0-chrome73/build.sh deleted file mode 100755 index 984cf516a8..0000000000 --- a/browsers/node12.0.0-chrome73/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.0.0-chrome73 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.0.0-chrome75/Dockerfile b/browsers/node12.0.0-chrome75/Dockerfile deleted file mode 100644 index 4cb5381700..0000000000 --- a/browsers/node12.0.0-chrome75/Dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -FROM cypress/base:12.0.0 - -USER root - -RUN node --version -RUN echo "force new chrome here" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list -RUN apt-get update -# disabled dbus install - could not get it to install -# but tested an example project, and Chrome seems to run fine -# RUN apt-get install -y dbus-x11 -RUN apt-get install -y google-chrome-stable -RUN rm -rf /var/lib/apt/lists/* - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# 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" \ - "git version: $(git --version) \n" diff --git a/browsers/node12.0.0-chrome75/README.md b/browsers/node12.0.0-chrome75/README.md deleted file mode 100644 index 7faff1dad8..0000000000 --- a/browsers/node12.0.0-chrome75/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cypress/browsers:node12.0.0-chrome75 - -A complete image with all operating system dependencies for Cypress and Chrome 75 browser - -[Dockerfile](Dockerfile) - -Note: this image is mostly used for internal building and testing of Cypress test runner v3.3.x - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:node12.0.0-chrome75 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/node12.0.0-chrome75/build.sh b/browsers/node12.0.0-chrome75/build.sh deleted file mode 100755 index 3d7262aa09..0000000000 --- a/browsers/node12.0.0-chrome75/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.0.0-chrome75 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.13.0-chrome78-ff70-brave78/Dockerfile b/browsers/node12.13.0-chrome78-ff70-brave78/Dockerfile deleted file mode 100644 index 369efc869e..0000000000 --- a/browsers/node12.13.0-chrome78-ff70-brave78/Dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -FROM cypress/browsers:node12.13.0-chrome78-ff70 - -# should be root user to install -RUN whoami -RUN node --version - -# install Brave browser -# https://brave-browser.readthedocs.io/en/latest/installing-brave.html#linux -RUN apt install apt-transport-https curl -y -RUN curl -s https://brave-browser-apt-release.s3.brave.com/brave-core.asc | apt-key --keyring /etc/apt/trusted.gpg.d/brave-browser-release.gpg add - -RUN echo "deb [arch=amd64] https://brave-browser-apt-release.s3.brave.com/ trusty main" | tee /etc/apt/sources.list.d/brave-browser-release-trusty.list -RUN apt update -y -RUN apt install brave-browser -y - -# 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" \ - "git version: $(git --version) \n" \ - "Chrome version: $(google-chrome --version) \n" \ - "Firefox version: $(firefox --version) \n" \ - "Brave version: $(brave-browser --version) \n" diff --git a/browsers/node12.13.0-chrome78-ff70-brave78/README.md b/browsers/node12.13.0-chrome78-ff70-brave78/README.md deleted file mode 100644 index 9af8efad6c..0000000000 --- a/browsers/node12.13.0-chrome78-ff70-brave78/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# cypress/browsers:node12.13.0-chrome78-ff70-brave78 - -[Dockerfile](Dockerfile) - -```text -node version: v12.13.0 -npm version: 6.13.0 -yarn version: 1.19.1 -debian version: 9.11 -git version: git version 2.11.0 -Chrome version: Google Chrome 78.0.3904.97 -Firefox version: Mozilla Firefox 70.0.1 -Brave version: Brave Browser 78.1.0.0 -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node12.13.0-chrome78-ff70-brave78/build.sh b/browsers/node12.13.0-chrome78-ff70-brave78/build.sh deleted file mode 100755 index fa1e6f9776..0000000000 --- a/browsers/node12.13.0-chrome78-ff70-brave78/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.13.0-chrome78-ff70-brave78 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.13.0-chrome78-ff70/Dockerfile b/browsers/node12.13.0-chrome78-ff70/Dockerfile deleted file mode 100644 index de53aba102..0000000000 --- a/browsers/node12.13.0-chrome78-ff70/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -FROM cypress/base:12.13.0 - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list -RUN apt-get update -# disabled dbus install - could not get it to install -# but tested an example project, and Chrome seems to run fine -# RUN apt-get install -y dbus-x11 -RUN apt-get install -y google-chrome-stable -RUN rm -rf /var/lib/apt/lists/* - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# install Firefox browser -ARG FIREFOX_VERSION=70.0.1 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "git version: $(git --version) \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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node12.13.0-chrome78-ff70/README.md b/browsers/node12.13.0-chrome78-ff70/README.md deleted file mode 100644 index 05f6130752..0000000000 --- a/browsers/node12.13.0-chrome78-ff70/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# cypress/browsers:node12.13.0-chrome78-ff70 - -A complete image with all operating system dependencies for Cypress and Chrome 77 browser - -[Dockerfile](Dockerfile) - -```text -node version: v12.13.0 -npm version: 6.13.0 -yarn version: 1.19.1 -debian version: 9.11 -Chrome version: Google Chrome 78.0.3904.97 -Firefox version: Mozilla Firefox 70.0.1 -git version: git version 2.11.0 -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node12.13.0-chrome78-ff70/build.sh b/browsers/node12.13.0-chrome78-ff70/build.sh deleted file mode 100755 index 2369047b46..0000000000 --- a/browsers/node12.13.0-chrome78-ff70/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.13.0-chrome78-ff70 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.13.0-chrome80-ff73/Dockerfile b/browsers/node12.13.0-chrome80-ff73/Dockerfile deleted file mode 100644 index 3120f2543d..0000000000 --- a/browsers/node12.13.0-chrome80-ff73/Dockerfile +++ /dev/null @@ -1,54 +0,0 @@ -FROM cypress/base:12.13.0 - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 80.0.3987.116 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=73.0.1 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node12.13.0-chrome80-ff73/README.md b/browsers/node12.13.0-chrome80-ff73/README.md deleted file mode 100644 index 222c0407ae..0000000000 --- a/browsers/node12.13.0-chrome80-ff73/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# cypress/browsers:node12.13.0-chrome80-ff73 - -A complete image with all operating system dependencies for Cypress, Chrome, and Firefox - -[Dockerfile](Dockerfile) - -```text -node version: v12.13.0 -npm version: 6.13.0 -yarn version: 1.19.1 -debian version: 9.11 -Chrome version: Google Chrome 80.0.3987.116 -Firefox version: Mozilla Firefox 73.0.1 -git version: git version 2.11.0 -whoami: root -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node12.13.0-chrome80-ff73/build.sh b/browsers/node12.13.0-chrome80-ff73/build.sh deleted file mode 100755 index ab4a3616c4..0000000000 --- a/browsers/node12.13.0-chrome80-ff73/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.13.0-chrome80-ff73 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.13.0-chrome80-ff74/Dockerfile b/browsers/node12.13.0-chrome80-ff74/Dockerfile deleted file mode 100644 index 92d6e10762..0000000000 --- a/browsers/node12.13.0-chrome80-ff74/Dockerfile +++ /dev/null @@ -1,98 +0,0 @@ -FROM node:12.13.0-buster - -RUN apt-get update && \ - apt-get install --no-install-recommends -y \ - libgtk2.0-0 \ - libgtk-3-0 \ - libnotify-dev \ - libgconf-2-4 \ - libnss3 \ - libxss1 \ - libasound2 \ - libxtst6 \ - xauth \ - xvfb \ - # 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/* - -RUN npm install -g npm@latest -RUN npm install --force -g yarn@latest - -# 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 - -# 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" \ - "user: $(whoami) \n" - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 80.0.3987.116 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=74.0 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node12.13.0-chrome80-ff74/README.md b/browsers/node12.13.0-chrome80-ff74/README.md deleted file mode 100644 index ec7da9863a..0000000000 --- a/browsers/node12.13.0-chrome80-ff74/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# cypress/browsers:node12.13.0-chrome80-ff74 - -A complete image with all operating system dependencies for Cypress, Chrome, and Firefox - -[Dockerfile](Dockerfile) - -```text -node version: v12.13.0 -npm version: 6.14.2 -yarn version: 1.22.4 -debian version: 10.1 -Chrome version: Google Chrome 80.0.3987.116 -Firefox version: Mozilla Firefox 74.0 -git version: git version 2.20.1 -whoami: root -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node12.13.0-chrome80-ff74/build.sh b/browsers/node12.13.0-chrome80-ff74/build.sh deleted file mode 100755 index c263d0b46b..0000000000 --- a/browsers/node12.13.0-chrome80-ff74/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.13.0-chrome80-ff74 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.14.0-chrome79-ff71/Dockerfile b/browsers/node12.14.0-chrome79-ff71/Dockerfile deleted file mode 100644 index 3a40953ef1..0000000000 --- a/browsers/node12.14.0-chrome79-ff71/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -FROM cypress/base:12.14.0 - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list -RUN apt-get update -# disabled dbus install - could not get it to install -# but tested an example project, and Chrome seems to run fine -# RUN apt-get install -y dbus-x11 -RUN apt-get install -y google-chrome-stable -RUN rm -rf /var/lib/apt/lists/* - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# install Firefox browser -ARG FIREFOX_VERSION=71.0 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "git version: $(git --version) \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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node12.14.0-chrome79-ff71/README.md b/browsers/node12.14.0-chrome79-ff71/README.md deleted file mode 100644 index 2d0254ef50..0000000000 --- a/browsers/node12.14.0-chrome79-ff71/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# cypress/browsers:node12.14.0-chrome79-ff71 - -A complete image with all operating system dependencies for Cypress and Chrome 77 browser - -[Dockerfile](Dockerfile) - -```text -node version: v12.14.0 -npm version: 6.13.4 -yarn version: 1.21.1 -debian version: 9.11 -Chrome version: Google Chrome 79.0.3945.86 -Firefox version: Mozilla Firefox 71.0 -git version: git version 2.11.0 -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. - - -node version: v12.14.0 - npm version: 6.13.4 - yarn version: 1.21.1 - debian version: 9.11 - user: root \ No newline at end of file diff --git a/browsers/node12.14.0-chrome79-ff71/build.sh b/browsers/node12.14.0-chrome79-ff71/build.sh deleted file mode 100755 index 75ba6dc2c1..0000000000 --- a/browsers/node12.14.0-chrome79-ff71/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.14.0-chrome79-ff71 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.14.1-chrome83-ff77/Dockerfile b/browsers/node12.14.1-chrome83-ff77/Dockerfile deleted file mode 100644 index 1ef49208a2..0000000000 --- a/browsers/node12.14.1-chrome83-ff77/Dockerfile +++ /dev/null @@ -1,54 +0,0 @@ -FROM cypress/base:12.14.1 - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 83.0.4103.61 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=77.0 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node12.14.1-chrome83-ff77/README.md b/browsers/node12.14.1-chrome83-ff77/README.md deleted file mode 100644 index 39232b9afa..0000000000 --- a/browsers/node12.14.1-chrome83-ff77/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cypress/browsers:node12.14.1-chrome83-ff77 - -A complete image with all operating system dependencies for Cypress, Chrome -83 and Firefox 77 browsers. - -[Dockerfile](Dockerfile) - -``` - node version: v12.14.1 - npm version: 6.14.5 - yarn version: 1.22.4 - debian version: 10.2 - Chrome version: Google Chrome 83.0.4103.61 - Firefox version: Mozilla Firefox 77.0 - git version: git version 2.20.1 - whoami: root -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node12.14.1-chrome83-ff77/build.sh b/browsers/node12.14.1-chrome83-ff77/build.sh deleted file mode 100755 index 44e58925ed..0000000000 --- a/browsers/node12.14.1-chrome83-ff77/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.14.1-chrome83-ff77 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.14.1-chrome85-ff81/Dockerfile b/browsers/node12.14.1-chrome85-ff81/Dockerfile deleted file mode 100644 index 78f96585ac..0000000000 --- a/browsers/node12.14.1-chrome85-ff81/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM cypress/base:12.14.1 - -USER root - -RUN node --version - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 85.0.4183.121 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=81.0 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node12.14.1-chrome85-ff81/README.md b/browsers/node12.14.1-chrome85-ff81/README.md deleted file mode 100644 index d735b6752c..0000000000 --- a/browsers/node12.14.1-chrome85-ff81/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# cypress/browsers:node12.14.1-chrome85-ff81 - -A complete image with all operating system dependencies for Cypress, plus Chrome and Firefox browsers. - -[Dockerfile](Dockerfile) - -``` - node version: v12.14.1 - npm version: 6.14.5 - yarn version: 1.22.4 - debian version: 10.2 - Chrome version: Google Chrome 85.0.4183.121 - Firefox version: Mozilla Firefox 81.0 - git version: git version 2.20.1 - whoami: root -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node12.14.1-chrome85-ff81/build.sh b/browsers/node12.14.1-chrome85-ff81/build.sh deleted file mode 100755 index 6ab037c445..0000000000 --- a/browsers/node12.14.1-chrome85-ff81/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.14.1-chrome85-ff81 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.16.1-chrome80-ff73/Dockerfile b/browsers/node12.16.1-chrome80-ff73/Dockerfile deleted file mode 100644 index 8f1286298c..0000000000 --- a/browsers/node12.16.1-chrome80-ff73/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -FROM cypress/base:12.16.1 - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list -RUN apt-get update -# disabled dbus install - could not get it to install -# but tested an example project, and Chrome seems to run fine -# RUN apt-get install -y dbus-x11 -RUN apt-get install -y google-chrome-stable -RUN rm -rf /var/lib/apt/lists/* - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# install Firefox browser -ARG FIREFOX_VERSION=73.0.1 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "git version: $(git --version) \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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node12.16.1-chrome80-ff73/README.md b/browsers/node12.16.1-chrome80-ff73/README.md deleted file mode 100644 index 1166145b1a..0000000000 --- a/browsers/node12.16.1-chrome80-ff73/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# cypress/browsers:node12.16.1-chrome80-ff73 - -A complete image with all operating system dependencies for Cypress, Chrome -80 and Firefox 73 browsers. - -[Dockerfile](Dockerfile) - -```text -node version: v12.16.1 -npm version: 6.14.1 -yarn version: 1.22.0 -debian version: 9.11 -Chrome version: Google Chrome 80 -Firefox version: Mozilla Firefox 73.0.1 -git version: git version 2.11.0 -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node12.16.1-chrome80-ff73/build.sh b/browsers/node12.16.1-chrome80-ff73/build.sh deleted file mode 100755 index a0d1431908..0000000000 --- a/browsers/node12.16.1-chrome80-ff73/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.16.1-chrome80-ff73 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.16.2-chrome81-ff75/Dockerfile b/browsers/node12.16.2-chrome81-ff75/Dockerfile deleted file mode 100644 index 495db0e762..0000000000 --- a/browsers/node12.16.2-chrome81-ff75/Dockerfile +++ /dev/null @@ -1,54 +0,0 @@ -FROM cypress/base:12.16.2 - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 81.0.4044.113 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=75.0 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node12.16.2-chrome81-ff75/README.md b/browsers/node12.16.2-chrome81-ff75/README.md deleted file mode 100644 index 0d44c24c2e..0000000000 --- a/browsers/node12.16.2-chrome81-ff75/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# cypress/browsers:node12.16.2-chrome81-ff75 - -A complete image with all operating system dependencies for Cypress, Chrome -81 and Firefox 75 browsers. - -[Dockerfile](Dockerfile) - -```text -node version: v12.16.2 -npm version: 6.14.4 -yarn version: 1.22.4 -debian version: 10.1 -Chrome version: Google Chrome 81.0.4044.113 -Firefox version: Mozilla Firefox 75.0 -git version: git version 2.20.1 -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node12.16.2-chrome81-ff75/build.sh b/browsers/node12.16.2-chrome81-ff75/build.sh deleted file mode 100755 index d6b15a6568..0000000000 --- a/browsers/node12.16.2-chrome81-ff75/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.16.2-chrome81-ff75 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.18.0-chrome83-ff77/Dockerfile b/browsers/node12.18.0-chrome83-ff77/Dockerfile deleted file mode 100644 index 7a3d7fd212..0000000000 --- a/browsers/node12.18.0-chrome83-ff77/Dockerfile +++ /dev/null @@ -1,54 +0,0 @@ -FROM cypress/base:12.18.0 - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 83.0.4103.61 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=77.0 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node12.18.0-chrome83-ff77/README.md b/browsers/node12.18.0-chrome83-ff77/README.md deleted file mode 100644 index 8e6f9c16ae..0000000000 --- a/browsers/node12.18.0-chrome83-ff77/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# cypress/browsers:node12.18.0-chrome83-ff77 - -A complete image with all operating system dependencies for Cypress, Chrome -81 and Firefox 75 browsers. - -[Dockerfile](Dockerfile) - -```text -node version: v12.18.0 -npm version: 6.14.4 -yarn version: 1.22.4 -debian version: 10.1 -Chrome version: Google Chrome 83.0.4103.61 -Firefox version: Mozilla Firefox 77.0 -git version: git version 2.20.1 -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node12.18.0-chrome83-ff77/build.sh b/browsers/node12.18.0-chrome83-ff77/build.sh deleted file mode 100755 index 7638252cc1..0000000000 --- a/browsers/node12.18.0-chrome83-ff77/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.18.0-chrome83-ff77 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.18.3-chrome83-ff77/Dockerfile b/browsers/node12.18.3-chrome83-ff77/Dockerfile deleted file mode 100644 index a800dc9903..0000000000 --- a/browsers/node12.18.3-chrome83-ff77/Dockerfile +++ /dev/null @@ -1,54 +0,0 @@ -FROM cypress/base:12.18.3 - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 83.0.4103.61 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=77.0 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node12.18.3-chrome83-ff77/README.md b/browsers/node12.18.3-chrome83-ff77/README.md deleted file mode 100644 index 2b512fe528..0000000000 --- a/browsers/node12.18.3-chrome83-ff77/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# cypress/browsers:node12.18.3-chrome83-ff77 - -A complete image with all operating system dependencies for Cypress, Chrome -83 and Firefox 77 browsers. - -[Dockerfile](Dockerfile) - -```text -node version: v12.18.3 -npm version: 6.14.4 -yarn version: 1.22.4 -debian version: 10.1 -Chrome version: Google Chrome 83.0.4103.61 -Firefox version: Mozilla Firefox 77.0 -git version: git version 2.20.1 -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node12.18.3-chrome83-ff77/build.sh b/browsers/node12.18.3-chrome83-ff77/build.sh deleted file mode 100755 index 91800af86c..0000000000 --- a/browsers/node12.18.3-chrome83-ff77/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.18.3-chrome83-ff77 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.18.3-chrome87-ff82/Dockerfile b/browsers/node12.18.3-chrome87-ff82/Dockerfile deleted file mode 100644 index 5362047264..0000000000 --- a/browsers/node12.18.3-chrome87-ff82/Dockerfile +++ /dev/null @@ -1,55 +0,0 @@ -FROM cypress/base:12.18.3 - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -# check https://chromium.cypress.io/ -ENV CHROME_VERSION 87.0.4280.66 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=82.0 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node12.18.3-chrome87-ff82/README.md b/browsers/node12.18.3-chrome87-ff82/README.md deleted file mode 100644 index 50bb8904d4..0000000000 --- a/browsers/node12.18.3-chrome87-ff82/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cypress/browsers:node12.18.3-chrome87-ff82 - -A complete image with all operating system dependencies for Cypress, Chrome -87 and Firefox 82 browsers. - -[Dockerfile](Dockerfile) - -```text -node version: v12.18.3 -npm version: 6.14.8 -yarn version: 1.22.4 -debian version: 10.5 -Chrome version: Google Chrome 87.0.4280.66 -Firefox version: Mozilla Firefox 82.0 -git version: git version 2.20.1 -whoami: root -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node12.18.3-chrome87-ff82/build.sh b/browsers/node12.18.3-chrome87-ff82/build.sh deleted file mode 100755 index 9b169b0c44..0000000000 --- a/browsers/node12.18.3-chrome87-ff82/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.18.3-chrome87-ff82 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.18.3-chrome89-ff86/Dockerfile b/browsers/node12.18.3-chrome89-ff86/Dockerfile deleted file mode 100644 index af9a933780..0000000000 --- a/browsers/node12.18.3-chrome89-ff86/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM cypress/base:12.18.3 - -USER root - -RUN node --version - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 89.0.4389.72 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=86.0.1 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node12.18.3-chrome89-ff86/README.md b/browsers/node12.18.3-chrome89-ff86/README.md deleted file mode 100644 index b5f1e9dab3..0000000000 --- a/browsers/node12.18.3-chrome89-ff86/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cypress/browsers:node12.18.3-chrome89-ff86 - -A complete image with all operating system dependencies for Cypress, Chrome -89 and Firefox 86 browsers. - -[Dockerfile](Dockerfile) - -```text -node version: v12.18.3 -npm version: 6.14.8 -yarn version: 1.22.4 -debian version: 10.5 -Chrome version: Google Chrome 89.0.4389.72 -Firefox version: Mozilla Firefox 86.0.1 -git version: git version 2.20.1 -whoami: root -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node12.18.3-chrome89-ff86/build.sh b/browsers/node12.18.3-chrome89-ff86/build.sh deleted file mode 100755 index f27322a2f7..0000000000 --- a/browsers/node12.18.3-chrome89-ff86/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.18.3-chrome89-ff86 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.18.4-edge88/Dockerfile b/browsers/node12.18.4-edge88/Dockerfile deleted file mode 100644 index f30757a0cd..0000000000 --- a/browsers/node12.18.4-edge88/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -FROM cypress/base:12.18.4 - -USER root - -RUN node --version -RUN echo "force new Edge version here!" - -## Setup -RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg -RUN install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/ -RUN sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-dev.list' -RUN rm microsoft.gpg -## Install Edge -RUN apt-get update -RUN apt-get install -y microsoft-edge-dev -# Add a link to the browser that allows Cypress to find it -RUN ln -s /usr/bin/microsoft-edge /usr/bin/edge - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# 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" \ - "Edge version: $(edge --version) \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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node12.18.4-edge88/README.md b/browsers/node12.18.4-edge88/README.md deleted file mode 100644 index 0a84b546e4..0000000000 --- a/browsers/node12.18.4-edge88/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# cypress/browsers:node12.18.4-edge88 - -A complete image with all operating system dependencies for Cypress and [Microsoft Edge browser](https://www.microsoftedgeinsider.com/en-us/download/?platform=linux-deb). - -[Dockerfile](Dockerfile) - -```text -node version: v12.18.4 -npm version: 6.14.8 -yarn version: 1.22.10 -Debian version: 10.5 -Edge version: Microsoft Edge 88.0.673.0 dev -git version: git version 2.20.1 -whoami: root -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node12.18.4-edge88/build.sh b/browsers/node12.18.4-edge88/build.sh deleted file mode 100755 index be96e502c0..0000000000 --- a/browsers/node12.18.4-edge88/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.18.4-edge88 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.19.0-chrome86-ff82/Dockerfile b/browsers/node12.19.0-chrome86-ff82/Dockerfile deleted file mode 100644 index 37818504ca..0000000000 --- a/browsers/node12.19.0-chrome86-ff82/Dockerfile +++ /dev/null @@ -1,54 +0,0 @@ -FROM cypress/base:12.19.0 - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 86.0.4240.193 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=82.0.3 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node12.19.0-chrome86-ff82/README.md b/browsers/node12.19.0-chrome86-ff82/README.md deleted file mode 100644 index 32f52cfaca..0000000000 --- a/browsers/node12.19.0-chrome86-ff82/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# cypress/browsers:node12.18.3-chrome83-ff77 - -A complete image with all operating system dependencies for Cypress, Chrome -86 and Firefox 82 browsers. - -[Dockerfile](Dockerfile) - -```text -node version: v12.19.0 -npm version: 6.14.8 -yarn version: 1.22.10 -debian version: 10.6 -Chrome version: Google Chrome 86.0.4240.193 -Firefox version: Mozilla Firefox 82.0.3 -git version: git version 2.20.1 -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node12.19.0-chrome86-ff82/build.sh b/browsers/node12.19.0-chrome86-ff82/build.sh deleted file mode 100755 index b1cea04c95..0000000000 --- a/browsers/node12.19.0-chrome86-ff82/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.19.0-chrome86-ff82 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.4.0-chrome76/Dockerfile b/browsers/node12.4.0-chrome76/Dockerfile deleted file mode 100644 index 3b2e713549..0000000000 --- a/browsers/node12.4.0-chrome76/Dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -FROM cypress/base:12.4.0 - -USER root - -RUN node --version -RUN echo "force new chrome here" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list -RUN apt-get update -# disabled dbus install - could not get it to install -# but tested an example project, and Chrome seems to run fine -# RUN apt-get install -y dbus-x11 -RUN apt-get install -y google-chrome-stable -RUN rm -rf /var/lib/apt/lists/* - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# 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" \ - "git version: $(git --version) \n" diff --git a/browsers/node12.4.0-chrome76/README.md b/browsers/node12.4.0-chrome76/README.md deleted file mode 100644 index 304f9c5d2b..0000000000 --- a/browsers/node12.4.0-chrome76/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# cypress/browsers:node12.4.0-chrome76 - -A complete image with all operating system dependencies for Cypress and Chrome 76 browser - -[Dockerfile](Dockerfile) - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:node12.4.0-chrome76 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/node12.4.0-chrome76/build.sh b/browsers/node12.4.0-chrome76/build.sh deleted file mode 100755 index 733650dfd1..0000000000 --- a/browsers/node12.4.0-chrome76/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.4.0-chrome76 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.6.0-chrome75/Dockerfile b/browsers/node12.6.0-chrome75/Dockerfile deleted file mode 100644 index 5a0965703c..0000000000 --- a/browsers/node12.6.0-chrome75/Dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -FROM cypress/base:12.6.0 - -USER root - -RUN node --version -RUN echo "force new chrome here" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list -RUN apt-get update -# disabled dbus install - could not get it to install -# but tested an example project, and Chrome seems to run fine -# RUN apt-get install -y dbus-x11 -RUN apt-get install -y google-chrome-stable -RUN rm -rf /var/lib/apt/lists/* - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# 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" \ - "git version: $(git --version) \n" diff --git a/browsers/node12.6.0-chrome75/README.md b/browsers/node12.6.0-chrome75/README.md deleted file mode 100644 index 48ae738565..0000000000 --- a/browsers/node12.6.0-chrome75/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# cypress/browsers:node12.6.0-chrome75 - -A complete image with all operating system dependencies for Cypress and Chrome 75 browser - -[Dockerfile](Dockerfile) - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:node12.6.0-chrome75 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/node12.6.0-chrome75/build.sh b/browsers/node12.6.0-chrome75/build.sh deleted file mode 100755 index 922c594644..0000000000 --- a/browsers/node12.6.0-chrome75/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.6.0-chrome75 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.6.0-chrome77/Dockerfile b/browsers/node12.6.0-chrome77/Dockerfile deleted file mode 100644 index c1082d1e26..0000000000 --- a/browsers/node12.6.0-chrome77/Dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -FROM cypress/base:12.6.0 - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list -RUN apt-get update -# disabled dbus install - could not get it to install -# but tested an example project, and Chrome seems to run fine -# RUN apt-get install -y dbus-x11 -RUN apt-get install -y google-chrome-stable -RUN rm -rf /var/lib/apt/lists/* - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# 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" \ - "git version: $(git --version) \n" diff --git a/browsers/node12.6.0-chrome77/README.md b/browsers/node12.6.0-chrome77/README.md deleted file mode 100644 index 0d2585035c..0000000000 --- a/browsers/node12.6.0-chrome77/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# cypress/browsers:node12.6.0-chrome77 - -A complete image with all operating system dependencies for Cypress and Chrome 77 browser - -[Dockerfile](Dockerfile) - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:node12.6.0-chrome77 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/node12.6.0-chrome77/build.sh b/browsers/node12.6.0-chrome77/build.sh deleted file mode 100755 index 836d52fd39..0000000000 --- a/browsers/node12.6.0-chrome77/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.6.0-chrome77 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.8.1-chrome78-ff70/Dockerfile b/browsers/node12.8.1-chrome78-ff70/Dockerfile deleted file mode 100644 index 33e5fadd37..0000000000 --- a/browsers/node12.8.1-chrome78-ff70/Dockerfile +++ /dev/null @@ -1,64 +0,0 @@ -FROM cypress/browsers:node12.13.0-chrome78-ff70 - -USER root - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install apt-transport-https -y && \ -curl https://download.videolan.org/pub/debian/videolan-apt.asc | apt-key add - && \ -echo 'deb https://download.videolan.org/pub/debian/stable ./' | tee /etc/apt/sources.list.d/libdvdcss.list && \ -apt-get update && \ -apt-get install mplayer2 -y - -# install desired node version -# see: https://github.com/nodejs/docker-node/blob/bd2ecff0929173daa8e6099d59097f24718d428e/10/jessie/Dockerfile -ENV NODE_VERSION 12.8.1 -RUN rm /usr/local/bin/node /usr/local/bin/nodejs -RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \ - && case "${dpkgArch##*-}" in \ - amd64) ARCH='x64';; \ - ppc64el) ARCH='ppc64le';; \ - s390x) ARCH='s390x';; \ - arm64) ARCH='arm64';; \ - armhf) ARCH='armv7l';; \ - i386) ARCH='x86';; \ - *) echo "unsupported architecture"; exit 1 ;; \ - esac \ - && set -ex \ - && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \ - && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ - && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ - && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ - && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ - && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \ - && ln -s /usr/local/bin/node /usr/local/bin/nodejs - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -RUN npm i -g npm@6.10.3 yarn@1.17.3 - -# Install xauth for Cypress development work -RUN apt-get install -y xauth -RUN xauth version - -# 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 -v) \n" \ - "git version: $(git --version) \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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node12.8.1-chrome78-ff70/README.md b/browsers/node12.8.1-chrome78-ff70/README.md deleted file mode 100644 index 9801fc1979..0000000000 --- a/browsers/node12.8.1-chrome78-ff70/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# cypress/browsers:node12.8.1-chrome78-ff70 - -A complete image with all operating system dependencies for Cypress along with Chrome 78 and Firefox 70 - -[Dockerfile](Dockerfile) - -```text - node version: v12.8.1 - npm version: 6.10.3 - yarn version: 1.17.3 - debian version: 9.11 - Chrome version: Google Chrome 78.0.3904.97 - Firefox version: Mozilla Firefox 70.0.1 - git version: git version 2.11.0 -``` diff --git a/browsers/node12.8.1-chrome78-ff70/build.sh b/browsers/node12.8.1-chrome78-ff70/build.sh deleted file mode 100755 index eecd0d9de2..0000000000 --- a/browsers/node12.8.1-chrome78-ff70/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.8.1-chrome78-ff70 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node12.8.1-chrome80-ff72/Dockerfile b/browsers/node12.8.1-chrome80-ff72/Dockerfile deleted file mode 100644 index e6b8be9b6e..0000000000 --- a/browsers/node12.8.1-chrome80-ff72/Dockerfile +++ /dev/null @@ -1,54 +0,0 @@ -FROM cypress/base:12.8.1 - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 80.0.3987.87 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=72.0.2 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node12.8.1-chrome80-ff72/README.md b/browsers/node12.8.1-chrome80-ff72/README.md deleted file mode 100644 index 85bf7860ab..0000000000 --- a/browsers/node12.8.1-chrome80-ff72/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# cypress/browsers:node12.8.1-chrome80-ff72 - -A complete image with all operating system dependencies for Cypress, Chrome, and Firefox - -[Dockerfile](Dockerfile) - -```text -node version: v12.8.1 -npm version: 6.13.7 -yarn version: 1.22.0 -debian version: 10.0 -Chrome version: Google Chrome 80.0.3987.87 -Firefox version: Mozilla Firefox 72.0.2 -git version: git version 2.20.1 -whoami: root -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node12.8.1-chrome80-ff72/build.sh b/browsers/node12.8.1-chrome80-ff72/build.sh deleted file mode 100755 index bc5dbaf271..0000000000 --- a/browsers/node12.8.1-chrome80-ff72/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node12.8.1-chrome80-ff72 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node13.1.0-chrome78-ff70/Dockerfile b/browsers/node13.1.0-chrome78-ff70/Dockerfile deleted file mode 100644 index ee92b49bae..0000000000 --- a/browsers/node13.1.0-chrome78-ff70/Dockerfile +++ /dev/null @@ -1,49 +0,0 @@ -FROM cypress/base:13.1.0 - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils lsb-release - -# install Chrome browser -ENV CHROME_VERSION 78.0.3904.70 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# install Firefox browser -ARG FIREFOX_VERSION=70.0.1 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "git version: $(git --version) \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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node13.1.0-chrome78-ff70/README.md b/browsers/node13.1.0-chrome78-ff70/README.md deleted file mode 100644 index 8a54c6dcf8..0000000000 --- a/browsers/node13.1.0-chrome78-ff70/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# cypress/browsers:node13.1.0-chrome78-ff70 - -A complete image with all operating system dependencies for Cypress and Chrome 77 browser - -[Dockerfile](Dockerfile) - -```text -node version: v13.1.0 -npm version: 6.13.4 -yarn version: 1.21.1 -debian version: 9.11 -Chrome version: Google Chrome 78.0.3904.70 -Firefox version: Mozilla Firefox 70.0.1 -git version: git version 2.11.0 -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node13.1.0-chrome78-ff70/build.sh b/browsers/node13.1.0-chrome78-ff70/build.sh deleted file mode 100755 index be7a1fcf64..0000000000 --- a/browsers/node13.1.0-chrome78-ff70/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node13.1.0-chrome78-ff70 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node13.3.0-chrome79-ff70/Dockerfile b/browsers/node13.3.0-chrome79-ff70/Dockerfile deleted file mode 100644 index ee37828559..0000000000 --- a/browsers/node13.3.0-chrome79-ff70/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -FROM cypress/base:13.3.0 - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 79.0.3945.79 -RUN wget -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_${CHROME_VERSION}-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 - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# install Firefox browser -ARG FIREFOX_VERSION=70.0.1 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "git version: $(git --version) \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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node13.3.0-chrome79-ff70/README.md b/browsers/node13.3.0-chrome79-ff70/README.md deleted file mode 100644 index 57a47ff568..0000000000 --- a/browsers/node13.3.0-chrome79-ff70/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# cypress/browsers:node13.3.0-chrome79-ff70 - -A complete image with all operating system dependencies for Cypress and Chrome 79 browser - -[Dockerfile](Dockerfile) - -```text -node version: v13.3.0 -npm version: 6.13.4 -yarn version: 1.21.1 -debian version: 9.11 -Chrome version: Google Chrome 79.0.3945.79 -Firefox version: Mozilla Firefox 70.0.1 -git version: git version 2.11.0 -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node13.3.0-chrome79-ff70/build.sh b/browsers/node13.3.0-chrome79-ff70/build.sh deleted file mode 100755 index 33fea2436b..0000000000 --- a/browsers/node13.3.0-chrome79-ff70/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node13.3.0-chrome79-ff70 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node13.6.0-chrome80-ff72/Dockerfile b/browsers/node13.6.0-chrome80-ff72/Dockerfile deleted file mode 100644 index 44f9769595..0000000000 --- a/browsers/node13.6.0-chrome80-ff72/Dockerfile +++ /dev/null @@ -1,49 +0,0 @@ -FROM cypress/base:13.6.0 - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 80.0.3987.87 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# install Firefox browser -ARG FIREFOX_VERSION=72.0.2 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "git version: $(git --version) \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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node13.6.0-chrome80-ff72/README.md b/browsers/node13.6.0-chrome80-ff72/README.md deleted file mode 100644 index 1d55c28642..0000000000 --- a/browsers/node13.6.0-chrome80-ff72/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# cypress/browsers:node13.6.0-chrome80-ff72 - -A complete image with all operating system dependencies for Cypress, Chrome, and Firefox - -[Dockerfile](Dockerfile) - -```text -node version: v13.6.0 -npm version: 6.13.6 -yarn version: 1.21.1 -debian version: 10.2 -Chrome version: Google Chrome 80.0.3987.87 -Firefox version: Mozilla Firefox 72.0.2 -git version: git version 2.20.1 -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node13.6.0-chrome80-ff72/build.sh b/browsers/node13.6.0-chrome80-ff72/build.sh deleted file mode 100755 index 9710764aba..0000000000 --- a/browsers/node13.6.0-chrome80-ff72/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node13.6.0-chrome80-ff72 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node13.8.0-chrome81-ff75/Dockerfile b/browsers/node13.8.0-chrome81-ff75/Dockerfile deleted file mode 100644 index c9b39c5932..0000000000 --- a/browsers/node13.8.0-chrome81-ff75/Dockerfile +++ /dev/null @@ -1,54 +0,0 @@ -FROM cypress/base:13.8.0 - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 81.0.4044.113 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=75.0 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node13.8.0-chrome81-ff75/README.md b/browsers/node13.8.0-chrome81-ff75/README.md deleted file mode 100644 index 36af597e16..0000000000 --- a/browsers/node13.8.0-chrome81-ff75/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# cypress/browsers:node13.8.0-chrome81-ff75 - -A complete image with all operating system dependencies for Cypress, Chrome -81 and Firefox 75 browsers. - -[Dockerfile](Dockerfile) - -```text -node version: v13.8.0 -npm version: 6.14.4 -yarn version: 1.22.4 -debian version: 10.1 -Chrome version: Google Chrome 81.0.4044.113 -Firefox version: Mozilla Firefox 75.0 -git version: git version 2.20.1 -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node13.8.0-chrome81-ff75/build.sh b/browsers/node13.8.0-chrome81-ff75/build.sh deleted file mode 100755 index 3712099d15..0000000000 --- a/browsers/node13.8.0-chrome81-ff75/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node13.8.0-chrome81-ff75 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node14.10.1-edge88/Dockerfile b/browsers/node14.10.1-edge88/Dockerfile deleted file mode 100644 index 1f8c33e77f..0000000000 --- a/browsers/node14.10.1-edge88/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -FROM cypress/base:14.10.1 - -USER root - -RUN node --version -RUN echo "force new Edge version here!" - -## Setup -RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg -RUN install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/ -RUN sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-dev.list' -RUN rm microsoft.gpg -## Install Edge -RUN apt-get update -RUN apt-get install -y microsoft-edge-dev -# Add a link to the browser that allows Cypress to find it -RUN ln -s /usr/bin/microsoft-edge /usr/bin/edge - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# 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" \ - "Edge version: $(edge --version) \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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node14.10.1-edge88/README.md b/browsers/node14.10.1-edge88/README.md deleted file mode 100644 index 20456e35f6..0000000000 --- a/browsers/node14.10.1-edge88/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# cypress/browsers:node14.10.1-edge88 - -A complete image with all operating system dependencies for Cypress and [Microsoft Edge browser](https://www.microsoftedgeinsider.com/en-us/download/?platform=linux-deb). - -[Dockerfile](Dockerfile) - -```text -node versions: v14.10.1 -npm version: 6.14.8 -yarn version: 1.22.5 -Debian version: 10.5 -Edge version: Microsoft Edge 88.0.673.0 dev -git version: git version 2.20.1 -whoami: root -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node14.10.1-edge88/build.sh b/browsers/node14.10.1-edge88/build.sh deleted file mode 100755 index ed3f6fd7c2..0000000000 --- a/browsers/node14.10.1-edge88/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node14.10.1-edge88 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node14.15.0-chrome86-ff82/Dockerfile b/browsers/node14.15.0-chrome86-ff82/Dockerfile deleted file mode 100644 index 4cb7235e49..0000000000 --- a/browsers/node14.15.0-chrome86-ff82/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM cypress/base:14.15.0 - -USER root - -RUN node --version - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 86.0.4240.193 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=82.0.3 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node14.15.0-chrome86-ff82/README.md b/browsers/node14.15.0-chrome86-ff82/README.md deleted file mode 100644 index f060966968..0000000000 --- a/browsers/node14.15.0-chrome86-ff82/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# cypress/browsers:node14.15.0-chrome86-ff82 - -A complete image with all operating system dependencies for Cypress, Chrome -86 and Firefox 82 browsers. - -[Dockerfile](Dockerfile) - -```text -node version: v14.15.0 -npm version: 6.14.8 -yarn version: 1.22.10 -debian version: 10.6 -Chrome version: Google Chrome 86.0.4240.193 -Firefox version: Mozilla Firefox 82.0.3 -git version: git version 2.20.1 -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node14.15.0-chrome86-ff82/build.sh b/browsers/node14.15.0-chrome86-ff82/build.sh deleted file mode 100755 index 8abd747bf6..0000000000 --- a/browsers/node14.15.0-chrome86-ff82/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node14.15.0-chrome86-ff82 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node14.16.0-chrome89-ff77/Dockerfile b/browsers/node14.16.0-chrome89-ff77/Dockerfile deleted file mode 100644 index fa7fd86846..0000000000 --- a/browsers/node14.16.0-chrome89-ff77/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM cypress/base:14.16.0 - -USER root - -RUN node --version - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 89.0.4389.72 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=77.0 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node14.16.0-chrome89-ff77/README.md b/browsers/node14.16.0-chrome89-ff77/README.md deleted file mode 100644 index 45ca6a5860..0000000000 --- a/browsers/node14.16.0-chrome89-ff77/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cypress/browsers:node14.16.0-chrome89-ff77 - -A complete image with all operating system dependencies for Cypress, Chrome -89 and Firefox 77 browsers. - -[Dockerfile](Dockerfile) - -```text -node version: v14.16.0 -npm version: 7.6.0 -yarn version: 1.22.10 -debian version: 10.8 -Chrome version: Google Chrome 89.0.4389.72 -Firefox version: Mozilla Firefox 77.0 -git version: git version 2.20.1 -whoami: root -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node14.16.0-chrome89-ff77/build.sh b/browsers/node14.16.0-chrome89-ff77/build.sh deleted file mode 100755 index 2c36d8c551..0000000000 --- a/browsers/node14.16.0-chrome89-ff77/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node14.16.0-chrome89-ff77 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node14.16.0-chrome89-ff86/Dockerfile b/browsers/node14.16.0-chrome89-ff86/Dockerfile deleted file mode 100644 index ac056baab2..0000000000 --- a/browsers/node14.16.0-chrome89-ff86/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM cypress/base:14.16.0 - -USER root - -RUN node --version - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 89.0.4389.72 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=86.0.1 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node14.16.0-chrome89-ff86/README.md b/browsers/node14.16.0-chrome89-ff86/README.md deleted file mode 100644 index 133c112060..0000000000 --- a/browsers/node14.16.0-chrome89-ff86/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cypress/browsers:node14.16.0-chrome89-ff86 - -A complete image with all operating system dependencies for Cypress, Chrome -89 and Firefox 86 browsers. - -[Dockerfile](Dockerfile) - -```text -node version: v14.16.0 -npm version: 7.6.0 -yarn version: 1.22.10 -debian version: 10.8 -Chrome version: Google Chrome 89.0.4389.72 -Firefox version: Mozilla Firefox 86.0.1 -git version: git version 2.20.1 -whoami: root -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node14.16.0-chrome89-ff86/build.sh b/browsers/node14.16.0-chrome89-ff86/build.sh deleted file mode 100755 index 02d3e42851..0000000000 --- a/browsers/node14.16.0-chrome89-ff86/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node14.16.0-chrome89-ff86 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node14.16.0-chrome90-ff88/Dockerfile b/browsers/node14.16.0-chrome90-ff88/Dockerfile deleted file mode 100644 index f911fba06d..0000000000 --- a/browsers/node14.16.0-chrome90-ff88/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM cypress/base:14.16.0 - -USER root - -RUN node --version - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 90.0.4430.212 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=88.0.1 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node14.16.0-chrome90-ff88/README.md b/browsers/node14.16.0-chrome90-ff88/README.md deleted file mode 100644 index 63c16dbd02..0000000000 --- a/browsers/node14.16.0-chrome90-ff88/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cypress/browsers:node14.16.0-chrome90-ff88 - -A complete image with all operating system dependencies for Cypress, Chrome -89 and Firefox 86 browsers. - -[Dockerfile](Dockerfile) - -```text -node version: v14.16.0 -npm version: 7.6.0 -yarn version: 1.22.10 -debian version: 10.8 -Chrome version: Google Chrome 90.0.4430.212 -Firefox version: Mozilla Firefox 88.0.1 -git version: git version 2.20.1 -whoami: root -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node14.16.0-chrome90-ff88/build.sh b/browsers/node14.16.0-chrome90-ff88/build.sh deleted file mode 100755 index 65f256c426..0000000000 --- a/browsers/node14.16.0-chrome90-ff88/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node14.16.0-chrome90-ff88 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node14.17.0-chrome88-ff89/Dockerfile b/browsers/node14.17.0-chrome88-ff89/Dockerfile deleted file mode 100644 index b954e88de7..0000000000 --- a/browsers/node14.17.0-chrome88-ff89/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM cypress/base:14.17.0 - -USER root - -RUN node --version - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 88.0.4324.96 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=89.0.2 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node14.17.0-chrome88-ff89/README.md b/browsers/node14.17.0-chrome88-ff89/README.md deleted file mode 100644 index e7bf7cef80..0000000000 --- a/browsers/node14.17.0-chrome88-ff89/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cypress/browsers:node14.17.0-chrome88-ff89 - -A complete image with all operating system dependencies for Cypress, Chrome -88 and Firefox 89 browsers. - -[Dockerfile](Dockerfile) - -```text -node version: v14.17.0 -npm version: 6.14.13 -yarn version: 1.22.10 -debian version: 10.9 -Chrome version: Google Chrome 88.0.4324.96 -Firefox version: Mozilla Firefox 89.0.2 -git version: git version 2.20.1 -whoami: root -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node14.17.0-chrome88-ff89/build.sh b/browsers/node14.17.0-chrome88-ff89/build.sh deleted file mode 100755 index 9dc2cd08ef..0000000000 --- a/browsers/node14.17.0-chrome88-ff89/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node14.17.0-chrome88-ff89 - -echo "Building $LOCAL_NAME" -docker build --no-cache -t $LOCAL_NAME . diff --git a/browsers/node14.17.0-chrome91-ff89/Dockerfile b/browsers/node14.17.0-chrome91-ff89/Dockerfile deleted file mode 100644 index 1e883fa912..0000000000 --- a/browsers/node14.17.0-chrome91-ff89/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM cypress/base:14.17.0 - -USER root - -RUN node --version - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 91.0.4472.114 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=89.0.2 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node14.17.0-chrome91-ff89/README.md b/browsers/node14.17.0-chrome91-ff89/README.md deleted file mode 100644 index 9367aca9c5..0000000000 --- a/browsers/node14.17.0-chrome91-ff89/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cypress/browsers:node14.17.0-chrome91-ff89 - -A complete image with all operating system dependencies for Cypress, Chrome -91 and Firefox 89 browsers. - -[Dockerfile](Dockerfile) - -```text -node version: v14.17.0 -npm version: 6.14.13 -yarn version: 1.22.10 -debian version: 10.9 -Chrome version: Google Chrome 91.0.4472.114 -Firefox version: Mozilla Firefox 89.0.2 -git version: git version 2.20.1 -whoami: root -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node14.17.0-chrome91-ff89/build.sh b/browsers/node14.17.0-chrome91-ff89/build.sh deleted file mode 100755 index f85f609758..0000000000 --- a/browsers/node14.17.0-chrome91-ff89/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node14.17.0-chrome91-ff89 - -echo "Building $LOCAL_NAME" -docker build --no-cache -t $LOCAL_NAME . diff --git a/browsers/node14.7.0-chrome84/Dockerfile b/browsers/node14.7.0-chrome84/Dockerfile deleted file mode 100644 index 8c0edfa708..0000000000 --- a/browsers/node14.7.0-chrome84/Dockerfile +++ /dev/null @@ -1,42 +0,0 @@ -FROM cypress/base:14.7.0 - -USER root - -RUN node --version -RUN echo "force new chrome here!" - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 84.0.4147.105 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node14.7.0-chrome84/README.md b/browsers/node14.7.0-chrome84/README.md deleted file mode 100644 index f391942b59..0000000000 --- a/browsers/node14.7.0-chrome84/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# cypress/browsers:node14.7.0-chrome84 - -A complete image with all operating system dependencies for Cypress, Chrome 84. - -[Dockerfile](Dockerfile) - -```text - node version: v14.7.0 - npm version: 6.14.4 - yarn version: 1.22.4 - debian version: 10.3 - Chrome version: Google Chrome 84.0.4147.105 - git version: git version 2.20.1 -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node14.7.0-chrome84/build.sh b/browsers/node14.7.0-chrome84/build.sh deleted file mode 100755 index ee66589447..0000000000 --- a/browsers/node14.7.0-chrome84/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node14.7.0-chrome84 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node16.5.0-chrome94-ff93/Dockerfile b/browsers/node16.5.0-chrome94-ff93/Dockerfile deleted file mode 100644 index 8adb7bea2b..0000000000 --- a/browsers/node16.5.0-chrome94-ff93/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM cypress/base:16.5.0 - -USER root - -RUN node --version - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils - -# install Chrome browser -ENV CHROME_VERSION 94.0.4606.71 -RUN wget -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_${CHROME_VERSION}-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 -RUN google-chrome --version - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# add codecs needed for video playback in firefox -# https://github.com/cypress-io/cypress-docker-images/issues/150 -RUN apt-get install mplayer -y - -# install Firefox browser -ARG FIREFOX_VERSION=93.0 -RUN wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && 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" \ - "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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node16.5.0-chrome94-ff93/README.md b/browsers/node16.5.0-chrome94-ff93/README.md deleted file mode 100644 index 1e6441c882..0000000000 --- a/browsers/node16.5.0-chrome94-ff93/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cypress/browsers:node16.5.0-chrome94-ff93 - -A complete image with all operating system dependencies for Cypress, Chrome -94 and Firefox 93 browsers. - -[Dockerfile](Dockerfile) - -```text - node version: v16.5.0 - npm version: 7.19.1 - yarn version: 1.22.15 - debian version: 10.10 - Chrome version: Google Chrome 94.0.4606.71 - Firefox version: Mozilla Firefox 93.0 - git version: git version 2.20.1 - whoami: root -``` - -**Note:** this image uses the `root` user. You might want to switch to non-root -user like `node` when running this container for security. diff --git a/browsers/node16.5.0-chrome94-ff93/build.sh b/browsers/node16.5.0-chrome94-ff93/build.sh deleted file mode 100755 index eaf8a61d3e..0000000000 --- a/browsers/node16.5.0-chrome94-ff93/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node16.5.0-chrome94-ff93 - -echo "Building $LOCAL_NAME" -docker build --no-cache -t $LOCAL_NAME . diff --git a/browsers/node8.15.1-chrome73/Dockerfile b/browsers/node8.15.1-chrome73/Dockerfile deleted file mode 100644 index f33c093bc0..0000000000 --- a/browsers/node8.15.1-chrome73/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -FROM cypress/base:8.15.1 - -USER root - -RUN node --version -RUN echo "force new chrome here" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list && \ - apt-get update && \ - apt-get install -y dbus-x11 google-chrome-stable && \ - rm -rf /var/lib/apt/lists/* - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# 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" \ - "git version: $(git --version) \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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node8.15.1-chrome73/README.md b/browsers/node8.15.1-chrome73/README.md deleted file mode 100644 index e9786ce626..0000000000 --- a/browsers/node8.15.1-chrome73/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# cypress/browsers:node8.15.1-chrome73 - -A complete image with all operating system dependencies for Cypress and Chrome 73 browser - -[Dockerfile](Dockerfile) - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:node8.15.1-chrome73 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/node8.15.1-chrome73/build.sh b/browsers/node8.15.1-chrome73/build.sh deleted file mode 100755 index c12223a5a7..0000000000 --- a/browsers/node8.15.1-chrome73/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node8.15.1-chrome73 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node8.2.1-chrome73/Dockerfile b/browsers/node8.2.1-chrome73/Dockerfile deleted file mode 100644 index ad12b68cdc..0000000000 --- a/browsers/node8.2.1-chrome73/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -FROM cypress/base:8.2.1 - -USER root - -RUN node --version -RUN echo "force new chrome here" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list && \ - apt-get update && \ - apt-get install -y dbus-x11 google-chrome-stable && \ - rm -rf /var/lib/apt/lists/* - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# 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" \ - "git version: $(git --version) \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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node8.2.1-chrome73/README.md b/browsers/node8.2.1-chrome73/README.md deleted file mode 100644 index 0fa4949d40..0000000000 --- a/browsers/node8.2.1-chrome73/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cypress/browsers:node8.2.1-chrome73 - -A complete image with all operating system dependencies for Cypress and Chrome 73 browser - -[Dockerfile](Dockerfile) - -Note: this image is mostly used for internal building and testing of Cypress test runner v3.3.x - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:node8.2.1-chrome73 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/node8.2.1-chrome73/build.sh b/browsers/node8.2.1-chrome73/build.sh deleted file mode 100755 index bae7b5dc7d..0000000000 --- a/browsers/node8.2.1-chrome73/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node8.2.1-chrome73 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node8.9.3-chrome73/Dockerfile b/browsers/node8.9.3-chrome73/Dockerfile deleted file mode 100644 index b6d4d5e30a..0000000000 --- a/browsers/node8.9.3-chrome73/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -FROM cypress/base:8.9.3 - -USER root - -RUN node --version -RUN echo "force new chrome here" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list && \ - apt-get update && \ - apt-get install -y dbus-x11 google-chrome-stable && \ - rm -rf /var/lib/apt/lists/* - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# 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" \ - "git version: $(git --version) \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 -# allow installing when the main user is root -ENV npm_config_unsafe_perm true diff --git a/browsers/node8.9.3-chrome73/README.md b/browsers/node8.9.3-chrome73/README.md deleted file mode 100644 index 7ac4a14ec2..0000000000 --- a/browsers/node8.9.3-chrome73/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cypress/browsers:node8.9.3-chrome73 - -A complete image with all operating system dependencies for Cypress and Chrome 73 browser - -[Dockerfile](Dockerfile) - -Note: this image is mostly used for internal building and testing of Cypress test runner v3.3.x - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:node8.9.3-chrome73 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/node8.9.3-chrome73/build.sh b/browsers/node8.9.3-chrome73/build.sh deleted file mode 100755 index 24b1481456..0000000000 --- a/browsers/node8.9.3-chrome73/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node8.9.3-chrome73 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node8.9.3-npm6.10.1-chrome75/Dockerfile b/browsers/node8.9.3-npm6.10.1-chrome75/Dockerfile deleted file mode 100644 index cf0928101b..0000000000 --- a/browsers/node8.9.3-npm6.10.1-chrome75/Dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -FROM cypress/base:8.9.3-npm-6.10.1 - -USER root - -RUN node --version -RUN echo "force new chrome here" - -# install Chromebrowser -RUN \ - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list -RUN apt-get update -# disabled dbus install - could not get it to install -# but tested an example project, and Chrome seems to run fine -# RUN apt-get install -y dbus-x11 -RUN apt-get install -y google-chrome-stable -RUN rm -rf /var/lib/apt/lists/* - -# "fake" dbus address to prevent errors -# https://github.com/SeleniumHQ/docker-selenium/issues/87 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# 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" \ - "git version: $(git --version) \n" diff --git a/browsers/node8.9.3-npm6.10.1-chrome75/README.md b/browsers/node8.9.3-npm6.10.1-chrome75/README.md deleted file mode 100644 index c8a6a89594..0000000000 --- a/browsers/node8.9.3-npm6.10.1-chrome75/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# cypress/browsers:node8.9.3-npm6.10.1-chrome75 - -A complete image with all operating system dependencies for Cypress and Chrome 75 browser - -[Dockerfile](Dockerfile) - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:node8.9.3-npm6.10.1-chrome75 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. diff --git a/browsers/node8.9.3-npm6.10.1-chrome75/build.sh b/browsers/node8.9.3-npm6.10.1-chrome75/build.sh deleted file mode 100755 index f73996a350..0000000000 --- a/browsers/node8.9.3-npm6.10.1-chrome75/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node8.9.3-npm6.10.1-chrome75 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/browsers/node8.9.3-npm6.10.1-chrome76-ff68/Dockerfile b/browsers/node8.9.3-npm6.10.1-chrome76-ff68/Dockerfile deleted file mode 100644 index 4adb4f4883..0000000000 --- a/browsers/node8.9.3-npm6.10.1-chrome76-ff68/Dockerfile +++ /dev/null @@ -1,41 +0,0 @@ -FROM cypress/base:8.9.3-npm-6.10.1 - -ARG FIREFOX_VERSION=68.0.2 - -USER root - -RUN node --version -RUN echo "force new chrome here" - -# Chrome dependencies -RUN apt-get update -RUN apt-get install -y fonts-liberation libappindicator3-1 xdg-utils lsb-release - -# install Chrome browser -ENV CHROME_VERSION 76.0.3809.100 -RUN wget -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_${CHROME_VERSION}-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 wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 && \ - tar -C /opt -xjf /tmp/firefox.tar.bz2 && \ - rm /tmp/firefox.tar.bz2 && \ - ln -fs /opt/firefox/firefox /usr/bin/firefox - -# Add zip utility - it comes in very handy -RUN apt-get update && apt-get install -y zip - -# 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" \ - "git version: $(git --version) \n" diff --git a/browsers/node8.9.3-npm6.10.1-chrome76-ff68/README.md b/browsers/node8.9.3-npm6.10.1-chrome76-ff68/README.md deleted file mode 100644 index 9b96db648e..0000000000 --- a/browsers/node8.9.3-npm6.10.1-chrome76-ff68/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# cypress/browsers:node8.9.3-npm6.10.1-chrome76-ff68 - -A complete image with: -- all operating system dependencies for Cypress -- Chrome 76 browser -- Firefox 68 browser - -[Dockerfile](Dockerfile) - -## Example - -If you want to build your image - -``` -FROM cypress/browsers:node8.9.3-npm6.10.1-chrome76-ff68 -RUN npm i cypress -RUN $(npm bin)/cypress run --browser chrome -``` - -This image uses the `root` user. You might want to switch to non-root -user when running this container for security. - -## Versions - -``` -node version: v8.9.3 -npm version: 6.10.1 -yarn version: 1.17.3 -debian version: 8.10 -Chrome version: Google Chrome 76.0.3809.100 -Firefox version: Mozilla Firefox 68.0.2 -git version: git version 2.1.4 -``` diff --git a/browsers/node8.9.3-npm6.10.1-chrome76-ff68/build.sh b/browsers/node8.9.3-npm6.10.1-chrome76-ff68/build.sh deleted file mode 100755 index 6198f6f56c..0000000000 --- a/browsers/node8.9.3-npm6.10.1-chrome76-ff68/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/browsers:node8.9.3-npm6.10.1-chrome76-ff68 - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/buildspec.yml b/buildspec.yml deleted file mode 100644 index ee0dada6fc..0000000000 --- a/buildspec.yml +++ /dev/null @@ -1,1070 +0,0 @@ -version: 0.2 -env: - variables: - PUBLIC_ECR_ALIAS: "cypress-io" - -batch: - fast-fail: false - build-list: - - identifier: base10220 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "10.22.0" - - identifier: base1200Libgbm - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "12.0.0-libgbm" - - identifier: base12183 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "12.18.3" - - identifier: base12184 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "12.18.4" - - identifier: base12190 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "12.19.0" - - identifier: base14101 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "14.10.1" - - identifier: base14150 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "14.15.0" - - identifier: base14154 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "14.15.4" - - identifier: base14160 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "14.16.0" - - identifier: base14170 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "14.17.0" - - identifier: base14173 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "14.17.3" - - identifier: base1450 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "14.5.0" - - identifier: base1470 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "14.7.0" - - identifier: base1600 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "16.0.0" - - identifier: base1610 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "16.1.0" - - identifier: base1620 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "16.2.0" - - identifier: base1630 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "16.3.0" - - identifier: base1640 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "16.4.0" - - identifier: base1650 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "16.5.0" - - identifier: basemanjaro14120 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/base" - IMAGE_DIR: "base" - IMAGE_TAG: "manjaro-14.12.0" - - - identifier: browsersnode12141Chrome85Ff81 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/browsers" - IMAGE_DIR: "browsers" - IMAGE_TAG: "node12.14.1-chrome85-ff81" - - identifier: browsersnode12183Chrome83Ff77 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/browsers" - IMAGE_DIR: "browsers" - IMAGE_TAG: "node12.18.3-chrome83-ff77" - - identifier: browsersnode12183Chrome87Ff82 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/browsers" - IMAGE_DIR: "browsers" - IMAGE_TAG: "node12.18.3-chrome87-ff82" - - identifier: browsersnode12183Chrome89Ff86 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/browsers" - IMAGE_DIR: "browsers" - IMAGE_TAG: "node12.18.3-chrome89-ff86" - - identifier: browsersnode12184Edge88 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/browsers" - IMAGE_DIR: "browsers" - IMAGE_TAG: "node12.18.4-edge88" - - identifier: browsersnode12190Chrome86Ff82 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/browsers" - IMAGE_DIR: "browsers" - IMAGE_TAG: "node12.19.0-chrome86-ff82" - - identifier: browsersnode1380Chrome81Ff75 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/browsers" - IMAGE_DIR: "browsers" - IMAGE_TAG: "node13.8.0-chrome81-ff75" - - identifier: browsersnode14101Edge88 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/browsers" - IMAGE_DIR: "browsers" - IMAGE_TAG: "node14.10.1-edge88" - - identifier: browsersnode14150Chrome86Ff82 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/browsers" - IMAGE_DIR: "browsers" - IMAGE_TAG: "node14.15.0-chrome86-ff82" - - identifier: browsersnode14160Chrome89Ff77 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/browsers" - IMAGE_DIR: "browsers" - IMAGE_TAG: "node14.16.0-chrome89-ff77" - - identifier: browsersnode14160Chrome89Ff86 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/browsers" - IMAGE_DIR: "browsers" - IMAGE_TAG: "node14.16.0-chrome89-ff86" - - identifier: browsersnode14160Chrome90Ff88 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/browsers" - IMAGE_DIR: "browsers" - IMAGE_TAG: "node14.16.0-chrome90-ff88" - - identifier: browsersnode14170Chrome88Ff89 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/browsers" - IMAGE_DIR: "browsers" - IMAGE_TAG: "node14.17.0-chrome88-ff89" - - identifier: browsersnode14170Chrome91Ff89 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/browsers" - IMAGE_DIR: "browsers" - IMAGE_TAG: "node14.17.0-chrome91-ff89" - - identifier: browsersnode1470Chrome84 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/browsers" - IMAGE_DIR: "browsers" - IMAGE_TAG: "node14.7.0-chrome84" - - identifier: browsersnode1650Chrome94Ff93 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/browsers" - IMAGE_DIR: "browsers" - IMAGE_TAG: "node16.5.0-chrome94-ff93" - - - identifier: included320 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "3.2.0" - - identifier: included330 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "3.3.0" - - identifier: included331 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "3.3.1" - - identifier: included332 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "3.3.2" - - identifier: included340 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "3.4.0" - - identifier: included341 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "3.4.1" - - identifier: included350 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "3.5.0" - - identifier: included360 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "3.6.0" - - identifier: included361 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "3.6.1" - - identifier: included370 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "3.7.0" - - identifier: included380 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "3.8.0" - - identifier: included381 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "3.8.1" - - identifier: included382 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "3.8.2" - - identifier: included383 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "3.8.3" - - identifier: included400 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "4.0.0" - - identifier: included401 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "4.0.1" - - identifier: included402 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "4.0.2" - - identifier: included410 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "4.1.0" - - identifier: included4100 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "4.10.0" - - identifier: included4110 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "4.11.0" - - identifier: included4120 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "4.12.0" - - identifier: included4121 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "4.12.1" - - identifier: included420 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "4.2.0" - - identifier: included430 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "4.3.0" - - identifier: included440 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "4.4.0" - - identifier: included441 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "4.4.1" - - identifier: included450 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "4.5.0" - - identifier: included460 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "4.6.0" - - identifier: included470 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "4.7.0" - - identifier: included480 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "4.8.0" - - identifier: included490 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "4.9.0" - - identifier: included500 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "5.0.0" - - identifier: included510 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "5.1.0" - - identifier: included520 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "5.2.0" - - identifier: included530 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "5.3.0" - - identifier: included540 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "5.4.0" - - identifier: included550 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "5.5.0" - - identifier: included560 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "5.6.0" - - identifier: included600 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "6.0.0" - - identifier: included601 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "6.0.1" - - identifier: included610 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "6.1.0" - - identifier: included620 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "6.2.0" - - identifier: included621 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "6.2.1" - - identifier: included630 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "6.3.0" - - identifier: included640 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "6.4.0" - - identifier: included650 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "6.5.0" - - identifier: included660 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "6.6.0" - - identifier: included670 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "6.7.0" - - identifier: included671 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "6.7.1" - - identifier: included680 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "6.8.0" - - identifier: included700 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "7.0.0" - - identifier: included701 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "7.0.1" - - identifier: included710 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "7.1.0" - - identifier: included720 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "7.2.0" - - identifier: included730 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "7.3.0" - - identifier: included740 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "7.4.0" - - identifier: included750 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "7.5.0" - - identifier: included760 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "7.6.0" - - identifier: included770 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "7.7.0" - - identifier: included810 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "8.1.0" - - identifier: included820 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "8.2.0" - - identifier: included830 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "8.3.0" - - identifier: included831 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "8.3.1" - - identifier: included840 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "8.4.0" - - identifier: included841 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "8.4.1" - - identifier: included850 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "8.5.0" - - identifier: included860 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "8.6.0" - - identifier: included870 - env: - image: aws/codebuild/standard:5.0 - type: LINUX_CONTAINER - privileged-mode: true - compute-type: BUILD_GENERAL1_MEDIUM - variables: - IMAGE_REPO_NAME: "cypress/included" - IMAGE_DIR: "included" - IMAGE_TAG: "8.7.0" - -phases: - pre_build: - commands: - - aws --version - - echo Check if $IMAGE_TAG is in ECR... - - ./find-ecr-image.sh $IMAGE_REPO_NAME $IMAGE_TAG -p - - echo Logging in to Amazon ECR... - - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com - - aws ecr-public get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin public.ecr.aws/$PUBLIC_ECR_ALIAS - build: - commands: - - echo Building the Docker image... - - cd $IMAGE_DIR/$IMAGE_TAG - - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG . - - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG public.ecr.aws/$PUBLIC_ECR_ALIAS/$IMAGE_REPO_NAME:$IMAGE_TAG - post_build: - commands: - - echo Pushing the Docker image... - - docker push public.ecr.aws/$PUBLIC_ECR_ALIAS/$IMAGE_REPO_NAME:$IMAGE_TAG \ No newline at end of file diff --git a/circle.yml b/circle.yml index 7d14d38210..a9e6eab1c0 100644 --- a/circle.yml +++ b/circle.yml @@ -1,734 +1,408 @@ -# WARNING: this file is automatically generated by generate-config.js # info on building Docker images on Circle # https://circleci.com/docs/2.0/building-docker-images/ -version: 2.1 - -orbs: - node: circleci/node@1.1 - -commands: - halt-on-branch: - description: Halt current CircleCI job if not on master branch - steps: - - run: - name: Halting job if not on master branch - command: | - if [[ "$CIRCLE_BRANCH" != "master" ]]; then - echo "Not master branch, will skip the rest of commands" - circleci-agent step halt - else - echo "On master branch, can continue" - fi - - halt-if-docker-image-exists: - description: Halt current CircleCI job if Docker image exists already - parameters: - imageName: - type: string - description: Docker image name to test - steps: - - run: - name: Check if image << parameters.imageName >> exists or Docker hub does not respond - # using https://github.com/cypress-io/docker-image-not-found - # to check if Docker hub definitely does not have this image - command: | - if npx docker-image-not-found --repo << parameters.imageName >>; then - echo Docker hub says image << parameters.imageName >> does not exist - else - echo Docker hub has image << parameters.imageName >> or not responding - echo We should stop in this case - circleci-agent step halt - fi - - test-base-image: - description: Build a test image from base image and test it - parameters: - nodeVersion: - type: string - description: Node version to expect in the base image, starts with "v" - imageName: - type: string - description: Cypress base docker image to test - checkNodeVersion: - type: boolean - description: Check if the FROM image name is strict Node version - default: true - steps: - - when: - condition: << parameters.checkNodeVersion >> - steps: - - run: - name: confirm image has Node << parameters.nodeVersion >> - # do not run Docker in the interactive mode - adds control characters! - command: | - version=$(docker run << parameters.imageName >> node --version) - if [ "$version" == "<< parameters.nodeVersion >>" ]; then - echo "Base image has the expected version of Node << parameters.nodeVersion >>"; - else - echo "Problem: base image has unexpected Node version" - echo "Expected << parameters.nodeVersion >> and got $version" - exit 1 - fi - - run: - name: test image << parameters.imageName >> - no_output_timeout: '3m' - command: | - docker build -t cypress/test -\<> - RUN echo "current user: $(whoami)" - ENV CI=1 - WORKDIR /app - RUN npm init --yes - RUN npm install --save-dev cypress cypress-expect - RUN ./node_modules/.bin/cypress verify - RUN npx @bahmutov/cly init - # run Cypress by itself - RUN ./node_modules/.bin/cypress run - # run Cypress using module API and confirm number of passing tests - RUN ./node_modules/.bin/cypress-expect run --passing 1 - EOF - - - run: - name: test image << parameters.imageName >> using Kitchensink - no_output_timeout: '3m' - command: | - docker build -t cypress/test-kitchensink -\<> - RUN echo "current user: $(whoami)" - ENV CI=1 - ENV CYPRESS_INTERNAL_FORCE_SCAFFOLD=1 - WORKDIR /app - RUN npm init --yes - RUN npm install --save-dev cypress cypress-expect - RUN ./node_modules/.bin/cypress verify - RUN echo '{}' > cypress.json - # run Cypress and confirm minimum number of passing tets - RUN ./node_modules/.bin/cypress-expect run --min-passing 100 - EOF - - test-browser-image: - description: Build a test image from browser image and test it - parameters: - imageName: - type: string - description: Cypress browser docker image to test - chromeVersion: - type: string - default: '' - description: Chrome version to expect in the base image, starts with "Google Chrome XX" - firefoxVersion: - type: string - default: '' - description: Firefox version to expect in the base image, starts with "Mozilla Firefox XX" - edgeVersion: - type: string - default: '' - description: Edge version to expect in the base image, starts with "Microsoft Edge XX" - steps: - - when: - condition: << parameters.chromeVersion >> - steps: - - run: - name: confirm image has Chrome << parameters.chromeVersion >> - # do not run Docker in the interactive mode - adds control characters! - # and use Bash regex string comparison - command: | - version=$(docker run << parameters.imageName >> google-chrome --version) - if [[ "$version" =~ ^"<< parameters.chromeVersion >>" ]]; then - echo "Image has the expected version of Chrome << parameters.chromeVersion >>" - echo "found $version" - else - echo "Problem: image has unexpected Chrome version" - echo "Expected << parameters.chromeVersion >> and got $version" - exit 1 - fi - - - when: - condition: << parameters.firefoxVersion >> - steps: - - run: - name: confirm the image has Firefox << parameters.firefoxVersion >> - command: | - version=$(docker run << parameters.imageName >> firefox --version) - if [[ "$version" =~ ^"<< parameters.firefoxVersion >>" ]]; then - echo "Image has the expected version of Firefox << parameters.firefoxVersion >>" - echo "found $version" - else - echo "Problem: image has unexpected Firefox version" - echo "Expected << parameters.firefoxVersion >> and got $version" - exit 1 - fi - - - when: - condition: << parameters.edgeVersion >> - steps: - - run: - name: confirm the image has Edge << parameters.edgeVersion >> - command: | - version=$(docker run << parameters.imageName >> edge --version) - if [[ "$version" =~ ^"<< parameters.edgeVersion >>" ]]; then - echo "Image has the expected version of Edge << parameters.edgeVersion >>" - echo "found $version" - else - echo "Problem: image has unexpected Edge version" - echo "Expected << parameters.edgeVersion >> and got $version" - exit 1 - fi - - - run: - name: test image << parameters.imageName >> - no_output_timeout: '3m' - command: | - docker build -t cypress/test -\<> - RUN echo "current user: $(whoami)" - ENV CI=1 - RUN npm init --yes - RUN npm install --save-dev cypress - RUN ./node_modules/.bin/cypress verify - RUN npx @bahmutov/cly init - EOF - - - run: - name: Test built-in Electron browser - no_output_timeout: '1m' - command: docker run cypress/test ./node_modules/.bin/cypress run - - - when: - condition: << parameters.chromeVersion >> - steps: - - run: - name: Test << parameters.chromeVersion >> - no_output_timeout: '1m' - command: docker run cypress/test ./node_modules/.bin/cypress run --browser chrome - - - when: - condition: << parameters.firefoxVersion >> - steps: - - run: - name: Test << parameters.firefoxVersion >> - no_output_timeout: '1m' - command: docker run cypress/test ./node_modules/.bin/cypress run --browser firefox - - - when: - condition: << parameters.edgeVersion >> - steps: - - run: - name: Test << parameters.edgeVersion >> - no_output_timeout: '1m' - command: docker run cypress/test ./node_modules/.bin/cypress run --browser edge - - - run: - name: scaffold image << parameters.imageName >> using Kitchensink - no_output_timeout: '3m' - command: | - docker build -t cypress/test-kitchensink -\<> - RUN echo "current user: $(whoami)" - ENV CI=1 - ENV CYPRESS_INTERNAL_FORCE_SCAFFOLD=1 - RUN npm init --yes - RUN npm install --save-dev cypress - RUN ./node_modules/.bin/cypress verify - RUN echo '{}' > cypress.json - EOF - - - when: - condition: << parameters.chromeVersion >> - steps: - - run: - name: Test << parameters.chromeVersion >> - no_output_timeout: '1m' - command: docker run cypress/test-kitchensink ./node_modules/.bin/cypress run --browser chrome - - - when: - condition: << parameters.firefoxVersion >> - steps: - - run: - name: Test << parameters.firefoxVersion >> - no_output_timeout: '1m' - command: docker run cypress/test-kitchensink ./node_modules/.bin/cypress run --browser firefox - - - when: - condition: << parameters.edgeVersion >> - steps: - - run: - name: Test << parameters.edgeVersion >> - no_output_timeout: '1m' - command: docker run cypress/test-kitchensink ./node_modules/.bin/cypress run --browser edge - - test-included-image-versions: - description: Testing pre-installed versions - parameters: - cypressVersion: - type: string - description: Cypress version to test, like "4.0.0" - imageName: - type: string - description: Cypress included docker image to test - steps: - - run: - name: 'Print versions' - command: docker run -it --entrypoint cypress cypress/included:<< parameters.cypressVersion >> version - - run: - name: 'Print info' - command: docker run -it --entrypoint cypress cypress/included:<< parameters.cypressVersion >> info +## If you wish to release Docker image(s) with alternate (i.e. non-primary) versions, do not modify this file in the master branch. +## Follow the instructions in the CONTRIBUTING document for alternate versions and work instead in a feature branch. +## Modify the push jobs below to be triggered on the feature branch, not the master branch. - - run: - name: 'Check Node version' - command: | - export NODE_VERSION=$(docker run --entrypoint node cypress/included:<< parameters.cypressVersion >> --version) - export CYPRESS_NODE_VERSION=$(docker run --entrypoint cypress cypress/included:<< parameters.cypressVersion >> version --component node) - echo "Included Node $NODE_VERSION" - echo "Cypress includes Node $CYPRESS_NODE_VERSION" - # "node --version" returns something like "v12.1.2" - # and "cypres version ..." returns just "12.1.2" - if [ "$NODE_VERSION" = "v$CYPRESS_NODE_VERSION" ]; then - echo "Node versions match" - else - echo "Node version mismatch 🔥" - # TODO make sure there are no extra characters in the versions - # https://github.com/cypress-io/cypress-docker-images/issues/411 - # exit 1 - fi - - test-included-image: - description: Testing Docker image with Cypress pre-installed - parameters: - cypressVersion: - type: string - description: Cypress version to test, like "4.0.0" - imageName: - type: string - description: Cypress included docker image to test - steps: - - run: - name: New test project and testing - no_output_timeout: '3m' - command: | - node --version - mkdir test - cd test - echo "Initializing test project" - npx @bahmutov/cly init --cypress-version << parameters.cypressVersion >> - - echo "Testing using Electron browser" - docker run -it -v $PWD:/e2e -w /e2e cypress/included:<< parameters.cypressVersion >> - - echo "Testing using Chrome browser" - docker run -it -v $PWD:/e2e -w /e2e cypress/included:<< parameters.cypressVersion >> --browser chrome - working_directory: /tmp - - test-included-image-using-kitchensink: - description: Testing Cypress pre-installed using Kitchensink - parameters: - cypressVersion: - type: string - description: Cypress version to test, like "4.0.0" - imageName: - type: string - description: Cypress included docker image to test - steps: - - run: - name: Testing Kitchensink - no_output_timeout: '3m' - command: | - node --version - mkdir test-kitchensink - cd test-kitchensink - - npm init -y - echo '{}' > cypress.json - - echo "Testing using Electron browser" - docker run -it -v $PWD:/e2e -w /e2e -e CYPRESS_INTERNAL_FORCE_SCAFFOLD=1 cypress/included:<< parameters.cypressVersion >> - - echo "Testing using Chrome browser" - docker run -it -v $PWD:/e2e -w /e2e -e CYPRESS_INTERNAL_FORCE_SCAFFOLD=1 cypress/included:<< parameters.cypressVersion >> --browser chrome - - working_directory: /tmp +version: 2.1 - docker-push: - description: Log in and push a given image to Docker hub - parameters: - imageName: - type: string - description: Docker image name to push - steps: - # before pushing, let's check again that the Docker Hub does not have the image - # accidental rebuild and overwrite of an image is bad, since it can bump every tool - # https://github.com/cypress-io/cypress/issues/6335 - - halt-if-docker-image-exists: - imageName: << parameters.imageName >> - - run: - name: Pushing image << parameters.imageName >> to Docker Hub - command: | - echo "$DOCKERHUB_PASS" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin - docker push << parameters.imageName >> +commands: + expand-env-file: + description: Sets up bash env to load envs from the env file + steps: + - run: + name: Sets up bash env to load envs from the env file + command: | + touch $BASH_ENV + echo 'set -a && . ~/project/factory/.env && set +a' >> $BASH_ENV + halt-if-docker-image-exists: + description: Halt current CircleCI job if Docker image exists already + parameters: + target: + type: string + description: cypress/* repo name (factory, base, browser or included) + steps: + - run: + name: Check if image for << parameters.target >> exists on Docker Hub + # using Docker HUB API https://docs.docker.com/docker-hub/api/latest/ + # to check if Docker Hub definitely does not have this image + command: | + DOCKER_NAMESPACE='cypress' + DOCKER_REPO=<< parameters.target >> + + DOCKER_TAG='' + if [ ${DOCKER_REPO} == factory ]; then DOCKER_TAG=${FACTORY_VERSION}; fi + if [ ${DOCKER_REPO} == base ]; then DOCKER_TAG=${BASE_IMAGE_TAG}; fi + if [ ${DOCKER_REPO} == browsers ]; then DOCKER_TAG=${BROWSERS_IMAGE_TAG}; fi + if [ ${DOCKER_REPO} == included ]; then DOCKER_TAG=${INCLUDED_IMAGE_TAG}; fi + + DOCKER_NAME=${DOCKER_NAMESPACE}/${DOCKER_REPO}:${DOCKER_TAG} + + if curl -s https://hub.docker.com/v2/namespaces/${DOCKER_NAMESPACE}/repositories/${DOCKER_REPO}/tags/${DOCKER_TAG} \ + | grep -iq 'httperror 404'; then + echo Docker Hub says image $DOCKER_NAME does not exist - HTTP status 404 returned + echo $DOCKER_NAME available for publishing + else + echo Docker Hub found image $DOCKER_NAME - or error occurred + echo Stopping to avoid republishing + circleci-agent step halt + fi jobs: - lint-markdown: - executor: - name: node/default - tag: '12' - steps: - - checkout - - node/with-cache: - steps: - - run: npm ci - - run: npm run check:markdown - - build-base-image: - machine: true - parameters: - dockerName: - type: string - description: Image name to build - default: cypress/base - dockerTag: - type: string - description: Image tag to build like "12.14.0" - checkNodeVersion: - type: boolean - description: Check if the FROM image name is strict Node version - default: true - steps: - - checkout - - halt-if-docker-image-exists: - imageName: << parameters.dockerName >>:<< parameters.dockerTag >> - - run: - name: building Docker image << parameters.dockerName >>:<< parameters.dockerTag >> - command: | - docker build -t << parameters.dockerName >>:<< parameters.dockerTag >> . - working_directory: base/<< parameters.dockerTag >> - - - test-base-image: - nodeVersion: v<< parameters.dockerTag >> - imageName: << parameters.dockerName >>:<< parameters.dockerTag >> - checkNodeVersion: << parameters.checkNodeVersion >> - - halt-on-branch - - docker-push: - imageName: << parameters.dockerName >>:<< parameters.dockerTag >> - - build-browser-image: - machine: true - parameters: - dockerName: - type: string - description: Image name to build - default: cypress/browsers - dockerTag: - type: string - description: Image tag to build like "node12.4.0-chrome76" - chromeVersion: - type: string - default: '' - description: Chrome version to expect in the base image, starts with "Google Chrome XX" - firefoxVersion: - type: string - default: '' - description: Firefox version to expect in the base image, starts with "Mozilla Firefox XX" - edgeVersion: - type: string - default: '' - description: Edge version to expect in the base image, starts with "Microsoft Edge XX" - steps: - - checkout - - halt-if-docker-image-exists: - imageName: << parameters.dockerName >>:<< parameters.dockerTag >> - - run: - name: building Docker image << parameters.dockerName >>:<< parameters.dockerTag >> - command: | - docker build -t << parameters.dockerName >>:<< parameters.dockerTag >> . - working_directory: browsers/<< parameters.dockerTag >> - - test-browser-image: - imageName: << parameters.dockerName >>:<< parameters.dockerTag >> - chromeVersion: << parameters.chromeVersion >> - firefoxVersion: << parameters.firefoxVersion >> - edgeVersion: << parameters.edgeVersion >> - - halt-on-branch - - docker-push: - imageName: << parameters.dockerName >>:<< parameters.dockerTag >> - - build-included-image: - machine: true - parameters: - dockerName: - type: string - description: Image name to build - default: cypress/included - dockerTag: - type: string - description: Image tag to build, should match Cypress version, like "3.8.1" - steps: - - checkout - - halt-if-docker-image-exists: - imageName: << parameters.dockerName >>:<< parameters.dockerTag >> - - run: - name: building Docker image << parameters.dockerName >>:<< parameters.dockerTag >> - command: | - docker build -t << parameters.dockerName >>:<< parameters.dockerTag >> . - working_directory: included/<< parameters.dockerTag >> - - - test-included-image-versions: - cypressVersion: << parameters.dockerTag >> - imageName: << parameters.dockerName >>:<< parameters.dockerTag >> - - - test-included-image: - cypressVersion: << parameters.dockerTag >> - imageName: << parameters.dockerName >>:<< parameters.dockerTag >> - - - test-included-image-using-kitchensink: - cypressVersion: << parameters.dockerTag >> - imageName: << parameters.dockerName >>:<< parameters.dockerTag >> - - - halt-on-branch - - docker-push: - imageName: << parameters.dockerName >>:<< parameters.dockerTag >> + check-factory-versions: + machine: + image: ubuntu-2204:2024.11.1 + steps: + - checkout + - expand-env-file + - run: + name: building docker image + command: | + docker compose --progress plain build factory + working_directory: factory + - run: + name: build test image + command: | + docker compose --progress plain build test-factory-all-included + working_directory: factory/test-project + - run: + name: check node version + command: | + ACTUAL_VERSION=$(docker compose run --rm test-factory-all-included node -v) + if [ v${NODE_VERSION} != "${ACTUAL_VERSION}" ]; then + echo "Version mismatch, v${NODE_VERSION} != ${ACTUAL_VERSION}" + exit 1; + fi + echo "Version ${ACTUAL_VERSION} confirmed" + working_directory: factory/test-project + - run: + name: check yarn version + command: | + ACTUAL_VERSION=$(docker compose run --rm test-factory-all-included yarn -v) + if [ ${YARN_VERSION} != "${ACTUAL_VERSION}" ]; then + echo "Version mismatch, ${YARN_VERSION} != ${ACTUAL_VERSION}" + exit 1; + fi + echo "Version ${ACTUAL_VERSION} confirmed" + working_directory: factory/test-project + - run: + name: check chrome version + command: | + ACTUAL_VERSION=$(docker compose run --rm test-factory-all-included google-chrome --version | xargs) + TRIMMED_CHROME_VERSION=$(echo ${CHROME_VERSION} | sed -e 's/-.*$//g') + if [ "Google Chrome ${TRIMMED_CHROME_VERSION}" != "${ACTUAL_VERSION}" ]; then + echo "Version mismatch, Google Chrome ${TRIMMED_CHROME_VERSION} != ${ACTUAL_VERSION}" + exit 1; + fi + echo "Version ${ACTUAL_VERSION} confirmed" + working_directory: factory/test-project + - run: + name: check firefox version + command: | + ACTUAL_VERSION=$(docker compose run --rm test-factory-all-included firefox --version) + if [ "Mozilla Firefox ${FIREFOX_VERSION}" != "${ACTUAL_VERSION}" ]; then + echo "Version mismatch, Mozilla Firefox ${FIREFOX_VERSION} != ${ACTUAL_VERSION}" + exit 1; + fi + echo "Version ${ACTUAL_VERSION} confirmed" + working_directory: factory/test-project + - run: + name: check edge version + command: | + ACTUAL_VERSION=$(docker compose run --rm test-factory-all-included edge --version | xargs) + TRIMMED_EDGE_VERSION=$(echo ${EDGE_VERSION} | sed -e 's/-.*$//g') + if [ "Microsoft Edge ${TRIMMED_EDGE_VERSION}" != "${ACTUAL_VERSION}" ]; then + echo "Version mismatch, Microsoft Edge ${TRIMMED_EDGE_VERSION} != ${ACTUAL_VERSION}" + exit 1; + fi + echo "Version ${ACTUAL_VERSION} confirmed" + working_directory: factory/test-project + - run: + name: check cypress version + command: | + ACTUAL_VERSION=$(docker compose run --rm test-factory-all-included cypress -v) + TRIMMED_ACTUAL_VERSION=$(echo ${ACTUAL_VERSION} | sed -e 's/ Cypress binary version:.*$//g') + if [ "Cypress package version: ${CYPRESS_VERSION}" != "${TRIMMED_ACTUAL_VERSION}" ]; then + echo "Version mismatch, Cypress package version: ${CYPRESS_VERSION} != ${TRIMMED_ACTUAL_VERSION}" + exit 1; + fi + echo "Version ${ACTUAL_VERSION} confirmed" + working_directory: factory/test-project + - run: + # The git version is determined by BASE_IMAGE and its online package sources + # We check that git is installed and report its version + # There is no check for a certain version of git + name: check git version + command: | + ACTUAL_VERSION=$(docker compose run --rm test-factory-all-included git --version) + echo "Version ${ACTUAL_VERSION} confirmed" + working_directory: factory/test-project + - run: + name: check ssh version # We don't really care what version ssh has as long as the command doesn't error + command: | + ACTUAL_VERSION=$(docker compose run --rm test-factory-all-included ssh -V 2>&1) + echo "Version ${ACTUAL_VERSION} confirmed" + working_directory: factory/test-project + check-node-override-version: + machine: + image: ubuntu-2204:2024.11.1 + steps: + - checkout + - expand-env-file + - run: + name: building docker image + command: | + docker compose --progress plain build factory + working_directory: factory + - run: + name: build test image + command: | + docker compose --progress plain build test-factory-node-override + working_directory: factory/test-project + - run: + name: check node version + command: | + ACTUAL_VERSION=$(docker compose run --rm test-factory-node-override node -v) + if [ v18.17.1 != "${ACTUAL_VERSION}" ]; then + echo "Version mismatch, v18.17.1 != ${ACTUAL_VERSION}" + exit 1; + fi + echo "Version ${ACTUAL_VERSION} confirmed" + working_directory: factory/test-project + test-image: + machine: + image: ubuntu-2204:2024.11.1 + parameters: + target: + type: string + description: The docker compose target to build + resourceClass: + type: string + description: Resource class to use for this job + test-target: + type: string + description: The docker compose target to run the test + resource_class: << parameters.resourceClass >> + steps: + - checkout + - expand-env-file + - run: + name: building docker image + command: | + if [ << parameters.target >> != factory ]; then docker compose --progress plain build factory; fi + docker compose --progress plain build << parameters.target >> + working_directory: factory + - run: + name: test + command: | + docker compose --progress plain build << parameters.test-target >> + docker compose run --rm << parameters.test-target >> + working_directory: factory/test-project + + push: + machine: + image: ubuntu-2204:2024.11.1 + parameters: + target: + type: string + description: Name of the docker compose target to build and push. + steps: + - checkout + - expand-env-file + - halt-if-docker-image-exists: + target: << parameters.target >> + - run: + name: Building Docker image for target << parameters.target >> + no_output_timeout: 20m # installing cypress on arm can take some time. + command: | + echo Build environment is ... + echo Node.js $(node --version) + echo $(docker --version) + echo $(docker buildx version) + + ## see https://docs.docker.com/desktop/multi-arch/ + docker run --privileged --rm tonistiigi/binfmt --install linux/amd64,linux/arm64 + docker buildx create --name builder --use + + # Disable default provenance attestation for Buildx + # https://docs.docker.com/build/building/variables/#buildx_no_default_attestations + # https://docs.docker.com/build/release-notes/#0100 + # Keeps using docker + # "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json" + # instead of moving to oci, which may cause compatibility issues, for example + # "mediaType": "application/vnd.oci.image.index.v1+json" + export BUILDX_NO_DEFAULT_ATTESTATIONS=1 + + docker login -u "$DOCKERHUB_USERNAME" --password "$DOCKERHUB_PASS" + docker buildx bake -f ./docker-compose.yml --progress plain --set *.platform=linux/arm64,linux/amd64 --push << parameters.target >> + + ## now, let's re-build those same images for Amazon ECR this is basically a re-tag and push because of the cache from the previous build. + ## see https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html + docker login --username AWS --password "$(aws ecr-public get-login-password --region $AWS_ECR_REGION)" $AWS_ECR_PREFIX + REPO_PREFIX=$AWS_ECR_PREFIX/ docker buildx bake -f ./docker-compose.yml --progress plain --set *.platform=linux/arm64,linux/amd64 --push << parameters.target >> + + working_directory: factory workflows: - version: 2 - lint: - jobs: - - lint-markdown - build-base-images: - jobs: - - build-base-image: - name: "base 10.22.0" - dockerTag: "10.22.0" - - build-base-image: - name: "base 12.0.0-libgbm" - dockerTag: "12.0.0-libgbm" - checkNodeVersion: false - - build-base-image: - name: "base 12.18.3" - dockerTag: "12.18.3" - - build-base-image: - name: "base 12.18.4" - dockerTag: "12.18.4" - - build-base-image: - name: "base 12.19.0" - dockerTag: "12.19.0" - - build-base-image: - name: "base 14.10.1" - dockerTag: "14.10.1" - - build-base-image: - name: "base 14.15.0" - dockerTag: "14.15.0" - - build-base-image: - name: "base 14.15.4" - dockerTag: "14.15.4" - - build-base-image: - name: "base 14.16.0" - dockerTag: "14.16.0" - - build-base-image: - name: "base 14.17.0" - dockerTag: "14.17.0" - - build-base-image: - name: "base 14.17.3" - dockerTag: "14.17.3" - - build-base-image: - name: "base 14.5.0" - dockerTag: "14.5.0" - - build-base-image: - name: "base 14.7.0" - dockerTag: "14.7.0" - - build-base-image: - name: "base 16.0.0" - dockerTag: "16.0.0" - - build-base-image: - name: "base 16.1.0" - dockerTag: "16.1.0" - - build-base-image: - name: "base 16.2.0" - dockerTag: "16.2.0" - - build-base-image: - name: "base 16.3.0" - dockerTag: "16.3.0" - - build-base-image: - name: "base 16.4.0" - dockerTag: "16.4.0" - - build-base-image: - name: "base 16.5.0" - dockerTag: "16.5.0" - - build-base-image: - name: "base manjaro-14.12.0" - dockerTag: "manjaro-14.12.0" - checkNodeVersion: false - - build-browser-images: - jobs: - - build-browser-image: - name: "browsers node12.14.1-chrome85-ff81" - dockerTag: "node12.14.1-chrome85-ff81" - chromeVersion: "Google Chrome 85" - firefoxVersion: "Mozilla Firefox 81" - - build-browser-image: - name: "browsers node12.18.3-chrome83-ff77" - dockerTag: "node12.18.3-chrome83-ff77" - chromeVersion: "Google Chrome 83" - firefoxVersion: "Mozilla Firefox 77" - - build-browser-image: - name: "browsers node12.18.3-chrome87-ff82" - dockerTag: "node12.18.3-chrome87-ff82" - chromeVersion: "Google Chrome 87" - firefoxVersion: "Mozilla Firefox 82" - - build-browser-image: - name: "browsers node12.18.3-chrome89-ff86" - dockerTag: "node12.18.3-chrome89-ff86" - chromeVersion: "Google Chrome 89" - firefoxVersion: "Mozilla Firefox 86" - - build-browser-image: - name: "browsers node12.18.4-edge88" - dockerTag: "node12.18.4-edge88" - edgeVersion: "Microsoft Edge 88" - - build-browser-image: - name: "browsers node12.19.0-chrome86-ff82" - dockerTag: "node12.19.0-chrome86-ff82" - chromeVersion: "Google Chrome 86" - firefoxVersion: "Mozilla Firefox 82" - - build-browser-image: - name: "browsers node13.8.0-chrome81-ff75" - dockerTag: "node13.8.0-chrome81-ff75" - chromeVersion: "Google Chrome 81" - firefoxVersion: "Mozilla Firefox 75" - - build-browser-image: - name: "browsers node14.10.1-edge88" - dockerTag: "node14.10.1-edge88" - edgeVersion: "Microsoft Edge 88" - - build-browser-image: - name: "browsers node14.15.0-chrome86-ff82" - dockerTag: "node14.15.0-chrome86-ff82" - chromeVersion: "Google Chrome 86" - firefoxVersion: "Mozilla Firefox 82" - - build-browser-image: - name: "browsers node14.16.0-chrome89-ff77" - dockerTag: "node14.16.0-chrome89-ff77" - chromeVersion: "Google Chrome 89" - firefoxVersion: "Mozilla Firefox 77" - - build-browser-image: - name: "browsers node14.16.0-chrome89-ff86" - dockerTag: "node14.16.0-chrome89-ff86" - chromeVersion: "Google Chrome 89" - firefoxVersion: "Mozilla Firefox 86" - - build-browser-image: - name: "browsers node14.16.0-chrome90-ff88" - dockerTag: "node14.16.0-chrome90-ff88" - chromeVersion: "Google Chrome 90" - firefoxVersion: "Mozilla Firefox 88" - - build-browser-image: - name: "browsers node14.17.0-chrome88-ff89" - dockerTag: "node14.17.0-chrome88-ff89" - chromeVersion: "Google Chrome 88" - firefoxVersion: "Mozilla Firefox 89" - - build-browser-image: - name: "browsers node14.17.0-chrome91-ff89" - dockerTag: "node14.17.0-chrome91-ff89" - chromeVersion: "Google Chrome 91" - firefoxVersion: "Mozilla Firefox 89" - - build-browser-image: - name: "browsers node14.7.0-chrome84" - dockerTag: "node14.7.0-chrome84" - chromeVersion: "Google Chrome 84" - - build-browser-image: - name: "browsers node16.5.0-chrome94-ff93" - dockerTag: "node16.5.0-chrome94-ff93" - chromeVersion: "Google Chrome 94" - firefoxVersion: "Mozilla Firefox 93" - - build-included-images: - jobs: - - build-included-image: - name: "included 6.0.0" - dockerTag: "6.0.0" - - build-included-image: - name: "included 6.0.1" - dockerTag: "6.0.1" - - build-included-image: - name: "included 6.1.0" - dockerTag: "6.1.0" - - build-included-image: - name: "included 6.2.0" - dockerTag: "6.2.0" - - build-included-image: - name: "included 6.2.1" - dockerTag: "6.2.1" - - build-included-image: - name: "included 6.3.0" - dockerTag: "6.3.0" - - build-included-image: - name: "included 6.4.0" - dockerTag: "6.4.0" - - build-included-image: - name: "included 6.5.0" - dockerTag: "6.5.0" - - build-included-image: - name: "included 6.6.0" - dockerTag: "6.6.0" - - build-included-image: - name: "included 6.7.0" - dockerTag: "6.7.0" - - build-included-image: - name: "included 6.7.1" - dockerTag: "6.7.1" - - build-included-image: - name: "included 6.8.0" - dockerTag: "6.8.0" - - build-included-image: - name: "included 7.0.0" - dockerTag: "7.0.0" - - build-included-image: - name: "included 7.0.1" - dockerTag: "7.0.1" - - build-included-image: - name: "included 7.1.0" - dockerTag: "7.1.0" - - build-included-image: - name: "included 7.2.0" - dockerTag: "7.2.0" - - build-included-image: - name: "included 7.3.0" - dockerTag: "7.3.0" - - build-included-image: - name: "included 7.4.0" - dockerTag: "7.4.0" - - build-included-image: - name: "included 7.5.0" - dockerTag: "7.5.0" - - build-included-image: - name: "included 7.6.0" - dockerTag: "7.6.0" - - build-included-image: - name: "included 7.7.0" - dockerTag: "7.7.0" - - build-included-image: - name: "included 8.0.0" - dockerTag: "8.0.0" - - build-included-image: - name: "included 8.1.0" - dockerTag: "8.1.0" - - build-included-image: - name: "included 8.2.0" - dockerTag: "8.2.0" - - build-included-image: - name: "included 8.3.0" - dockerTag: "8.3.0" - - build-included-image: - name: "included 8.3.1" - dockerTag: "8.3.1" - - build-included-image: - name: "included 8.4.0" - dockerTag: "8.4.0" - - build-included-image: - name: "included 8.4.1" - dockerTag: "8.4.1" - - build-included-image: - name: "included 8.5.0" - dockerTag: "8.5.0" - - build-included-image: - name: "included 8.6.0" - dockerTag: "8.6.0" - - build-included-image: - name: "included 8.7.0" - dockerTag: "8.7.0" + test: + jobs: + - check-factory-versions + - check-node-override-version + - test-image: + matrix: + alias: factory-arm + parameters: + test-target: [ + test-factory-electron, + test-factory-cypress-included-electron, + test-factory-cypress-included-electron-non-root-user, + test-factory-all-included-electron-only + ] + resourceClass: [arm.medium] + target: [factory] + - test-image: + matrix: + alias: factory + parameters: + test-target: [ + test-factory-electron, + test-factory-chrome, + test-factory-chrome-non-root-user, + test-factory-firefox, + test-factory-edge, + test-factory-cypress-included-electron, + test-factory-cypress-included-electron-non-root-user, + test-factory-cypress-included-chrome, + test-factory-cypress-included-firefox, + test-factory-cypress-included-firefox-non-root-user, + test-factory-cypress-included-edge, + test-factory-all-included + ] + resourceClass: [medium] + target: [factory] + - test-image: + matrix: + alias: base + parameters: + test-target: [ + test-base + ] + resourceClass: [medium] + target: [base] + - test-image: + matrix: + alias: base-arm + parameters: + test-target: [ + test-base + ] + resourceClass: [arm.medium] + target: [base] + - test-image: + matrix: + alias: browsers + parameters: + test-target: [ + test-browsers-electron, + test-browsers-chrome, + test-browsers-firefox, + test-browsers-edge + ] + resourceClass: [medium] + target: [browsers] + + - test-image: + matrix: + alias: browsers-arm + parameters: + test-target: [ + test-browsers-electron + ] + resourceClass: [arm.medium] + target: [browsers] + - test-image: + matrix: + alias: included + parameters: + test-target: [ + test-included-electron, + test-included-chrome, + test-included-firefox, + test-included-edge + ] + resourceClass: [medium] + target: [included] + - test-image: + matrix: + alias: included-arm + parameters: + test-target: [ + test-included-electron + ] + resourceClass: [arm.medium] + target: [included] + # pushing the factory image must come first because the other images may pull it down to build + - push: + name: "Push Factory Image" + target: factory + context: test-runner:docker-push + filters: + branches: + only: + # Only branches matching the below regex filters will run + # Follow the instructions in the CONTRIBUTING document for alternate versions and + # change to a feature branch such as -node--publish + # if publishing an alternate (non-primary) version + # This job must run because the base, browsers and included jobs depend on it + - master + requires: + - factory + - factory-arm + - check-node-override-version + - check-factory-versions + - push: + name: "Push Base Image" + target: base + context: test-runner:docker-push + filters: + branches: + only: + # Only branches matching the below regex filters will run + # Change to a feature branch such as -node--publish + # if publishing an alternate version + - master + requires: + - "Push Factory Image" + - base + - base-arm + - push: + name: "Push Browser Image" + target: browsers + context: test-runner:docker-push + filters: + branches: + only: + # Only branches matching the below regex filters will run + # Change to a feature branch such as -node--publish + # if publishing an alternate version + - master + requires: + - "Push Factory Image" + - browsers + - browsers-arm + - push: + target: included + name: "Push Included Image" + context: test-runner:docker-push + filters: + branches: + only: + # Only branches matching the below regex filters will run + # Change to a feature branch such as -node--publish + # if publishing an alternate version + - master + requires: + - "Push Factory Image" + - included + - included-arm diff --git a/examples/basic-mini/README.md b/examples/basic-mini/README.md new file mode 100644 index 0000000000..9cdf156e2c --- /dev/null +++ b/examples/basic-mini/README.md @@ -0,0 +1,7 @@ +# examples/basic-mini + +This directory contains a simple example of a Cypress E2E test with one test spec `cypress/e2e/spec.cy.js`. The example is intended for use with a Cypress Docker image `cypress/included` which includes a version of Cypress installed in the image. In order to avoid potential version conflicts between the example and the Docker image there is no Cypress version included in the [package.json](package.json) file. + +## Non-Docker demonstration + +Unlike the related [basic](../basic/) example, this example is not suited to be run without a Docker image, since it does not include Cypress (see above for explanation). diff --git a/examples/basic-mini/cypress.config.js b/examples/basic-mini/cypress.config.js new file mode 100644 index 0000000000..4415f5033f --- /dev/null +++ b/examples/basic-mini/cypress.config.js @@ -0,0 +1,8 @@ +const { defineConfig } = require('cypress') + +module.exports = defineConfig({ + fixturesFolder: false, + e2e: { + supportFile: false, + }, +}) diff --git a/examples/basic-mini/cypress/e2e/spec.cy.js b/examples/basic-mini/cypress/e2e/spec.cy.js new file mode 100644 index 0000000000..a8c9767802 --- /dev/null +++ b/examples/basic-mini/cypress/e2e/spec.cy.js @@ -0,0 +1,6 @@ +describe('test local demo page', () => { + it('heading', () => { + cy.visit('index.html') + cy.contains('h2', 'Test') + }) +}) diff --git a/examples/basic-mini/index.html b/examples/basic-mini/index.html new file mode 100644 index 0000000000..1be162da35 --- /dev/null +++ b/examples/basic-mini/index.html @@ -0,0 +1,14 @@ + + + + + Test for Cypress Docker images + + + +

Purpose

+

This page is used for demonstrating Cypress Docker images.

+

Test heading

+

This is a test page

+ + diff --git a/examples/basic-mini/package-lock.json b/examples/basic-mini/package-lock.json new file mode 100644 index 0000000000..502c0f982a --- /dev/null +++ b/examples/basic-mini/package-lock.json @@ -0,0 +1,12 @@ +{ + "name": "example-basic-mini", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "example-basic-mini", + "version": "1.0.0" + } + } +} diff --git a/examples/basic-mini/package.json b/examples/basic-mini/package.json new file mode 100644 index 0000000000..7214c05a26 --- /dev/null +++ b/examples/basic-mini/package.json @@ -0,0 +1,6 @@ +{ + "name": "example-basic-mini", + "version": "1.0.0", + "description": "Basic E2E Cypress test example - no Cypress module", + "private": true +} diff --git a/examples/basic/Dockerfile.base b/examples/basic/Dockerfile.base new file mode 100644 index 0000000000..a6d867c574 --- /dev/null +++ b/examples/basic/Dockerfile.base @@ -0,0 +1,4 @@ +FROM cypress/base +COPY . /opt/app +WORKDIR /opt/app +RUN npx cypress install # Install Cypress binary into image diff --git a/examples/basic/Dockerfile.browsers b/examples/basic/Dockerfile.browsers new file mode 100644 index 0000000000..8bd4c604fc --- /dev/null +++ b/examples/basic/Dockerfile.browsers @@ -0,0 +1,4 @@ +FROM cypress/browsers +COPY . /opt/app +WORKDIR /opt/app +RUN npx cypress install # Install Cypress binary into image diff --git a/examples/basic/README.md b/examples/basic/README.md new file mode 100644 index 0000000000..afb95c54bd --- /dev/null +++ b/examples/basic/README.md @@ -0,0 +1,13 @@ +# examples/basic + +This directory contains a simple example of a Cypress E2E test with one test spec `cypress/e2e/spec.cy.js`. + +## Non-Docker demonstration + +Use regular [Cypress CLI commands](https://docs.cypress.io/guides/guides/command-line) to run Cypress, for instance: + +```shell +cd examples/basic +npm ci +npx cypress run --browser chrome +``` diff --git a/examples/basic/cypress.config.js b/examples/basic/cypress.config.js new file mode 100644 index 0000000000..4415f5033f --- /dev/null +++ b/examples/basic/cypress.config.js @@ -0,0 +1,8 @@ +const { defineConfig } = require('cypress') + +module.exports = defineConfig({ + fixturesFolder: false, + e2e: { + supportFile: false, + }, +}) diff --git a/examples/basic/cypress/e2e/spec.cy.js b/examples/basic/cypress/e2e/spec.cy.js new file mode 100644 index 0000000000..a8c9767802 --- /dev/null +++ b/examples/basic/cypress/e2e/spec.cy.js @@ -0,0 +1,6 @@ +describe('test local demo page', () => { + it('heading', () => { + cy.visit('index.html') + cy.contains('h2', 'Test') + }) +}) diff --git a/examples/basic/index.html b/examples/basic/index.html new file mode 100644 index 0000000000..1be162da35 --- /dev/null +++ b/examples/basic/index.html @@ -0,0 +1,14 @@ + + + + + Test for Cypress Docker images + + + +

Purpose

+

This page is used for demonstrating Cypress Docker images.

+

Test heading

+

This is a test page

+ + diff --git a/examples/basic/package-lock.json b/examples/basic/package-lock.json new file mode 100644 index 0000000000..174d9d2919 --- /dev/null +++ b/examples/basic/package-lock.json @@ -0,0 +1,2146 @@ +{ + "name": "example-basic", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "example-basic", + "version": "1.0.0", + "devDependencies": { + "cypress": "^13.15.1" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cypress/request": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.5.tgz", + "integrity": "sha512-v+XHd9XmWbufxF1/bTaVm2yhbxY+TB4YtWRqF2zaXBlDNMkls34KiATz0AVDLavL3iB6bQk9/7n3oY1EoLSWGA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~4.0.0", + "http-signature": "~1.4.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "6.13.0", + "safe-buffer": "^5.1.2", + "tough-cookie": "^4.1.3", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@types/node": { + "version": "22.8.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.1.tgz", + "integrity": "sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "undici-types": "~6.19.8" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/sizzle": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.9.tgz", + "integrity": "sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/cachedir": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cypress": { + "version": "13.15.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.15.1.tgz", + "integrity": "sha512-DwUFiKXo4lef9kA0M4iEhixFqoqp2hw8igr0lTqafRb9qtU3X0XGxKbkSYsUFdkrAkphc7MPDxoNPhk5pj9PVg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@cypress/request": "^3.0.4", + "@cypress/xvfb": "^1.2.4", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.7.1", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^6.2.1", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.4", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.1", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.8", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "process": "^0.11.10", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.5.3", + "supports-color": "^8.1.1", + "tmp": "~0.2.3", + "tree-kill": "1.2.2", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": "^16.0.0 || ^18.0.0 || >=20.0.0" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eventemitter2": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^3.2.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-signature": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", + "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.18.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "license": "ISC" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "node_modules/lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "> 0.8" + } + }, + "node_modules/listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true, + "license": "MIT" + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true, + "license": "MIT" + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "dev": true, + "license": "MIT" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true, + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "throttleit": "^1.0.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/throttleit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", + "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/tslib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} diff --git a/examples/basic/package.json b/examples/basic/package.json new file mode 100644 index 0000000000..7ecc6b2974 --- /dev/null +++ b/examples/basic/package.json @@ -0,0 +1,12 @@ +{ + "name": "example-basic", + "version": "1.0.0", + "description": "Basic E2E Cypress test example", + "scripts": { + "test": "cypress run" + }, + "private": true, + "devDependencies": { + "cypress": "^13.15.1" + } +} diff --git a/examples/chromium/Dockerfile b/examples/chromium/Dockerfile new file mode 100644 index 0000000000..ae354e6219 --- /dev/null +++ b/examples/chromium/Dockerfile @@ -0,0 +1,6 @@ +FROM cypress/base +COPY . /opt/app +WORKDIR /opt/app +RUN apt-get update # Update package index +RUN apt-get install chromium -y # Install Chromium +RUN npx cypress install # Install Cypress binary diff --git a/examples/chromium/README.md b/examples/chromium/README.md new file mode 100644 index 0000000000..22431ffc1d --- /dev/null +++ b/examples/chromium/README.md @@ -0,0 +1,65 @@ +# examples/chromium + +This directory contains a simple example of a Cypress E2E test with one test spec `cypress/e2e/spec.cy.js` running using the Chromium browser. + +## Non-Docker demonstration + +Install Chromium on your host system. + +Use regular [Cypress CLI commands](https://docs.cypress.io/guides/guides/command-line) to run Cypress with Chromium: + +```shell +cd examples/chromium +npm ci +npx cypress run --browser chromium +npx cypress open --e2e --browser chromium +``` + +## Docker + +In the Docker examples below, the Chromium browser is installed from [Debian](https://www.debian.org/distrib/packages) distribution sources. See the [Chromium package](https://packages.debian.org/search?keywords=chromium) (`bookworm (stable)` section) for `amd64` and `arm64` versions respectively. + +### Docker interactive + +In this example we first run the unchanged image `cypress/base` as a container: + +```shell +cd examples/chromium # Use a pre-configured simple Cypress E2E project +npm ci # Install Cypress +docker run -it --rm -v .:/app -w /app cypress/base # Run image as container +``` + +At the `bash` prompt `:/app#`, we can then enter the following commands: + +```shell +apt-get update # Update package index +apt-get install chromium -y # Install Chromium +unset CI # Allows to see installation progress +npx cypress install # Install Cypress binary into running Docker container +npx cypress run --browser chromium # Run Cypress test +exit +``` + +### Docker build and run + +In this example we use a customized `Dockerfile` which bases a new image on `cypress/base`, copies the complete Cypress project into the image, including installed dependencies, then installs Chromium and the Cypress binary into the image. + +The file is [examples/chromium/Dockerfile](./Dockerfile) and it has the following contents: + +```dockerfile +FROM cypress/base +COPY . /opt/app +WORKDIR /opt/app +RUN apt-get update # Update package index +RUN apt-get install chromium -y # Install Chromium +RUN npx cypress install # Install Cypress binary +``` + +We build the new image, run the container from the image and execute the Cypress command `npx cypress run --browser chromium` to run the test using Chromium: + +```shell +cd examples/chromium # Use a pre-configured simple Cypress E2E project +npm ci # Install all dependencies +docker build . -t test-chromium # Build a new image +docker run -it --rm --entrypoint bash test-chromium -c "npx cypress run --browser chromium" # Run Cypress test using Chromium +``` diff --git a/examples/chromium/cypress.config.js b/examples/chromium/cypress.config.js new file mode 100644 index 0000000000..4415f5033f --- /dev/null +++ b/examples/chromium/cypress.config.js @@ -0,0 +1,8 @@ +const { defineConfig } = require('cypress') + +module.exports = defineConfig({ + fixturesFolder: false, + e2e: { + supportFile: false, + }, +}) diff --git a/examples/chromium/cypress/e2e/spec.cy.js b/examples/chromium/cypress/e2e/spec.cy.js new file mode 100644 index 0000000000..a8c9767802 --- /dev/null +++ b/examples/chromium/cypress/e2e/spec.cy.js @@ -0,0 +1,6 @@ +describe('test local demo page', () => { + it('heading', () => { + cy.visit('index.html') + cy.contains('h2', 'Test') + }) +}) diff --git a/examples/chromium/index.html b/examples/chromium/index.html new file mode 100644 index 0000000000..1be162da35 --- /dev/null +++ b/examples/chromium/index.html @@ -0,0 +1,14 @@ + + + + + Test for Cypress Docker images + + + +

Purpose

+

This page is used for demonstrating Cypress Docker images.

+

Test heading

+

This is a test page

+ + diff --git a/examples/chromium/package-lock.json b/examples/chromium/package-lock.json new file mode 100644 index 0000000000..cd87faea63 --- /dev/null +++ b/examples/chromium/package-lock.json @@ -0,0 +1,2146 @@ +{ + "name": "example-chromium", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "example-chromium", + "version": "1.0.0", + "devDependencies": { + "cypress": "^13.15.1" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cypress/request": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.5.tgz", + "integrity": "sha512-v+XHd9XmWbufxF1/bTaVm2yhbxY+TB4YtWRqF2zaXBlDNMkls34KiATz0AVDLavL3iB6bQk9/7n3oY1EoLSWGA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~4.0.0", + "http-signature": "~1.4.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "6.13.0", + "safe-buffer": "^5.1.2", + "tough-cookie": "^4.1.3", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@types/node": { + "version": "22.8.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.1.tgz", + "integrity": "sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "undici-types": "~6.19.8" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/sizzle": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.9.tgz", + "integrity": "sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/cachedir": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cypress": { + "version": "13.15.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.15.1.tgz", + "integrity": "sha512-DwUFiKXo4lef9kA0M4iEhixFqoqp2hw8igr0lTqafRb9qtU3X0XGxKbkSYsUFdkrAkphc7MPDxoNPhk5pj9PVg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@cypress/request": "^3.0.4", + "@cypress/xvfb": "^1.2.4", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.7.1", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^6.2.1", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.4", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.1", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.8", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "process": "^0.11.10", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.5.3", + "supports-color": "^8.1.1", + "tmp": "~0.2.3", + "tree-kill": "1.2.2", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": "^16.0.0 || ^18.0.0 || >=20.0.0" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eventemitter2": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^3.2.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-signature": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", + "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.18.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "license": "ISC" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "node_modules/lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "> 0.8" + } + }, + "node_modules/listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true, + "license": "MIT" + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true, + "license": "MIT" + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "dev": true, + "license": "MIT" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true, + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "throttleit": "^1.0.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/throttleit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", + "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/tslib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} diff --git a/examples/chromium/package.json b/examples/chromium/package.json new file mode 100644 index 0000000000..1be1cdad03 --- /dev/null +++ b/examples/chromium/package.json @@ -0,0 +1,14 @@ +{ + "name": "example-chromium", + "version": "1.0.0", + "description": "Basic E2E Cypress test example", + "scripts": { + "test": "cypress run", + "e2e": "cypress run", + "e2e:chromium": "cypress run --browser chromium" + }, + "private": true, + "devDependencies": { + "cypress": "^13.15.1" + } +} diff --git a/examples/firefox-esr/Dockerfile b/examples/firefox-esr/Dockerfile new file mode 100644 index 0000000000..067ecd5f56 --- /dev/null +++ b/examples/firefox-esr/Dockerfile @@ -0,0 +1,6 @@ +FROM cypress/base +COPY . /opt/app +WORKDIR /opt/app +RUN apt-get update # Update package index +RUN apt-get install firefox-esr -y # Install Firefox ESR +RUN npx cypress install # Install Cypress binary diff --git a/examples/firefox-esr/README.md b/examples/firefox-esr/README.md new file mode 100644 index 0000000000..b7b4432b57 --- /dev/null +++ b/examples/firefox-esr/README.md @@ -0,0 +1,67 @@ +# examples/firefox-esr + +This directory contains a simple example of a Cypress E2E test with one test spec `cypress/e2e/spec.cy.js` running using the [Mozilla Firefox](https://www.mozilla.org/firefox) browser from the ESR (Extended Support Release) channel. + +[Choosing a Firefox update channel](https://support.mozilla.org/en-US/kb/choosing-firefox-update-channel) explains the Firefox "Extended Support Release (ESR)". + +## Non-Docker demonstration + +Install Firefox ESR on your host system. + +Use regular [Cypress CLI commands](https://docs.cypress.io/guides/guides/command-line) to run Cypress with Firefox (ESR): + +```shell +cd examples/firefox-esr +npm ci +npx cypress run --browser firefox +npx cypress open --e2e --browser firefox +``` + +## Docker + +In the Docker examples below, the Firefox ESR browser is installed from [Debian](https://www.debian.org/distrib/packages) distribution sources. See the [firefox-esr package](https://packages.debian.org/search?keywords=firefox-esr) (`bookworm (stable)` section) covering `amd64 arm64 armhf i386 mips64el ppc64el s390x` processor architectures. + +### Docker interactive + +In this example we first run the unchanged image `cypress/base` as a container: + +```shell +cd examples/firefox-esr # Use a pre-configured simple Cypress E2E project +npm ci # Install Cypress +docker run -it --rm -v .:/app -w /app cypress/base # Run image as container +``` + +At the `bash` prompt `:/app#`, we can then enter the following commands: + +```shell +apt-get update # Update package index +apt-get install firefox-esr -y # Install Firefox ESR +unset CI # Allows to see installation progress +npx cypress install # Install Cypress binary into running Docker container +npx cypress run --browser firefox # Run Cypress test +exit +``` + +### Docker build and run + +In this example we use a customized `Dockerfile` which bases a new image on `cypress/base`, copies the complete Cypress project into the image, including installed dependencies, then installs Firefox ESR and the Cypress binary into the image. + +The file is [examples/firefox-esr/Dockerfile](./Dockerfile) and it has the following contents: + +```dockerfile +FROM cypress/base +COPY . /opt/app +WORKDIR /opt/app +RUN apt-get update # Update package index +RUN apt-get install firefox-esr -y # Install Firefox ESR +RUN npx cypress install # Install Cypress binary +``` + +We build the new image, run the container from the image and execute the Cypress command `npx cypress run --browser firefox` to run the test using Firefox ESR: + +```shell +cd examples/firefox-esr # Use a pre-configured simple Cypress E2E project +npm ci # Install all dependencies +docker build . -t test-firefox-esr # Build a new image +docker run -it --rm --entrypoint bash test-firefox-esr -c "npx cypress run --browser firefox" # Run Cypress test using Firefox ESR +``` diff --git a/examples/firefox-esr/cypress.config.js b/examples/firefox-esr/cypress.config.js new file mode 100644 index 0000000000..4415f5033f --- /dev/null +++ b/examples/firefox-esr/cypress.config.js @@ -0,0 +1,8 @@ +const { defineConfig } = require('cypress') + +module.exports = defineConfig({ + fixturesFolder: false, + e2e: { + supportFile: false, + }, +}) diff --git a/examples/firefox-esr/cypress/e2e/spec.cy.js b/examples/firefox-esr/cypress/e2e/spec.cy.js new file mode 100644 index 0000000000..a8c9767802 --- /dev/null +++ b/examples/firefox-esr/cypress/e2e/spec.cy.js @@ -0,0 +1,6 @@ +describe('test local demo page', () => { + it('heading', () => { + cy.visit('index.html') + cy.contains('h2', 'Test') + }) +}) diff --git a/examples/firefox-esr/index.html b/examples/firefox-esr/index.html new file mode 100644 index 0000000000..1be162da35 --- /dev/null +++ b/examples/firefox-esr/index.html @@ -0,0 +1,14 @@ + + + + + Test for Cypress Docker images + + + +

Purpose

+

This page is used for demonstrating Cypress Docker images.

+

Test heading

+

This is a test page

+ + diff --git a/examples/firefox-esr/package-lock.json b/examples/firefox-esr/package-lock.json new file mode 100644 index 0000000000..eb9c2bd866 --- /dev/null +++ b/examples/firefox-esr/package-lock.json @@ -0,0 +1,2146 @@ +{ + "name": "example-firefox-esr", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "example-firefox-esr", + "version": "1.0.0", + "devDependencies": { + "cypress": "^13.15.1" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cypress/request": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.5.tgz", + "integrity": "sha512-v+XHd9XmWbufxF1/bTaVm2yhbxY+TB4YtWRqF2zaXBlDNMkls34KiATz0AVDLavL3iB6bQk9/7n3oY1EoLSWGA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~4.0.0", + "http-signature": "~1.4.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "6.13.0", + "safe-buffer": "^5.1.2", + "tough-cookie": "^4.1.3", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@types/node": { + "version": "22.8.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.1.tgz", + "integrity": "sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "undici-types": "~6.19.8" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/sizzle": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.9.tgz", + "integrity": "sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/cachedir": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cypress": { + "version": "13.15.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.15.1.tgz", + "integrity": "sha512-DwUFiKXo4lef9kA0M4iEhixFqoqp2hw8igr0lTqafRb9qtU3X0XGxKbkSYsUFdkrAkphc7MPDxoNPhk5pj9PVg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@cypress/request": "^3.0.4", + "@cypress/xvfb": "^1.2.4", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.7.1", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^6.2.1", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.4", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.1", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.8", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "process": "^0.11.10", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.5.3", + "supports-color": "^8.1.1", + "tmp": "~0.2.3", + "tree-kill": "1.2.2", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": "^16.0.0 || ^18.0.0 || >=20.0.0" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eventemitter2": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^3.2.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-signature": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", + "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.18.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "license": "ISC" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "node_modules/lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "> 0.8" + } + }, + "node_modules/listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true, + "license": "MIT" + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true, + "license": "MIT" + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "dev": true, + "license": "MIT" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true, + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "throttleit": "^1.0.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/throttleit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", + "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/tslib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} diff --git a/examples/firefox-esr/package.json b/examples/firefox-esr/package.json new file mode 100644 index 0000000000..8f52b7b77c --- /dev/null +++ b/examples/firefox-esr/package.json @@ -0,0 +1,14 @@ +{ + "name": "example-firefox-esr", + "version": "1.0.0", + "description": "Basic E2E Cypress test example", + "scripts": { + "test": "cypress run", + "e2e": "cypress run", + "e2e:firefox": "cypress run --browser firefox" + }, + "private": true, + "devDependencies": { + "cypress": "^13.15.1" + } +} diff --git a/examples/included-as-non-root-alternative/Dockerfile b/examples/included-as-non-root-alternative/Dockerfile deleted file mode 100644 index dba3e0ace6..0000000000 --- a/examples/included-as-non-root-alternative/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -# image has Cypress npm module installed globally in /root/.npm/node_modules -# and Cypress binary cached in /root/.cache/Cypress folder -FROM cypress/included:3.8.0 - -# "root" -RUN whoami -# uid=0(root) gid=0(root) groups=0(root) -# meaning root -RUN id - -# give every user read access to the "/root" folder where the binary is cached -# we really only need to worry about the top folder, fortunately -RUN ls -la /root -RUN chmod 755 /root -# point Cypress at the /root/cache no matter what user account is used -# see https://on.cypress.io/caching -ENV CYPRESS_CACHE_FOLDER=/root/.cache/Cypress - -# switch to non-root user "node" that comes from Docker Node image -USER node -# show user effective id and group - it should be non-zero -# meaning the current user "node" is not root -RUN id -# user "node" should be able to access the Cypress test runner now -RUN ls -la /root/.cache/Cypress/*/Cypress -RUN cat /root/.cache/Cypress/*/Cypress/binary_state.json diff --git a/examples/included-as-non-root-alternative/README.md b/examples/included-as-non-root-alternative/README.md deleted file mode 100644 index b98aaa8822..0000000000 --- a/examples/included-as-non-root-alternative/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Running cypress/included image as non-root (alternative) - -In this example, we build a new Docker image on top of `cypress/included` image, but we give all users read access to the folder `/root` where Cypress NPM package and Cypress binary are installed, see [Dockerfile](Dockerfile) - -As a second step, we set the environment variable `CYPRESS_CACHE_FOLDER=/root/.cache/Cypress` to ensure that every user can find the cached binary and use it to run tests. - -You can build the `cypress/example` image and run current tests as built-in second user `node` (comes from Node base image) with: - -```shell -$ ./build.sh -$ ./test.sh -``` diff --git a/examples/included-as-non-root-alternative/build.sh b/examples/included-as-non-root-alternative/build.sh deleted file mode 100755 index 6b4e1b6fbb..0000000000 --- a/examples/included-as-non-root-alternative/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/example - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/examples/included-as-non-root-alternative/src/cypress.json b/examples/included-as-non-root-alternative/src/cypress.json deleted file mode 100644 index e81c35571a..0000000000 --- a/examples/included-as-non-root-alternative/src/cypress.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "fixturesFolder": false, - "pluginsFile": false, - "supportFile": false -} diff --git a/examples/included-as-non-root-alternative/src/cypress/integration/spec.js b/examples/included-as-non-root-alternative/src/cypress/integration/spec.js deleted file mode 100644 index 4c664a5612..0000000000 --- a/examples/included-as-non-root-alternative/src/cypress/integration/spec.js +++ /dev/null @@ -1,9 +0,0 @@ -describe('page', () => { - beforeEach(() => { - cy.visit('index.html') - }) - - it('has h2', () => { - cy.contains('h2', 'test') - }) -}) diff --git a/examples/included-as-non-root-alternative/src/index.html b/examples/included-as-non-root-alternative/src/index.html deleted file mode 100644 index 095e4ac23d..0000000000 --- a/examples/included-as-non-root-alternative/src/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -

A test

-

This is a test page

- diff --git a/examples/included-as-non-root-alternative/test.sh b/examples/included-as-non-root-alternative/test.sh deleted file mode 100755 index dce9c4b5c1..0000000000 --- a/examples/included-as-non-root-alternative/test.sh +++ /dev/null @@ -1,15 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/example - -echo "Running tests against $LOCAL_NAME" -echo "Running as a non-root user 'node'" - -# print the docker command before running -set -x -# if you want to see diagnostic messages add argument -e DEBUG=cypress:cli -docker run -it -v $PWD/src:/test -w /test -u node $LOCAL_NAME - -# for exploration -# docker run -it -v $PWD/src:/test -w /test -u node \ - # --entrypoint /bin/bash $LOCAL_NAME diff --git a/examples/included-as-non-root-mapped/Dockerfile b/examples/included-as-non-root-mapped/Dockerfile deleted file mode 100644 index 2448f89853..0000000000 --- a/examples/included-as-non-root-mapped/Dockerfile +++ /dev/null @@ -1,31 +0,0 @@ -FROM cypress/included:5.6.0 - -# "root" -RUN whoami -# uid=0(root) gid=0(root) groups=0(root) -# meaning root -RUN id - -# there is a built-in user "node" that comes from the very base Docker Node image -# we are going to recreate this user and give it _same id_ as external user -# that is going to run this container. -ARG USER_ID=501 -ARG GROUP_ID=999 - -# if you want to see all existing groups uncomment the next command -# RUN cat /etc/group - -RUN groupadd -g ${GROUP_ID} appuser -# do not log creating new user, otherwise there could be a lot of messages -RUN useradd -r --no-log-init -u ${USER_ID} -g appuser appuser -RUN install -d -m 0755 -o appuser -g appuser /home/appuser - -# move test runner binary folder to the non-root's user home directory -RUN mv /root/.cache /home/appuser/.cache -# make sure cypress looks in the right place -ENV CYPRESS_CACHE_FOLDER=/home/appuser/.cache/Cypress - -USER appuser -# show user effective id and group - it should be non-zero -# meaning the current user is not root -RUN id diff --git a/examples/included-as-non-root-mapped/README.md b/examples/included-as-non-root-mapped/README.md deleted file mode 100644 index 958f980919..0000000000 --- a/examples/included-as-non-root-mapped/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# Running cypress/included image as non-root mapped - -If we don't want to run `cypress/included` image as built-in default `root` user, we can use `node` user that already exists in the image thanks to the very base `node` image. But, if that user creates any files on the _host_ machine, then these files are owned by the `node` user id and group that might NOT even be present on the host machine. - -We want to run inside the Docker container as the non-root user from the host machine with the same id and group id. Then when the container exits, any new files are "magically" owned by the host machine's user. - -Read [Running Docker Containers as Current Host User](https://jtreminio.com/blog/running-docker-containers-as-current-host-user/) for general approach. In general we are going to: - -- find out the user id and group on the host machine -- build a custom Docker image from `cypress/included` image -- in the custom image we will create a new user with matching user and group id (if possible) -- run tests as the new user which matches the user on the host machine - -Any files generated by the new user during Cypress run will be owned the non-root user on the host machine. - -## Steps - -See [Dockerfile](Dockerfile) that you can build using [build.sh](build.sh). You can pass your own user and group ids via arguments, I will use default value 501 for the user id, which is my id on current Mac. - -```shell -$ ./build.sh -... -id -uid=501(appuser) gid=999(appuser) groups=999(appuser) -``` - -So the `appuser` inside the container has same user ID as my host user. - -Let's demonstrate the permissions are set correctly. I will start the shell inside the container. - -```shell -$ docker run -it -v $PWD/src:/test -w /test -u appuser --entrypoint /bin/sh cypress/example -$ ls -la -total 12 -drwxr-xr-x 5 appuser appuser 160 Dec 18 20:26 . -drwxr-xr-x 1 root root 4096 Dec 18 20:33 .. -drwxr-xr-x 4 appuser appuser 128 Dec 18 20:09 cypress --rw-r--r-- 1 appuser appuser 78 Dec 18 20:09 cypress.json --rw-r--r-- 1 appuser appuser 58 Dec 18 20:09 index.html -``` - -Great, all files inside the container are mapped from the host machine - and yet they have the right user and group, since the numbers match the host user id. Here is for example the same folder on the host machine: - -```shell -$ ls -la src -total 16 -drwxr-xr-x 5 gleb staff 160 Dec 18 15:26 . -drwxr-xr-x 7 gleb staff 224 Dec 18 15:09 .. -drwxr-xr-x 4 gleb staff 128 Dec 18 15:09 cypress --rw-r--r-- 1 gleb staff 78 Dec 18 15:09 cypress.json --rw-r--r-- 1 gleb staff 58 Dec 18 15:09 index.html -``` - -We can run Cypress using [test.sh](test.sh) to confirm the tests pass. - -```shell -$ ./test.sh -Running tests against cypress/example -Running as a non-root user 'appuser' mapped to host user -++ docker run -it -v ...included-as-non-root-mapped/src:/test -w /test -u appuser cypress/example -``` - -The generated video of the test run is owned by the user on the host machine - -```shell -$ ls -la src/cypress/videos/ -total 64 -drwxr-xr-x 3 gleb staff 96 Dec 18 15:35 . -drwxr-xr-x 4 gleb staff 128 Dec 18 15:09 .. --rw-r--r-- 1 gleb staff 32299 Dec 18 15:35 spec.js.mp4 -``` diff --git a/examples/included-as-non-root-mapped/build.sh b/examples/included-as-non-root-mapped/build.sh deleted file mode 100755 index 6b4e1b6fbb..0000000000 --- a/examples/included-as-non-root-mapped/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/example - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/examples/included-as-non-root-mapped/src/cypress.json b/examples/included-as-non-root-mapped/src/cypress.json deleted file mode 100644 index e81c35571a..0000000000 --- a/examples/included-as-non-root-mapped/src/cypress.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "fixturesFolder": false, - "pluginsFile": false, - "supportFile": false -} diff --git a/examples/included-as-non-root-mapped/src/cypress/integration/spec.js b/examples/included-as-non-root-mapped/src/cypress/integration/spec.js deleted file mode 100644 index 4c664a5612..0000000000 --- a/examples/included-as-non-root-mapped/src/cypress/integration/spec.js +++ /dev/null @@ -1,9 +0,0 @@ -describe('page', () => { - beforeEach(() => { - cy.visit('index.html') - }) - - it('has h2', () => { - cy.contains('h2', 'test') - }) -}) diff --git a/examples/included-as-non-root-mapped/src/index.html b/examples/included-as-non-root-mapped/src/index.html deleted file mode 100644 index 095e4ac23d..0000000000 --- a/examples/included-as-non-root-mapped/src/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -

A test

-

This is a test page

- diff --git a/examples/included-as-non-root-mapped/test.sh b/examples/included-as-non-root-mapped/test.sh deleted file mode 100755 index 02afdd85cc..0000000000 --- a/examples/included-as-non-root-mapped/test.sh +++ /dev/null @@ -1,9 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/example - -echo "Running tests against $LOCAL_NAME" -echo "Running as a non-root user 'appuser' mapped to host user" -# print the docker command before running -set -x -docker run -it -v $PWD/src:/test -w /test -u appuser $LOCAL_NAME diff --git a/examples/included-as-non-root/Dockerfile b/examples/included-as-non-root/Dockerfile deleted file mode 100644 index 974e3a01ef..0000000000 --- a/examples/included-as-non-root/Dockerfile +++ /dev/null @@ -1,16 +0,0 @@ -FROM cypress/included:3.8.0 - -# "root" -RUN whoami -# uid=0(root) gid=0(root) groups=0(root) -# meaning root -RUN id - -# there is a built-in user "node" that comes from the very base Docker Node image -# move test runner binary folder to the non-root's user home directory -RUN mv /root/.cache /home/node/.cache - -USER node -# show user effective id and group - it should be non-zero -# meaning the current user "node" is not root -RUN id diff --git a/examples/included-as-non-root/README.md b/examples/included-as-non-root/README.md index 167a6a24e5..bd9b1c0e69 100644 --- a/examples/included-as-non-root/README.md +++ b/examples/included-as-non-root/README.md @@ -1,84 +1,35 @@ # Running cypress/included image as non-root -## Running as root +## Displaying user information -Whenever you run tests using `cypress/included:...` image, it runs as `root` user +Cypress Docker images `cypress/included` run by default as `root` user. You can check this with the Unix command `whoami`: -```shell -$ docker run -it -v $PWD/src:/test -w /test --entrypoint whoami cypress/included:3.8.0 +```text +$ docker run -it --rm --entrypoint whoami cypress/included root -$ docker run -it -v $PWD/src:/test -w /test cypress/included:3.8.0 -... -``` - -## Root vs non-root user - -You can determine if you are a root user inside a container using Node and printing - -```js -process.geteuid() -// 0 - root user -// non zero - non-root user -``` - -As a single line - -```shell -$ node -p 'process.geteuid()' ``` -From shell, you can print user id via `id` command +The Unix command `id` provides some more information about the user: -```shell -$ id +```text +$ docker run -it --rm --entrypoint id cypress/included uid=0(root) gid=0(root) groups=0(root) ``` ## Run as non-root -If you try to run `cypress/included` image as another user, for example `node` you hit problems - -```shell -$ docker run -it -v $PWD/src:/test -w /test -u node cypress/included:3.8.0 -The cypress npm package is installed, but the Cypress binary is missing. +The non-root `node` user is available in `cypress/included` Cypress Docker images. You can pass the user `node` as an option when running a Cypress Docker image as a container and this then replaces the default `root` user: -We expected the binary to be installed here: /home/node/.cache/Cypress/3.8.0/Cypress/Cypress -``` - -You can see the user id when running as `-u node` by opening shell - -```shell -$ docker run -it -v $PWD/src:/test -w /test -u node --entrypoint /bin/sh cypress/included:3.8.0 -$ id +```text +$ docker run -it --rm --entrypoint id -u node cypress/included uid=1000(node) gid=1000(node) groups=1000(node) ``` -### Solution - -You need to build your own Docker image on top of the desired `cypress/included:...` image where you change the user. Before changing from `root` to `node` you need to move the cache folder though - to give `node` user access to it. See [Dockerfile](Dockerfile) in the current folder. - -```Dockerfile -FROM cypress/included:3.8.0 - -# "root" -RUN whoami - -# there is a built-in user "node" that comes from the very base Docker Node image -# move test runner binary folder to the non-root's user home directory -RUN mv /root/.cache /home/node/.cache - -USER node -# show user effective id and group - it should be non-zero -# meaning the current user "node" is not root -RUN id -``` - -You can build the above image using [build.sh](build.sh), which names it `cypress/example`. Now run the tests as non-root user `node` - it should work. +To run the example Cypress project in the [src](./src/) subdirectory with `node` as user, change directory to `examples/included-as-non-root` and execute the following `docker run` command: ```shell -$ docker run -it -v $PWD/src:/test -w /test -u node cypress/example -Running tests against cypress/example -... +cd examples/included-as-non-root +docker run -it --rm -v ./src:/test -w /test -u node cypress/included ``` -Good read [Use non-root user inside Docker container](https://glebbahmutov.com/blog/docker-user/) and [Processes In Containers Should Not Run As Root](https://medium.com/@mccode/processes-in-containers-should-not-run-as-root-2feae3f0df3b) +You can expect this command to run successfully. diff --git a/examples/included-as-non-root/build.sh b/examples/included-as-non-root/build.sh deleted file mode 100755 index 6b4e1b6fbb..0000000000 --- a/examples/included-as-non-root/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/example - -echo "Building $LOCAL_NAME" -docker build -t $LOCAL_NAME . diff --git a/examples/included-as-non-root/src/cypress.config.js b/examples/included-as-non-root/src/cypress.config.js new file mode 100644 index 0000000000..4415f5033f --- /dev/null +++ b/examples/included-as-non-root/src/cypress.config.js @@ -0,0 +1,8 @@ +const { defineConfig } = require('cypress') + +module.exports = defineConfig({ + fixturesFolder: false, + e2e: { + supportFile: false, + }, +}) diff --git a/examples/included-as-non-root/src/cypress.json b/examples/included-as-non-root/src/cypress.json deleted file mode 100644 index e81c35571a..0000000000 --- a/examples/included-as-non-root/src/cypress.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "fixturesFolder": false, - "pluginsFile": false, - "supportFile": false -} diff --git a/examples/included-as-non-root/src/cypress/e2e/spec.cy.js b/examples/included-as-non-root/src/cypress/e2e/spec.cy.js new file mode 100644 index 0000000000..a8c9767802 --- /dev/null +++ b/examples/included-as-non-root/src/cypress/e2e/spec.cy.js @@ -0,0 +1,6 @@ +describe('test local demo page', () => { + it('heading', () => { + cy.visit('index.html') + cy.contains('h2', 'Test') + }) +}) diff --git a/examples/included-as-non-root/src/cypress/integration/spec.js b/examples/included-as-non-root/src/cypress/integration/spec.js deleted file mode 100644 index 4c664a5612..0000000000 --- a/examples/included-as-non-root/src/cypress/integration/spec.js +++ /dev/null @@ -1,9 +0,0 @@ -describe('page', () => { - beforeEach(() => { - cy.visit('index.html') - }) - - it('has h2', () => { - cy.contains('h2', 'test') - }) -}) diff --git a/examples/included-as-non-root/src/index.html b/examples/included-as-non-root/src/index.html index 095e4ac23d..1be162da35 100644 --- a/examples/included-as-non-root/src/index.html +++ b/examples/included-as-non-root/src/index.html @@ -1,4 +1,14 @@ - -

A test

-

This is a test page

- + + + + + Test for Cypress Docker images + + + +

Purpose

+

This page is used for demonstrating Cypress Docker images.

+

Test heading

+

This is a test page

+ + diff --git a/examples/included-as-non-root/test.sh b/examples/included-as-non-root/test.sh deleted file mode 100755 index 6fc1e1f26b..0000000000 --- a/examples/included-as-non-root/test.sh +++ /dev/null @@ -1,9 +0,0 @@ -set e+x - -LOCAL_NAME=cypress/example - -echo "Running tests against $LOCAL_NAME" -echo "Running as a non-root user 'node'" -# print the docker command before running -set -x -docker run -it -v $PWD/src:/test -w /test -u node $LOCAL_NAME diff --git a/examples/included-with-plugins/README.md b/examples/included-with-plugins/README.md deleted file mode 100644 index 3b774bda21..0000000000 --- a/examples/included-with-plugins/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Running cypress/included image with additional plugins - -You can run Cypress installed globally in `cypress/included:...` image and use locally installed plugins. You just need to install the plugins first. For example, in `src` folder we have End-to-end tests and [package.json](src/package.json) that lists [@cypress/skip-test](https://github.com/cypress-io/cypress-skip-test) and [cypress-failed-log](https://github.com/bahmutov/cypress-failed-log) development dependencies. - -First, install dependencies using NPM - -```shell -cd src -npm install -``` - -The local dependencies will be added to `node_modules` folder. - -Second, change back from `src` folder to the example folder and run tests - -```shell -cd .. -pwd -docker run -it -v $PWD/src:/test -w /test cypress/included:3.8.0 -... -``` - -The tests should be able to load locally installed plugins from [cypress/plugins/index.js](src/cypress/plugins/index.js) and [cypress/support/index.js](src/cypress/support/index.js) files. - -**Tip:** if you need to install Cypress plugins locally, you might as well [install Cypress locally](https://on.cypress.io/installing-cypress). Just make sure to [cache it on CI](https://on.cypress.io/caching). diff --git a/examples/included-with-plugins/src/.gitignore b/examples/included-with-plugins/src/.gitignore deleted file mode 100644 index 3c3629e647..0000000000 --- a/examples/included-with-plugins/src/.gitignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/examples/included-with-plugins/src/cypress.json b/examples/included-with-plugins/src/cypress.json deleted file mode 100644 index 4ec54f3756..0000000000 --- a/examples/included-with-plugins/src/cypress.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "fixturesFolder": false -} diff --git a/examples/included-with-plugins/src/cypress/integration/spec.js b/examples/included-with-plugins/src/cypress/integration/spec.js deleted file mode 100644 index 9027ec9748..0000000000 --- a/examples/included-with-plugins/src/cypress/integration/spec.js +++ /dev/null @@ -1,19 +0,0 @@ -import { onlyOn, skipOn } from '@cypress/skip-test' - -onlyOn('linux', () => { - describe('linux tests', () => { - it('has h2', () => { - cy.visit('index.html') - cy.contains('h2', 'test') - }) - }) -}) - -skipOn('linux', () => { - describe('Tests on Mac or Windows', () => { - it('has h2', () => { - cy.visit('index.html') - cy.contains('h2', 'test') - }) - }) -}) diff --git a/examples/included-with-plugins/src/cypress/plugins/index.js b/examples/included-with-plugins/src/cypress/plugins/index.js deleted file mode 100644 index 3169433154..0000000000 --- a/examples/included-with-plugins/src/cypress/plugins/index.js +++ /dev/null @@ -1,6 +0,0 @@ -console.log('in plugins file') -module.exports = (on, config) => { - on('task', { - failed: require('cypress-failed-log/src/failed')(), - }) -} diff --git a/examples/included-with-plugins/src/cypress/support/index.js b/examples/included-with-plugins/src/cypress/support/index.js deleted file mode 100644 index 2453db4e23..0000000000 --- a/examples/included-with-plugins/src/cypress/support/index.js +++ /dev/null @@ -1 +0,0 @@ -require('cypress-failed-log') diff --git a/examples/included-with-plugins/src/index.html b/examples/included-with-plugins/src/index.html deleted file mode 100644 index 095e4ac23d..0000000000 --- a/examples/included-with-plugins/src/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -

A test

-

This is a test page

- diff --git a/examples/included-with-plugins/src/package-lock.json b/examples/included-with-plugins/src/package-lock.json deleted file mode 100644 index 104856fac4..0000000000 --- a/examples/included-with-plugins/src/package-lock.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "name": "src", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@cypress/skip-test": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@cypress/skip-test/-/skip-test-2.3.0.tgz", - "integrity": "sha512-NdcO6yCnGcmchCyhKVESmH4rJ1Q1QWUfDN8WtIq7Rp/xgK1gRE3TeyNAqoNrpjVrtxD/xjvxuiMeBfs0i67UDQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "cypress-failed-log": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/cypress-failed-log/-/cypress-failed-log-2.5.1.tgz", - "integrity": "sha512-SmTMVoV247Ovu4xinhhyfPTc6+JM9YrR0nVW4VKkNHtGSmeW0mzyqfUwiygnR1rS91N0sFYk5HSYMm8hzb+EZw==", - "dev": true, - "requires": { - "debug": "4.1.1", - "logdown": "3.2.8" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "logdown": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/logdown/-/logdown-3.2.8.tgz", - "integrity": "sha512-ia/AslkwnxwWzaReeADifBwfh2xtUd/T/qdsnkrPlQbefKt4LkUWGSn/xWuhEwY3p2zSIhAZYcWCEGGIy9Lr2w==", - "dev": true, - "requires": { - "chalk": "^2.3.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } -} diff --git a/examples/included-with-plugins/src/package.json b/examples/included-with-plugins/src/package.json deleted file mode 100644 index 076169c30b..0000000000 --- a/examples/included-with-plugins/src/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "src", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "keywords": [], - "author": "", - "license": "ISC", - "devDependencies": { - "@cypress/skip-test": "2.3.0", - "cypress-failed-log": "2.5.1" - } -} diff --git a/examples/included-with-plugins/test.sh b/examples/included-with-plugins/test.sh deleted file mode 100755 index 1b9989f3f6..0000000000 --- a/examples/included-with-plugins/test.sh +++ /dev/null @@ -1,9 +0,0 @@ -set e+x - -echo "Running tests with additional locally installed Cypress plugins" -echo "Note that plugins need to be installed first" -echo "cd src; npm install" - -# print the docker command before running -set -x -docker run -it -v $PWD/src:/test -w /test cypress/included:3.8.0 diff --git a/factory/.env b/factory/.env new file mode 100644 index 0000000000..c366f80d29 --- /dev/null +++ b/factory/.env @@ -0,0 +1,52 @@ +## This env file represents the primary versions Cypress supports. +## These are the latest stable versions and Node.js Active LTS. +## +## If you wish to release Docker image(s) with alternate (i.e. non-primary) versions, do not modify this file in the master branch. +## Follow the instructions in the CONTRIBUTING document for alternate versions and work instead in a feature branch. + +# Use Debian stable release https://www.debian.org/releases/stable/ +# The Debian image cypress/factory is based on +BASE_IMAGE='debian:12.8-slim' + +# Node Versions: https://nodejs.org/en/download/releases/ +# master branch needs "Active LTS" version +# use feature branch for "Maintenance LTS" or "Current" versions +FACTORY_DEFAULT_NODE_VERSION='22.12.0' + +# Node Versions: https://nodejs.org/en/download/releases/ +NODE_VERSION="${FACTORY_DEFAULT_NODE_VERSION}" + +# Update the FACTORY_VERSION to deploy cypress/factory if you make changes to +# BASE_IMAGE, FACTORY_DEFAULT_NODE_VERSION, YARN_VERSION, factory.Dockerfile or installScripts +FACTORY_VERSION='5.1.1' + +# Chrome versions: https://www.ubuntuupdates.org/package/google_chrome/stable/main/base/google-chrome-stable +CHROME_VERSION='131.0.6778.139-1' + +# Cypress versions: https://www.npmjs.com/package/cypress +CYPRESS_VERSION='13.17.0' + +# Edge versions: https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/ +EDGE_VERSION='131.0.2903.99-1' + +# Firefox versions: https://download-installer.cdn.mozilla.net/pub/firefox/releases/ +FIREFOX_VERSION='133.0.3' + +# Yarn versions: https://www.npmjs.com/package/yarn and +# https://classic.yarnpkg.com/latest-version +YARN_VERSION='1.22.22' + +# Webkit versions: https://www.npmjs.com/package/playwright-webkit +# TODO: Globally installed webkit currently isn't found, see issue https://github.com/cypress-io/cypress/issues/25344 +# WEBKIT_VERSION='1.29.0' + +# Tags used for the Docker images generated from cypress/factory. +# A change to BASE_IMAGE_TAG, BROWSERS_IMAGE_TAG or INCLUDED_IMAGE_TAG causes a corresponding new image to be deployed. +# The short-form convenience tags, BROWSERS_IMAGE_SHORT_TAG and INCLUDED_IMAGE_SHORT_TAG, are not used in determining whether to deploy a new image. +BASE_IMAGE_TAG="${NODE_VERSION}" + +BROWSERS_IMAGE_SHORT_TAG="${NODE_VERSION}" +BROWSERS_IMAGE_TAG="node-${NODE_VERSION}-chrome-${CHROME_VERSION}-ff-${FIREFOX_VERSION}-edge-${EDGE_VERSION}" + +INCLUDED_IMAGE_SHORT_TAG="${CYPRESS_VERSION}" +INCLUDED_IMAGE_TAG="cypress-${CYPRESS_VERSION}-${BROWSERS_IMAGE_TAG}" diff --git a/factory/CHANGELOG.md b/factory/CHANGELOG.md new file mode 100644 index 0000000000..a7314c38a5 --- /dev/null +++ b/factory/CHANGELOG.md @@ -0,0 +1,172 @@ +# Change log + +## 5.1.1 + +- Updated default node version from `22.11.0` to `22.12.0`. Addressed in [#1260](https://github.com/cypress-io/cypress-docker-images/pull/1260). + +## 5.1.0 + +- Updated Debian base to `debian:12.8-slim` using [Debian 12.8](https://www.debian.org/News/2024/20241109), released on Nov 9, 2024. Addresses [#1252](https://github.com/cypress-io/cypress-docker-images/issues/1252). + +## 5.0.0 + +- Updated default node version from `20.18.0` (`Iron` - Maintenance LTS) to `22.11.0` (`Jod` - Active LTS) - see [Blog v22.11.0](https://nodejs.org/en/blog/release/v22.11.0). Addresses [#1239](https://github.com/cypress-io/cypress-docker-images/issues/1239). + +## 4.3.0 + +- Add the [Node.js release key](https://github.com/nodejs/node/blob/main/README.md#release-keys) for Antoine du Hamel duhamelantoine1995@gmail.com `C0D6248439F1D5604AAFFB4021D900FFDB233756`. Addresses [#1234](https://github.com/cypress-io/cypress-docker-images/issues/1234). + +## 4.2.2 + +- Updated default node version from `20.17.0` to `20.18.0`. Addresses [#1217](https://github.com/cypress-io/cypress-docker-images/issues/1217) for `cypress/base`, `cypress/browsers` and `cypress/included`. + +## 4.2.1 + +- Rebuilt factory with latest Debian `12.x` fixes. This removes the [CVE-2024-32002](https://nvd.nist.gov/vuln/detail/CVE-2024-32002), [CVE-2024-45490](https://nvd.nist.gov/vuln/detail/CVE-2024-45490), [CVE-2024-45491](https://nvd.nist.gov/vuln/detail/CVE-2024-45491) and [CVE-2024-45492](https://nvd.nist.gov/vuln/detail/CVE-2024-45492) vulnerabilities being reported in security scans. Addresses [#1217](https://github.com/cypress-io/cypress-docker-images/issues/1217) for `cypress/factory`. + +## 4.2.0 + +- Updated Debian base to `debian:12.7-slim` using [Debian 12.7](https://www.debian.org/News/2024/20240831), released on Aug 31, 2024. Addresses [#1207](https://github.com/cypress-io/cypress-docker-images/issues/1207) + +## 4.1.1 + +- Updated default node version from `20.16.0` to `20.17.0`. Addressed in [#1201](https://github.com/cypress-io/cypress-docker-images/pull/1201) + +## 4.1.0 + +- Adds [zstd](https://packages.debian.org/stable/utils/zstd) (fast lossless compression algorithm -- CLI tool) to images. Addresses [#584](https://github.com/cypress-io/cypress-docker-images/issues/584) + +## 4.0.6 + +- Reinstates empty directory structure `/usr/share/man` which was previously removed as part of factory build process. Addresses [#1184](https://github.com/cypress-io/cypress-docker-images/issues/1184) + +## 4.0.5 + +- Updated default node version from `20.15.1` to `20.16.0`. Addressed in [#1182](https://github.com/cypress-io/cypress-docker-images/pull/1182) + +## 4.0.4 + +- Updated default node version from `20.14.0` to `20.15.1`. Addresses [#1153](https://github.com/cypress-io/cypress-docker-images/issues/1153) + +## 4.0.3 + +- Updated Debian base to `debian:12.6-slim` using [Debian 12.6](https://www.debian.org/News/2024/20240629), released June 29th, 2024. Addresses [#1137](https://github.com/cypress-io/cypress-docker-images/issues/1137) + +## 4.0.2 + +- Updated default node version from `20.13.1` to `20.14.0`. Addressed in [#1097](https://github.com/cypress-io/cypress-docker-images/pull/1097) + +## 4.0.1 + +- Removed obsolete environment variable `npm_config_unsafe_perm`, not used or needed in npm `v7` and later. Addressed in [#1078](https://github.com/cypress-io/cypress-docker-images/pull/1078) + +## 4.0.0 + +- Updated Debian base image to `debian:12-slim` (codename `bookworm`). Addressed in [#1057](https://github.com/cypress-io/cypress-docker-images/pull/1057) + +## 3.5.7 + +- Updated Yarn (v1 Classic) version from `1.22.19` to `1.22.22`. Addressed in [#1071](https://github.com/cypress-io/cypress-docker-images/pull/1071) + +## 3.5.6 + +- Updated default node version from `20.13.0` to `20.13.1`. Addressed in [#1059](https://github.com/cypress-io/cypress-docker-images/pull/1059) + +## 3.5.5 + +- Updated default node version from `20.12.2` to `20.13.0`. Addressed in [#1045](https://github.com/cypress-io/cypress-docker-images/pull/1045) + +## 3.5.4 + +- Updated default node version from `20.12.0` to `20.12.2`. Addressed in [#1032](https://github.com/cypress-io/cypress-docker-images/pull/1032) + +## 3.5.3 + +- Updated default node version from `20.11.1` to `20.12.0`. Addressed in [#1029](https://github.com/cypress-io/cypress-docker-images/pull/1029) + +## 3.5.2 + +- Updated default node version from `20.11.0` to `20.11.1`. Addressed in [#1025](https://github.com/cypress-io/cypress-docker-images/pull/1025) + +## 3.5.1 + +- Added `unzip` to factory. Addressed in [#1015](https://github.com/cypress-io/cypress-docker-images/pull/1015) + +## 3.5.0 + +- Updated default node version from `20.10.0` to `20.11.0`. Addressed in [#1012](https://github.com/cypress-io/cypress-docker-images/pull/1012) + +## 3.4.0 + +- Updated default node version from `20.9.0` to `20.10.0`. Addressed in [#999](https://github.com/cypress-io/cypress-docker-images/pull/999) + +## 3.3.0 + +- **Fixed:** Issue with temporary file cleanup due to extra character in temp Debian package file path. Addressed in [#998](https://github.com/cypress-io/cypress-docker-images/pull/998) + +## 3.2.0 + +- Updated default node version from `20.8.1` to `20.9.0`. Addressed in [#987](https://github.com/cypress-io/cypress-docker-images/pull/987) +- Updated default node version from `20.6.1` to `20.8.1`. Addressed in [#951](https://github.com/cypress-io/cypress-docker-images/pull/951) + +## 3.1.0 + +- Updated default node version from `20.5.0` to `20.6.1`. Addressed in [#936](https://github.com/cypress-io/cypress-docker-images/pull/936) + +## 3.0.0 + +- Updated default node version from `18.16.1` to `20.5.0`. Addressed in [#920](https://github.com/cypress-io/cypress-docker-images/pull/920) + +- Added `openssl` and `ca-certificates` to factory. Addressed in [#920](https://github.com/cypress-io/cypress-docker-images/pull/920) + +## 2.4.0 + +- Updated default node version from `18.16.0` to `18.16.1`. Addressed in [#906](https://github.com/cypress-io/cypress-docker-images/pull/906) + +## 2.3.0 + +- Updated default node version from `18.15.0` to `18.16.0`. Addressed in [#881](https://github.com/cypress-io/cypress-docker-images/pull/881) + +## 2.2.0 + +- Install ssh client to enable git cloning via ssh without falling back to CI's native git client. Addressed in [#880](https://github.com/cypress-io/cypress-docker-images/pull/880) + +## 2.1.0 + +- Updated default node version from `18.14.1` to `18.15.0`. Addressed in [#866](https://github.com/cypress-io/cypress-docker-images/pull/866) + +## 2.0.3 + +- Updated browser install scripts to explicitly check for supported platforms instead of subset of unsupported platforms. Addressed in [#875](https://github.com/cypress-io/cypress-docker-images/pull/875) + +## 2.0.2 + +- Git was accidentally removed. Addressed in [#874](https://github.com/cypress-io/cypress-docker-images/pull/874) + +## 2.0.1 + +- Removed the curl dependency to remove critical vulnerability. Addressed in [#855](https://github.com/cypress-io/cypress-docker-images/pull/855) + +## 2.0.0 + +- Updated default node version from `16.18.1` to `18.14.1`. Addressed in [#843](https://github.com/cypress-io/cypress-docker-images/pull/843) + +## 1.0.4 + +- Loosened file permissions to allow non root users to create files in the Cypress cache. Fixed in [#839](https://github.com/cypress-io/cypress-docker-images/pull/839) + +## 1.0.3 + +- Added the curl dependency to the finished image. Addressed in [#834](https://github.com/cypress-io/cypress-docker-images/pull/834) + +## 1.0.2 + +- Fixed issue where the `ps` command was not included in the image. Fixed in [#819](https://github.com/cypress-io/cypress-docker-images/pull/819) + +## 1.0.1 + +- Fixed issue where setting the `NODE_VERSION` arg value in the dockerfile would not override the default node version. Fixed in [#818](https://github.com/cypress-io/cypress-docker-images/pull/818) + +## 1.0.0 + +- Initial Release of [cypress/factory](https://hub.docker.com/repository/docker/cypress/factory/general#) diff --git a/factory/Dockerfile b/factory/Dockerfile new file mode 100644 index 0000000000..afb62e8750 --- /dev/null +++ b/factory/Dockerfile @@ -0,0 +1,12 @@ +# FACTORY_VERSION is expected to be overridden +# Regular builds, using docker compose, take the value from +# the .env file in the same directory as this file +ARG FACTORY_VERSION='4.1.0' + +# Multi-stage default image. Used to test and create the pre-built docker images. +FROM cypress/factory:${FACTORY_VERSION} AS default_image + +# Multi-stage included image. We set the entry point only for the included image. +FROM cypress/factory:${FACTORY_VERSION} AS included_image + +ENTRYPOINT ["cypress", "run"] diff --git a/factory/README.md b/factory/README.md new file mode 100644 index 0000000000..00d8b999d7 --- /dev/null +++ b/factory/README.md @@ -0,0 +1,250 @@ +# cypress/factory + +[`cypress/factory`](https://hub.docker.com/r/cypress/factory) is a Docker image that can be used with [`ARG`](https://docs.docker.com/reference/dockerfile/#arg) instructions in a custom-built [`Dockerfile`](https://docs.docker.com/reference/dockerfile/) to generate a new Docker image with specific versions of: + +- Node.js +- Yarn v1 Classic +- Chrome +- Firefox +- Edge +- Cypress + +## Tags + +[cypress/factory](https://hub.docker.com/r/cypress/factory/tags) images on [Cypress on Docker Hub](https://hub.docker.com/u/cypress) use image tags in the form: + +- `` +- `latest` + +for example: + +- `cypress/factory:4.0.2` +- `cypress/factory:latest` + +To avoid unplanned breaking changes, specify a fixed `` tag, not the `latest` tag. The `latest` tag is linked to the latest released `cypress/factory` image and is updated without notice. + +## Benefits + +- Freedom to choose which versions to test against. +- No need to wait on an official release to test the latest version of a browser. +- Smaller Docker image sizes especially when not including unused browsers. +- Easily test multiple browser versions. +- Reduced maintenance and pull requests in this repo. +- Ability for Cypress to offer more variations of Docker images at low cost. + +## API + +The following `ARG` variable values can be set to define what versions the Docker image includes in its build. + +If no `ARG` variables are defined, only the default version of Node.js will be installed. This can still be a useful container though since we will also install any dependencies required to run Cypress. + +### NODE_VERSION + +The version of Node.js to install in the Docker image. The exact version must be used, no wildcards or shorthands are supported. If the `ARG` variable is not defined or an empty string, the default version of Node.js (defined in [.env](./.env) as `FACTORY_DEFAULT_NODE_VERSION`) is installed. Node.js is a prerequisite for Cypress. + +Example: `NODE_VERSION='20.14.0'` + +[Node Versions](https://nodejs.org/en/download/releases) + +### YARN_VERSION + +The version of Yarn v1 Classic to install (via npm). If the `ARG` variable is unset or an empty string, Yarn is not installed. + +Example: `YARN_VERSION='1.22.22'` + +[Yarn versions](https://www.npmjs.com/package/yarn) + +### CYPRESS_VERSION + +The version of Cypress to install (via npm). If the `ARG` variable is unset or an empty string, Cypress is not installed. + +Example: `CYPRESS_VERSION='13.11.0'` + +[Cypress versions](https://www.npmjs.com/package/cypress) + +### CHROME_VERSION + +The version of Chrome to install. If the `ARG` variable is unset or an empty string, Chrome is not installed. The exact version must be used, no wildcards or shorthands are supported. + +Example: `CHROME_VERSION='125.0.6422.141-1'` + +[Chrome versions](https://www.ubuntuupdates.org/package/google_chrome/stable/main/base/google-chrome-stable) + +### FIREFOX_VERSION + +The version of Firefox to install. If the `ARG` variable is unset or an empty string, Firefox is not installed. The exact version must be used, no wildcards or shorthands are supported. + +Example: `FIREFOX_VERSION='126.0.1'` + +[Firefox versions](https://download-installer.cdn.mozilla.net/pub/firefox/releases/) + +### EDGE_VERSION + +The version of Edge to install. If the `ARG` variable is unset or an empty string, Edge is not installed. The exact version must be used, no wildcards or shorthands are supported. + +Example: `EDGE_VERSION='125.0.2535.85-1'` + +[Edge versions](https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/) + +## Usage + +The Docker `cypress/factory` build process works by relying on the [`ONBUILD`](https://docs.docker.com/engine/reference/builder/#onbuild) Docker instruction to run commands at the image's build time. To make use of the Docker `cypress/factory` image and process, users will have to create a [`Dockerfile`](https://docs.docker.com/reference/dockerfile/) to declare what dependency versions are desired. Docker `ARG` variables can be specified in a number of ways, some of which are demonstrated below. For each of these examples we are building the equivalent of the `cypress/browsers` Docker image with Cypress additionally installed. In each instance, since the example is only testing the Chrome version, the examples could just install Chrome by itself if the other browsers were not used. + +In the examples below, we install Cypress into the Docker image using: + +```dockerfile +RUN npm install cypress --save-dev +RUN npx cypress install +``` + +The additional `npx cypress install` command ensures that the Cypress binary component is installed, even if the Docker build step is re-run. The [Docker build cache](https://docs.docker.com/build/cache/) process may otherwise incorrectly optimize the build and fail to include the Cypress binary in the image, leading to run failures. + +### Example project + +To test the following Docker build examples you need to have a Cypress project available. You can create a simple Cypress E2E project by following these steps: + +```shell +mkdir cy-example-test # or another directory of your choice +cd cy-example-test +npm init -y +npm install cypress --save-dev +npx cypress open +``` + +In the Cypress GUI then: + +- Select "E2E Testing" +- Select "Continue" +- Select "Electron" browser +- Select "Create new spec" +- Select "Create spec" +- Close all Cypress windows + +Finally, test that the spec `cypress/e2e/spec.cy.js` runs: + +```shell +npx cypress run +``` + +### In the Dockerfile + +`ARG` variables can be defined directly in the `Dockerfile` to make the variables available when the container is built. + +Create a `Dockerfile` with the following content: + +```dockerfile +# Args are defined in the Dockerfile before the FROM command. +# Using these args will cause an image to be created with +# Node.js (default version from .env file), Chrome, Firefox and Edge. +ARG CHROME_VERSION='125.0.6422.141-1' +ARG EDGE_VERSION='125.0.2535.85-1' +ARG FIREFOX_VERSION='126.0.1' + +FROM cypress/factory + +COPY . /opt/app +WORKDIR /opt/app +RUN npm install cypress --save-dev +RUN npx cypress install +``` + +Then, in the same directory as the `Dockerfile`, run the following commands to build the Docker image and run Cypress against the Chrome browser. + +```bash +docker build . -t test +docker run -it --rm test npx cypress run -b chrome +``` + +### At build time + +`ARG` variables can be passed to the `docker build` command with the `--build-arg` flag. Note: any value set via the command line will override the default `ARG` variable value provided in the `Dockerfile`. + +Create a `Dockerfile` with the following content: + +```dockerfile +FROM cypress/factory + +COPY . /opt/app +WORKDIR /opt/app +RUN npm install cypress --save-dev +RUN npx cypress install +``` + +Run the Docker commands: + +```bash +docker build . --build-arg CHROME_VERSION='125.0.6422.141-1' --build-arg EDGE_VERSION='125.0.2535.85-1' --build-arg FIREFOX_VERSION='126.0.1' -t test +docker run -it --rm test npx cypress run -b chrome +``` + +### In docker-compose.yml + +Finally, [Dockerfile `ARG`](https://docs.docker.com/reference/dockerfile/#arg) variable values can be specified in the `docker-compose.yml` file using [compose `args`](https://docs.docker.com/compose/compose-file/build/#args) build arguments. + +Create a `docker-compose.yml` file with the following content: + +```yml +services: + test: + build: + context: . + args: + CHROME_VERSION: '125.0.6422.141-1' + EDGE_VERSION: '125.0.2535.85-1' + FIREFOX_VERSION: '126.0.1' + command: npx cypress run +``` + +and a `Dockerfile` with this content: + +```dockerfile +FROM cypress/factory + +COPY . /opt/app +WORKDIR /opt/app +RUN npm install cypress --save-dev +RUN npx cypress install +``` + +Run the Docker commands: + +```bash +docker compose build test +docker compose run --rm test +``` + +### Reducing the size of the docker container + +As mentioned above we can reduce the size of the Docker image by removing browsers we aren't using. + +Since this example only uses Chrome, removing Edge and Firefox is as simple as not including a version. + +Create a `Dockerfile` with the following content: + +```dockerfile +ARG CHROME_VERSION='125.0.6422.141-1' + +FROM cypress/factory + +COPY . /opt/app +WORKDIR /opt/app +RUN npm install cypress --save-dev +RUN npx cypress install +``` + +Then, in the same directory as the `Dockerfile`, run the following commands to build the Docker image and run Cypress against the Chrome browser. + +```bash +docker build . -t test +docker run -it --rm test npx cypress run -b chrome +``` + +The released [cypress/base](https://hub.docker.com/r/cypress/base) image (no browsers) has a compressed size on [Docker Hub](https://hub.docker.com/u/cypress) of ~ 230 MB. The [cypress/browsers](https://hub.docker.com/r/cypress/browsers) image for `linux/amd64` has a compressed image size of ~ 840 MB. By generating a custom image with unneeded browsers removed, the image size can be correspondingly reduced. + +## Version Testing + +Due to the large amount of possible version combinations, we're not able to exhaustively test each combination of versions, nor do we block versions that are incompatible. For example, Cypress 12 removed support for Node.js version 12.0.0. You are still able to generate a container with node 12.0.0 and Cypress 12, but Cypress will fail to run. This is because the factory supports earlier versions of Cypress and must support earlier versions of node. + +If you run across a combination that should reasonably work, but doesn't, log an issue and we will take a look at supporting it. + +Additionally this docker image and containers generated from it are intended for test use only, and are not intended for hosting services in a production environment. diff --git a/factory/docker-compose.yml b/factory/docker-compose.yml new file mode 100644 index 0000000000..4f73a2a101 --- /dev/null +++ b/factory/docker-compose.yml @@ -0,0 +1,190 @@ +# REPO_PREFIX is used in CI to deploy to other docker registries than dockerhub. + +## If you wish to release Docker image(s) with alternate (i.e. non-primary) versions, do not modify this file in the master branch. +## Follow the instructions in the CONTRIBUTING document for alternate versions and work instead in a feature branch. +## Comment out the tags entries for latest tags below so that no latest tag is created. +## Comment out the INCLUDED_IMAGE_SHORT_TAG so that this tag is not reassigned to a non-primary version. + +services: + + factory: + image: ${REPO_PREFIX-}cypress/factory + build: + dockerfile: factory.Dockerfile + target: factory + context: . + args: + BASE_IMAGE: ${BASE_IMAGE} + FACTORY_DEFAULT_NODE_VERSION: ${FACTORY_DEFAULT_NODE_VERSION} + tags: + - ${REPO_PREFIX-}cypress/factory:latest # comment out for release of alternate version + - ${REPO_PREFIX-}cypress/factory:${FACTORY_VERSION} + command: node -v + + included: + image: ${REPO_PREFIX-}cypress/included + build: + target: included_image + context: . + args: + NODE_VERSION: ${NODE_VERSION} + FACTORY_VERSION: ${FACTORY_VERSION} + CHROME_VERSION: ${CHROME_VERSION} + CYPRESS_VERSION: ${CYPRESS_VERSION} + EDGE_VERSION: ${EDGE_VERSION} + FIREFOX_VERSION: ${FIREFOX_VERSION} + YARN_VERSION: ${YARN_VERSION} + # WEBKIT_VERSION: ${WEBKIT_VERSION} + tags: + - ${REPO_PREFIX-}cypress/included:latest # comment out for release of alternate version + - ${REPO_PREFIX-}cypress/included:${INCLUDED_IMAGE_SHORT_TAG} # comment out for release of alternate version + - ${REPO_PREFIX-}cypress/included:${INCLUDED_IMAGE_TAG} + command: node -v + + browsers: + image: ${REPO_PREFIX-}cypress/browsers + build: + target: default_image + context: . + args: + NODE_VERSION: ${NODE_VERSION} + FACTORY_VERSION: ${FACTORY_VERSION} + YARN_VERSION: ${YARN_VERSION} + CHROME_VERSION: ${CHROME_VERSION} + FIREFOX_VERSION: ${FIREFOX_VERSION} + EDGE_VERSION: ${EDGE_VERSION} + tags: + - ${REPO_PREFIX-}cypress/browsers:latest # comment out for release of alternate version + - ${REPO_PREFIX-}cypress/browsers:${BROWSERS_IMAGE_SHORT_TAG} + - ${REPO_PREFIX-}cypress/browsers:${BROWSERS_IMAGE_TAG} + command: node -v + + base: + image: ${REPO_PREFIX-}cypress/base + build: + target: default_image + context: . + args: + NODE_VERSION: ${NODE_VERSION} + FACTORY_VERSION: ${FACTORY_VERSION} + YARN_VERSION: ${YARN_VERSION} + tags: + - ${REPO_PREFIX-}cypress/base:latest # comment out for release of alternate version + - ${REPO_PREFIX-}cypress/base:${BASE_IMAGE_TAG} + command: node -v + + ## Unused images that we could release in the future if we choose. + chrome: + image: "${REPO_PREFIX-}cypress/chrome" + build: + target: default_image + context: . + args: + NODE_VERSION: ${NODE_VERSION} + FACTORY_VERSION: ${FACTORY_VERSION} + CHROME_VERSION: ${CHROME_VERSION} + tags: + - ${REPO_PREFIX-}cypress/chrome:${CHROME_VERSION} + command: google-chrome --version + + edge: + image: ${REPO_PREFIX-}cypress/edge + build: + target: default_image + context: . + args: + NODE_VERSION: ${NODE_VERSION} + FACTORY_VERSION: ${FACTORY_VERSION} + EDGE_VERSION: ${EDGE_VERSION} + tags: + - ${REPO_PREFIX-}cypress/edge:${EDGE_VERSION} + command: edge --version + + firefox: + image: ${REPO_PREFIX-}cypress/firefox + build: + target: default_image + context: . + args: + NODE_VERSION: ${NODE_VERSION} + FACTORY_VERSION: ${FACTORY_VERSION} + FIREFOX_VERSION: ${FIREFOX_VERSION} + tags: + - ${REPO_PREFIX-}cypress/firefox:${FIREFOX_VERSION} + command: firefox --version + + # webkit: + # image: ${REPO_PREFIX-}cypress/webkit + # build: + # target: default_image + # context: . + # args: + # FACTORY_VERSION: ${FACTORY_VERSION} + # WEBKIT_VERSION: ${WEBKIT_VERSION} + # tags: + # - ${REPO_PREFIX-}cypress/webkit:${WEBKIT_VERSION} + # command: webkit --version + + cypress: + image: ${REPO_PREFIX-}cypress/cypress + build: + target: default_image + context: . + args: + NODE_VERSION: ${NODE_VERSION} + FACTORY_VERSION: ${FACTORY_VERSION} + CYPRESS_VERSION: ${CYPRESS_VERSION} + tags: + - ${REPO_PREFIX-}cypress/cypress:${CYPRESS_VERSION} + command: cypress verify + + cypress-chrome: + image: ${REPO_PREFIX-}cypress/cypress-chrome + build: + target: default_image + context: . + args: + NODE_VERSION: ${NODE_VERSION} + FACTORY_VERSION: ${FACTORY_VERSION} + CYPRESS_VERSION: ${CYPRESS_VERSION} + CHROME_VERSION: ${CHROME_VERSION} + tags: + - ${REPO_PREFIX-}cypress/cypress-chrome:cypress-${CYPRESS_VERSION}-chrome-${CHROME_VERSION} + command: node -v + + cypress-edge: + image: ${REPO_PREFIX-}cypress/cypress-edge + build: + target: default_image + context: . + args: + NODE_VERSION: ${NODE_VERSION} + FACTORY_VERSION: ${FACTORY_VERSION} + CYPRESS_VERSION: ${CYPRESS_VERSION} + EDGE_VERSION: ${EDGE_VERSION} + tags: + - ${REPO_PREFIX-}cypress/cypress-edge:cypress-${CYPRESS_VERSION}-edge-${EDGE_VERSION} + command: node -v + + cypress-firefox: + image: ${REPO_PREFIX-}cypress/cypress-firefox + build: + target: default_image + context: . + args: + NODE_VERSION: ${NODE_VERSION} + FACTORY_VERSION: ${FACTORY_VERSION} + CYPRESS_VERSION: ${CYPRESS_VERSION} + FIREFOX_VERSION: ${FIREFOX_VERSION} + tags: + - ${REPO_PREFIX-}cypress/cypress-firefox:cypress-${CYPRESS_VERSION}-firefox-${FIREFOX_VERSION} + command: node -v + + ## Test image + test-node-default: + build: + target: default_image + context: . + args: + FACTORY_VERSION: ${FACTORY_VERSION} + command: node -v diff --git a/factory/factory.Dockerfile b/factory/factory.Dockerfile new file mode 100644 index 0000000000..8f9851e9a3 --- /dev/null +++ b/factory/factory.Dockerfile @@ -0,0 +1,130 @@ +# BASE_IMAGE is expected to be overridden +# Regular builds, using docker compose, take the value from +# the .env file in the same directory as this file +ARG BASE_IMAGE='debian:12-slim' + +FROM ${BASE_IMAGE} AS factory + +# "fake" dbus address to prevent errors +# https://github.com/SeleniumHQ/docker-selenium/issues/87 +ENV DBUS_SESSION_BUS_ADDRESS=/dev/null \ + # a few environment variables to make NPM installs easier + # good colors for most applications + TERM=xterm \ + # avoid million NPM install messages + npm_config_loglevel=warn \ + # avoid too many progress messages + # https://github.com/cypress-io/cypress/issues/1243 + CI=1 \ + # disable shared memory X11 affecting Cypress v4 and Chrome + # https://github.com/cypress-io/cypress-docker-images/issues/270 + QT_X11_NO_MITSHM=1 \ + _X11_NO_MITSHM=1 \ + _MITSHM=0 \ + # point Cypress at the /root/cache no matter what user account is used + # see https://on.cypress.io/caching + CYPRESS_CACHE_FOLDER=/root/.cache/Cypress + +# give every user read access to the "/root" folder where the binary is cached +# we really only need to worry about the top folder, fortunately +# TODO: there are other folders that need permissions but I don't know what they are yet, See: https://github.com/cypress-io/cypress/issues/23962 +RUN ls -la /root \ + && chmod 777 /root \ + && apt-get update \ + && apt-get install --no-install-recommends -y \ + # Always install: Needed to run Cypress + xvfb \ + libglib2.0-0 \ + libnss3 \ + libatk1.0-0 \ + libatk-bridge2.0-0 \ + libcups2 \ + libgtk-3-0 \ + libgbm1 \ + libasound2 \ + # Needed to support the ps command, while not used by cypress directly it is used by some of our examples and the dependency is small (~1mb). + procps \ + # Needed to support curl, similar to ps, it's not directly used by cypress but leaving it in the container is practically free. + curl \ + # Always install: Needed for dashboard integration + git \ + # Install ssh client to enable git cloning via ssh without falling back to CI's native git client. + openssh-client\ + # Chrome and Edge require wget even after installation. We could do more work to dynamically remove it, but I doubt it's worth it. + wget \ + # Needed to make https calls from the docker container + openssl \ + ca-certificates \ + # Fast lossless compression algorithm - preferred by GitHub @actions/cache + zstd \ + # build only dependencies: removed in onbuild step + bzip2 \ + gnupg \ + dirmngr \ + # Needed by cypress installation 'unzip.js' script + unzip + +# Copy install scripts into container, these will be deleted in an onbuild step later. +COPY ./installScripts /opt/installScripts + +# Set the default node version, node is required. +ARG FACTORY_DEFAULT_NODE_VERSION + +# Set the default node version to an env to allow us to access it in the onbuild step. +ENV CYPRESS_FACTORY_DEFAULT_NODE_VERSION=${FACTORY_DEFAULT_NODE_VERSION} + +# Install Node: Node MUST be installed, so the default lives here +ONBUILD ARG NODE_VERSION + +# Don't rely on the docker arg default, if we do the default won't be overriden if the arg is declared in the dockerfile. +ONBUILD ENV APPLIED_FACTORY_DEFAULT_NODE_VERSION=${NODE_VERSION:-${CYPRESS_FACTORY_DEFAULT_NODE_VERSION}} + +# Node is installed via a bash script because node isn't installed yet! +ONBUILD RUN bash /opt/installScripts/node/install-node-version.sh ${APPLIED_FACTORY_DEFAULT_NODE_VERSION} + +# Install Yarn: Optional +ONBUILD ARG YARN_VERSION + +# Installed using a node script to handle conditionals since we all know javascript +ONBUILD RUN node /opt/installScripts/yarn/install-yarn-version.js ${YARN_VERSION} + +# Install Chrome: optional +ONBUILD ARG CHROME_VERSION + +ONBUILD RUN node /opt/installScripts/chrome/install-chrome-version.js ${CHROME_VERSION} + +# Install Edge: optional +ONBUILD ARG EDGE_VERSION + +ONBUILD RUN node /opt/installScripts/edge/install-edge-version.js ${EDGE_VERSION} + +# Install Firefox: optional +ONBUILD ARG FIREFOX_VERSION + +ONBUILD RUN node /opt/installScripts/firefox/install-firefox-version.js ${FIREFOX_VERSION} + +# TODO: Globally installed webkit currently isn't found, see issue https://github.com/cypress-io/cypress/issues/25344 +# Install Webkit: optional +# ONBUILD ARG WEBKIT_VERSION + +# ONBUILD RUN node /opt/installScripts/webkit/install-webkit-version.js ${WEBKIT_VERSION} + +# Install Cypress: optional +ONBUILD ARG CYPRESS_VERSION + +# Allow projects to reference globally installed cypress +# This is only set if the cypress version is passed in (thats what the + syntax stuff does.) +ONBUILD ENV NODE_PATH=${CYPRESS_VERSION:+/usr/local/lib/node_modules} + +ONBUILD RUN node /opt/installScripts/cypress/install-cypress-version.js ${CYPRESS_VERSION} + +# Global Cleanup +ONBUILD RUN apt-get purge -y --auto-remove \ + curl \ + bzip2 \ + gnupg \ + dirmngr\ + && rm -rf /usr/share/doc \ + && rm -rf /var/lib/apt/lists/* \ + # Remove cypress install scripts + && rm -rf /opt/installScripts diff --git a/factory/installScripts/chrome/default.sh b/factory/installScripts/chrome/default.sh new file mode 100755 index 0000000000..dce48abf81 --- /dev/null +++ b/factory/installScripts/chrome/default.sh @@ -0,0 +1,15 @@ +#! /bin/bash + +# Chrome offers a debian package, download the specific debian package and install it with apt-get to also install dependencies. +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_${1}_amd64.deb + +if [[ $? -ne 0 ]]; then + echo "failed to download chrome. Check the version?" + exit 1; +fi + +apt-get update +apt-get install -f -y /usr/src/google-chrome-stable_current_amd64.deb + +# remove temp download +rm -f /usr/src/google-chrome-stable_current_amd64.deb diff --git a/factory/installScripts/chrome/install-chrome-version.js b/factory/installScripts/chrome/install-chrome-version.js new file mode 100755 index 0000000000..36d75c3795 --- /dev/null +++ b/factory/installScripts/chrome/install-chrome-version.js @@ -0,0 +1,29 @@ +#!/usr/bin/node +const { spawn } = require('child_process'); + +const chromeVersion = process.argv.slice(2)[0] + +if (!chromeVersion) { + console.log('No Chrome version provided, skipping Chrome install') + return +} + +if (process.arch !== 'x64') { + console.log('Not downloading Chrome since we are not on x64. For arm64 status see https://crbug.com/677140') + return; +} + +console.log('Installing Chrome version: ', chromeVersion) + +// Insert logic here if needed to run a different install script based on chrome version. +const install = spawn(`${__dirname}/default.sh`, [chromeVersion], {stdio: 'inherit'}) + +install.on('error', function (error) { + console.log('child process errored with ' + error.toString()) + process.exit(1) +}); + +install.on('exit', function (code) { + console.log('child process exited with code ' + code.toString()) + process.exit(code) +}); diff --git a/factory/installScripts/cypress/default.sh b/factory/installScripts/cypress/default.sh new file mode 100755 index 0000000000..7735412de9 --- /dev/null +++ b/factory/installScripts/cypress/default.sh @@ -0,0 +1,13 @@ +#! /bin/bash + +# TODO: should typescript be versioned? Should it have it's own ARG for the factory? +# Typescript is installed to allow testing of .ts spec files. +npm install -g "cypress@${1}" typescript + +# Loosen file priveleges for the cypress cache. The first time that cypress runs it will create a +# binary_state.json file if it hasn't already been created. This was causing issues with non-root +# users, they do not have access to write to this directory. Since this is a develompent docker container +# and to lower barriers as much as possible, we are loosening privs to allow the binary_state.json file +# to be created. Previously this file was created by root when cypress verify was called, but this would +# apply to amd processors since cypress verify was not called on arm processors. +chmod -R 777 /root/.cache diff --git a/factory/installScripts/cypress/install-cypress-version.js b/factory/installScripts/cypress/install-cypress-version.js new file mode 100755 index 0000000000..25434029c1 --- /dev/null +++ b/factory/installScripts/cypress/install-cypress-version.js @@ -0,0 +1,24 @@ +#!/usr/bin/node +const { spawn } = require('child_process'); + +const cypressVersion = process.argv.slice(2)[0] + +if (!cypressVersion) { + console.log('No Cypress version provided, skipping Cypress install') + return +} + +console.log('Installing Cypress version ', cypressVersion) + +// Insert logic here if needed to run a different install script based on cypress version. +const install = spawn(`${__dirname}/default.sh`, [cypressVersion], {stdio: 'inherit'}) + +install.on('error', function (error) { + console.log('child process errored with ' + error.toString()) + process.exit(1) +}); + +install.on('exit', function (code) { + console.log('child process exited with code ' + code.toString()) + process.exit(code) +}); diff --git a/factory/installScripts/edge/default.sh b/factory/installScripts/edge/default.sh new file mode 100755 index 0000000000..ac176edfa6 --- /dev/null +++ b/factory/installScripts/edge/default.sh @@ -0,0 +1,10 @@ +#! /bin/bash + +# Microsoft offers a debian package, here we're adding the package list and then installing the specific version we want to install. +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-stable.list' \ + && rm microsoft.gpg \ + && apt-get update \ + && apt-get install -y microsoft-edge-stable=${1} \ + && ln -s /usr/bin/microsoft-edge /usr/bin/edge diff --git a/factory/installScripts/edge/install-edge-version.js b/factory/installScripts/edge/install-edge-version.js new file mode 100755 index 0000000000..12e39e9b0c --- /dev/null +++ b/factory/installScripts/edge/install-edge-version.js @@ -0,0 +1,29 @@ +#!/usr/bin/node +const { spawn } = require('child_process'); + +const edgeVersion = process.argv.slice(2)[0] + +if (!edgeVersion) { + console.log('No Edge version provided, skipping Edge install') + return +} + +if (process.arch !== 'x64') { + console.log('Not downloading Edge since we are not on x64. For arm64 status see https://techcommunity.microsoft.com/t5/discussions/edge-for-linux-arm64/m-p/1532272') + return; +} + +console.log('Installing Edge version: ', edgeVersion) + +// Insert logic here if needed to run a different install script based on edge version. +const install = spawn(`${__dirname}/default.sh`, [edgeVersion], {stdio: 'inherit'}) + +install.on('error', function (error) { + console.log('child process errored with ' + error.toString()) + process.exit(1) +}); + +install.on('exit', function (code) { + console.log('child process exited with code ' + code.toString()) + process.exit(code) +}); diff --git a/factory/installScripts/firefox/default.sh b/factory/installScripts/firefox/default.sh new file mode 100755 index 0000000000..469c85e460 --- /dev/null +++ b/factory/installScripts/firefox/default.sh @@ -0,0 +1,13 @@ +#! /bin/bash + +# Firefox does not have a debian package that is kept up to date, so instead we install deps directly and download the tar to unzip. +apt-get update \ + && apt-get install -y \ + libxtst6 \ + libgtk-3-0 \ + libdbus-glib-1-2 \ + mplayer \ + && wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/${1}/linux-x86_64/en-US/firefox-${1}.tar.bz2 \ + && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ + && rm /tmp/firefox.tar.bz2 \ + && ln -fs /opt/firefox/firefox /usr/bin/firefox \ diff --git a/factory/installScripts/firefox/install-firefox-version.js b/factory/installScripts/firefox/install-firefox-version.js new file mode 100755 index 0000000000..852a2cc4fd --- /dev/null +++ b/factory/installScripts/firefox/install-firefox-version.js @@ -0,0 +1,29 @@ +#!/usr/bin/node +const { spawn } = require('child_process'); + +const firefoxVersion = process.argv.slice(2)[0] + +if (!firefoxVersion) { + console.log('No Firefox version provided, skipping Firefox install') + return +} + +if (process.arch !== 'x64') { + console.log('Not downloading Firefox since we are not on x64. For arm64 status see https://bugzilla.mozilla.org/show_bug.cgi?id=1678342') + return +} + +console.log('Installing Firefox version: ', firefoxVersion) + +// Insert logic here if needed to run a different install script based on chrome version. +const install = spawn(`${__dirname}/default.sh`, [firefoxVersion], {stdio: 'inherit'}) + +install.on('error', function (error) { + console.log('child process errored with ' + error.toString()) + process.exit(1) +}); + +install.on('exit', function (code) { + console.log('child process exited with code ' + code.toString()) + process.exit(code) +}); diff --git a/factory/installScripts/node/default.sh b/factory/installScripts/node/default.sh new file mode 100755 index 0000000000..946d5d5bcb --- /dev/null +++ b/factory/installScripts/node/default.sh @@ -0,0 +1,58 @@ +#! /bin/bash + +groupadd --gid 1000 node \ + && useradd --uid 1000 --gid node --shell /bin/bash --create-home node + +# The following is borrowed from https://github.com/nodejs/docker-node/blob/main/20/bookworm-slim/Dockerfile +# Node.js GPG keys are taken from https://github.com/nodejs/node/ +ARCH= && dpkgArch="$(dpkg --print-architecture)" \ + && case "${dpkgArch##*-}" in \ + amd64) ARCH='x64';; \ + ppc64el) ARCH='ppc64le';; \ + s390x) ARCH='s390x';; \ + arm64) ARCH='arm64';; \ + armhf) ARCH='armv7l';; \ + i386) ARCH='x86';; \ + *) echo "unsupported architecture"; exit 1 ;; \ + esac \ + && set -ex \ + && savedAptMark="$(apt-mark showmanual)" \ + && apt-get update && apt-get install -y curl wget gnupg dirmngr xz-utils libatomic1 --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* \ + && for key in \ + 4ED778F539E3634C779C87C6D7062848A1AB005C \ + 141F07595B7B3FFE74309A937405533BE57C7D57 \ + 74F12602B6F1C4E913FAA37AD3A89613643B6201 \ + DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 \ + 61FC681DFB92A079F1685E77973F295594EC4689 \ + CC68F5A3106FF448322E48ED27F5E38D5B0A215F \ + 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \ + C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ + 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 \ + C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C \ + 108F52B48DB57BB0CC439B2997B01419BD92F80A \ + A363A499291CBBC940DD62E41F10027AF002F8B0 \ + C0D6248439F1D5604AAFFB4021D900FFDB233756 \ + ; do \ + gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \ + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; \ + done \ + && curl -fsSLO --compressed "https://nodejs.org/dist/v$1/node-v$1-linux-$ARCH.tar.xz" \ + && curl -fsSLO --compressed "https://nodejs.org/dist/v$1/SHASUMS256.txt.asc" \ + && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ + && grep " node-v$1-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ + && tar -xJf "node-v$1-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ + && rm "node-v$1-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \ + && apt-mark auto '.*' > /dev/null \ + && { [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; } \ + && find /usr/local -type f -executable -exec ldd '{}' ';' \ + | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' \ + | sort -u \ + | xargs -r dpkg-query --search \ + | cut -d: -f1 \ + | sort -u \ + | xargs -r apt-mark manual \ + && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ + && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ + && node --version \ + && npm --version diff --git a/factory/installScripts/node/install-node-version.sh b/factory/installScripts/node/install-node-version.sh new file mode 100755 index 0000000000..5832a81359 --- /dev/null +++ b/factory/installScripts/node/install-node-version.sh @@ -0,0 +1,24 @@ +#! /bin/bash + +echo "Installing Node version: $1" + +if [[ -z $1 ]] +then + echo "A Node version must be defined" + exit 1 +fi + +# The following code could be enabled for a node version check but since this docker factory supports multiple versions of cypress +# we probably should not enforce a minimum since it may change. I'm leaving this code since version checking is hard and maybe we +# will change our minds in the future. +# MaximumUnsupportedVersion='16.15.1' +# printf -v versions '%s\n%s' "$1" "$MaximumUnsupportedVersion" +# if [[ $versions = "$(sort -V <<< "$versions")" ]]; then +# echo 'Node version mus be 16.16.0 or higher' +# exit 1 +# else +# echo 'SUCCESS' +# fi + +# Add logic here to choose a different install script if a future node version requires different setps +bash "$(dirname "$0")/default.sh" $1 diff --git a/factory/installScripts/webkit/default.sh b/factory/installScripts/webkit/default.sh new file mode 100755 index 0000000000..ca1627093d --- /dev/null +++ b/factory/installScripts/webkit/default.sh @@ -0,0 +1,23 @@ +#! /bin/bash + +apt-get update +apt-get install --no-install-recommends -y \ + libgstreamer1.0-0 \ + libevent-2.1-7 \ + libopus0 \ + libxslt1.1 \ + libwoff1 \ + libharfbuzz-icu0 \ + libgstreamer-plugins-base1.0-0 \ + libgstreamer-gl1.0-0 \ + libopenjp2-7 \ + libwebpdemux2 \ + libenchant-2-2 \ + libsecret-1-0 \ + libhyphen0 \ + libmanette-0.2-0 \ + libatomic1 \ + libgles2 \ + gstreamer1.0-libav + +npm install -g "playwright-webkit@${1}" diff --git a/factory/installScripts/webkit/install-webkit-version.js b/factory/installScripts/webkit/install-webkit-version.js new file mode 100755 index 0000000000..b290758a7f --- /dev/null +++ b/factory/installScripts/webkit/install-webkit-version.js @@ -0,0 +1,29 @@ +#!/usr/bin/node +const { spawn } = require('child_process'); + +const webkitVersion = process.argv.slice(2)[0] + +if (!webkitVersion) { + console.log('No Webkit version provided, skipping Webkit install') + return +} + +if (!['arm64', 'x64'].includes(process.arch)) { + console.log(`Not downloading Webkit since we are on ${process.arch}`) + return; +} + +console.log('Installing Webkit version: ', webkitVersion) + +// Insert logic here if needed to run a different install script based on webkit version. +const install = spawn(`${__dirname}/default.sh`, [webkitVersion], {stdio: 'inherit'}) + +install.on('error', function (error) { + console.log('child process errored with ' + error.toString()) + process.exit(1) +}); + +install.on('exit', function (code) { + console.log('child process exited with code ' + code.toString()) + process.exit(code) +}); diff --git a/factory/installScripts/yarn/default.sh b/factory/installScripts/yarn/default.sh new file mode 100755 index 0000000000..897b35335c --- /dev/null +++ b/factory/installScripts/yarn/default.sh @@ -0,0 +1,32 @@ +#! /bin/bash + +# The following is borrowed from https://github.com/nodejs/docker-node/blob/main/16/bullseye-slim/Dockerfile +set -ex \ + && savedAptMark="$(apt-mark showmanual)" \ + && apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* \ + && for key in \ + 6A010C5166006599AA17F08146C2130DFD2497F5 \ + ; do \ + gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \ + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; \ + done \ + && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$1/yarn-v$1.tar.gz" \ + && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$1/yarn-v$1.tar.gz.asc" \ + && gpg --batch --verify yarn-v$1.tar.gz.asc yarn-v$1.tar.gz \ + && mkdir -p /opt \ + && tar -xzf yarn-v$1.tar.gz -C /opt/ \ + && ln -s /opt/yarn-v$1/bin/yarn /usr/local/bin/yarn \ + && ln -s /opt/yarn-v$1/bin/yarnpkg /usr/local/bin/yarnpkg \ + && rm yarn-v$1.tar.gz.asc yarn-v$1.tar.gz \ + && apt-mark auto '.*' > /dev/null \ + && { [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; } \ + && find /usr/local -type f -executable -exec ldd '{}' ';' \ + | awk '/=>/ { print $(NF-1) }' \ + | sort -u \ + | xargs -r dpkg-query --search \ + | cut -d: -f1 \ + | sort -u \ + | xargs -r apt-mark manual \ + && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ + && yarn --version diff --git a/factory/installScripts/yarn/install-yarn-version.js b/factory/installScripts/yarn/install-yarn-version.js new file mode 100644 index 0000000000..3fbee78c32 --- /dev/null +++ b/factory/installScripts/yarn/install-yarn-version.js @@ -0,0 +1,24 @@ +#!/usr/bin/node +const { spawn } = require('child_process'); + +const yarnVersion = process.argv.slice(2)[0] + +if (!yarnVersion) { + console.log('No Yarn version provided, skipping Yarn install') + return +} + +console.log('Installing Yarn version: ', yarnVersion) + +// Insert logic here if needed to run a different install script based on version. +const install = spawn(`${__dirname}/default.sh`, [yarnVersion], {stdio: 'inherit'}) + +install.on('error', function (error) { + console.log('child process errored with ' + error.toString()) + process.exit(1) +}); + +install.on('exit', function (code) { + console.log('child process exited with code ' + code.toString()) + process.exit(code) +}); diff --git a/factory/test-project/.gitignore b/factory/test-project/.gitignore new file mode 100644 index 0000000000..65fc68a501 --- /dev/null +++ b/factory/test-project/.gitignore @@ -0,0 +1,2 @@ +cypress/fixtures/profile.json +cypress/fixtures/users.json diff --git a/factory/test-project/Dockerfile b/factory/test-project/Dockerfile new file mode 100644 index 0000000000..bd692e866d --- /dev/null +++ b/factory/test-project/Dockerfile @@ -0,0 +1,9 @@ +ARG BASE_TEST_IMAGE='cypress/factory' + +FROM ${BASE_TEST_IMAGE} +RUN echo "current user: $(whoami)" +ENV CI=1 +COPY . /opt/app +WORKDIR /opt/app +RUN npm install --save-dev cypress +RUN ./node_modules/.bin/cypress verify diff --git a/factory/test-project/README.MD b/factory/test-project/README.MD new file mode 100644 index 0000000000..b3ec385396 --- /dev/null +++ b/factory/test-project/README.MD @@ -0,0 +1,41 @@ +# Test-project + +This test project was generated via the Cypress GUI. + +This project can be updated to the latest Cypress default scaffolded E2E test specs by carrying out the following steps in the directory `/factory/test-project`: + +```shell +rm -rf cypress cypress.config.js +npm install cypress@latest --no-package-lock +npx cypress open +``` + +- Select "E2E Testing" +- Select "Electron" browser +- Select "Continue" +- Select "Scaffold example specs" +- Close all Cypress windows + +Test that scaffolded specs run: + +```shell +npm test +``` + +Remove Cypress from `package.json`: + +```shell +npm uninstall cypress --no-package-lock +``` + +## Tests + +Tests are run via the included [docker-compose](docker-compose.yml) file. +The tests rely on factory images, so those must be built first. +Additionally, to run these tests you must export the environment variables in [/factory/.env](../.env) with: + +```shell +set -a && . ../.env && set +a +``` + +See [CONTRIBUTING > Development](../../CONTRIBUTING.md#development) for step-by-step instructions. diff --git a/factory/test-project/argsDefined.Dockerfile b/factory/test-project/argsDefined.Dockerfile new file mode 100644 index 0000000000..e5f89d0d5a --- /dev/null +++ b/factory/test-project/argsDefined.Dockerfile @@ -0,0 +1,14 @@ +# Args are defined in the Dockerfile before the FROM command. +ARG CHROME_VERSION='126.0.6478.114-1' +ARG EDGE_VERSION='126.0.2592.61-1' +ARG FIREFOX_VERSION='128.0' + +ARG BASE_TEST_IMAGE='cypress/factory' + +FROM ${BASE_TEST_IMAGE} +RUN echo "current user: $(whoami)" +ENV CI=1 +COPY . /opt/app +WORKDIR /opt/app +RUN npm install --save-dev cypress +RUN ./node_modules/.bin/cypress verify diff --git a/factory/test-project/cypress.config.js b/factory/test-project/cypress.config.js new file mode 100644 index 0000000000..97f47c4127 --- /dev/null +++ b/factory/test-project/cypress.config.js @@ -0,0 +1,9 @@ +const { defineConfig } = require("cypress"); + +module.exports = defineConfig({ + e2e: { + setupNodeEvents(on, config) { + // implement node event listeners here + }, + }, +}); diff --git a/factory/test-project/cypress/e2e/1-getting-started/todo.cy.js b/factory/test-project/cypress/e2e/1-getting-started/todo.cy.js new file mode 100644 index 0000000000..4768ff923e --- /dev/null +++ b/factory/test-project/cypress/e2e/1-getting-started/todo.cy.js @@ -0,0 +1,143 @@ +/// + +// Welcome to Cypress! +// +// This spec file contains a variety of sample tests +// for a todo list app that are designed to demonstrate +// the power of writing tests in Cypress. +// +// To learn more about how Cypress works and +// what makes it such an awesome testing tool, +// please read our getting started guide: +// https://on.cypress.io/introduction-to-cypress + +describe('example to-do app', () => { + beforeEach(() => { + // Cypress starts out with a blank slate for each test + // so we must tell it to visit our website with the `cy.visit()` command. + // Since we want to visit the same URL at the start of all our tests, + // we include it in our beforeEach function so that it runs before each test + cy.visit('https://example.cypress.io/todo') + }) + + it('displays two todo items by default', () => { + // We use the `cy.get()` command to get all elements that match the selector. + // Then, we use `should` to assert that there are two matched items, + // which are the two default items. + cy.get('.todo-list li').should('have.length', 2) + + // We can go even further and check that the default todos each contain + // the correct text. We use the `first` and `last` functions + // to get just the first and last matched elements individually, + // and then perform an assertion with `should`. + cy.get('.todo-list li').first().should('have.text', 'Pay electric bill') + cy.get('.todo-list li').last().should('have.text', 'Walk the dog') + }) + + it('can add new todo items', () => { + // We'll store our item text in a variable so we can reuse it + const newItem = 'Feed the cat' + + // Let's get the input element and use the `type` command to + // input our new list item. After typing the content of our item, + // we need to type the enter key as well in order to submit the input. + // This input has a data-test attribute so we'll use that to select the + // element in accordance with best practices: + // https://on.cypress.io/selecting-elements + cy.get('[data-test=new-todo]').type(`${newItem}{enter}`) + + // Now that we've typed our new item, let's check that it actually was added to the list. + // Since it's the newest item, it should exist as the last element in the list. + // In addition, with the two default items, we should have a total of 3 elements in the list. + // Since assertions yield the element that was asserted on, + // we can chain both of these assertions together into a single statement. + cy.get('.todo-list li') + .should('have.length', 3) + .last() + .should('have.text', newItem) + }) + + it('can check off an item as completed', () => { + // In addition to using the `get` command to get an element by selector, + // we can also use the `contains` command to get an element by its contents. + // However, this will yield the