首页 > 解决方案 > Github Action Cypress Run 在测试错误时静默失败

问题描述

使用 Github 操作运行 Cypress e2e 测试,但当测试失败时,作业仍然通过。

name: E2E
on:
  push:
    branches: [ master ]
    paths-ignore: [ '**.md' ]
  schedule:
    - cron: '0 8-20 * * *'

jobs:
  cypress-run:
    runs-on: ubuntu-16.04
    steps:
      - name: Checkout
        uses: actions/checkout@v1

      - name: Cypress run
        uses: cypress-io/github-action@v2
        continue-on-error: false
        with:
          record: true
        env:
          CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}

在此处输入图像描述

我希望工作失败的原因是通过 Github 工作失败或像这样的松弛通知来获得通知

  - uses: 8398a7/action-slack@v3
    if: job.status == 'failure'
    with:
      status: ${{ job.status }}
      fields: repo
      channel: '#dev'
      mention: here
      text: "E2E tests failed"
    env:
      SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

标签: cypressgithub-actions

解决方案


您是否尝试过if: ${{ failure() }}在最后添加一个?

我最终创建了自己的 curl 请求,该请求会在特定作业出现任何故障时通知 Slack。将它添加到最后对我有用。

name: E2E
on:
  push:
    branches: [ master ]
    paths-ignore: [ '**.md' ]
  schedule:
    - cron: '0 8-20 * * *'

jobs:
  cypress-run:
    runs-on: ubuntu-16.04
    steps:
      - name: Checkout
        uses: actions/checkout@v1

      - name: Cypress run
        uses: cypress-io/github-action@v2
        continue-on-error: false
        with:
          record: true
        env:
          CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
+
+      - name: Notify Test Failed
+        if: ${{ failure() }}
+        run: |
+         curl -X POST -H "Content-type:application/json" --data "{\"type\":\"mrkdwn\",\"text\":\".\n❌ *Cypress Run Failed*:\n*Branch:* $GITHUB_REF\n*Repo:* $GITHUB_REPOSITORY\n*SHA1:* $GITHUB_SHA\n*User:* $GITHUB_ACTOR\n.\n\"}" ${{ secrets.SLACK_WEBHOOK }}

推荐阅读