Конфигурация CircleCI + Cypress - PullRequest
0 голосов
/ 08 мая 2018

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

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

enter image description here

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

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

1 Ответ

0 голосов
/ 28 июня 2018

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

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

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:

Почему?

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

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

...