Coder Social home page Coder Social logo

madiodio / cypress-react-component-test-examples Goto Github PK

View Code? Open in Web Editor NEW

This project forked from muratkeremozcan/cypress-react-component-test-examples

0.0 0.0 0.0 4.36 MB

github actions multi stage caching, using a react app and cypress

Shell 0.01% JavaScript 80.86% TypeScript 13.71% CSS 4.67% HTML 0.35% SCSS 0.42%

cypress-react-component-test-examples's Introduction

Cypress React Component Test Examples

cypress-react-component-test-examples

This repo started as a practice project, replicating & reviving old Cypress React component tests, hidden in the main Cypress repo. As time passed, new examples were added and are still being added with Cypress 10. It can be used as a starting point for new tests, showing working examples.

yarn install --registry https://registry.yarnpkg.com # specify the registry in case you are using a proprietary one

# e2e
yarn start # start the server
yarn cy:open # for cypress e2e test runner
yarn cy:run # headless version

# component
# no need to have server running for these:
yarn cy:open-ct # for cypress component test runner
yarn cy:run-ct # headless version

CI setup: multi stage caching using Github Actions

The goal

Achieve this in a GitHub Actions CI as efficiently as possible:

build  -->  lint
       -->  type check
       -->  Cypress e2e tests
       -->  Cypress component tests

Why?

Especially in large repositories running all the jobs serially is not performant.

Caching is not very easy to optimize. Real / working GitHub Actions examples are scarce and/or needlessly complicated.

How?

  1. actions/checkout: used in every job.

  2. actions/setup-node with cache: 'yarn' (or npm): used in the build job.

  3. bahmutov/npm-install : used in every job for installing dependencies with caching and without any configuration.

    • On the build job: install & cache
    • Subsequent jobs: depend on build, and do the same install step, but by this time the cache is present and they get the modules.

    useRollingCache : recommended for large projects.

    CYPRESS_INSTALL_BINARY: 0 : no need to install the Cypress binary everywhere, we are already using the docker image in the e2e job

  4. cypress-io/github-action@v3: used in the Cypress e2e test job

    • container: cypress/included:10.2.0: save time on not having to install the Cypress binary
    • bahmutov/npm-install: save time on dependencies by caching
    • install: false: because if we install, the CI is slower than relying on bahmutov/npm-install@v1.

    Compare these runs:

    • install: true, not using bahmutov/npm-install@v1: 2:26 for e2e
    • install false, using bahmutov/npm-install@v1: 1:55 for e2e

cypress-react-component-test-examples's People

Contributors

muratkeremozcan avatar renovate-bot avatar renovate[bot] 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.