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
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
run: dotnet playwright -p Tests/ManagedCode.Storage.Tests/ManagedCode.Storage.Tests.csproj install chromium

- name: Test
run: dotnet test Tests/ManagedCode.Storage.Tests/ManagedCode.Storage.Tests.csproj --configuration Release --no-build --verbosity normal --collect:"XPlat Code Coverage"
run: dotnet test Tests/ManagedCode.Storage.Tests/ManagedCode.Storage.Tests.csproj --configuration Release --no-build --verbosity normal --filter "Category!=BrowserStress" --collect:"XPlat Code Coverage"

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
run: dotnet playwright -p Tests/ManagedCode.Storage.Tests/ManagedCode.Storage.Tests.csproj install chromium

- name: Test
run: dotnet test Tests/ManagedCode.Storage.Tests/ManagedCode.Storage.Tests.csproj --configuration Release --no-build --verbosity normal
run: dotnet test Tests/ManagedCode.Storage.Tests/ManagedCode.Storage.Tests.csproj --configuration Release --no-build --verbosity normal --filter "Category!=BrowserStress"

- name: Pack NuGet packages
run: dotnet pack ManagedCode.Storage.slnx --configuration Release --no-build -p:IncludeSymbols=false -p:SymbolPackageFormat=snupkg --output ./artifacts
Expand Down
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -327,4 +327,5 @@ Ask first:
### Dislikes

- Template-generated scaffolding in tests; keep test hosts and verification surfaces minimal, hand-written, and purpose-built.
- CI regressions that inflate `build-and-test` far beyond the historical baseline; browser large-file coverage must stay meaningful without turning the default GitHub Actions path into a 30+ minute run.
- Unnecessary product-code fallbacks; prefer one clear production path unless backward compatibility is an explicit requirement for the task.
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ public async Task BrowserStorage_ServerHost_TextFlow_ShouldPersistListAndDelete(

[Fact]
[Trait("Category", "LargeFile")]
[Trait("Category", "BrowserStress")]
public async Task BrowserStorage_ServerHost_LargeFlow_ShouldPersistAcrossPages()
{
const int chunkedPayloadSizeMiB = 1024;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ public async Task BrowserStorage_WasmHost_TextFlow_ShouldPersistListAndDelete()

[Fact]
[Trait("Category", "LargeFile")]
[Trait("Category", "BrowserStress")]
public async Task BrowserStorage_WasmHost_LargeFlow_ShouldPersistAcrossPages()
{
const int chunkedPayloadSizeMiB = 1024;
Expand Down
1 change: 1 addition & 0 deletions docs/Development/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,5 +57,6 @@ dotnet format ManagedCode.Storage.slnx

- Start Docker Desktop (or your Docker daemon) before running the full test suite.
- AWS and Orleans integration tests intentionally pin LocalStack to `localstack/localstack:4.14.0`; do not switch them back to `latest`, because the end-of-March 2026 `latest` image became auth-gated and breaks CI without a token.
- GitHub Actions `build-and-test` and `Release` intentionally exclude `Category=BrowserStress`; run that browser-hosted `1 GiB` stress lane locally with `dotnet test ... --filter "Category=BrowserStress"` when you specifically need it.
- Never commit secrets (cloud keys, OAuth tokens, connection strings). Use environment variables or user secrets.
- Credentials for cloud-drive providers are documented in `docs/Development/credentials.md`.
15 changes: 15 additions & 0 deletions docs/Testing/strategy.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ Where possible, tests run without real cloud accounts:
Some tests are marked as “large file” to validate streaming behaviour:

- `[Trait("Category", "LargeFile")]`
- Browser-hosted `1 GiB` stress flows also carry `[Trait("Category", "BrowserStress")]`.

Run everything (canonical):

Expand All @@ -77,6 +78,20 @@ Skip large-file tests when iterating:
dotnet test Tests/ManagedCode.Storage.Tests/ManagedCode.Storage.Tests.csproj --configuration Release --filter "Category!=LargeFile"
```

Skip the hosted-browser stress lane while still running the default fast browser coverage:

```bash
dotnet test Tests/ManagedCode.Storage.Tests/ManagedCode.Storage.Tests.csproj --configuration Release --filter "Category!=BrowserStress"
```

Run only the hosted-browser `1 GiB` stress lane locally when you explicitly need it:

```bash
dotnet test Tests/ManagedCode.Storage.Tests/ManagedCode.Storage.Tests.csproj --configuration Release --filter "Category=BrowserStress"
```

GitHub-hosted `build-and-test` and `Release` workflows intentionally exclude `Category=BrowserStress` so mainline CI stays near the historical runtime instead of spending 30+ minutes on Chromium-hosted `1 GiB` OPFS stress flows that are not stable on shared runners.

## Quality Rules

- Each test must assert concrete, observable behaviour (state/output/errors/side-effects).
Expand Down
Loading