name: End-to-End tests run-name: E2E Tests ${{ inputs.branch }} - ${{ inputs.user }} on: schedule: - cron: '0 3 * * *' workflow_dispatch: inputs: branch: description: 'GitHub branch to test.' required: false default: 'master' spec: description: 'Specify specs.' required: false default: 'e2e/*' type: string user: description: 'User who kicked this off.' required: false default: 'schedule' start-url: description: 'URL to call after workflow is kicked off.' required: false default: '' success-url: description: 'URL to call after workflow is done.' required: false default: '' jobs: calls-start-url: name: Calls start URL runs-on: ubuntu-latest if: ${{ github.event.inputs.start-url != '' }} steps: - name: Calls start URL run: | [[ "${{github.event.inputs.start-url}}" != "" ]] && curl -v -X POST -d 'url=${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}' ${{github.event.inputs.start-url}} || echo "" shell: bash run-e2e-tests: name: E2E [Electron/Node 18] uses: ./.github/workflows/e2e-reusable.yml with: branch: ${{ github.event.inputs.branch || 'master' }} user: ${{ github.event.inputs.user || 'PR User' }} spec: ${{ github.event.inputs.spec || 'e2e/*' }} secrets: CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} calls-success-url-notify: name: Calls success URL and notifies runs-on: ubuntu-latest needs: [run-e2e-tests] if: ${{ github.event.inputs.success-url != '' }} steps: - name: Notify Slack on failure uses: act10ns/slack@v2.0.0 if: failure() with: status: ${{ job.status }} channel: '#alerts-build' webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} message: E2E failure for branch `${{ inputs.branch || 'master' }}` deployed by ${{ inputs.user || 'schedule' }} (${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) - name: Call Success URL - optionally run: | [[ "${{github.event.inputs.success-url}}" != "" ]] && curl -v ${{github.event.inputs.success-url}} || echo "" shell: bash