CircleCI запускает уведомление о сбое перед запуском моих тестов Cypress

#testing #cypress #slack #circleci

Вопрос:

Я совершенно новичок в тестировании, CircleCI и программной инженерии в целом. Сегодня я провел большую смену, чтобы попытаться написать простой тест Cypress, использовать CircleCI для его запуска каждый час и опубликовать в Slack, был ли он успешным.

С первыми двумя я справился, но интеграция со Slack оказалась сложнее, чем я себе представлял. Я подозреваю, что это потому, что я неправильно понял файл config.yml. Вот код.

 version: 2.1
orbs:
  node: circleci/node@4.5.1
  cypress: cypress-io/cypress@1.28.0
  slack: circleci/slack@4.4.2

          
jobs:
  notify:
    executor:
      name: node/default
    steps:
      - slack/notify:
          channel: general
          event: fail
          template: basic_fail_1
          mentions: '@Jac'
      - slack/notify:
          channel: general
          event: pass
          template: success_tagged_deploy_1
          mentions: '@Jac'


workflows:
  version: 2
  commit-workflow:
    jobs:
      - cypress/run:
          record: true
          store_artifacts: true

      - notify:
          context: slack-secrets
  thirty-min-workflow:
    triggers:
      - schedule:
          cron: "0,30 * * * *"
          filters:
            branches:
              only:
                - main
    jobs:
      - cypress/run
      - notify:
          context: slack-secrets


 

Тесты выполняются нормально, как запланировано, и уведомление начинает замедляться, но уведомление запускается, как только начинается сборка, и не зависит от результатов тестов.

Я ломал голову над этим последним пунктом в течение нескольких часов, так что надеюсь, что это легко исправить!

Ответ №1:

Мне удалось это выяснить. В конце концов, все довольно просто. Я добавил свойство post-steps под cypress/run, которое будет запущено после тестов. Поместив slack/notify под постшагами, он успешно запустился после моих тестов и отразил результат.

Вот файл config.yml.

 version: 2.1
orbs:
  node: circleci/node@4.5.1
  cypress: cypress-io/cypress@1.28.0
  slack: circleci/slack@4.4.2

workflows:
  version: 2
  commit-workflow:
    jobs:
      - cypress/run:
          post-steps:
            - slack/notify:
                channel: general
                event: fail
                template: basic_fail_1
                mentions: '@Jack'
 

Ответ №2:

Вы также можете добавить атрибут when в задание cypress и проверить значение on_success, если задание выполнено успешно, а затем запустить задание с уведомлением о замедлении — для получения дополнительной помощи — https://circleci.com/docs/2.0/configuration-reference/#the-when-attribute