UI: huge refactor #2186
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: | |
- .github/** | |
- ui/** | |
evidently_python: | |
- .github/** | |
- 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-code-check: | |
name: UI code-check | |
runs-on: ubuntu-22.04 | |
needs: changed_files | |
if: ${{ github.event.pull_request.draft == false && (needs.changed_files.outputs.ui_any_modified == 'true' || needs.changed_files.outputs.evidently_python_any_modified == 'true') }} | |
steps: | |
- name: ⬇️ Checkout repo | |
uses: actions/checkout@v4 | |
- name: 📥 Install ui dependencies | |
uses: ./.github/share-actions/ui-node-pnpm-install | |
- name: 👌 Get types for UI | |
uses: ./.github/share-actions/ui-types-from-backend | |
- name: 🔬 Type check | |
working-directory: ui | |
run: pnpm type-check | |
- name: 🔬 Check code quality | |
working-directory: ui | |
run: pnpm code-check | |
ui-deps-analyze: | |
name: UI deps analyze | |
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: 🔬 Analyze deps | |
working-directory: ui/service | |
run: npx [email protected] -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-build: | |
name: UI 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: 🔧 Build | |
working-directory: ui | |
run: pnpm build | |
ui-test: | |
name: UI playwright tests | |
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.11" | |
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/service | |
run: pnpm exec playwright install --with-deps chromium | |
- name: 🔍 Get bikes dataset cached | |
uses: ./.github/share-actions/get-bikes-dataset-cached | |
- name: Run UI | |
run: EXPERIMENTAL_DETERMINISTIC_UUID="true" evidently ui --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 4m | |
- 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 |