Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
59 changes: 53 additions & 6 deletions .github/workflows/master-ci-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@
ConnectionStrings__meajudaai-db: ${{ steps.db.outputs.connection-string }}
run: |
set -e # Exit immediately if any command fails

Check warning on line 101 in .github/workflows/master-ci-cd.yml

View workflow job for this annotation

GitHub Actions / YAML Syntax Check

101:1 [trailing-spaces] trailing spaces
# Define exclude patterns for coverage (files only - assemblies excluded via Include in coverlet)
# Excludes: Migrations, Database, Contracts, OpenApi generated, compiler services, regex generator
EXCLUDE_PATTERNS="**/Migrations/*.cs,**/Database/*.cs,**/*OpenApi*.generated.cs,**/System.Runtime.CompilerServices*.cs,**/*RegexGenerator.g.cs"
Expand Down Expand Up @@ -157,8 +157,8 @@
- name: Restore frontend dependencies
run: |
echo "🔄 Restoring Web.Admin dependencies with --force-evaluate..."
dotnet restore src/Web/MeAjudaAi.Web.Admin/MeAjudaAi.Web.Admin.csproj --force-evaluate /p:RestoreLockedMode=false

Check warning on line 160 in .github/workflows/master-ci-cd.yml

View workflow job for this annotation

GitHub Actions / YAML Syntax Check

160:121 [line-length] line too long (123 > 120 characters)
dotnet restore tests/MeAjudaAi.Web.Admin.Tests/MeAjudaAi.Web.Admin.Tests.csproj --force-evaluate /p:RestoreLockedMode=false

Check warning on line 161 in .github/workflows/master-ci-cd.yml

View workflow job for this annotation

GitHub Actions / YAML Syntax Check

161:121 [line-length] line too long (133 > 120 characters)
echo "✅ Frontend dependencies restored"

- name: Run frontend component tests (bUnit)
Expand All @@ -167,7 +167,7 @@
ASPNETCORE_ENVIRONMENT: Testing
run: |
set -e

Check warning on line 170 in .github/workflows/master-ci-cd.yml

View workflow job for this annotation

GitHub Actions / YAML Syntax Check

170:1 [trailing-spaces] trailing spaces
echo "===================================="
echo "🎨 FRONTEND COMPONENT TESTS (bUnit)"
echo "===================================="
Expand All @@ -190,26 +190,26 @@
- name: Free Disk Space for Integration Tests
run: |
echo "🧹 Freeing disk space before integration tests..."

Check warning on line 193 in .github/workflows/master-ci-cd.yml

View workflow job for this annotation

GitHub Actions / YAML Syntax Check

193:1 [trailing-spaces] trailing spaces
# Show disk usage before cleanup
echo "📊 Disk usage before cleanup:"
df -h

Check warning on line 197 in .github/workflows/master-ci-cd.yml

View workflow job for this annotation

GitHub Actions / YAML Syntax Check

197:1 [trailing-spaces] trailing spaces
# Remove Docker images and containers that are not needed
echo "🗑️ Removing unused Docker resources..."
docker system prune -af --volumes || true

Check warning on line 201 in .github/workflows/master-ci-cd.yml

View workflow job for this annotation

GitHub Actions / YAML Syntax Check

201:1 [trailing-spaces] trailing spaces
# Remove large packages/tools not needed for tests
echo "🗑️ Removing unnecessary packages..."
sudo apt-get clean
sudo rm -rf /usr/local/lib/android || true
sudo rm -rf /opt/ghc || true
sudo rm -rf /usr/local/.ghcup || true

Check warning on line 208 in .github/workflows/master-ci-cd.yml

View workflow job for this annotation

GitHub Actions / YAML Syntax Check

208:1 [trailing-spaces] trailing spaces
# Show disk usage after cleanup
echo "📊 Disk usage after cleanup:"
df -h

Check warning on line 212 in .github/workflows/master-ci-cd.yml

View workflow job for this annotation

GitHub Actions / YAML Syntax Check

212:1 [trailing-spaces] trailing spaces
echo "✅ Disk space cleanup completed"

- name: Run integration tests
Expand All @@ -225,7 +225,7 @@
ConnectionStrings__meajudaai-db: ${{ steps.db.outputs.connection-string }}
run: |
set -e # Exit immediately if any command fails

Check warning on line 228 in .github/workflows/master-ci-cd.yml

View workflow job for this annotation

GitHub Actions / YAML Syntax Check

