Coder Social home page Coder Social logo

simenb / cypress-docker-images Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cypress-io/cypress-docker-images

0.0 2.0 0.0 1.4 MB

Docker images with Cypress dependencies and browsers

Home Page: https://on.cypress.io/continuous-integration

License: MIT License

Shell 12.24% JavaScript 10.90% Dockerfile 76.85%

cypress-docker-images's Introduction

Cypress Docker Images CircleCI

Cypress Docker images are published to Cypress on Docker Hub.

These images provide all of the required dependencies for running Cypress in Docker.

We build four images: click on the image name to see the available tags and versions. 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 A base image template which can be used with ARGs to create a custom docker image. Docker Pulls
cypress/base All operating system dependencies, no Cypress, and no browsers. Docker Pulls
cypress/browsers All operating system dependencies, no Cypress, and some browsers. Docker Pulls
cypress/included All operating system dependencies, Cypress, and some browsers installed globally. Docker Pulls

Tag Selection

If no tag is specified, for example cypress/included, then the tag latest is used by default: cypress/included:latest. It is however recommended to use a specific image tag to avoid breaking changes when new images are released, especially when they include new major versions of Node.js or Cypress.

Some examples with specific tags including an explanation of the tag meanings are:

Once an image with a specific version tag (except latest) has been published to Cypress on Docker Hub it is frozen. This prevents accidental changes.

When a new version is published, an image copy with the latest tag is also published. This means that the Docker image selected using the latest tag (or selected by default if no tag is specified) will also change over time. Specify an explicit version, for example cypress/base:18.16.0, to access instead a frozen version.

📍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 under:

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. 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 our docs for examples.

If you want to use the cypress/included image, read Run Cypress with a single Docker command

Common problems

Cannot run post-install hook

Some versions of Node.js restrict running the postinstall hook with the following error message:

lifecycle [email protected]~postinstall: cannot run in wd [email protected]

In that case run install with npm install --unsafe-perm flag, or set an environment variable in the container

npm_config_unsafe_perm: true

Blank screen in Chrome

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:

export QT_X11_NO_MITSHM=1
export _X11_NO_MITSHM=1
export _MITSHM=0

See issue #270

Firefox not found

By default, the containers run with the root user. However, Firefox by design cannot run with root user, leading to failures such as:

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.

To resolve this, the container needs to run with user id 1001.

One example using the cypress-io/github-action

name: E2E in custom container
on: push
jobs:
  cypress-run:
    runs-on: ubuntu-22.04
    container: 
     image: cypress/browsers:node18.12.0-chrome106-ff106
     options: --user 1001  
    steps:
      - uses: actions/checkout@v3
      - uses: cypress-io/github-action@v5
        with:
          browser: firefox

Or within a Dockerfile

# Use Cypress base image
FROM cypress/browsers:node18.12.0-chrome106-ff106

# Change to a non-root user
USER 1001

#rest of your dockerfile here

The GitHub Actions Runner creates the /github/home ($HOME) directory with non-root ownership 1001 (runner). Specifying this same user allows Cypress to detect and run Firefox.

Contributing

See CONTRIBUTING.md

License

See LICENSE

cypress-docker-images's People

Contributors

12 avatar admah avatar astone123 avatar atofstryker avatar bahmutov avatar bluewinds avatar brian-mann avatar cacieprins avatar chrisbreiding avatar dankreiger avatar dlgshi avatar eiel avatar emilyrohrbough avatar flotwig avatar jennifer-shehane avatar jordanpowell88 avatar kuceb avatar magcho avatar mike-plummer avatar mikemcc399 avatar mjhenkes avatar mschile avatar mtlynch avatar ryanthemanuel avatar rybon avatar sj-e2digital avatar tbiethman avatar travnels avatar vaibsaraswat avatar wtanna avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.