Validate ComputedVar dependencies, add tests #4899
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: integration-tests | |
on: | |
push: | |
branches: ['main'] | |
paths-ignore: | |
- '**/*.md' | |
pull_request: | |
branches: ['main'] | |
paths-ignore: | |
- '**/*.md' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.id }} | |
cancel-in-progress: true | |
permissions: | |
contents: read | |
defaults: | |
run: | |
shell: bash | |
env: | |
# Windows CI would fail without this. | |
# Ref: https://gist.github.com/NodeJSmith/e7e37f2d3f162456869f015f842bcf15 | |
# TODO: can we fix windows encoding natively within reflex? Bug above can hit real users too (less common, but possible) | |
# - Catch encoding errors when printing logs | |
# - Best effort print lines that contain illegal chars (map to some default char, etc.) | |
PYTHONIOENCODING: 'utf8' | |
TELEMETRY_ENABLED: false | |
NODE_OPTIONS: '--max_old_space_size=4096' | |
DATABASE_URL: ${{ secrets.DATABASE_URL }} | |
PR_TITLE: ${{ github.event.pull_request.title }} | |
jobs: | |
example-counter: | |
env: | |
OUTPUT_FILE: import_benchmark.json | |
timeout-minutes: 30 | |
strategy: | |
# Prioritize getting more information out of the workflow (even if something fails) | |
fail-fast: false | |
matrix: | |
# Show OS combos first in GUI | |
os: [ubuntu-latest, windows-latest, macos-12] | |
python-version: ['3.8.18', '3.9.18', '3.10.13', '3.11.5', '3.12.0'] | |
exclude: | |
- os: windows-latest | |
python-version: '3.10.13' | |
- os: windows-latest | |
python-version: '3.9.18' | |
- os: windows-latest | |
python-version: '3.8.18' | |
include: | |
- os: windows-latest | |
python-version: '3.10.11' | |
- os: windows-latest | |
python-version: '3.9.13' | |
- os: windows-latest | |
python-version: '3.8.10' | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/setup_build_env | |
with: | |
python-version: ${{ matrix.python-version }} | |
run-poetry-install: true | |
create-venv-at-path: .venv | |
- name: Clone Reflex Examples Repo | |
uses: actions/checkout@v4 | |
with: | |
repository: reflex-dev/reflex-examples | |
path: reflex-examples | |
- name: Install requirements for counter example | |
working-directory: ./reflex-examples/counter | |
run: | | |
poetry run uv pip install -r requirements.txt | |
- name: Install additional dependencies for DB access | |
run: poetry run uv pip install psycopg2-binary | |
- name: Check export --backend-only before init for counter example | |
working-directory: ./reflex-examples/counter | |
run: | | |
poetry run reflex export --backend-only | |
- name: Check run --backend-only before init for counter example | |
run: | | |
poetry run bash scripts/integration.sh ./reflex-examples/counter dev 8001 --backend-only --backend-port 8001 | |
- name: Init Website for counter example | |
working-directory: ./reflex-examples/counter | |
run: | | |
poetry run reflex init --loglevel debug | |
- name: Check export for counter example | |
working-directory: ./reflex-examples/counter | |
run: | | |
poetry run reflex export | |
- name: Run Website and Check for errors | |
run: | | |
# Check that npm is home | |
npm -v | |
poetry run bash scripts/integration.sh ./reflex-examples/counter dev | |
- name: Measure and upload .web size | |
if: ${{ env.DATABASE_URL}} | |
run: | |
poetry run python scripts/benchmarks/benchmark_reflex_size.py --os "${{ matrix.os }}" | |
--python-version "${{ matrix.python-version }}" --commit-sha "${{ github.sha }}" | |
--pr-id "${{ github.event.pull_request.id }}" --db-url "${{ env.DATABASE_URL }}" | |
--branch-name "${{ github.head_ref || github.ref_name }}" | |
--measurement-type "counter-app-dot-web" --path ./reflex-examples/counter/.web | |
- name: Install hyperfine | |
run: cargo install hyperfine | |
- name: Benchmark imports | |
working-directory: ./reflex-examples/counter | |
run: hyperfine --warmup 3 "export POETRY_VIRTUALENVS_PATH=../../.venv; poetry run python counter/counter.py" --show-output --export-json "${{ env.OUTPUT_FILE }}" --shell bash | |
- name: Upload Benchmarks | |
if : ${{ env.DATABASE_URL }} | |
run: | |
poetry run python scripts/benchmarks/benchmark_imports.py --os "${{ matrix.os }}" | |
--python-version "${{ matrix.python-version }}" --commit-sha "${{ github.sha }}" | |
--benchmark-json "./reflex-examples/counter/${{ env.OUTPUT_FILE }}" | |
--db-url "${{ env.DATABASE_URL }}" --branch-name "${{ github.head_ref || github.ref_name }}" | |
--event-type "${{ github.event_name }}" --actor "${{ github.actor }}" --pr-id "${{ github.event.pull_request.id }}" | |
reflex-web: | |
strategy: | |
fail-fast: false | |
matrix: | |
# Show OS combos first in GUI | |
os: [ubuntu-latest, windows-latest, macos-12] | |
python-version: ['3.10.11', '3.11.4'] | |
env: | |
REFLEX_WEB_WINDOWS_OVERRIDE: '1' | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/setup_build_env | |
with: | |
python-version: ${{ matrix.python-version }} | |
run-poetry-install: true | |
create-venv-at-path: .venv | |
- name: Clone Reflex Website Repo | |
uses: actions/checkout@v4 | |
with: | |
repository: reflex-dev/reflex-web | |
ref: main | |
path: reflex-web | |
- name: Install Requirements for reflex-web | |
working-directory: ./reflex-web | |
run: poetry run uv pip install -r requirements.txt | |
- name: Install additional dependencies for DB access | |
run: poetry run uv pip install psycopg2-binary | |
- name: Init Website for reflex-web | |
working-directory: ./reflex-web | |
run: poetry run reflex init | |
- name: Run Website and Check for errors | |
run: | | |
# Check that npm is home | |
npm -v | |
poetry run bash scripts/integration.sh ./reflex-web prod | |
- name: Measure and upload .web size | |
if: ${{ env.DATABASE_URL}} | |
run: | |
poetry run python scripts/benchmarks/benchmark_reflex_size.py --os "${{ matrix.os }}" | |
--python-version "${{ matrix.python-version }}" --commit-sha "${{ github.sha }}" | |
--pr-id "${{ github.event.pull_request.id }}" | |
--db-url "${{ env.DATABASE_URL }}" --branch-name "${{ github.head_ref || github.ref_name }}" | |
--measurement-type "reflex-web-dot-web" --path ./reflex-web/.web |