Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
08dafb9
Issue 116 clean up dataviewer tests
Mar 12, 2026
35cc81d
Adding codecov and fixing failing depend
Mar 12, 2026
068728c
fix(build): resolve CI failures for release 0.5.0 PR (#174)
WilliamBerryiii Mar 12, 2026
165d7d5
feat(dataviewer): enhance HDF5 video handling and nested dataset supp…
agreaves-ms Mar 12, 2026
c05ab17
fixing workflow
Mar 12, 2026
89a796d
fixing test assertion
Mar 12, 2026
4f7f8c0
Adding ffmeg depenedency
Mar 12, 2026
51c4be5
Moving pytestcov to pyproject.toml
Mar 13, 2026
d9b2567
Adding continue on error
Mar 16, 2026
2d1c24e
feat(repo): migrate to domain-driven architecture (#270)
agreaves-ms Mar 16, 2026
f7e9752
Issue 116 clean up dataviewer tests
Mar 12, 2026
32ee322
Adding codecov and fixing failing depend
Mar 12, 2026
d9ba5ef
fix(build): resolve CI failures for release 0.5.0 PR (#174)
WilliamBerryiii Mar 12, 2026
7556d1d
feat(dataviewer): enhance HDF5 video handling and nested dataset supp…
agreaves-ms Mar 12, 2026
89bd264
Resolved conflict
Mar 16, 2026
27fb93b
Adding missing commit
Mar 13, 2026
0108cd5
Fix merge conflicts in general-technical.txt
akhanattentive Mar 16, 2026
720e932
Remove empty line from general-technical.txt
akhanattentive Mar 16, 2026
5ae4dff
chore: remove stray files from rebase
Mar 16, 2026
cfe9d65
Adding missed conflict
Mar 16, 2026
e71cbd4
fixing conflict
Mar 16, 2026
5bc9a10
Updating refactored tests
Mar 16, 2026
8df25fa
Adding fe test changes
Mar 16, 2026
0bbe4e9
adding dependency
Mar 16, 2026
e7643e0
Adding fixed test
Mar 16, 2026
fbc6396
PR feedback
Mar 17, 2026
3eb719d
Merge branch 'main' into ak/issue-116
akhanattentive Mar 17, 2026
1e9dbe0
Remove Harden runner step from pytest workflow
akhanattentive Mar 17, 2026
e093b4b
Merge branch 'main' into ak/issue-116
akhanattentive Mar 17, 2026
e78a558
Merge branch 'main' into ak/issue-116
WilliamBerryiii Mar 17, 2026
751a6ef
fix(build): align dataviewer CI workflows with repo conventions
Mar 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions .github/workflows/dataviewer-backend-pytests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: Dataviewer Backend Pytest

on:
workflow_call:
inputs:
code-coverage:
description: 'Enable Codecov coverage upload'
required: false
default: false
type: boolean

permissions:
contents: read

jobs:
pytest-dataviewer:
name: Pytest Dataviewer Backend
runs-on: ubuntu-latest
defaults:
run:
working-directory: data-management/viewer/backend
permissions:
contents: read
id-token: write
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false

- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.11'

- name: Setup uv
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0

- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y --no-install-recommends ffmpeg

- name: Install dependencies
run: uv sync --extra dev --extra analysis --extra hdf5 --extra export --extra auth

- name: Run pytest with coverage
run: uv run pytest -v --cov=src --cov-report=xml --cov-report=term-missing

- name: Upload coverage.xml artifact
if: ${{ inputs.code-coverage && always() }}
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: pytest-dataviewer-coverage-xml
path: data-management/viewer/backend/coverage.xml
retention-days: 30

- name: Upload coverage to Codecov
if: ${{ inputs.code-coverage && always() }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
with:
files: coverage.xml
use_oidc: true
fail_ci_if_error: false
verbose: true
flags: pytest-dataviewer
name: pytest-dataviewer-coverage
50 changes: 8 additions & 42 deletions .github/workflows/dataviewer-frontend-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,13 @@ name: Dataviewer Frontend Tests

on:
workflow_call:
inputs:
soft-fail:
description: 'Whether to continue on test or lint failures'
required: false
type: boolean
default: false

permissions:
contents: read

jobs:
frontend-checks:
name: Lint, Type-check & Test
name: Lint, Type-check, Test and Build
runs-on: ubuntu-latest
defaults:
run:
Expand All @@ -23,7 +17,7 @@ jobs:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.2.2
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false

Expand All @@ -38,44 +32,16 @@ jobs:
run: npm ci

- name: ESLint
id: lint
continue-on-error: true
run: npm run lint 2>&1 | tee lint-results.txt
run: npm run lint

- name: Type check
id: typecheck
continue-on-error: true
run: npm run type-check 2>&1 | tee typecheck-results.txt
run: npm run type-check

- name: Format check
id: format
continue-on-error: true
run: npm run format 2>&1 | tee format-results.txt
run: npm run format

- name: Unit tests
id: tests
continue-on-error: true
run: npm run test 2>&1 | tee test-results.txt
run: npm run test

- name: Upload results
if: always()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v4.4.3
with:
name: frontend-test-results
path: |
data-management/viewer/frontend/lint-results.txt
data-management/viewer/frontend/typecheck-results.txt
data-management/viewer/frontend/format-results.txt
data-management/viewer/frontend/test-results.txt
retention-days: 30

- name: Fail job if errors found
if: >-
(steps.lint.outcome == 'failure'
|| steps.typecheck.outcome == 'failure'
|| steps.format.outcome == 'failure'
|| steps.tests.outcome == 'failure')
&& !inputs.soft-fail
run: |
echo "::error::Frontend checks failed. Run 'npm run lint', 'npm run type-check', 'npm run format', and 'npm run test' locally to reproduce."
exit 1
- name: Build
run: npm run build
19 changes: 19 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,23 @@ jobs:
contents: read
id-token: write

# Dataviewer frontend lint, type-check, and build
dataviewer-frontend-tests:
name: Dataviewer Frontend Tests
uses: ./.github/workflows/dataviewer-frontend-tests.yml
permissions:
contents: read

# Dataviewer backend pytest execution
dataviewer-backend-pytests:
name: Dataviewer Backend Pytest
uses: ./.github/workflows/dataviewer-backend-pytests.yml
with:
code-coverage: true
permissions:
contents: read
id-token: write

# Python linting using ruff
python-lint:
name: Python Lint
Expand Down Expand Up @@ -154,6 +171,8 @@ jobs:
- dependency-pinning
- pester-tests
- pytest-tests
- dataviewer-frontend-tests
- dataviewer-backend-pytests
- python-lint
- terraform-lint
- terraform-validation
Expand Down
11 changes: 11 additions & 0 deletions .github/workflows/pr-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,17 @@ jobs:
permissions:
contents: read
id-token: write

# Dataviewer backend pytest execution
dataviewer-backend-pytests:
name: Dataviewer Backend Pytest
uses: ./.github/workflows/dataviewer-backend-pytests.yml
with:
code-coverage: true
permissions:
contents: read
id-token: write

# Python linting using ruff
python-lint:
name: Python Lint
Expand Down
9 changes: 9 additions & 0 deletions codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ coverage:
- pytest
target: auto
threshold: 1%
Comment thread
akhanattentive marked this conversation as resolved.
pytest-dataviewer:
flags:
- pytest-dataviewer
target: auto
threshold: 1%
patch:
default:
target: auto
Expand All @@ -41,6 +46,10 @@ flags:
paths:
- src/
carryforward: true
pytest-dataviewer:
paths:
- data-management/viewer/backend/src/
carryforward: true

parsers:
jacoco:
Expand Down
1 change: 1 addition & 0 deletions data-management/viewer/backend/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ dev = [
"ruff>=0.8.0",
"pytest>=8.3.0",
"pytest-asyncio>=0.24.0",
"pytest-cov>=6.0.0",
"httpx>=0.28.0",
]
azure = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -653,4 +653,10 @@ async def upload_video(self, dataset_id: str, camera: str, episode_idx: int, cac

service._upload_video_to_blob("dataset\r\nname", 7.0, "cam0", tmp_path / "video.mp4")

assert logged == [("Blob upload failed for %s ep %d: %s", "datasetname", 7, "upload failed")]
assert len(logged) == 1
message, ds_id, ep_idx, exc = logged[0]
assert message == "Blob upload failed for %s ep %d: %s"
assert ds_id == "datasetname"
assert ep_idx == 7
assert isinstance(exc, RuntimeError)
assert str(exc) == "upload failed"
Loading