Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
5fb9cf8
updated the voila notebook to reflect new git path and to fix the mat…
Konohana0608 Mar 24, 2026
3e47299
added makefile which can be used in the osparc service to maintain th…
Konohana0608 Mar 24, 2026
6ffd5ce
Added the no-data-transparent png to lsf
Konohana0608 Mar 24, 2026
e80ea5d
excluded the assets folder from the png ignoring setting.
Konohana0608 Mar 24, 2026
56426f4
updated path to the no data transparent png in the voila since it is …
Konohana0608 Mar 24, 2026
41405bb
updated readme with osparc workflow.
Konohana0608 Mar 24, 2026
2df6524
feat: add auto-provisioning to voila notebook
Mar 25, 2026
322e51a
refactor: replace voila Python provisioning with Makefile targets
Mar 25, 2026
18efaf5
simplify: assume Makefile is pre-deployed at workspace top level
Mar 25, 2026
85de69c
[FEAT] further simplifications
Mar 25, 2026
63f80f0
[FEAT] further simplify the voila
Mar 25, 2026
b365192
[FEAT] clarify setup in README
Mar 25, 2026
7e6a2db
Merge pull request #1 from JavierGOrdonnez/merge/pr2-plus-fixes
Konohana0608 Mar 25, 2026
3c56e94
Revert "Additional Fixes"
Konohana0608 Mar 25, 2026
3184cc2
Merge pull request #2 from Konohana0608/revert-1-merge/pr2-plus-fixes
Konohana0608 Mar 25, 2026
f4fc6c0
minor random change to trigger pull request popup on github.
Konohana0608 Mar 25, 2026
841db0e
Merge remote-tracking branch 'origin/mest/mnt/make_new_code_run_on_os…
Konohana0608 Mar 25, 2026
69d2bb7
Merge pull request #3 from Konohana0608/mest/mnt/make_new_code_run_on…
Konohana0608 Mar 25, 2026
a4eb0bf
[FEAT] basic playwright testing in jupyter-math + voila wired and green
May 7, 2026
fa344a0
[FEAT] e2e test suite implemented - skipping features not-yet cherryp…
May 7, 2026
122a460
[CI] CI runs only on PR
May 7, 2026
18a4838
dummy push
May 7, 2026
614dadc
[CI] disable slow tests
May 7, 2026
7e33b2a
Merge pull request #4 from JavierGOrdonnez/jgo/e2e-testing
Konohana0608 May 7, 2026
cf15668
[FIX] Scan for buttons grid + make both CI stages parallel (#5)
JavierGOrdonnez May 8, 2026
ea30322
[FEAT] Task 6.1 - reverse registration direction (gamma in measured f…
JavierGOrdonnez May 11, 2026
ad1595d
[FEAT] Task 6.4 - Feedback banners (#7)
JavierGOrdonnez May 11, 2026
b44255c
[TEST] update measurement-validation test artifacts to match the regi…
JavierGOrdonnez May 13, 2026
fd5e4c3
[FEAT] Vectorize gamma, add --output-dir, lock deps, add lint+type CI…
JavierGOrdonnez May 13, 2026
61c3454
6.5 input mask min size (#13)
JavierGOrdonnez May 13, 2026
28ede53
Bump actions/upload-artifact from 4 to 7 (#17)
dependabot[bot] May 13, 2026
4514399
Bump actions/checkout from 4 to 6 (#18)
dependabot[bot] May 13, 2026
7b3c702
[FEAT] add user-configurable noise floor input (0 ≤ noise_floor ≤ 0.1…
JavierGOrdonnez May 13, 2026
e804803
6.6 - Explicitely show issues to User (#20)
JavierGOrdonnez May 17, 2026
35bad78
Results Table (#14)
JavierGOrdonnez May 17, 2026
6abd348
Jgo/UI adjustments (#22)
JavierGOrdonnez May 18, 2026
45e1fad
6.4 - gamma excludes noise filtered pixels (#21)
JavierGOrdonnez May 18, 2026
143811f
[FEAT] Task 6.2 - measurement-area inputs with bounded validation (#11)
JavierGOrdonnez May 18, 2026
9d84542
Port/6.9 report generation (#19)
JavierGOrdonnez May 18, 2026
4987de3
Fix axis labels and Pass legend color (GitHub issues #6, #7) (#23)
JavierGOrdonnez May 20, 2026
25a1a63
reverted to one page report and included marks updates to said report…
Konohana0608 May 20, 2026
98f8824
Merge branch 'main' into mest/feat/release_changes
Konohana0608 May 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
*.csv filter=lfs diff=lfs merge=lfs -text
*.npz filter=lfs diff=lfs merge=lfs -text
assets/*.png filter=lfs diff=lfs merge=lfs -text
data/measurements/** filter=lfs diff=lfs merge=lfs -text
15 changes: 15 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
groups:
python-deps:
patterns:
- "*"

- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
183 changes: 138 additions & 45 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@ name: CI

on:
pull_request:
push:
branches:
- "**"

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
Expand All @@ -14,17 +11,15 @@ permissions:
contents: read

jobs:
fast-tests:
name: Fast tests
tests:
name: Tests
runs-on: ubuntu-latest
container:
image: itisfoundation/jupyter-math:3.0.5
env:
DISPLAY: ":0"
NVIDIA_DRIVER_CAPABILITIES: all
image: ghcr.io/astral-sh/uv:python3.10-bookworm

steps:
- name: Check out repository
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Install system dependencies
shell: bash
Expand All @@ -34,78 +29,176 @@ jobs:
apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub
apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub

- name: Install uv
shell: bash
run: |
curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR="/usr/local/bin" sh
uv --version

- name: Sync dependencies
shell: bash
run: uv sync --all-groups
run: uv sync --all-groups --frozen

- name: Print environment
shell: bash
run: env | sort

- name: Run fast tests with coverage
- name: Run tests with coverage
shell: bash
run: uv run pytest -v -m "not slow" --cov=src/sar_pattern_validation --cov-report=xml:coverage.xml --cov-report=term tests/
run: uv run pytest -v -m "not slow and not validation and not notebook_smoke" --cov=src/sar_pattern_validation --cov-report=xml:coverage.xml --cov-report=term tests/

- name: Upload fast coverage artifact
uses: actions/upload-artifact@v4
- name: Upload coverage artifact
uses: actions/upload-artifact@v7
with:
name: coverage-fast-tests
name: coverage-tests
path: coverage.xml
if-no-files-found: error
retention-days: 30

slow-tests:
name: Slow tests
name: Slow & integration tests
runs-on: ubuntu-latest
needs:
- fast-tests
needs: [type-check, tests]
container:
image: ghcr.io/astral-sh/uv:python3.10-bookworm
env:
MPLBACKEND: Agg
steps:
- name: Check out repository
uses: actions/checkout@v6

- name: Install git-lfs and pull example data
shell: bash
run: |
apt-get update -qq
apt-get download git-lfs
dpkg -x git-lfs_*.deb /tmp/git-lfs-pkg
find /tmp/git-lfs-pkg -name git-lfs -type f -exec install -m755 {} /usr/local/bin/git-lfs \;
git config --global --add safe.directory "$GITHUB_WORKSPACE"
git lfs install
git lfs pull --include="data/example/**"

- name: Sync dependencies
shell: bash
run: uv sync --all-groups --frozen

- name: Run slow and integration tests
shell: bash
run: |
uv run pytest -v -m "(slow or validation) and not notebook_smoke" \
--basetemp=test-artifacts \
--ignore=tests/test_measurement_validation.py \
--cov=src/sar_pattern_validation --cov-report=xml:coverage-validation.xml --cov-report=term \
tests/

- name: Upload slow coverage artifact
uses: actions/upload-artifact@v7
with:
name: coverage-slow-tests
path: coverage-validation.xml
if-no-files-found: error
retention-days: 30

- name: Upload slow test artifacts
uses: actions/upload-artifact@v7
with:
name: slow-test-artifacts
path: test-artifacts/
if-no-files-found: ignore
retention-days: 30

type-check:
name: Lint & type check (ruff + ty)
runs-on: ubuntu-latest
container:
image: ghcr.io/astral-sh/uv:python3.10-bookworm
steps:
- name: Check out repository
uses: actions/checkout@v6

- name: Sync dependencies
shell: bash
run: uv sync --all-groups --frozen

- name: Run ruff linter
shell: bash
run: uv run ruff check src/ tests/

- name: Run ty type checker
shell: bash
run: uv run ty check src/

e2e-tests:
name: E2E (Voila + Playwright)
runs-on: ubuntu-latest
needs: [type-check, tests]
container:
image: itisfoundation/jupyter-math:3.0.5
env:
DISPLAY: ":0"
NVIDIA_DRIVER_CAPABILITIES: all
MPLBACKEND: Agg
PLAYWRIGHT_BROWSERS_PATH: /root/.cache/ms-playwright
steps:
- name: Check out repository
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Install system dependencies
- name: Install Playwright + tooling system deps
shell: bash
run: |
apt-get update
apt-get install -y gnupg git-lfs time procps tree curl
git lfs install --force
git lfs pull
apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub
apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub
apt-get install -y --no-install-recommends \
curl ca-certificates git-lfs procps ffmpeg \
libnss3 libnspr4 libdbus-1-3 libatk1.0-0 libatk-bridge2.0-0 \
libcups2 libxkbcommon0 libatspi2.0-0 libx11-6 libxcomposite1 \
libxdamage1 libxext6 libxfixes3 libxrandr2 libgbm1 libasound2 \
libpangocairo-1.0-0 libpango-1.0-0 libcairo2 fonts-liberation

- name: Pull git-lfs example data
shell: bash
# The single database file is the reference selected by
# tests/test_voila_e2e.py::_REFERENCE_FILTERS — keep both in sync.
run: |
git config --global --add safe.directory "$GITHUB_WORKSPACE"
git lfs install
git lfs pull --include="data/example/**"
git lfs pull --include="data/database/dipole_1450MHz_Flat_5mm_1g.csv"

- name: Install uv
shell: bash
run: |
curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR="/usr/local/bin" sh
uv --version

- name: Sync dependencies
- name: Install testing-layer deps into kernel venv
shell: bash
run: uv sync --all-groups
run: |
uv pip install --python /home/jovyan/.venv/bin/python \
pytest pytest-playwright pytest-xdist playwright

- name: Print environment
- name: Install Chromium for Playwright
shell: bash
run: env | sort
run: /home/jovyan/.venv/bin/playwright install chromium

- name: Run full test suite with slow tests and coverage
- name: Notebook kernel smoke test (§V3 — fail fast before Playwright)
shell: bash
run: uv run pytest -v --run-slow --cov=src/sar_pattern_validation --cov-report=xml:coverage.xml --cov-report=term tests/
env:
PYTHONPATH: ${{ github.workspace }}
run: |
/home/jovyan/.venv/bin/python -m pytest -v -o "addopts=" \
-m notebook_smoke \
tests/test_notebook_smoke.py

- name: Upload slow coverage artifact
uses: actions/upload-artifact@v4
- name: Run voila e2e suite
shell: bash
env:
PYTHONPATH: ${{ github.workspace }}
run: |
/home/jovyan/.venv/bin/python -m pytest -v -o "addopts=" \
--run-e2e -p no:xdist -m "not skip" \
--screenshot on \
--video retain-on-failure \
--tracing retain-on-failure \
--output tests/artifacts/playwright \
tests/test_voila_e2e.py

- name: Upload E2E artifacts
if: always()
uses: actions/upload-artifact@v7
with:
name: coverage-slow-tests
path: coverage.xml
if-no-files-found: error
name: playwright-results
path: tests/artifacts/playwright/
if-no-files-found: ignore
retention-days: 30
14 changes: 14 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,23 @@ Thumbs.db
.coverage
.coverage.*
coverage.xml
coverage-validation.xml
htmlcov/

# ---- Artifacts ----
*.png
!assets/*.png
!report_template/**/*.png
*.log
!tests/artifacts/**/logs/
.codex
*.zip
.serena
.claude
test-artifacts/
tests/artifacts/playwright/
.agents/skills/backprop/SKILL.md
.agents/skills/caveman/SKILL.md
.agents/skills/check/SKILL.md
.agents/skills/spec/SKILL.md
skills-lock.json
19 changes: 19 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,25 @@ repos:
- id: ruff-format
types_or: [python, pyi, jupyter]

# Strip outputs + execution counts from notebooks. Prevents accidental
# commits of large rendered HTML/images and keeps notebook diffs reviewable.
- repo: https://github.com/kynan/nbstripout
rev: 0.7.1
hooks:
- id: nbstripout
files: \.ipynb$

# Type checking
- repo: local
hooks:
- id: ty-check
name: ty type check
entry: uv run ty check
args: [src/]
language: system
pass_filenames: false
types: [python]

# Security checks
- repo: https://github.com/PyCQA/bandit
rev: 1.9.4
Expand Down
Loading