228:1 [trailing-spaces] trailing spaces
echo "================================"
echo "🔗 INTEGRATION TESTS (NO COVERAGE)"
echo "================================"
Expand Down Expand Up @@ -273,7 +273,7 @@
# Excluded from coverage: Tests, Migrations, Database, Contracts, Metrics, Health Checks, Jobs, Program, AppHost, Keycloak, Monitoring, NoOp, RabbitMq, ServiceBus, Hangfire, Options, Design-time factories

- name: Upload code coverage
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@v4
if: always()
with:
name: code-coverage
Expand All @@ -283,7 +283,7 @@
if-no-files-found: warn

- name: Upload test results
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results
Expand All @@ -292,7 +292,54 @@
compression-level: 6
if-no-files-found: warn

# Job 2: Markdown Link Validation
# Job 2: Compatibility Gate (Npgsql 10 + Hangfire)
compatibility-gate:
name: Compatibility Gate (Npgsql 10 + Hangfire)
runs-on: ubuntu-latest
needs: build-and-test
services:
postgres:
image: postgis/postgis:16-3.4
env:
POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD || 'test123' }}
POSTGRES_USER: ${{ secrets.POSTGRES_USER || 'postgres' }}
POSTGRES_DB: meajudaai_compat
ports:
- 5432:5432
steps:
- name: Checkout code
uses: actions/checkout@v6

- name: Setup .NET
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'

- name: 🗄️ Setup PostgreSQL Connection
id: pg-conn
uses: ./.github/actions/setup-postgres-connection
with:
postgres-db: meajudaai_compat
postgres-user: ${{ secrets.POSTGRES_USER || 'postgres' }}
postgres-password: ${{ secrets.POSTGRES_PASSWORD || 'test123' }}

- name: 🧪 Run Hangfire Compatibility Tests
env:
ASPNETCORE_ENVIRONMENT: Testing
MEAJUDAAI_DB_HOST: localhost
MEAJUDAAI_DB_PORT: 5432
MEAJUDAAI_DB: meajudaai_compat
MEAJUDAAI_DB_USER: ${{ secrets.POSTGRES_USER || 'postgres' }}
MEAJUDAAI_DB_PASS: ${{ secrets.POSTGRES_PASSWORD || 'test123' }}
run: |
echo "================================"
echo "🧪 VALIDATING HANGFIRE + NPGSQL 10 COMPATIBILITY"
echo "================================"
dotnet test tests/MeAjudaAi.Integration.Tests/MeAjudaAi.Integration.Tests.csproj \
--filter "FullyQualifiedName~HangfirePostgreSqlTests" \
--configuration Release --verbosity normal
Comment thread
frigini marked this conversation as resolved.

# Job 3: Markdown Link Validation
markdown-link-check:
name: Validate Markdown Links
runs-on: ubuntu-latest
Expand All @@ -313,7 +360,7 @@
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# Job 3: Infrastructure Validation (Optional)
# Job 4: Infrastructure Validation (Optional)
validate-infrastructure:
name: Validate Infrastructure
runs-on: ubuntu-latest
Expand Down Expand Up @@ -342,7 +389,7 @@
echo "Resource group '${{ env.AZURE_RESOURCE_GROUP_DEV }}' does not exist, skipping Bicep validation"
fi

# Job 4: Deploy to Development (Optional)
# Job 5: Deploy to Development (Optional)
deploy-dev:
name: Deploy to Development
runs-on: ubuntu-latest
Expand Down Expand Up @@ -396,7 +443,7 @@

- name: Upload infrastructure outputs
if: github.event.inputs.deploy_infrastructure == 'true' || github.event.inputs.deploy_infrastructure == ''
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@v4
with:
name: infrastructure-outputs-dev
path: infrastructure-outputs.json
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/pr-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ jobs:
run: |
set -e
# 1. Install Swashbuckle CLI to extract OpenAPI spec from DLL
dotnet tool install -g Swashbuckle.AspNetCore.Cli --version 10.1.4
dotnet tool install -g Swashbuckle.AspNetCore.Cli --version 10.1.5

# 2. Extract OpenAPI spec (v1) to a temporary file
# Note: Using Release build DLL from current workspace
Expand Down Expand Up @@ -1096,7 +1096,7 @@ jobs:
echo "Summary: $SUMMARY"

- name: Add Coverage PR Comment
uses: marocchino/sticky-pull-request-comment@v2
uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 # v2.9.4
if: github.event_name == 'pull_request'
with:
recreate: true
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/update-api-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ jobs:
-p:GenerateDocumentationFile=true

- name: 📦 Install Swashbuckle CLI
run: dotnet tool install -g Swashbuckle.AspNetCore.Cli --version 7.2.0
run: dotnet tool install -g Swashbuckle.AspNetCore.Cli --version 10.1.5

