Skip to content
Draft
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions .github/workflows/cleanup-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Delete Visual Tests Reports

on:
delete:
branches-ignore: [master, main, gh-pages]

concurrency:
group: ${{ github.event.ref }}
cancel-in-progress: true

jobs:
delete_reports:
name: Delete Reports
runs-on: ubuntu-latest
env:
BRANCH_REPORTS_DIR: reports/${{ github.event.ref }}
steps:
- name: Checkout GitHub Pages Branch
uses: actions/checkout@v5
with:
ref: gh-pages

- name: Set Git User
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"

- name: Check for workflow reports
run: |
if [ -d "$BRANCH_REPORTS_DIR" ] && [ "$(ls -A $BRANCH_REPORTS_DIR)" ]; then
echo "BRANCH_REPORTS_EXIST=true" >> "$GITHUB_ENV"
else
echo "BRANCH_REPORTS_EXIST=false" >> "$GITHUB_ENV"
fi

- name: Delete reports from repo for branch
if: ${{ env.BRANCH_REPORTS_EXIST == 'true' }}
timeout-minutes: 3
run: |
cd "$(dirname "$BRANCH_REPORTS_DIR")"
rm -rf "${{ github.event.ref }}"
git add .
git commit -m "workflow: remove all reports for branch ${{ github.event.ref }}"
while true; do
git pull --rebase
if [ $? -ne 0 ]; then
echo "Failed to rebase. Please review manually."
exit 1
fi
git push
if [ $? -eq 0 ]; then
echo "Successfully pushed HTML reports to repo."
exit 0
fi
done
125 changes: 125 additions & 0 deletions .github/workflows/screenshot-capture.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
name: Screenshot Capture

on:
workflow_run:
workflows: ["Release to Production"]
types: [completed]
workflow_dispatch:

env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PALETTE_API_KEY: ${{ secrets.PALETTE_API_KEY }}
FULLSTORY_ORGID: ${{ secrets.FULLSTORY_ORGID }}
ALGOLIA_ADMIN_KEY: ${{ secrets.ALGOLIA_ADMIN_KEY }}
ALGOLIA_APP_ID: ${{ secrets.ALGOLIA_APP_ID }}
ALGOLIA_SEARCH_KEY: ${{ secrets.ALGOLIA_SEARCH_KEY }}
ALGOLIA_INDEX_NAME: ${{ secrets.ALGOLIA_INDEX_NAME }}
DISABLE_PACKS_INTEGRATIONS: ${{ secrets.DISABLE_PACKS_INTEGRATIONS }}
DISABLE_SECURITY_INTEGRATIONS: ${{ secrets.DISABLE_SECURITY_INTEGRATIONS }}
SHOW_LAST_UPDATE_TIME: ${{ secrets.SHOW_LAST_UPDATE_TIME }}
DSO_AUTH_TOKEN: ${{ secrets.DSO_AUTH_TOKEN }}
SEERS_CMP_KEY: ${{ secrets.SEERS_CMP_KEY }}

jobs:
create-assets:
name: asset-builds
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v5

- name: Setup Node.js Environment
uses: actions/setup-node@v4
with:
node-version: "20"
cache: 'yarn'

- name: Install Dependencies
run: yarn install --frozen-lockfile

- name: Install Playwright browsers
run: npx playwright install --with-deps chromium

- name: Build Website
run: |
touch .env
yarn build

- name: Upload Build
uses: actions/upload-artifact@v4
with:
name: build
path: build/
if-no-files-found: error
retention-days: 1

visual-snapshots:
runs-on: ubuntu-latest
needs: [create-assets]
strategy:
fail-fast: false
matrix:
shardIndex: [1, 2, 3, 4]
shardTotal: [4]
steps:
- name: Checkout Repository
uses: actions/checkout@v5

- name: Setup Node.js Environment
uses: actions/setup-node@v4
with:
node-version: "20"
cache: 'yarn'

- name: Install Dependencies
uses: Wandalen/wretry.action@v3
with:
command: yarn install --frozen-lockfile
attempt_limit: 3
attempt_delay: 60000

- name: Install Playwright browsers
run: npx playwright install --with-deps chromium

- name: Download build artifact
uses: Wandalen/wretry.action@v3
with:
attempt_limit: 3
attempt_delay: 60000
action: actions/download-artifact@v5
with: |
name: build
path: build

- name: Take Screenshots with Playwright
env:
PLAYWRIGHT_SNAPSHOT_DIR: ${{ github.workspace }}/screenshots
run: npx playwright test --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} --update-snapshots || exit 0

- name: Upload Screenshots
uses: actions/upload-artifact@v4
with:
name: screenshots-${{ matrix.shardIndex }}
path: screenshots/
if-no-files-found: error
retention-days: 3

merge-snapshots:
name: Merge Screenshots
runs-on: ubuntu-latest
needs: [visual-snapshots]
steps:
- name: Download screenshots
uses: actions/download-artifact@v5
with:
path: screenshots
pattern: screenshots-*
merge-multiple: true

- name: Upload merged screenshots
uses: actions/upload-artifact@v4
with:
name: screenshots
path: screenshots/
if-no-files-found: error
retention-days: 7
Loading