GitHub Action
Cypress Screenshot & Video Upload to Slack
This Github action enables you to take the screenshots and videos generated by Cypress after a test run and upload them directly to a Slack channel of your choice. All files are contained within a single message thread to minimize noise.
Required Slack app token. See Internal app tokens
- Create an app
- Under Bot Token Scopes, add
files:write
andchat:write
permissions - Install the app into your workspace
- Invite the bot to whatever channels you want to send the videos and screenshots to
/invite <botname>
- Grab the
Bot User OAuth Token
from theOAuth & Permissions
page - Add that token as a secret to your Github repo's
Actions Secrets
found underSettings -> Secrets
(in the examples below we call itSLACK_TOKEN
)
Required Slack channels to upload to
Optional The folder where Cypress stores screenshots and videos on the build machine.
Default: cypress
(this relative path resolves to /home/runner/work/<REPO_NAME>/<REPO_NAME>/cypress
)
If your project uses Cypress from the project root folder, the default value will work for you.
But if your project uses Cypress in a subfolder (like most monorepos), you'll need to provide the relative path to that folder
(i.e. e2e/cypress
).
(Don't include a trailing slash on your path!)
Optional Custom Slack message text.
Default: A Cypress test just finished. I've placed the screenshots and videos in this thread. Good pie!
on: [push]
jobs:
test-and-upload-results:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: 'Run tests'
uses: cypress-io/github-action@v2
- name: 'Upload screenshots and videos to Slack'
uses: trymbill/[email protected]
with:
token: ${{ secrets.SLACK_TOKEN }}
channels: 'engineering-ops'
on: [pull_request]
jobs:
test-and-upload-results-on-fail:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: 'Run tests'
uses: cypress-io/github-action@v2
- name: 'Upload screenshots and videos to Slack'
uses: trymbill/[email protected]
if: failure()
with:
token: ${{ secrets.SLACK_TOKEN }}
channels: 'engineering-ops'
message-text: 'Cypress tests failed! They have been placed in this thread, good luck.'