Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
6db31ba
Resolved container app errors related to AAS registry endpoint (#33)
mm-kgi Feb 3, 2026
4748981
Fix : TestPlugin : 404 - file entries (#34)
mm-hsh Feb 4, 2026
a36238e
feat: Update Docker publish workflow for tag handling (#32)
mm-psy Feb 5, 2026
955cb75
Revert "feat: Update Docker publish workflow for tag handling (#32)" …
mm-psy Feb 5, 2026
24cc628
feat: Pin nugetcommand (#36)
mm-psy Feb 6, 2026
299552e
feat: Update Docker publish workflow for tag handling (#39)
mm-psy Feb 6, 2026
4d80043
#129: Created initial structure of C# Playwright API tests for TestPl…
HolgerSantelmann Feb 7, 2026
4320fdf
#129: Added Environment.GetEnvironmentVariable("BASE_URL") to ApiTest…
HolgerSantelmann Feb 7, 2026
fa3321e
#129: FluentAssertions removed and replaced usage by xunit Assert
HolgerSantelmann Feb 7, 2026
d05abd3
#129: Health test added
HolgerSantelmann Feb 9, 2026
bf0f340
#129: Unneeded configuration removed
HolgerSantelmann Feb 9, 2026
8ef8b4f
#129: Refinment of tests
HolgerSantelmann Feb 9, 2026
0d66ed4
#129: Refinement of rest api test
HolgerSantelmann Feb 9, 2026
4571b08
#129: String comparison refined
HolgerSantelmann Feb 9, 2026
15014b4
#129: Throws argument null excepion of response is null
HolgerSantelmann Feb 9, 2026
41c7f13
#129: Set copy always for GetSubmodelDescriptorById_Reliability_Expec…
HolgerSantelmann Feb 9, 2026
4e5d5fc
workflow_dispatch added to dependency-review (#41)
HolgerSantelmann Feb 9, 2026
ab09657
#185: Workflow for plaaywright tests added
HolgerSantelmann Feb 9, 2026
7b2cb55
Merge remote-tracking branch 'origin/develop' into feature/185_PW_wor…
HolgerSantelmann Feb 10, 2026
131f78a
Revert "workflow_dispatch added to dependency-review (#41)" (#43)
HolgerSantelmann Feb 10, 2026
f505e2d
Merge remote-tracking branch 'origin/develop' into feature/185_PW_wor…
HolgerSantelmann Feb 10, 2026
24869bc
Merge branch 'develop' into psy-test-playwright
mm-psy Feb 10, 2026
1a2d957
fix: Update condition for publishing Playwright test results
mm-psy Feb 10, 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
17 changes: 10 additions & 7 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,11 @@ jobs:
latest=false
tags: |
type=semver,pattern={{raw}}
# Priority is set to ensure the develop-{{sha}} tag is preferred over other tags for the develop branch
type=raw,value=develop-{{sha}},enable=${{startsWith(github.ref,'refs/heads/develop')}},priority=201
type=raw,value=develop,enable=${{startsWith(github.ref,'refs/heads/develop')}}
type=raw,value=rc-{{branch}}-{{sha}},enable=${{startsWith(github.ref,'refs/heads/release/')}}
# The following tag is only applied to regular branches except 'develop' and 'release/*' (i.e., not for tags or PRs)
type=raw,value={{branch}}-{{sha}},enable=${{startsWith(github.ref,'refs/heads/') && !startsWith(github.ref,'refs/heads/develop') && !startsWith(github.ref,'refs/heads/release/')}}
type=ref,event=pr

Expand All @@ -93,7 +95,6 @@ jobs:
cache-from: type=gha
cache-to: type=gha,mode=max


# Extract the pure application SBOM from the artifact stage, we want to handle it separately from the container SBOM
# This automaticaly re-uses the previously generated stage from cache, so we get the exact sbom from previous build step
- name: Export Application SBOM from artifact stage
Expand All @@ -106,11 +107,13 @@ jobs:
push: false
outputs: type=local,dest=sbom-output

# Extract the first tag from the list for Trivy scanning
- name: Get first image tag
# Extract the tag with the highest priority from the list for Trivy scanning
- name: Get highest priority image tag
if: ${{ github.event_name != 'pull_request' }}
id: first-tag
run: echo "value=$(echo '${{ steps.meta.outputs.tags }}' | head -n1)" >> $GITHUB_OUTPUT
id: highest-priority-tag
run: |
# The first tag in the list is the one with the highest priority
echo "value=$(echo '${{ steps.meta.outputs.tags }}' | head -n1)" >> $GITHUB_OUTPUT

# Generate container SBOM.
- name: Run Trivy in GitHub SBOM mode to generate CycloneDX SBOM for container
Expand All @@ -120,8 +123,8 @@ jobs:
scan-type: 'image'
format: 'cyclonedx'
output: 'sbom-output/sbom_container.cyclonedx.json'
image-ref: ${{ steps.first-tag.outputs.value }}
skip-dirs: '/App' # Skip the /app directory as we handle the content of the application in a seperate SBOM for easier vulnerability management and because trivy misses important fields
image-ref: ${{ steps.highest-priority-tag.outputs.value }}
skip-dirs: '/App' # Skip the /app directory as we handle the content of the application in a separate SBOM for easier vulnerability management and because trivy misses important fields

- name: Upload trivy/container AND application SBOMs as a Github artifact
if: ${{ github.event_name != 'pull_request' }}
Expand Down
160 changes: 160 additions & 0 deletions .github/workflows/playwright-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
name: Playwright Tests

on:
workflow_dispatch:
pull_request:
branches:
- 'main'
- 'develop'
- 'release/**'
- 'hotfix/**'
push:
branches:
- 'main'
- 'develop'
- 'release/**'
- 'hotfix/**'

permissions:
contents: read

env:
BUILD_CONFIGURATION: "Release"
SOLUTION_PATH: source/AAS.TwinEngine.DataEngine.sln
PLAYWRIGHT_TEST_PROJECT: source/AAS.TwinEngine.Plugin.TestPlugin.PlaywrightTests/AAS.TwinEngine.Plugin.TestPlugin.PlaywrightTests.csproj
DOCKER_COMPOSE_PATH: source/AAS.TwinEngine.Plugin.TestPlugin/Example
BASE_URL: "http://localhost:8085"

jobs:
playwright-tests:
name: Run Playwright Tests
runs-on: ubuntu-latest
timeout-minutes: 30

permissions:
contents: read
checks: write
pull-requests: write

steps:
- name: Checkout code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1

- name: Setup .NET
uses: actions/setup-dotnet@2016bd2012dba4e32de620c46fe006a3ac9f0602 # v5.0.1
with:
dotnet-version: "8.0.x"

- name: Restore dependencies
run: dotnet restore ${{ env.SOLUTION_PATH }} --locked-mode

- name: Build solution
run: dotnet build ${{ env.SOLUTION_PATH }} --configuration ${{ env.BUILD_CONFIGURATION }} --no-restore

- name: Build Playwright test project
run: dotnet build ${{ env.PLAYWRIGHT_TEST_PROJECT }} --configuration ${{ env.BUILD_CONFIGURATION }} --no-restore

- name: Start Docker Compose services
run: |
cd ${{ env.DOCKER_COMPOSE_PATH }}
docker compose up -d
env:
COMPOSE_HTTP_TIMEOUT: 200

- name: Wait for services to be healthy
run: |
cd ${{ env.DOCKER_COMPOSE_PATH }}

echo "Waiting for services to be healthy..."

MAX_WAIT=300
ELAPSED=0
INTERVAL=10

while [ $ELAPSED -lt $MAX_WAIT ]; do
# Check if all services are running
RUNNING=$(docker compose ps --status running --format json 2>/dev/null | jq -s 'length' 2>/dev/null || echo "0")
TOTAL=$(docker compose ps --format json 2>/dev/null | jq -s 'length' 2>/dev/null || echo "0")

echo "Running containers: $RUNNING/$TOTAL"

# Check for any unhealthy services
UNHEALTHY=$(docker compose ps --format json 2>/dev/null | jq -r 'select(.Health != "" and .Health != "healthy") | .Service' 2>/dev/null | wc -l)

if [ $RUNNING -ge 6 ] && [ $UNHEALTHY -eq 0 ]; then
echo "Services are up and running!"
docker compose ps
break
fi

echo "Waiting for services... ($ELAPSED/$MAX_WAIT seconds)"
sleep $INTERVAL
ELAPSED=$((ELAPSED + INTERVAL))
done

if [ $ELAPSED -ge $MAX_WAIT ]; then
echo "Timeout waiting for services to be ready"
echo "Current service status:"
docker compose ps
echo "Service logs:"
docker compose logs --tail=100
exit 1
fi

# Additional wait to ensure services are fully ready
echo "Waiting additional 20 seconds for services to stabilize..."
sleep 20

# Verify critical endpoints are responding
echo "Checking DataEngine endpoint..."
for i in {1..15}; do
if curl -f -s -o /dev/null ${{ env.BASE_URL }}/shell-descriptors 2>&1; then
echo "DataEngine is responding!"
break
fi
if [ $i -eq 15 ]; then
echo "DataEngine is not responding after 15 attempts"
docker compose logs twinengine-dataengine --tail=50
exit 1
fi
echo "Attempt $i: DataEngine not ready yet..."
sleep 5
done

echo "All services are ready for testing!"

- name: Show running containers
if: always()
run: |
cd ${{ env.DOCKER_COMPOSE_PATH }}
docker compose ps
echo "---"
docker compose logs --tail=50

- name: Run Playwright Tests
run: dotnet test ${{ env.PLAYWRIGHT_TEST_PROJECT }} --configuration ${{ env.BUILD_CONFIGURATION }} --no-build --logger "trx;LogFileName=playwright_test_results.trx" --verbosity normal
env:
BASE_URL: ${{ env.BASE_URL }}

- name: Publish Test Results
uses: dorny/test-reporter@fe45e9537387dac839af0d33ba56eed8e24189e8 # v2.3.0
if: always()
with:
name: Playwright Test Results
path: "**/playwright_test_results.trx"
reporter: dotnet-trx
fail-on-error: true

- name: Capture Docker Compose Logs
if: always()
run: |
cd ${{ env.DOCKER_COMPOSE_PATH }}
mkdir -p logs
docker compose logs > logs/docker-compose-full.log 2>&1 || true
docker compose ps > logs/docker-compose-status.txt 2>&1 || true

- name: Stop Docker Compose services
if: always()
run: |
cd ${{ env.DOCKER_COMPOSE_PATH }}
docker compose down -v
1 change: 0 additions & 1 deletion example/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ Before running the demonstrator, ensure you have installed:
1. **Clone or extract this repository:**
```bash
git clone https://github.com/AAS-TwinEngine/AAS.TwinEngine.DataEngine.git
cd AAS.TwinEngine.DataEngine
```
2. **Go Inside example Folder**

Expand Down
58 changes: 58 additions & 0 deletions source/AAS.TwinEngine.DataEngine.sln
Original file line number Diff line number Diff line change
Expand Up @@ -13,32 +13,90 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AAS.TwinEngine.Plugin.TestP
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AAS.TwinEngine.Plugin.TestPlugin.UnitTests", "AAS.TwinEngine.Plugin.TestPlugin.UnitTests\AAS.TwinEngine.Plugin.TestPlugin.UnitTests.csproj", "{573F3A2B-8CC3-40D8-B543-74BF5DF7D4FF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AAS.TwinEngine.Plugin.TestPlugin.PlaywrightTests", "AAS.TwinEngine.Plugin.TestPlugin.PlaywrightTests\AAS.TwinEngine.Plugin.TestPlugin.PlaywrightTests.csproj", "{147F5F77-EC38-4541-AF3C-5B4FAD15E1C4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{80387870-5B50-461A-B5E7-105B9D526F7B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{80387870-5B50-461A-B5E7-105B9D526F7B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{80387870-5B50-461A-B5E7-105B9D526F7B}.Debug|x64.ActiveCfg = Debug|Any CPU
{80387870-5B50-461A-B5E7-105B9D526F7B}.Debug|x64.Build.0 = Debug|Any CPU
{80387870-5B50-461A-B5E7-105B9D526F7B}.Debug|x86.ActiveCfg = Debug|Any CPU
{80387870-5B50-461A-B5E7-105B9D526F7B}.Debug|x86.Build.0 = Debug|Any CPU
{80387870-5B50-461A-B5E7-105B9D526F7B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{80387870-5B50-461A-B5E7-105B9D526F7B}.Release|Any CPU.Build.0 = Release|Any CPU
{80387870-5B50-461A-B5E7-105B9D526F7B}.Release|x64.ActiveCfg = Release|Any CPU
{80387870-5B50-461A-B5E7-105B9D526F7B}.Release|x64.Build.0 = Release|Any CPU
{80387870-5B50-461A-B5E7-105B9D526F7B}.Release|x86.ActiveCfg = Release|Any CPU
{80387870-5B50-461A-B5E7-105B9D526F7B}.Release|x86.Build.0 = Release|Any CPU
{B24F4A6D-294A-4C4A-BAAC-A2D396E8C88A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B24F4A6D-294A-4C4A-BAAC-A2D396E8C88A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B24F4A6D-294A-4C4A-BAAC-A2D396E8C88A}.Debug|x64.ActiveCfg = Debug|Any CPU
{B24F4A6D-294A-4C4A-BAAC-A2D396E8C88A}.Debug|x64.Build.0 = Debug|Any CPU
{B24F4A6D-294A-4C4A-BAAC-A2D396E8C88A}.Debug|x86.ActiveCfg = Debug|Any CPU
{B24F4A6D-294A-4C4A-BAAC-A2D396E8C88A}.Debug|x86.Build.0 = Debug|Any CPU
{B24F4A6D-294A-4C4A-BAAC-A2D396E8C88A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B24F4A6D-294A-4C4A-BAAC-A2D396E8C88A}.Release|Any CPU.Build.0 = Release|Any CPU
{B24F4A6D-294A-4C4A-BAAC-A2D396E8C88A}.Release|x64.ActiveCfg = Release|Any CPU
{B24F4A6D-294A-4C4A-BAAC-A2D396E8C88A}.Release|x64.Build.0 = Release|Any CPU
{B24F4A6D-294A-4C4A-BAAC-A2D396E8C88A}.Release|x86.ActiveCfg = Release|Any CPU
{B24F4A6D-294A-4C4A-BAAC-A2D396E8C88A}.Release|x86.Build.0 = Release|Any CPU
{D16C8CF8-6A29-4A40-971A-9A070A1817A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D16C8CF8-6A29-4A40-971A-9A070A1817A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D16C8CF8-6A29-4A40-971A-9A070A1817A9}.Debug|x64.ActiveCfg = Debug|Any CPU
{D16C8CF8-6A29-4A40-971A-9A070A1817A9}.Debug|x64.Build.0 = Debug|Any CPU
{D16C8CF8-6A29-4A40-971A-9A070A1817A9}.Debug|x86.ActiveCfg = Debug|Any CPU
{D16C8CF8-6A29-4A40-971A-9A070A1817A9}.Debug|x86.Build.0 = Debug|Any CPU
{D16C8CF8-6A29-4A40-971A-9A070A1817A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D16C8CF8-6A29-4A40-971A-9A070A1817A9}.Release|Any CPU.Build.0 = Release|Any CPU
{D16C8CF8-6A29-4A40-971A-9A070A1817A9}.Release|x64.ActiveCfg = Release|Any CPU
{D16C8CF8-6A29-4A40-971A-9A070A1817A9}.Release|x64.Build.0 = Release|Any CPU
{D16C8CF8-6A29-4A40-971A-9A070A1817A9}.Release|x86.ActiveCfg = Release|Any CPU
{D16C8CF8-6A29-4A40-971A-9A070A1817A9}.Release|x86.Build.0 = Release|Any CPU
{455B960D-57D0-4D9B-805C-E1DEA05B9311}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{455B960D-57D0-4D9B-805C-E1DEA05B9311}.Debug|Any CPU.Build.0 = Debug|Any CPU
{455B960D-57D0-4D9B-805C-E1DEA05B9311}.Debug|x64.ActiveCfg = Debug|Any CPU
{455B960D-57D0-4D9B-805C-E1DEA05B9311}.Debug|x64.Build.0 = Debug|Any CPU
{455B960D-57D0-4D9B-805C-E1DEA05B9311}.Debug|x86.ActiveCfg = Debug|Any CPU
{455B960D-57D0-4D9B-805C-E1DEA05B9311}.Debug|x86.Build.0 = Debug|Any CPU
{455B960D-57D0-4D9B-805C-E1DEA05B9311}.Release|Any CPU.ActiveCfg = Release|Any CPU
{455B960D-57D0-4D9B-805C-E1DEA05B9311}.Release|Any CPU.Build.0 = Release|Any CPU
{455B960D-57D0-4D9B-805C-E1DEA05B9311}.Release|x64.ActiveCfg = Release|Any CPU
{455B960D-57D0-4D9B-805C-E1DEA05B9311}.Release|x64.Build.0 = Release|Any CPU
{455B960D-57D0-4D9B-805C-E1DEA05B9311}.Release|x86.ActiveCfg = Release|Any CPU
{455B960D-57D0-4D9B-805C-E1DEA05B9311}.Release|x86.Build.0 = Release|Any CPU
{573F3A2B-8CC3-40D8-B543-74BF5DF7D4FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{573F3A2B-8CC3-40D8-B543-74BF5DF7D4FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{573F3A2B-8CC3-40D8-B543-74BF5DF7D4FF}.Debug|x64.ActiveCfg = Debug|Any CPU
{573F3A2B-8CC3-40D8-B543-74BF5DF7D4FF}.Debug|x64.Build.0 = Debug|Any CPU
{573F3A2B-8CC3-40D8-B543-74BF5DF7D4FF}.Debug|x86.ActiveCfg = Debug|Any CPU
{573F3A2B-8CC3-40D8-B543-74BF5DF7D4FF}.Debug|x86.Build.0 = Debug|Any CPU
{573F3A2B-8CC3-40D8-B543-74BF5DF7D4FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{573F3A2B-8CC3-40D8-B543-74BF5DF7D4FF}.Release|Any CPU.Build.0 = Release|Any CPU
{573F3A2B-8CC3-40D8-B543-74BF5DF7D4FF}.Release|x64.ActiveCfg = Release|Any CPU
{573F3A2B-8CC3-40D8-B543-74BF5DF7D4FF}.Release|x64.Build.0 = Release|Any CPU
{573F3A2B-8CC3-40D8-B543-74BF5DF7D4FF}.Release|x86.ActiveCfg = Release|Any CPU
{573F3A2B-8CC3-40D8-B543-74BF5DF7D4FF}.Release|x86.Build.0 = Release|Any CPU
{147F5F77-EC38-4541-AF3C-5B4FAD15E1C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{147F5F77-EC38-4541-AF3C-5B4FAD15E1C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{147F5F77-EC38-4541-AF3C-5B4FAD15E1C4}.Debug|x64.ActiveCfg = Debug|Any CPU
{147F5F77-EC38-4541-AF3C-5B4FAD15E1C4}.Debug|x64.Build.0 = Debug|Any CPU
{147F5F77-EC38-4541-AF3C-5B4FAD15E1C4}.Debug|x86.ActiveCfg = Debug|Any CPU
{147F5F77-EC38-4541-AF3C-5B4FAD15E1C4}.Debug|x86.Build.0 = Debug|Any CPU
{147F5F77-EC38-4541-AF3C-5B4FAD15E1C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{147F5F77-EC38-4541-AF3C-5B4FAD15E1C4}.Release|Any CPU.Build.0 = Release|Any CPU
{147F5F77-EC38-4541-AF3C-5B4FAD15E1C4}.Release|x64.ActiveCfg = Release|Any CPU
{147F5F77-EC38-4541-AF3C-5B4FAD15E1C4}.Release|x64.Build.0 = Release|Any CPU
{147F5F77-EC38-4541-AF3C-5B4FAD15E1C4}.Release|x86.ActiveCfg = Release|Any CPU
{147F5F77-EC38-4541-AF3C-5B4FAD15E1C4}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
2 changes: 1 addition & 1 deletion source/AAS.TwinEngine.DataEngine/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ ENV PATH="$PATH:/root/.dotnet/tools"
ARG BUILD_CONFIGURATION=Release
WORKDIR /App
COPY ["AAS.TwinEngine.DataEngine/", "AAS.TwinEngine.DataEngine/"]
RUN dotnet restore "AAS.TwinEngine.DataEngine/AAS.TwinEngine.DataEngine.csproj"
RUN dotnet restore "AAS.TwinEngine.DataEngine/AAS.TwinEngine.DataEngine.csproj" --locked-mode
RUN dotnet publish "AAS.TwinEngine.DataEngine/AAS.TwinEngine.DataEngine.csproj" -c "$BUILD_CONFIGURATION" -o out
# Generate Application SBOM at sbom/bom.xml (omitting dev/test dependencies as they do not appear in final build)
RUN dotnet-CycloneDX "AAS.TwinEngine.DataEngine/AAS.TwinEngine.DataEngine.csproj" -o "sbom/" --exclude-dev --exclude-test-projects --set-nuget-purl --spec-version 1.6 --disable-package-restore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,12 +112,17 @@ private async Task<string> SendGetRequestAndReadContentAsync(string url, Cancell
private async Task SendRequestWithBodyAsync(HttpMethod method, string url, ShellDescriptor data, CancellationToken cancellationToken)
{
var client = clientFactory.CreateClient(HttpClientName);
var content = new StringContent(JsonSerializer.Serialize(data), Encoding.UTF8, "application/json");

var json = JsonSerializer.Serialize(data, JsonSerializationOptions.Serialization);
var content = new StringContent(json, Encoding.UTF8, "application/json");

logger.LogInformation("Sending HTTP {Method} request to {Url}", method, url);

using var request = new HttpRequestMessage(method, url);
request.Content = content;
using var request = new HttpRequestMessage(method, url)
{
Content = content
};

var response = await client.SendAsync(request, cancellationToken).ConfigureAwait(false);

await HandleResponseAsync(response, $"{method} ShellDescriptor", url, cancellationToken).ConfigureAwait(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,11 @@ public static class JsonSerializationOptions
public static readonly JsonSerializerOptions Serialization = new()
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
WriteIndented = false
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull
};

public static readonly JsonSerializerOptions SerializationWithEnum = new()
{
WriteIndented = false,
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
Converters = { new JsonStringEnumConverter(JsonNamingPolicy.CamelCase) }
};
Expand Down
Loading
Loading