Skip to content

chore(demo-playwright): add Playwright #5652

chore(demo-playwright): add Playwright

chore(demo-playwright): add Playwright #5652

Workflow file for this run

name: ⚙️ E2E tests
on:
pull_request:
env:
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
jobs:
build-demo:
if: ${{ !contains(github.head_ref , 'release/') }}
name: Build demo
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
with:
fetch-depth: 10
- name: Setup global variables
uses: ./.github/actions/variables
- name: Try rebase locally for check affected e2e
uses: ./.github/actions/rebase
continue-on-error: true
- name: Setup Node.js and Cache
uses: ./.github/actions/nodejs
- name: Building demo-app of git-branch without cache
run: npx nx build demo -c next --output-path ${{ env.DIST }}
- name: Upload cache / ${{ env.CACHE_DIST_KEY }}
uses: actions/cache/[email protected]
with:
path: dist/demo
key: ${{ env.CACHE_DIST_KEY }}
cypress:
if: ${{ !contains(github.head_ref , 'release/') }}
needs: [build-demo]
runs-on: ubuntu-latest
services:
sorry-cypress-director:
image: agoldis/sorry-cypress-director:2.5.8
ports:
- 1234:1234
strategy:
fail-fast: false
matrix:
project: [addon-mobile]
name: ${{ matrix.project }}
steps:
- uses: actions/[email protected]
- name: Setup global variables
uses: ./.github/actions/variables
- name: Setup Node.js and Cache
uses: ./.github/actions/nodejs
- name: Download cache / ${{ env.CACHE_DIST_KEY }}
uses: actions/cache/[email protected]
with:
path: dist/demo
key: ${{ env.CACHE_DIST_KEY }}
- name: Serve ${{ env.DIST }} in background
run: npx nx serve-compiled demo --path ${{ env.DIST }} --port ${{ env.NG_SERVER_PORT }}
- name: Run screenshot tests on ${{ env.DIST }}
run: npx nx e2e demo-integrations --key localhost --folder ${{ matrix.project }}
- name: Clean up resources
run: npx kill-port --port ${{ env.NG_SERVER_PORT }}
- name: Download ${{ env.DIST_NEXT }} for serve locally
run: |
git clone \
--depth 1 \
--branch snapshots/demo/next/${{ github.base_ref }} \
https://github.com/Tinkoff/taiga-ui.git ${{ env.DIST_NEXT }}
- name: Serve ${{ env.DIST_NEXT }} in background
run: npx nx serve-compiled demo --path ${{ env.DIST_NEXT }} --port ${{ env.NG_SERVER_PORT }}
- name: Run screenshot tests on ${{ env.DIST_NEXT }}
continue-on-error: true
run: npx nx e2e demo-integrations --key next --folder ${{ matrix.project }}
- name: Clean up resources
run: npx kill-port --port ${{ env.NG_SERVER_PORT }}
- name: Debug output
continue-on-error: true
run: tree ${{ env.SNAPSHOTS_PATH }}
- name: Upload artifacts / ${{ env.SNAPSHOTS_ARTIFACTS_KEY }}
uses: actions/[email protected]
with:
path: ${{ env.SNAPSHOTS_PATH }}/**/*.diff.png
name: ${{ env.SNAPSHOTS_ARTIFACTS_KEY }}
if-no-files-found: ignore
retention-days: 1
playwright:
if: ${{ !contains(github.head_ref , 'release/') }}
runs-on: ubuntu-latest
needs: [build-demo]
steps:
- uses: actions/[email protected]
- name: Setup global variables
uses: ./.github/actions/variables
- name: Setup Node.js and Cache
uses: ./.github/actions/nodejs
- name: Install Playwright Browsers
run: npx playwright install --with-deps
- name: Download cache / ${{ env.CACHE_DIST_KEY }}
uses: actions/cache/[email protected]
with:
path: dist/demo
key: ${{ env.CACHE_DIST_KEY }}
- name: Serve ${{ env.DIST }} in background
run: npx nx serve-compiled demo --path ${{ env.DIST }} --port ${{ env.NG_SERVER_PORT }}
- name: Run screenshot tests on ${{ env.DIST }}
continue-on-error: true
run: npx nx e2e demo-playwright
- name: Clean up resources
run: npx kill-port --port ${{ env.NG_SERVER_PORT }}
- name: Download ${{ env.DIST_NEXT }} for serve locally
run: |
git clone \
--depth 1 \
--branch snapshots/demo/next/${{ github.base_ref }} \
https://github.com/Tinkoff/taiga-ui.git ${{ env.DIST_NEXT }}
- name: Serve ${{ env.DIST_NEXT }} in background
run: npx nx serve-compiled demo --path ${{ env.DIST_NEXT }} --port ${{ env.NG_SERVER_PORT }}
- name: Run screenshot tests on ${{ env.DIST_NEXT }}
run: npx nx e2e demo-playwright -- --update-snapshots
- name: Clean up resources
run: npx kill-port --port ${{ env.NG_SERVER_PORT }}
- name: Debug output
continue-on-error: true
run: tree ${{ env.PLAYWRIGHT_SNAPSHOTS_PATH }}
- name: Upload artifacts / ${{ env.PLAYWRIGHT_SNAPSHOTS_ARTIFACTS_KEY }}
uses: actions/[email protected]
with:
path: ${{ env.PLAYWRIGHT_SNAPSHOTS_PATH }}/**/*-diff.png
name: ${{ env.PLAYWRIGHT_SNAPSHOTS_ARTIFACTS_KEY }}
if-no-files-found: ignore
retention-days: 1
result:
if: ${{ !contains(github.head_ref , 'release/') }}
name: result
needs: [cypress, playwright]
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- name: Setup global variables
uses: ./.github/actions/variables
- name: Download artifacts / ${{ env.SNAPSHOTS_ARTIFACTS_KEY }}
continue-on-error: true
uses: actions/[email protected]
with:
name: ${{ env.SNAPSHOTS_ARTIFACTS_KEY }}
path: ./total/cypress
- name: Download artifacts / ${{ env.PLAYWRIGHT_SNAPSHOTS_ARTIFACTS_KEY }}
continue-on-error: true
uses: actions/[email protected]
with:
name: ${{ env.PLAYWRIGHT_SNAPSHOTS_ARTIFACTS_KEY }}
path: ./total/playwright
- name: Check if diff-output exists
id: diff-checker
run: |
echo "diff_exist=$(find ./total -regex '.*diff\.png$' | wc -l | sed -e 's/^[[:space:]]*//')" >> $GITHUB_OUTPUT
- name: Fall with an error if diff-output exists
if: ${{ steps.diff-checker.outputs.diff_exist != '0' }}
run: |
find ./total -regex '.*diff\.png$' -exec echo "{}" \;
exit 1
concurrency:
group: e2e-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true