build prommis #598
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: App Tests | |
on: | |
push: | |
# branches: | |
# - main | |
# - rel_* | |
pull_request: | |
defaults: | |
run: | |
# -l: use login shell (required when using Conda) | |
shell: bash -l {0} | |
env: | |
PYTEST_ADDOPTS: --color=yes | |
jobs: | |
component_e2e_testing: | |
name: E2E testing (${{ matrix.os }}) | |
runs-on: ${{ matrix.os-version }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- linux | |
- win64 | |
include: | |
- os: linux | |
os-version: ubuntu-latest | |
- os: win64 | |
os-version: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: conda-incubator/setup-miniconda@v3 | |
with: | |
environment-file: environment.yml | |
activate-environment: watertap-ui-env | |
miniforge-version: latest | |
- name: Set up debug logging | |
run: | | |
echo "ACTIONS_RUNNER_DEBUG=true" >> $GITHUB_ENV | |
echo "ACTIONS_STEP_DEBUG=true" >> $GITHUB_ENV | |
- name: Add theme to .env file | |
working-directory: ./electron/ui | |
run: | | |
echo REACT_APP_THEME=watertap >> .env | |
- name: Install Electron JS dependencies | |
run: | | |
npm --prefix electron clean-install | |
- name: Install frontend JS dependencies | |
run: | | |
npm --prefix electron/ui clean-install | |
- name: get idaes extensions | |
run: idaes get-extensions | |
- name: Install watertap-ui Python package | |
run: | | |
pip install --progress-bar off . | |
- name: Display installed environment | |
run: | | |
conda env export --no-builds | |
- name: run backend server | |
run: uvicorn --app-dir backend/app main:app --reload --host 127.0.0.1 --port 8001 & sleep 30 | |
- name: run frontend | |
run: npm --prefix electron/ui start & sleep 30 | |
- name: run component tests | |
run: npm --prefix electron/ui run test | |
- name: Cypress e2e tests | |
working-directory: electron/ui | |
timeout-minutes: 45 | |
run: npx cypress run | |
- name: stop linux services | |
if: runner.os == 'Linux' | |
run: fuser -k 3000/tcp && fuser -k 8001/tcp | |
- name: stop windows services | |
if: runner.os == 'Windows' | |
run: | | |
$ports = @(3000, 8001) | |
foreach ($port in $ports){ | |
$netTCPConnections = Get-NetTCPConnection -LocalPort $port -ErrorAction SilentlyContinue | |
if ($netTCPConnections) { | |
foreach ($netTCPConnection in $netTCPConnections) { | |
$processId = $netTCPConnection.OwningProcess | |
Write-Host "Found ID $processId" | |
$process = Get-Process -Id $processId -ErrorAction SilentlyContinue | |
if ($process) { | |
Write-Host "Found valid process $process" | |
if ($process.Name -notcontains "Idle") { | |
try { | |
Write-Host "Attempting to kill ID $processId with name $process.Name." | |
Stop-Process -Id $process.Id -Force | |
Write-Host "Process with ID $processId on port $port killed." | |
} catch { | |
Write-Host "Failed to kill process with ID $processId - $_" | |
} | |
} else { | |
Write-Host "The process using port $port is the idle process and cannot be terminated." | |
} | |
} else { | |
Write-Host "No process found using port $port." | |
} | |
} | |
} else { | |
Write-Host "No TCP connection found on port $port." | |
} | |
} | |
shell: pwsh | |
- name: Upload artifact for screenshots & videos | |
uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: cypress_results-${{ matrix.os }} | |
path: | | |
electron/ui/cypress/screenshots/ | |
electron/ui/cypress/videos/ | |
## post-run conda often fails for weird reasons. this is a potential solution | |
## see https://github.com/conda-incubator/setup-miniconda/issues/277#issuecomment-1431458277 | |
- name: Rename conda package cache | |
if: runner.os == 'Windows' | |
shell: bash | |
run: mv "${CONDA_PKGS_DIR}" "${CONDA_PKGS_DIR}_do_not_cache" | |
pytest: | |
name: pytest (${{ matrix.os }}) | |
runs-on: ${{ matrix.os-version }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- linux | |
- win64 | |
# - macos | |
include: | |
- os: linux | |
os-version: ubuntu-latest | |
- os: win64 | |
os-version: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: conda-incubator/setup-miniconda@v3 | |
with: | |
environment-file: environment.yml | |
activate-environment: watertap-ui-env | |
miniforge-version: latest | |
- name: Install watertap-ui Python package | |
run: | | |
pip install --progress-bar off . | |
- name: Install httpx | |
run: | | |
pip install httpx | |
- name: get idaes extensions | |
run: idaes get-extensions | |
- name: Run pytest | |
working-directory: backend | |
run: | | |
pytest tests -v |