- name: 📄 Generate OpenAPI Spec
run: |
Expand Down
102 changes: 51 additions & 51 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<!-- Keep all Microsoft.Extensions.* packages on the same major version (10.x) to avoid version skew -->
<PackageVersion Include="bunit.web" Version="1.40.0" />
<PackageVersion Include="HtmlSanitizer" Version="9.0.892" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="10.0.5" />
<!-- .NET & Microsoft Core -->
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.3.0" />
<PackageVersion Include="Microsoft.CSharp" Version="4.7.0" />
Expand All @@ -31,74 +31,74 @@
<!-- Breaking changes: https://www.npgsql.org/doc/release-notes/10.0.html -->
<!-- TODO: Implement automated pipeline gate for staging validation (Issue #39) -->
<!-- ASP.NET Core -->
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="10.0.3" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.3" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="10.0.3" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="10.0.3" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="10.0.5" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.5" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="10.0.5" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="10.0.5" />
<PackageVersion Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.3.9" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="10.0.3" />
<PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="10.0.3" />
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.ApiDescription.Server" Version="10.0.3" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="10.0.5" />
<PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="10.0.5" />
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Version="10.0.5" />
<PackageVersion Include="Microsoft.Extensions.ApiDescription.Server" Version="10.0.5" />
<!-- API Versioning -->
<PackageVersion Include="Asp.Versioning.Http" Version="8.1.1" />
<PackageVersion Include="Asp.Versioning.Mvc" Version="8.1.1" />
<PackageVersion Include="Asp.Versioning.Mvc.ApiExplorer" Version="8.1.1" />
<!-- Entity Framework Core -->
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="10.0.3" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.3" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="10.0.3" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="10.0.3" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.3" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="10.0.5" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.5" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="10.0.5" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="10.0.5" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.5" />
<!-- EFCore.NamingConventions: Updated to 10.0.0 stable -->
<PackageVersion Include="EFCore.NamingConventions" Version="10.0.1" />
<!-- Microsoft.OpenApi: Updated to 2.6.1 (2026-02-05) -->
<!-- TESTED: 2.6.1 builds successfully with SDK 10.0.102 (NO CS0200 error) -->
<!-- Previous versions (2.3.0, 3.x) had incompatibility with ASP.NET Core source generators -->
<!-- Version 2.6.1 resolves the IOpenApiMediaType.Example read-only issue -->
<PackageVersion Include="Microsoft.OpenApi" Version="2.6.1" />
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.0" />
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite" Version="10.0.0" />
<PackageVersion Include="Microsoft.OpenApi" Version="2.7.0" />
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.1" />
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite" Version="10.0.1" />
<!-- Data Access -->
<PackageVersion Include="Npgsql" Version="10.0.1" />
<PackageVersion Include="Npgsql" Version="10.0.2" />
Comment thread
frigini marked this conversation as resolved.
<!-- Note: Dapper.AOT is transitively brought in by Hangfire.PostgreSql (1.21.1 -> Dapper.AOT 1.0.48) -->
<!-- It is benign for now, as we don't enable strict AOT on backend services yet. -->
<PackageVersion Include="Dapper" Version="2.1.72" />
<PackageVersion Include="Microsoft.Data.Sqlite" Version="10.0.3" />
<PackageVersion Include="Microsoft.Data.Sqlite" Version="10.0.5" />
<!-- Microsoft Extensions -->
<PackageVersion Include="Microsoft.Extensions.Caching.Abstractions" Version="10.0.3" />
<!-- Microsoft.Extensions.Caching.Hybrid: 10.3.0 includes critical bug fixes not in 10.0.3 -->
<PackageVersion Include="Microsoft.Extensions.Caching.Hybrid" Version="10.3.0" />
<PackageVersion Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.DependencyModel" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.Diagnostics.Abstractions" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.Caching.Abstractions" Version="10.0.5" />
<!-- Microsoft.Extensions.Caching.Hybrid: 10.4.0 includes critical bug fixes not in 10.3.0 -->
<PackageVersion Include="Microsoft.Extensions.Caching.Hybrid" Version="10.4.0" />
<PackageVersion Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="10.0.5" />
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="10.0.5" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="10.0.5" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="10.0.5" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="10.0.5" />
<PackageVersion Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="10.0.5" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="10.0.5" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.5" />
<PackageVersion Include="Microsoft.Extensions.DependencyModel" Version="10.0.5" />
<PackageVersion Include="Microsoft.Extensions.Diagnostics.Abstractions" Version="10.0.5" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="10.0.5" />
<!-- Microsoft.Extensions.TimeProvider.Testing: 10.3.0 includes critical bug fixes not in 10.0.3 -->
<PackageVersion Include="Microsoft.Extensions.TimeProvider.Testing" Version="10.3.0" />
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="10.0.3" />
<!-- Microsoft.Extensions.Http.Resilience: 10.3.0 includes critical bug fixes not in 10.0.3 -->
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="10.3.0" />
<PackageVersion Include="Microsoft.Extensions.TimeProvider.Testing" Version="10.4.0" />
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="10.0.5" />
<!-- Microsoft.Extensions.Http.Resilience: 10.4.0 includes critical bug fixes not in 10.3.0 -->
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="10.4.0" />
<PackageVersion Include="Polly" Version="8.6.6" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.Logging.Configuration" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="10.0.5" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.5" />
<PackageVersion Include="Microsoft.Extensions.Logging.Configuration" Version="10.0.5" />
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="10.0.5" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="10.0.5" />
<!-- Feature Management -->
<PackageVersion Include="Microsoft.FeatureManagement.AspNetCore" Version="4.4.0" />
<!-- OpenTelemetry -->
<PackageVersion Include="Azure.Monitor.OpenTelemetry.AspNetCore" Version="1.4.0" />
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.15.0" />
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.0" />
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.15.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.1" />
<PackageVersion Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.14.0-beta.2" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.15.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.15.0" />
Expand All @@ -112,8 +112,8 @@
<PackageVersion Include="Serilog.Sinks.Console" Version="6.1.1" />
<PackageVersion Include="Serilog.Sinks.Seq" Version="9.0.0" />
<!-- Documentation -->
<PackageVersion Include="Swashbuckle.AspNetCore" Version="10.1.4" />
<PackageVersion Include="Swashbuckle.AspNetCore.Annotations" Version="10.1.4" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="10.1.5" />
<PackageVersion Include="Swashbuckle.AspNetCore.Annotations" Version="10.1.5" />
Comment thread
frigini marked this conversation as resolved.
<!-- Validation -->
<PackageVersion Include="FluentValidation" Version="12.1.1" />
<PackageVersion Include="FluentValidation.DependencyInjectionExtensions" Version="12.1.1" />
Expand All @@ -139,7 +139,7 @@
<PackageVersion Include="Scrutor" Version="7.0.0" />
<!-- System -->
<PackageVersion Include="Azure.Storage.Common" Version="12.26.0" />
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerGen" Version="10.1.4" />
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerGen" Version="10.1.5" />
<!-- System.IO.Hashing: Version 9.0.10 required by Aspire.Hosting.Azure.AppContainers 13.0.2 -->
<!-- Note: Azure.Storage.Common 12.25.0 depends on 8.0.0, but NuGet resolves to 9.0.10 via transitive lift -->
<!-- This is acceptable as System.IO.Hashing maintains backward compatibility -->
Expand All @@ -151,7 +151,7 @@
<PackageVersion Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="8.16.0" />
<!-- Testing Framework -->
<!-- Using xUnit v3 only -->
<PackageVersion Include="WireMock.Net" Version="1.25.0" />
<PackageVersion Include="WireMock.Net" Version="2.0.0" />
Comment thread
frigini marked this conversation as resolved.
<PackageVersion Include="xunit.v3" Version="3.2.2" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
<PackageVersion Include="coverlet.collector" Version="8.0.0" />
Expand All @@ -163,10 +163,10 @@
<PackageVersion Include="AutoFixture" Version="4.18.1" />
<PackageVersion Include="AutoFixture.AutoMoq" Version="4.18.1" />
<!-- Test Containers -->
<PackageVersion Include="Testcontainers.Azurite" Version="4.10.0" />
<PackageVersion Include="Testcontainers.PostgreSql" Version="4.10.0" />
<PackageVersion Include="Testcontainers.RabbitMq" Version="4.10.0" />
<PackageVersion Include="Testcontainers.Redis" Version="4.10.0" />
<PackageVersion Include="Testcontainers.Azurite" Version="4.11.0" />
<PackageVersion Include="Testcontainers.PostgreSql" Version="4.11.0" />
<PackageVersion Include="Testcontainers.RabbitMq" Version="4.11.0" />
<PackageVersion Include="Testcontainers.Redis" Version="4.11.0" />
<PackageVersion Include="Respawn" Version="7.0.0" />
<!-- Aspire - 13.0.0 stable + preview (Keycloak/Testing) -->
<!-- Aspire.Hosting.AppHost removido - incluído implicitamente pelo Aspire.AppHost.Sdk 13.0 -->
Expand Down
Loading
Loading