Update output page display #411
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: 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: Set up performance monitoring (Windows) | |
if: runner.os == 'Windows' | |
run: | | |
logman create counter "MyPerfLog" -f bincirc -max 50 -c "\Processor(_Total)\% Processor Time" "\Memory\Available MBytes" -si 10 -o perf_log | |
logman start "MyPerfLog" | |
shell: pwsh | |
- 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: Stop performance monitoring and upload logs (Windows) | |
if: runner.os == 'Windows' | |
run: | | |
logman stop "MyPerfLog" | |
Compress-Archive -Path perf_log.blg -DestinationPath perf_log.zip | |
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/ | |
- name: Upload Performance Logs | |
if: runner.os == 'Windows' && always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: performance-logs-${{ matrix.os }} | |
path: perf_log.zip | |
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 |