[QA] Automatic vizro ai score tests #1697
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: Integration tests for VizroAI | |
defaults: | |
run: | |
working-directory: vizro-ai | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
branches: | |
- main | |
paths: | |
- "vizro-ai/**" | |
- "!vizro-ai/docs/**" | |
workflow_dispatch: | |
env: | |
PYTHONUNBUFFERED: 1 | |
FORCE_COLOR: 1 | |
jobs: | |
test-integration-vizro-ai-fork: | |
if: ${{ github.event.pull_request.head.repo.fork }} | |
name: test-integration-vizro-ai on Py${{ matrix.config.python-version }} ${{ matrix.config.label }} | |
runs-on: ${{ matrix.config.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
# This is not a nice way to define the matrix, but it's the only way that's possible so that we only run | |
# the job on Windows on merge to main rather than in every PR. See: | |
# https://stackoverflow.com/questions/66025220/paired-values-in-github-actions-matrix | |
# https://github.com/orgs/community/discussions/26253 | |
# https://github.com/actions/runner/issues/1985 | |
config: | |
- python-version: "3.9" | |
hatch-env: all.py3.9 | |
os: ubuntu-latest | |
- python-version: "3.10" | |
hatch-env: all.py3.10 | |
os: ubuntu-latest | |
- python-version: "3.11" | |
hatch-env: all.py3.11 | |
os: ubuntu-latest | |
- python-version: "3.12" | |
hatch-env: all.py3.12 | |
os: ubuntu-latest | |
- python-version: "3.9" | |
hatch-env: lower-bounds | |
os: ubuntu-latest | |
label: lower bounds | |
- python-version: "3.12" | |
hatch-env: all.py3.12 | |
os: windows-latest | |
label: Windows | |
is_non_release_pr: | |
- ${{ github.event_name == 'pull_request' && !startsWith(github.head_ref, 'release')}} | |
exclude: | |
- is_non_release_pr: true | |
config: | |
python-version: "3.12" | |
hatch-env: all.py3.12 | |
os: windows-latest | |
label: Windows | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Passed fork step | |
run: echo "Success!" | |
test-integration-vizro-ai: | |
if: ${{ ! github.event.pull_request.head.repo.fork }} | |
name: test-integration-vizro-ai on Py${{ matrix.config.python-version }} ${{ matrix.config.label }} | |
runs-on: ${{ matrix.config.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
# This is not a nice way to define the matrix, but it's the only way that's possible so that we only run | |
# the job on Windows on merge to main rather than in every PR. See: | |
# https://stackoverflow.com/questions/66025220/paired-values-in-github-actions-matrix | |
# https://github.com/orgs/community/discussions/26253 | |
# https://github.com/actions/runner/issues/1985 | |
config: | |
- python-version: "3.9" | |
hatch-env: all.py3.9 | |
os: ubuntu-latest | |
- python-version: "3.10" | |
hatch-env: all.py3.10 | |
os: ubuntu-latest | |
- python-version: "3.11" | |
hatch-env: all.py3.11 | |
os: ubuntu-latest | |
- python-version: "3.12" | |
hatch-env: all.py3.12 | |
os: ubuntu-latest | |
- python-version: "3.9" | |
hatch-env: lower-bounds | |
os: ubuntu-latest | |
label: lower bounds | |
- python-version: "3.12" | |
hatch-env: all.py3.12 | |
os: windows-latest | |
label: Windows | |
is_non_release_pr: | |
- ${{ github.event_name == 'pull_request' && !startsWith(github.head_ref, 'release')}} | |
exclude: | |
- is_non_release_pr: true | |
config: | |
python-version: "3.12" | |
hatch-env: all.py3.12 | |
os: windows-latest | |
label: Windows | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.config.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.config.python-version }} | |
- name: Install Hatch | |
run: pip install hatch | |
- name: Show dependency tree | |
run: hatch run ${{ matrix.config.hatch-env }}:pip tree | |
- name: Run vizro-ai integration tests with PyPI vizro | |
run: hatch run ${{ matrix.config.hatch-env }}:test-integration | |
env: | |
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
OPENAI_API_BASE: ${{ secrets.OPENAI_API_BASE }} | |
VIZRO_TYPE: pypi | |
- name: Run vizro-ai integration tests with local vizro | |
run: | | |
hatch run ${{ matrix.config.hatch-env }}:pip install ../vizro-core | |
hatch run ${{ matrix.config.hatch-env }}:test-integration | |
env: | |
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
OPENAI_API_BASE: ${{ secrets.OPENAI_API_BASE }} | |
VIZRO_TYPE: local | |
- name: Send custom JSON data to Slack | |
id: slack | |
uses: slackapi/slack-github-action@v1.27.0 | |
if: failure() | |
with: | |
payload: | | |
{ | |
"text": "Vizro-ai ${{ matrix.config.hatch-env }} integration tests build result: ${{ job.status }}\nBranch: ${{ github.head_ref }}\n${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
} | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK |