Конфигурация CircleCI + Cypress

Здравствуйте, у меня проблема с настройкой CircleCi вместе с Cypress.

Я включил образ докера со всеми необходимыми зависимостями, но он все равно не работает. Я перепробовал около 40 разных конфигов, но безрезультатно. Пожалуйста, проверьте мою конфигурацию и вывод, прикрепленные на скриншотах ниже.

введите здесь описание изображения

version: 2
jobs:
  build:
    docker:
      - image: circleci/node:9.2.0

      - image: circleci/mongo:3.4.4
      - image: cypress/base:8

working_directory: ~/repo

steps:
  - checkout

  - restore_cache:
      keys:
      - v1-dependencies-{{ checksum "package.json" }}
      - v1-dependencies-

  - run: yarn install

  - save_cache:
      paths:
        - node_modules
      key: v1-dependencies-{{ checksum "package.json" }}

  - run: yarn test   // THIS COMMAND RUNS UNIT TESTS - and it is working ok

  - run: yarn run dev & $(npm bin)/cypress run // THIS ONE IS FAILING

Я также понял, что если я удаляю изображения для node / mongo и запускаю только тесты e2e, он работает. Проблема возникает, когда я пытаюсь запустить как модульный, так и e2e-тесты с тремя образами докеров.


person Rachomir    schedule 07.05.2018    source источник
comment
Это проект с открытым исходным кодом? Если нет, не могли бы вы предоставить репо с реплицируемым примером кода, чтобы другие могли его протестировать? Кроме того, снимки экрана редко бывают так полезны, как копирование фактического текста.   -  person Venantius    schedule 08.05.2018
comment
Изменено по запросу. Это частное репо, но я рад пригласить вас, если вы знаете, как это исправить.   -  person Rachomir    schedule 08.05.2018
comment
В каком экземпляре вы хотите, чтобы ваши тесты выполнялись? Если удаление двух других заставит все работать, может быть, просто переместите Cypress на первое изображение в списке?   -  person Venantius    schedule 08.05.2018
comment
Я тоже пытался это сделать   -  person Rachomir    schedule 08.05.2018


Ответы (2)


Я попробовал ответ bkcura, но он не сработал, и та же ошибка все еще появляется.

Поэтому я попытался использовать новую функцию Круга (сферы), чтобы смешать два шара:

И это работает ????

Вот мой config.yml:

version: 2.1
orbs:
  cypress: cypress-io/cypress@1
  react: thefrontside/[email protected]
workflows:
  push:
    jobs:
      - react/install
      - react/test:
          requires:
            - react/install
  build:
    jobs:
      - cypress/run:
          yarn: true
          start: yarn start
          wait-on: 'http://localhost:3000'
          no-workspace: true

Репо с демонстрацией: https://github.com/jeanbauer/create-react-app-cypress-circle-ci

Примечание. Возможно, это не так эффективно, поэтому, если вы заметите какие-либо улучшения, отправьте мне сообщение о проблеме здесь

person Jean Bauer    schedule 02.09.2019

См. Документацию здесь: https://docs.cypress.io/guides/guides/continuous-integration.html#Example-circle-yml-v2-config-file-with-yarn

Вам нужно не кешировать node_modules, а вместо этого кешировать ~/.cache:

version: 2
jobs:
  build:
    docker:
      - image: cypress/base:8
        environment:
          ## this enables colors in the output
          TERM: xterm
    working_directory: ~/app
    steps:
      - checkout
      - restore_cache:
          keys:
            - v1-deps-{{ .Branch }}-{{ checksum "package.json" }}
            - v1-deps-{{ .Branch }}
            - v1-deps
      - run:
          name: Install Dependencies
          command: yarn install --frozen-lockfile
      - save_cache:
          key: v1-deps-{{ .Branch }}-{{ checksum "package.json" }}
          paths:
            - ~/.cache  ## cache both yarn and Cypress!
      - run: $(yarn bin)/cypress run --record --key <record_key>

Почему?

Cypress устанавливает предварительно созданный двоичный файл для конкретной платформы вне папки вашего проекта, в ~/.cache/Cypress это ~ 200 МБ, и для его загрузки требуется некоторое время, поэтому вам следует кэшировать его.

Также он устанавливается только на postInstall, чего не произойдет, если вы кешируете node_modules, отсюда и сообщение об ошибке =)

person bkucera    schedule 28.06.2018