UI: deterministic uuid generation in UI tests #1280
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: UI | |
on: | |
# Triggers the workflow on push or pull request events but only for the main branch | |
push: | |
branches: [main] | |
pull_request: | |
branches: [main] | |
types: | |
- opened | |
- reopened | |
- synchronize | |
- ready_for_review | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
changed_files: | |
runs-on: ubuntu-22.04 # windows-latest || macos-latest | |
name: 👀 List Changed UI Files | |
outputs: | |
ui_any_modified: ${{ steps.changed-files.outputs.ui_any_modified == 'true' }} | |
evidently_python_any_modified: ${{ steps.changed-files.outputs.evidently_python_any_modified == 'true' }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get all UI files that have changed | |
id: changed-files | |
uses: tj-actions/changed-files@v42 | |
with: | |
files_yaml: | | |
ui: | |
- ui/** | |
evidently_python: | |
- src/evidently/** | |
- requirements.dev.txt | |
- requirements.min.txt | |
- setup.py | |
- setup.cfg | |
- setupbase.py | |
- name: Run step if UI file(s) changed | |
if: steps.changed-files.outputs.ui_any_modified == 'true' | |
run: | | |
echo "One or more ui file(s) has changed." | |
echo "List all the files that have changed: ${{ steps.changed-files.outputs.ui_all_changed_and_modified_files }}" | |
- name: Run step if Playwright file(s) changed | |
if: steps.changed-files.outputs.evidently_python_any_modified == 'true' | |
run: | | |
echo "One or more evidently_python file(s) has changed." | |
echo "List all the files that have changed: ${{ steps.changed-files.outputs.evidently_python_all_changed_and_modified_files }}" | |
ui-build: | |
name: UI type-check and build | |
runs-on: ubuntu-22.04 | |
needs: changed_files | |
if: ${{ github.event.pull_request.draft == false && needs.changed_files.outputs.ui_any_modified == 'true' }} | |
steps: | |
- name: ⬇️ Checkout repo | |
uses: actions/checkout@v4 | |
- name: 📥 Install ui dependencies | |
uses: ./.github/share-actions/ui-node-pnpm-install | |
- name: 🔬 Type check | |
working-directory: ui | |
run: pnpm type-check | |
- name: 🔧 Build | |
working-directory: ui | |
run: pnpm build | |
- name: 🔬 Analyze deps | |
working-directory: ui/service | |
run: npx vite-bundle-visualizer@1.0.0 -o vite-bundle-report/index.html | |
- uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: vite-bundle-visualizer | |
path: ui/service/vite-bundle-report | |
retention-days: 30 | |
ui-test: | |
name: Playwright tests for Service | |
runs-on: ubuntu-22.04 | |
needs: changed_files | |
if: ${{ github.event.pull_request.draft == false && needs.changed_files.outputs.evidently_python_any_modified == 'true' }} | |
steps: | |
- name: ⬇️ Checkout repo | |
uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.9" | |
architecture: "x64" | |
cache: "pip" | |
- name: Install Evidently | |
run: pip install -e . | |
- name: Install dvc | |
run: pip install 'dvc[gs]==3.50.1' | |
- name: Pull test data | |
run: dvc pull | |
- name: 📥 Install ui dependencies | |
uses: ./.github/share-actions/ui-node-pnpm-install | |
- name: Install Playwright Browsers | |
working-directory: ui | |
run: pnpm dlx playwright@1.43.0 install --with-deps | |
- uses: actions/cache@v3 | |
id: cache-bikes-dataset | |
env: | |
cache-name: cache-bikes-dataset | |
with: | |
path: Bike-Sharing-Dataset.zip | |
key: cache-bikes-dataset | |
- name: Download test data | |
if: ${{ steps.cache-bikes-dataset.outputs.cache-hit != 'true' }} | |
run: curl -k https://archive.ics.uci.edu/static/public/275/bike+sharing+dataset.zip -o Bike-Sharing-Dataset.zip | |
- name: Run UI | |
run: evidently ui --use-deterministic-uuid --port 8000 --workspace workspace-for-visual-testing --demo-projects all & | |
- name: Wait UI to be ready to test | |
working-directory: ui/service | |
run: pnpm wait-on tcp:127.0.0.1:8000 -t 180000 | |
- name: Run Service Playwright tests | |
working-directory: ui/service | |
run: pnpm test | |
- uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: playwright-report | |
path: ui/service/playwright-report/ | |
retention-days: 30 |