Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
9779a82
Implement auth and run sync as part of the app
MelbourneDeveloper Dec 22, 2025
0182635
Split the dashboard tests up and fix others
MelbourneDeveloper Dec 22, 2025
b839543
Changes from the gigs project
MelbourneDeveloper Dec 28, 2025
9ed756b
Fixes
MelbourneDeveloper Dec 29, 2025
67ffe33
Fixes
MelbourneDeveloper Dec 29, 2025
8a13350
Fixes
MelbourneDeveloper Dec 29, 2025
67f0fe9
Cleanup
MelbourneDeveloper Dec 29, 2025
742414b
Merge the two branches
MelbourneDeveloper Dec 29, 2025
525161c
Fixes
MelbourneDeveloper Dec 29, 2025
53895a0
fix tests
MelbourneDeveloper Dec 29, 2025
7dfda15
Formatting and test fixes
MelbourneDeveloper Dec 29, 2025
2e40792
Fixes
MelbourneDeveloper Dec 29, 2025
a4ccf0b
PR prep
MelbourneDeveloper Dec 29, 2025
34f2bd4
Fixes
MelbourneDeveloper Dec 29, 2025
bcef625
Stuff
MelbourneDeveloper Dec 29, 2025
4892c1e
Fixes
MelbourneDeveloper Dec 29, 2025
17dc7f0
Spec work
MelbourneDeveloper Dec 29, 2025
55d9919
Reorient the migrations system
MelbourneDeveloper Dec 29, 2025
e0e82bb
Fixing up migrations
MelbourneDeveloper Dec 29, 2025
d8f5c61
Fixes
MelbourneDeveloper Dec 30, 2025
e60a0d2
Fixes
MelbourneDeveloper Dec 30, 2025
38e793f
Remove antlr n stuff
MelbourneDeveloper Dec 30, 2025
4391e3f
Fix build
MelbourneDeveloper Dec 31, 2025
b45c8ab
add h5
MelbourneDeveloper Dec 31, 2025
995cc65
fix h5 compiler
MelbourneDeveloper Dec 31, 2025
fe9bdd9
Try fix
MelbourneDeveloper Dec 31, 2025
755bea1
try fix playwright
MelbourneDeveloper Dec 31, 2025
a567b5e
try fix tests
MelbourneDeveloper Dec 31, 2025
4bc293b
Try fix
MelbourneDeveloper Dec 31, 2025
a3f6948
Try fix
MelbourneDeveloper Dec 31, 2025
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
9 changes: 8 additions & 1 deletion .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@
"ilspycmd"
],
"rollForward": false
},
"h5-compiler": {
"version": "24.11.53871",
"commands": [
"h5"
],
"rollForward": false
}
}
}
}
5 changes: 5 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# TLDR;

# Brief Details

# How Do The Tests Prove This Works?
257 changes: 257 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,257 @@
name: CI

on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:

env:
DOTNET_VERSION: '9.0.x'
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
DOTNET_CLI_TELEMETRY_OPTOUT: true

jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
8.0.x
${{ env.DOTNET_VERSION }}

- name: Restore .NET tools
run: |
dotnet tool restore
# Verify h5 tool is available
dotnet tool run h5 --version || echo "h5 tool check (may fail if no version flag)"

- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
restore-keys: |
${{ runner.os }}-nuget-

- name: Restore dependencies
run: dotnet restore

- name: Build
run: dotnet build --no-restore -c Release

# Tests that only need SQLite (no Docker)
unit-tests:
name: Unit Tests
runs-on: ubuntu-latest
needs: build
strategy:
fail-fast: false
matrix:
project:
- DataProvider/DataProvider.Tests
- DataProvider/DataProvider.Example.Tests
- Lql/Lql.Tests
- Lql/LqlCli.SQLite.Tests
- Migration/Migration.Tests
- Sync/Sync.Tests
- Sync/Sync.SQLite.Tests
steps:
- uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
restore-keys: |
${{ runner.os }}-nuget-

- name: Restore
run: dotnet restore ${{ matrix.project }}

- name: Test
run: dotnet test ${{ matrix.project }} --no-restore --verbosity normal --logger "trx;LogFileName=test-results.trx"

- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-unit-${{ strategy.job-index }}
path: '**/TestResults/*.trx'

# API integration tests (SQLite, no Docker)
api-tests:
name: API Tests
runs-on: ubuntu-latest
needs: build
strategy:
fail-fast: false
matrix:
project:
- Gatekeeper/Gatekeeper.Api.Tests
- Samples/Clinical/Clinical.Api.Tests
- Samples/Scheduling/Scheduling.Api.Tests
- Samples/Dashboard/Dashboard.Web.Tests
steps:
- uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
8.0.x
${{ env.DOTNET_VERSION }}

- name: Restore .NET tools
run: dotnet tool restore

- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
restore-keys: |
${{ runner.os }}-nuget-

- name: Restore
run: dotnet restore ${{ matrix.project }}

- name: Test
run: dotnet test ${{ matrix.project }} --no-restore --verbosity normal --logger "trx;LogFileName=test-results.trx"

- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-api-${{ strategy.job-index }}
path: '**/TestResults/*.trx'

# Tests that need Docker for Postgres (via Testcontainers)
postgres-tests:
name: Postgres Tests
runs-on: ubuntu-latest
needs: build
strategy:
fail-fast: false
matrix:
project:
- Sync/Sync.Postgres.Tests
- Sync/Sync.Integration.Tests
- Sync/Sync.Http.Tests
steps:
- uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
restore-keys: |
${{ runner.os }}-nuget-

- name: Restore
run: dotnet restore ${{ matrix.project }}

- name: Test
run: dotnet test ${{ matrix.project }} --no-restore --verbosity normal --logger "trx;LogFileName=test-results.trx"
env:
# Testcontainers will automatically use the Docker daemon
TESTCONTAINERS_RYUK_DISABLED: false

- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-postgres-${{ strategy.job-index }}
path: '**/TestResults/*.trx'

# Dashboard E2E tests (need Playwright browser)
e2e-tests:
name: Dashboard E2E Tests
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
8.0.x
${{ env.DOTNET_VERSION }}

- name: Restore .NET tools
run: dotnet tool restore

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
restore-keys: |
${{ runner.os }}-nuget-

- name: Restore Dashboard.Web
run: dotnet restore Samples/Dashboard/Dashboard.Web

- name: Build Dashboard.Web (downloads React vendor files)
run: dotnet build Samples/Dashboard/Dashboard.Web -c Release --no-restore

- name: Build Sync projects (required for Sync E2E tests)
run: |
dotnet build Samples/Clinical/Clinical.Sync -c Release
dotnet build Samples/Scheduling/Scheduling.Sync -c Release

- name: Build Integration Tests (includes wwwroot copy)
run: dotnet build Samples/Dashboard/Dashboard.Integration.Tests -c Release

- name: Install Playwright browsers
run: dotnet tool install --global Microsoft.Playwright.CLI && playwright install --with-deps chromium

- name: Verify wwwroot files
run: |
echo "=== Dashboard.Web wwwroot (source) ==="
ls -la Samples/Dashboard/Dashboard.Web/wwwroot/js/ || echo "Dashboard.Web js folder not found"
ls -la Samples/Dashboard/Dashboard.Web/wwwroot/js/vendor/ || echo "Dashboard.Web vendor folder not found"
echo "=== Integration Tests wwwroot (output) ==="
ls -la Samples/Dashboard/Dashboard.Integration.Tests/bin/Release/net9.0/wwwroot/js/ || echo "Integration Tests js folder not found"
ls -la Samples/Dashboard/Dashboard.Integration.Tests/bin/Release/net9.0/wwwroot/js/vendor/ || echo "Integration Tests vendor folder not found"

- name: Test
run: dotnet test Samples/Dashboard/Dashboard.Integration.Tests -c Release --no-build --verbosity normal --logger "trx;LogFileName=test-results.trx"

- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-e2e
path: '**/TestResults/*.trx'

- name: Upload Playwright traces
uses: actions/upload-artifact@v4
if: failure()
with:
name: playwright-traces
path: '**/playwright-traces/**'
Loading
Loading