Conversation
Blog posts, README, and docs/index.html updated for v1.2.0. Reviewed and approved by Aragorn.
Fixes 3 review blockers identified in PR #126 review: - docs/index.html: npm run css:watch → npm run tw:watch (matches root package.json) - README.md + kickoff blog post: Aspire 13.2.2 → 13.2.3 (matches Directory.Packages.props) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Summary
Adds `workflow_dispatch` trigger to `squad-mark-released.yml` so the
Done → Released project board migration can be run manually.
## Problem
When v1.2.0 was published, `squad-mark-released.yml` did not fire —
likely because the release event and workflow landing on `main` had a
timing race. With no manual trigger, the only recovery path was direct
GraphQL mutations.
## Changes
- Add `workflow_dispatch: {}` trigger
- Update job `if` condition to always run on manual dispatch (skip the
pre-release/draft guard for `workflow_dispatch` events)
- Use `context.payload.release?.tag_name ?? 'manual dispatch'` to
prevent null-ref in the summary notice
## Testing
After merge to `dev` → `main`, the workflow will appear under **Actions
→ Squad Mark Released → Run workflow** for manual recovery use.
---
> ⚠️ This PR should be fast-tracked to `main` so `dev` and `main` stay
in sync.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Boromir <boromir@squad.dev>
Closes #130 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Closes #133 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Sprint 6: Code Quality **Goal:** Eliminate analyzer warnings, enforce internal visibility on Web feature types, expand test coverage, and migrate Unit.Tests into Web.Tests. --- ## Merged Feature PRs - Closes #137 — PR #144 — fix(quality): rename `ct` → `cancellationToken` in all MediatR handlers - Closes #138 — PR #145 — test: add unit tests for BlogPost, Result, and ValidationBehavior (42 tests) - Closes #139 — PR #146 — test: add unit tests for UserManagementHandler (16 tests) - Closes #140 — PR #147 — fix(quality): make Web feature types `internal` (CA1515, ~28 types) - Closes #141 — PR #148 — test: add unit tests for BlogPostMappings (22 tests) - Closes #142 — PR #149 — fix(quality): add ConfigureAwait(false) and specific exception catches - Closes #143 — PR #150 — fix(quality): address Domain and ServiceDefaults analyzer warnings - Closes #151 — PR #152 — feat(tests): migrate Unit.Tests → Web.Tests and remove Unit.Tests project --- ## Test Summary - **80+ new tests** added across all PRs - **105 Web.Tests passing** (0 failures) - `DynamicProxyGenAssembly2` added to `InternalsVisibleTo` in Web.csproj for NSubstitute support ## Notable Changes - `Unit.Tests` project removed; all tests now live in `Web.Tests` - ~28 Web feature types changed from `public` to `internal` (CA1515 compliance) - All MediatR handler parameters renamed from `ct` to `cancellationToken` for clarity - `ConfigureAwait(false)` applied to all async calls in service layer - Domain and ServiceDefaults analyzer warnings resolved --- ## Checklist - [x] All sprint issues closed (#137–#143, #151) - [x] CI green (0 build errors) - [x] 105 Web.Tests passing - [x] Milestone at 100% --------- Co-authored-by: Boromir <boromir@squad.dev> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Closes milestone: Sprint 7 — xUnit v3 Pilot (Domain.Tests) ## Sprint Summary - ✅ Added xUnit v3 packages (v3.2.2) to Directory.Packages.props alongside xUnit v2 - ✅ Domain.Tests migrated to xUnit v3: 42/42 tests passing - ✅ Zero source-level breaking changes required - ✅ CI validation complete — xUnit v3 fully compatible - ✅ ADR recorded with performance analysis (5–15% improvement projected) - ✅ Retrospective template prepared for Phase 2 validation ## Issues Closed - Closes #162 - Closes #163 - Closes #164 - Closes #165 - Closes #166 - Closes #167 ## Checklist - [x] All sprint issues closed - [x] CI green - [x] Milestone at 100% - [x] All PRs merged to sprint branch --------- Co-authored-by: Boromir <boromir@squad.dev> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Sprint 8 Retrospective — xUnit v3 Architecture.Tests Pilot Closes #181 **Working as Aragorn (Lead Developer)** --- ## Summary This PR delivers the Sprint 8 retrospective document for the xUnit v3 Architecture.Tests pilot. It captures what went well, areas for improvement, key learnings, and recommendations for completing the xUnit v3 rollout across the MyBlog test suite. ## Files Changed - `docs/sprint-8-xunit-v3-pilot-retro.md` — Full retrospective document - `.squad/agents/aragorn/history.md` — Aragorn's learnings from Sprint 8 appended ## Retrospective Highlights ### What Went Well - Wave 1 PRs (#176, #177) merged with **zero rework** - CI passed **immediately** after package update - NetArchTest `[Fact]` attributes require **zero changes** for xUnit v3 — easiest migration surface in the test suite - Wave dependency chain worked perfectly — 0 blocking issues between waves - Side effect: Boromir fixed a CI gap where `Domain.Tests` was missing from `squad-preview.yml` ### Key Metrics | Metric | Value | |---|---| | Sprint issues | 6 (#176–#181) | | Architecture.Tests passing | 11 tests @ 72ms | | Domain.Tests passing | 42 tests | | Combined passing | 53+ tests | | Rework PRs | 0 | | Blocking inter-wave issues | 0 | ### Key Decisions Referenced - `boromir-xunit-v3-package-strategy.md` — meta-package pattern, CI gap fix - `gimli-xunit-v3-migration-pattern.md` — AAA comment pattern for NetArchTest - `aragorn-xunit-v3-rollout-strategy.md` (local inbox) — rollout ordering, standardization ### Recommendations 1. **Blazor.Tests → Sprint 9** (bUnit has explicit xUnit v3 support) 2. **Unit.Tests → Sprint 9–10** (simpler migration surface) 3. **New test projects start with xUnit v3** — no more v2 projects 4. **Integration.Tests** requires a separate spike (IAsyncLifetime + Docker concerns) 5. **Capture CI baseline metrics before migration** (Sprint 7 gap — don't repeat) --- ## xUnit v3 Rollout Status | Test Project | Status | Sprint | |---|---|---| | `tests/Domain.Tests` | ✅ Migrated | Sprint 7 | | `tests/Architecture.Tests` | ✅ Migrated | Sprint 8 | | `tests/Blazor.Tests` | 🔜 Recommended next | Sprint 9 | | `tests/Unit.Tests` | 🔜 Planned | Sprint 9–10 | | `tests/Integration.Tests` |⚠️ Assess separately | TBD | --------- Co-authored-by: Boromir <boromir@squad.dev> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…189) ## Problem Sprint 6's migration of Unit.Tests to Web.Tests left 2 test files orphaned: - `tests/Unit.Tests/Data/BlogPostMappingsTests.cs` (~22 tests) - `tests/Unit.Tests/Handlers/UserManagementHandlerTests.cs` (~16 tests) These files were never compiled because Unit.Tests.csproj was deleted during the migration. Result: ~38 test cases invisible to coverage reporting. **Current coverage:** 77.5% (threshold: 80%) — blocked from merge ## Solution - Move 2 orphaned test files to Web.Tests - Delete empty tests/Unit.Tests/ directory - Restore 38 test cases to coverage measurement ## Verification ✅ Web.Tests compiles with moved files (0 errors) ✅ All 127 tests in Web.Tests pass ## Expected Outcome Coverage restored to 80%+ and unblocks Sprint 9 --------- Co-authored-by: Boromir <boromir@squad.dev> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Aragorn gate: ✅ OPEN (xUnit v3 pattern proven via Sprint 7–8 pilots) - Gimli plan: Issue #190, 127 tests across 3 phases (package → API → verify) - Pippin docs: Session log created (not committed per .gitignore) - Inbox: No new decisions this round Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ix indentation - Upgrade xunit → xunit.v3 in Web.Tests.csproj - Remove coverlet.msbuild (not used with v3); keep coverlet.collector - Add xunit.runner.json with parallelism settings matching Domain.Tests - Fix file headers: 'Unit.Tests' → 'Web.Tests' across all affected files - Remove duplicate old-format header from ResultTests.cs - Add AAA pattern (// Arrange, // Act, // Assert) to all test methods lacking them - Fix indentation in 4 handler test files (entire class body was at col 0) - All 127 tests pass Closes #190 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ration Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Completes Sprint 9 Web.Tests xUnit v3 migration. ## Changes - Upgrade xUnit package from v2 to v3 meta-package - Update all 15 test file headers (Unit.Tests → Web.Tests) - Add AAA comments to ~77 test methods (Arrange/Act/Assert) - Fix indentation in 4 handler test files - Add xunit.runner.json with parallelism configuration - Remove coverlet.msbuild (incompatible with xUnit v3 runner) ## Test Results - All 127 Web.Tests pass ✅ - Runtime: 122ms - Coverage: 80%+ (restored by PR #189) Closes #190 Co-authored-by: Gimli <gimli@squad.dev>
## Overview Completes Sprint 10 Task #193: Migrate Web.Tests.Bunit test suite from xUnit v2 to xUnit v3, following the proven pattern from Sprint 9's Web.Tests migration. ## Changes - **Package Upgrade:** xunit v2 → xunit.v3 (v3.2.2) - **Build Configuration:** Added coverlet.msbuild for code coverage tracking - **Test Runner:** Created xunit.runner.json with parallelization enabled (matches Sprint 9 pattern) - **File Headers:** Updated 6 test files with consistent 'Web.Tests.Bunit' namespace references - **Test Structure:** Validated all 61 bUnit tests follow AAA (Arrange-Act-Assert) pattern ## Testing & Validation ✅ **Debug Build:** 61/61 tests passed (439 ms) ✅ **Release Build:** 61/61 tests passed (486 ms) ✅ **Gate 3 (Full Suite):** 261/261 tests passed across all projects - Architecture.Tests: 11/11 ✅ - Domain.Tests: 42/42 ✅ - Web.Tests: 127/127 ✅ (Sprint 9 — verified stable) - AppHost.Tests: 20/20 ✅ (Integration tests) ✅ **Pre-Push Hooks:** All gates passed (0–4) ## No Regressions - Web.Tests migration (Sprint 9) remains stable: 127/127 passing - Architecture.Tests and Domain.Tests fully passing - Integration tests functioning correctly ## Files Modified - tests/Web.Tests.Bunit/Web.Tests.Bunit.csproj - tests/Web.Tests.Bunit/xunit.runner.json (NEW) - tests/Web.Tests.Bunit/Components/RazorSmokeTests.cs - tests/Web.Tests.Bunit/Components/Layout/NavMenuTests.cs - tests/Web.Tests.Bunit/Components/Theme/ThemeProviderTests.cs - tests/Web.Tests.Bunit/Components/Theme/ThemeSelectorTests.cs - tests/Web.Tests.Bunit/Features/ProfileTests.cs - tests/Web.Tests.Bunit/Testing/TestAuthorizationService.cs Closes #193 Co-authored-by: Boromir <boromir@squad.dev>
## Summary Migrates `tests/Web.Tests.Integration` from xUnit v2 to xUnit v3 (3.2.2), matching the pattern already established by `Web.Tests` and `Web.Tests.Bunit`. Working as Gimli (Tester) Closes #199 --- ## Changes | File | Change | |------|--------| | `Web.Tests.Integration.csproj` | `xunit` → `xunit.v3`; runner JSON item: `<None Update>` → `<Content Include>` | | `IntegrationTest1.cs` | **Deleted** — stale Aspire starter template, all methods commented out | | `MongoDbFixture.cs` / `RedisFixture.cs` | `IAsyncLifetime`: `async Task` → `async ValueTask` (xUnit v3 requirement); file headers fixed | | `BlogPostIntegrationCollection.cs` / `RedisCachingCollection.cs` | File headers fixed | | `MongoDbBlogPostRepositoryTests.cs` | File header fixed; all async calls thread `TestContext.Current.CancellationToken` | | `BlogPostCacheServiceTests.cs` | File header fixed; all async calls thread `TestContext.Current.CancellationToken` | ## xUnit v3 migration notes - **`IAsyncLifetime`** now requires `ValueTask` for `InitializeAsync` and `DisposeAsync` — fixtures updated accordingly. - **`xUnit1051`** (use `TestContext.Current.CancellationToken`) resolved by threading `ct` through all repository and cache service calls. All methods already accepted `CancellationToken` as an optional parameter — no production code changes required. - **Runner JSON settings preserved**: `parallelizeAssembly: false` / `parallelizeTestCollections: true` kept to avoid Docker container conflicts during parallel collection runs. ## Verification All pre-push gates passed: - ✅ Release build (0 errors) - ✅ Unit/arch tests: 241 passed - ✅ **Integration tests: 12/12 passed** (MongoDB + Redis via Testcontainers) --------- Co-authored-by: Boromir <boromir@squad.dev> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ions group (#196) Bumps the all-actions group with 1 update: [dotnet-sdk](https://github.com/dotnet/sdk). Updates `dotnet-sdk` from 10.0.202 to 10.0.203 <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/dotnet/sdk/commits">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: mpaulosky <60372079+mpaulosky@users.noreply.github.com>
Bumps the all-actions group with 5 updates: | Package | From | To | | --- | --- | --- | | [actions/checkout](https://github.com/actions/checkout) | `4` | `6` | | [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) | `8.1.0` | `8.1.1` | | [actions/setup-dotnet](https://github.com/actions/setup-dotnet) | `4` | `5` | | [github/codeql-action](https://github.com/github/codeql-action) | `3` | `4` | | [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) | `4` | `5` | Updates `actions/checkout` from 4 to 6 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/checkout/releases">actions/checkout's releases</a>.</em></p> <blockquote> <h2>v6.0.0</h2> <h2>What's Changed</h2> <ul> <li>Update README to include Node.js 24 support details and requirements by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li> <li>Persist creds to a separate file by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li> <li>v6-beta by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2298">actions/checkout#2298</a></li> <li>update readme/changelog for v6 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2311">actions/checkout#2311</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v5.0.0...v6.0.0">https://github.com/actions/checkout/compare/v5.0.0...v6.0.0</a></p> <h2>v6-beta</h2> <h2>What's Changed</h2> <p>Updated persist-credentials to store the credentials under <code>$RUNNER_TEMP</code> instead of directly in the local git config.</p> <p>This requires a minimum Actions Runner version of <a href="https://github.com/actions/runner/releases/tag/v2.329.0">v2.329.0</a> to access the persisted credentials for <a href="https://docs.github.com/en/actions/tutorials/use-containerized-services/create-a-docker-container-action">Docker container action</a> scenarios.</p> <h2>v5.0.1</h2> <h2>What's Changed</h2> <ul> <li>Port v6 cleanup to v5 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v5...v5.0.1">https://github.com/actions/checkout/compare/v5...v5.0.1</a></p> <h2>v5.0.0</h2> <h2>What's Changed</h2> <ul> <li>Update actions checkout to use node 24 by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li> <li>Prepare v5.0.0 release by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2238">actions/checkout#2238</a></li> </ul> <h2>⚠️ Minimum Compatible Runner Version</h2> <p><strong>v2.327.1</strong><br /> <a href="https://github.com/actions/runner/releases/tag/v2.327.1">Release Notes</a></p> <p>Make sure your runner is updated to this version or newer to use this release.</p> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v4...v5.0.0">https://github.com/actions/checkout/compare/v4...v5.0.0</a></p> <h2>v4.3.1</h2> <h2>What's Changed</h2> <ul> <li>Port v6 cleanup to v4 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v4...v4.3.1">https://github.com/actions/checkout/compare/v4...v4.3.1</a></p> <h2>v4.3.0</h2> <h2>What's Changed</h2> <ul> <li>docs: update README.md by <a href="https://github.com/motss"><code>@motss</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li> <li>Add internal repos for checking out multiple repositories by <a href="https://github.com/mouismail"><code>@mouismail</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li> <li>Documentation update - add recommended permissions to Readme by <a href="https://github.com/benwells"><code>@benwells</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's changelog</a>.</em></p> <blockquote> <h1>Changelog</h1> <h2>v6.0.2</h2> <ul> <li>Fix tag handling: preserve annotations and explicit fetch-tags by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2356">actions/checkout#2356</a></li> </ul> <h2>v6.0.1</h2> <ul> <li>Add worktree support for persist-credentials includeIf by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2327">actions/checkout#2327</a></li> </ul> <h2>v6.0.0</h2> <ul> <li>Persist creds to a separate file by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li> <li>Update README to include Node.js 24 support details and requirements by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li> </ul> <h2>v5.0.1</h2> <ul> <li>Port v6 cleanup to v5 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li> </ul> <h2>v5.0.0</h2> <ul> <li>Update actions checkout to use node 24 by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li> </ul> <h2>v4.3.1</h2> <ul> <li>Port v6 cleanup to v4 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li> </ul> <h2>v4.3.0</h2> <ul> <li>docs: update README.md by <a href="https://github.com/motss"><code>@motss</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li> <li>Add internal repos for checking out multiple repositories by <a href="https://github.com/mouismail"><code>@mouismail</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li> <li>Documentation update - add recommended permissions to Readme by <a href="https://github.com/benwells"><code>@benwells</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li> <li>Adjust positioning of user email note and permissions heading by <a href="https://github.com/joshmgross"><code>@joshmgross</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li> <li>Update README.md by <a href="https://github.com/nebuk89"><code>@nebuk89</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li> <li>Update CODEOWNERS for actions by <a href="https://github.com/TingluoHuang"><code>@TingluoHuang</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li> <li>Update package dependencies by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li> </ul> <h2>v4.2.2</h2> <ul> <li><code>url-helper.ts</code> now leverages well-known environment variables by <a href="https://github.com/jww3"><code>@jww3</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li> <li>Expand unit test coverage for <code>isGhes</code> by <a href="https://github.com/jww3"><code>@jww3</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li> </ul> <h2>v4.2.1</h2> <ul> <li>Check out other refs/* by commit if provided, fall back to ref by <a href="https://github.com/orhantoy"><code>@orhantoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li> </ul> <h2>v4.2.0</h2> <ul> <li>Add Ref and Commit outputs by <a href="https://github.com/lucacome"><code>@lucacome</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1180">actions/checkout#1180</a></li> <li>Dependency updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a>- <a href="https://redirect.github.com/actions/checkout/pull/1777">actions/checkout#1777</a>, <a href="https://redirect.github.com/actions/checkout/pull/1872">actions/checkout#1872</a></li> </ul> <h2>v4.1.7</h2> <ul> <li>Bump the minor-npm-dependencies group across 1 directory with 4 updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1739">actions/checkout#1739</a></li> <li>Bump actions/checkout from 3 to 4 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1697">actions/checkout#1697</a></li> <li>Check out other refs/* by commit by <a href="https://github.com/orhantoy"><code>@orhantoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1774">actions/checkout#1774</a></li> <li>Pin actions/checkout's own workflows to a known, good, stable version. by <a href="https://github.com/jww3"><code>@jww3</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1776">actions/checkout#1776</a></li> </ul> <h2>v4.1.6</h2> <ul> <li>Check platform to set archive extension appropriately by <a href="https://github.com/cory-miller"><code>@cory-miller</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1732">actions/checkout#1732</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/checkout/commit/de0fac2e4500dabe0009e67214ff5f5447ce83dd"><code>de0fac2</code></a> Fix tag handling: preserve annotations and explicit fetch-tags (<a href="https://redirect.github.com/actions/checkout/issues/2356">#2356</a>)</li> <li><a href="https://github.com/actions/checkout/commit/064fe7f3312418007dea2b49a19844a9ee378f49"><code>064fe7f</code></a> Add orchestration_id to git user-agent when ACTIONS_ORCHESTRATION_ID is set (...</li> <li><a href="https://github.com/actions/checkout/commit/8e8c483db84b4bee98b60c0593521ed34d9990e8"><code>8e8c483</code></a> Clarify v6 README (<a href="https://redirect.github.com/actions/checkout/issues/2328">#2328</a>)</li> <li><a href="https://github.com/actions/checkout/commit/033fa0dc0b82693d8986f1016a0ec2c5e7d9cbb1"><code>033fa0d</code></a> Add worktree support for persist-credentials includeIf (<a href="https://redirect.github.com/actions/checkout/issues/2327">#2327</a>)</li> <li><a href="https://github.com/actions/checkout/commit/c2d88d3ecc89a9ef08eebf45d9637801dcee7eb5"><code>c2d88d3</code></a> Update all references from v5 and v4 to v6 (<a href="https://redirect.github.com/actions/checkout/issues/2314">#2314</a>)</li> <li><a href="https://github.com/actions/checkout/commit/1af3b93b6815bc44a9784bd300feb67ff0d1eeb3"><code>1af3b93</code></a> update readme/changelog for v6 (<a href="https://redirect.github.com/actions/checkout/issues/2311">#2311</a>)</li> <li><a href="https://github.com/actions/checkout/commit/71cf2267d89c5cb81562390fa70a37fa40b1305e"><code>71cf226</code></a> v6-beta (<a href="https://redirect.github.com/actions/checkout/issues/2298">#2298</a>)</li> <li><a href="https://github.com/actions/checkout/commit/069c6959146423d11cd0184e6accf28f9d45f06e"><code>069c695</code></a> Persist creds to a separate file (<a href="https://redirect.github.com/actions/checkout/issues/2286">#2286</a>)</li> <li><a href="https://github.com/actions/checkout/commit/ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493"><code>ff7abcd</code></a> Update README to include Node.js 24 support details and requirements (<a href="https://redirect.github.com/actions/checkout/issues/2248">#2248</a>)</li> <li><a href="https://github.com/actions/checkout/commit/08c6903cd8c0fde910a37f88322edcfb5dd907a8"><code>08c6903</code></a> Prepare v5.0.0 release (<a href="https://redirect.github.com/actions/checkout/issues/2238">#2238</a>)</li> <li>Additional commits viewable in <a href="https://github.com/actions/checkout/compare/v4...v6">compare view</a></li> </ul> </details> <br /> Updates `peter-evans/create-pull-request` from 8.1.0 to 8.1.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/peter-evans/create-pull-request/releases">peter-evans/create-pull-request's releases</a>.</em></p> <blockquote> <h2>Create Pull Request v8.1.1</h2> <h2>What's Changed</h2> <ul> <li>build(deps-dev): bump the npm group with 2 updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/peter-evans/create-pull-request/pull/4305">peter-evans/create-pull-request#4305</a></li> <li>build(deps): bump minimatch by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/peter-evans/create-pull-request/pull/4311">peter-evans/create-pull-request#4311</a></li> <li>build(deps): bump the github-actions group with 2 updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/peter-evans/create-pull-request/pull/4316">peter-evans/create-pull-request#4316</a></li> <li>build(deps): bump <code>@tootallnate/once</code> and jest-environment-jsdom by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/peter-evans/create-pull-request/pull/4323">peter-evans/create-pull-request#4323</a></li> <li>build(deps-dev): bump undici from 6.23.0 to 6.24.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/peter-evans/create-pull-request/pull/4328">peter-evans/create-pull-request#4328</a></li> <li>build(deps-dev): bump flatted from 3.3.1 to 3.4.2 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/peter-evans/create-pull-request/pull/4334">peter-evans/create-pull-request#4334</a></li> <li>build(deps): bump picomatch by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/peter-evans/create-pull-request/pull/4339">peter-evans/create-pull-request#4339</a></li> <li>build(deps-dev): bump handlebars from 4.7.8 to 4.7.9 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/peter-evans/create-pull-request/pull/4344">peter-evans/create-pull-request#4344</a></li> <li>build(deps-dev): bump the npm group with 3 updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/peter-evans/create-pull-request/pull/4349">peter-evans/create-pull-request#4349</a></li> <li>fix: retry post-creation API calls on 422 eventual consistency errors by <a href="https://github.com/peter-evans"><code>@peter-evans</code></a> in <a href="https://redirect.github.com/peter-evans/create-pull-request/pull/4356">peter-evans/create-pull-request#4356</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/peter-evans/create-pull-request/compare/v8.1.0...v8.1.1">https://github.com/peter-evans/create-pull-request/compare/v8.1.0...v8.1.1</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/peter-evans/create-pull-request/commit/5f6978faf089d4d20b00c7766989d076bb2fc7f1"><code>5f6978f</code></a> fix: retry post-creation API calls on 422 eventual consistency errors (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/4356">#4356</a>)</li> <li><a href="https://github.com/peter-evans/create-pull-request/commit/d32e88dac789dcc7906e7d26f69f24116fa9c97d"><code>d32e88d</code></a> build(deps-dev): bump the npm group with 3 updates (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/4349">#4349</a>)</li> <li><a href="https://github.com/peter-evans/create-pull-request/commit/8170bccad11c0df62542c04dcaefe36d342dfd39"><code>8170bcc</code></a> build(deps-dev): bump handlebars from 4.7.8 to 4.7.9 (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/4344">#4344</a>)</li> <li><a href="https://github.com/peter-evans/create-pull-request/commit/00418193b417f888dbf1d993c5c0d31d27fdc7de"><code>0041819</code></a> build(deps): bump picomatch (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/4339">#4339</a>)</li> <li><a href="https://github.com/peter-evans/create-pull-request/commit/b993918c8536b6d44706130734d5456879762b27"><code>b993918</code></a> build(deps-dev): bump flatted from 3.3.1 to 3.4.2 (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/4334">#4334</a>)</li> <li><a href="https://github.com/peter-evans/create-pull-request/commit/36d7c8468b48f9c2f8f29e260e82f10d4b90d2bd"><code>36d7c84</code></a> build(deps-dev): bump undici from 6.23.0 to 6.24.0 (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/4328">#4328</a>)</li> <li><a href="https://github.com/peter-evans/create-pull-request/commit/a45d1fb447fcaf601166e405fd4f335cde1a8aa8"><code>a45d1fb</code></a> build(deps): bump <code>@tootallnate/once</code> and jest-environment-jsdom (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/4323">#4323</a>)</li> <li><a href="https://github.com/peter-evans/create-pull-request/commit/3499eb61835cc0015c0b786e203d74b1e8f55e43"><code>3499eb6</code></a> build(deps): bump the github-actions group with 2 updates (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/4316">#4316</a>)</li> <li><a href="https://github.com/peter-evans/create-pull-request/commit/3f3b473b8c148f5a7520efb4d1f9a70eea3d9d1f"><code>3f3b473</code></a> build(deps): bump minimatch (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/4311">#4311</a>)</li> <li><a href="https://github.com/peter-evans/create-pull-request/commit/6699836a213cf8b28c4f0408a404a6ac79d4458a"><code>6699836</code></a> build(deps-dev): bump the npm group with 2 updates (<a href="https://redirect.github.com/peter-evans/create-pull-request/issues/4305">#4305</a>)</li> <li>See full diff in <a href="https://github.com/peter-evans/create-pull-request/compare/v8.1.0...v8.1.1">compare view</a></li> </ul> </details> <br /> Updates `actions/setup-dotnet` from 4 to 5 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/setup-dotnet/releases">actions/setup-dotnet's releases</a>.</em></p> <blockquote> <h2>v5.0.0</h2> <h2>What's Changed</h2> <h3>Breaking Changes</h3> <ul> <li>Upgrade to Node.js 24 and modernize async usage by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/setup-dotnet/pull/654">actions/setup-dotnet#654</a></li> </ul> <p>Make sure your runner is updated to this version or newer to use this release. v2.327.1 <a href="https://github.com/actions/runner/releases/tag/v2.327.1">Release Notes</a></p> <h3>Dependency Updates</h3> <ul> <li>Upgrade <code>@action/cache</code> from 4.0.2 to 4.0.3 by <a href="https://github.com/aparnajyothi-y"><code>@aparnajyothi-y</code></a> in <a href="https://redirect.github.com/actions/setup-dotnet/pull/622">actions/setup-dotnet#622</a></li> <li>Upgrade husky from 8.0.3 to 9.1.7 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-dotnet/pull/591">actions/setup-dotnet#591</a></li> <li>Upgrade <code>@actions/glob</code> from 0.4.0 to 0.5.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-dotnet/pull/594">actions/setup-dotnet#594</a></li> <li>Upgrade eslint-config-prettier from 9.1.0 to 10.1.5 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-dotnet/pull/639">actions/setup-dotnet#639</a></li> <li>Upgrade undici from 5.28.5 to 5.29.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-dotnet/pull/641">actions/setup-dotnet#641</a></li> <li>Upgrade form-data to bring in fix for critical vulnerability by <a href="https://github.com/gowridurgad"><code>@gowridurgad</code></a> in <a href="https://redirect.github.com/actions/setup-dotnet/pull/652">actions/setup-dotnet#652</a></li> <li>Upgrade actions/checkout from 4 to 5 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-dotnet/pull/662">actions/setup-dotnet#662</a></li> </ul> <h3>Bug Fixes</h3> <ul> <li>Remove Support for older .NET Versions and Update installers scripts by <a href="https://github.com/gowridurgad"><code>@gowridurgad</code></a> in <a href="https://redirect.github.com/actions/setup-dotnet/pull/647">actions/setup-dotnet#647</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/gowridurgad"><code>@gowridurgad</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-dotnet/pull/647">actions/setup-dotnet#647</a></li> <li><a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-dotnet/pull/654">actions/setup-dotnet#654</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/setup-dotnet/compare/v4...v5.0.0">https://github.com/actions/setup-dotnet/compare/v4...v5.0.0</a></p> <h2>v4.3.1</h2> <h2>What's Changed</h2> <ul> <li><code>v4</code> - Remove <code>azureedge.net</code> fallback logic and update install scripts by <a href="https://github.com/zaataylor"><code>@zaataylor</code></a> in <a href="https://redirect.github.com/actions/setup-dotnet/pull/572">actions/setup-dotnet#572</a> As outlined in<a href="https://devblogs.microsoft.com/dotnet/critical-dotnet-install-links-are-changing/#call-to-action"> Critical .NET Install Links Are Changing</a>, remove the storage account fallback logic added for v4 in <a href="https://redirect.github.com/actions/setup-dotnet/pull/566">actions/setup-dotnet#566</a> and update the install scripts accordingly. <strong>Related issue</strong>: <a href="https://redirect.github.com/dotnet/install-scripts/issues/559">dotnet/install-scripts#559</a></li> <li>upgrade <code>@actions/cache</code> to 4.0.2 by <a href="https://github.com/HarithaVattikuti"><code>@HarithaVattikuti</code></a> in <a href="https://redirect.github.com/actions/setup-dotnet/pull/615">actions/setup-dotnet#615</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/setup-dotnet/compare/v4...v4.3.1">https://github.com/actions/setup-dotnet/compare/v4...v4.3.1</a></p> <h2>v4.3.0</h2> <h2>What's Changed</h2> <ul> <li>README update - add permissions section by <a href="https://github.com/benwells"><code>@benwells</code></a> in <a href="https://redirect.github.com/actions/setup-dotnet/pull/587">actions/setup-dotnet#587</a></li> <li>Configure Dependabot settings by <a href="https://github.com/HarithaVattikuti"><code>@HarithaVattikuti</code></a> in <a href="https://redirect.github.com/actions/setup-dotnet/pull/585">actions/setup-dotnet#585</a></li> <li>Upgrade <strong>cache</strong> from 3.2.4 to 4.0.0 by <a href="https://github.com/aparnajyothi-y"><code>@aparnajyothi-y</code></a> in <a href="https://redirect.github.com/actions/setup-dotnet/pull/586">actions/setup-dotnet#586</a></li> <li>Upgrade <strong>actions/publish-immutable-action</strong> from 0.0.3 to 0.0.4 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/actions/setup-dotnet/pull/590">actions/setup-dotnet#590</a></li> <li>Upgrade <strong><code>@actions/http-client</code></strong> from 2.2.1 to 2.2.3 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/actions/setup-dotnet/pull/592">actions/setup-dotnet#592</a></li> <li>Upgrade <strong>undici</strong> from 5.28.4 to 5.28.5 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/actions/setup-dotnet/pull/596">actions/setup-dotnet#596</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/benwells"><code>@benwells</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-dotnet/pull/587">actions/setup-dotnet#587</a></li> <li><a href="https://github.com/aparnajyothi-y"><code>@aparnajyothi-y</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-dotnet/pull/586">actions/setup-dotnet#586</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/setup-dotnet/commit/c2fa09f4bde5ebb9d1777cf28262a3eb3db3ced7"><code>c2fa09f</code></a> Bump minimatch from 3.1.2 to 3.1.5 (<a href="https://redirect.github.com/actions/setup-dotnet/issues/705">#705</a>)</li> <li><a href="https://github.com/actions/setup-dotnet/commit/02574b18e2dc57a218ee4e11ba1e1603c67236e8"><code>02574b1</code></a> Add support for optional architecture input for cross-architecture .NET insta...</li> <li><a href="https://github.com/actions/setup-dotnet/commit/16c7b3c2fa55a0e394467d22512b84fda46adf63"><code>16c7b3c</code></a> Bump fast-xml-parser from 4.4.1 to 5.3.6 (<a href="https://redirect.github.com/actions/setup-dotnet/issues/671">#671</a>)</li> <li><a href="https://github.com/actions/setup-dotnet/commit/131b410979e0b49e2162c0718030257b22d6dc2c"><code>131b410</code></a> Add support for workloads input (<a href="https://redirect.github.com/actions/setup-dotnet/issues/693">#693</a>)</li> <li><a href="https://github.com/actions/setup-dotnet/commit/baa11fbfe1d6520db94683bd5c7a3818018e4309"><code>baa11fb</code></a> Bump test dependencies to resolve System.Net.Http vulnerability, update workf...</li> <li><a href="https://github.com/actions/setup-dotnet/commit/24ec4f204bea672fb937f8f9f3bfec35ba0dc7b5"><code>24ec4f2</code></a> Upgrade to latest actions packages (<a href="https://redirect.github.com/actions/setup-dotnet/issues/687">#687</a>)</li> <li><a href="https://github.com/actions/setup-dotnet/commit/4c100cb5e4b37e8b502c0ca5acbab36ee401b85f"><code>4c100cb</code></a> Fix icons (<a href="https://redirect.github.com/actions/setup-dotnet/issues/604">#604</a>)</li> <li><a href="https://github.com/actions/setup-dotnet/commit/25328d894dc34d01d191df4849cb7f5402e3f142"><code>25328d8</code></a> Bump actions/checkout from 5 to 6 (<a href="https://redirect.github.com/actions/setup-dotnet/issues/684">#684</a>)</li> <li><a href="https://github.com/actions/setup-dotnet/commit/937b8dd3814c642a65e599b368dfac491d9c83da"><code>937b8dd</code></a> Update README with note on setting DOTNET_INSTALL_DIR for Linux permission is...</li> <li><a href="https://github.com/actions/setup-dotnet/commit/2016bd2012dba4e32de620c46fe006a3ac9f0602"><code>2016bd2</code></a> Bump actions/publish-action from 0.3.0 to 0.4.0 and update macos-13 to macos-...</li> <li>Additional commits viewable in <a href="https://github.com/actions/setup-dotnet/compare/v4...v5">compare view</a></li> </ul> </details> <br /> Updates `github/codeql-action` from 3 to 4 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/github/codeql-action/releases">github/codeql-action's releases</a>.</em></p> <blockquote> <h2>v3.35.2</h2> <ul> <li>The undocumented TRAP cache cleanup feature that could be enabled using the <code>CODEQL_ACTION_CLEANUP_TRAP_CACHES</code> environment variable is deprecated and will be removed in May 2026. If you are affected by this, we recommend disabling TRAP caching by passing the <code>trap-caching: false</code> input to the <code>init</code> Action. <a href="https://redirect.github.com/github/codeql-action/pull/3795">#3795</a></li> <li>The Git version 2.36.0 requirement for improved incremental analysis now only applies to repositories that contain submodules. <a href="https://redirect.github.com/github/codeql-action/pull/3789">#3789</a></li> <li>Python analysis on GHES no longer extracts the standard library, relying instead on models of the standard library. This should result in significantly faster extraction and analysis times, while the effect on alerts should be minimal. <a href="https://redirect.github.com/github/codeql-action/pull/3794">#3794</a></li> <li>Fixed a bug in the validation of OIDC configurations for private registries that was added in CodeQL Action 4.33.0 / 3.33.0. <a href="https://redirect.github.com/github/codeql-action/pull/3807">#3807</a></li> <li>Update default CodeQL bundle version to <a href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.2">2.25.2</a>. <a href="https://redirect.github.com/github/codeql-action/pull/3823">#3823</a></li> </ul> <h2>v3.35.1</h2> <ul> <li>Fix incorrect minimum required Git version for <a href="https://redirect.github.com/github/roadmap/issues/1158">improved incremental analysis</a>: it should have been 2.36.0, not 2.11.0. <a href="https://redirect.github.com/github/codeql-action/pull/3781">#3781</a></li> </ul> <h2>v3.35.0</h2> <ul> <li>Reduced the minimum Git version required for <a href="https://redirect.github.com/github/roadmap/issues/1158">improved incremental analysis</a> from 2.38.0 to 2.11.0. <a href="https://redirect.github.com/github/codeql-action/pull/3767">#3767</a></li> <li>Update default CodeQL bundle version to <a href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.1">2.25.1</a>. <a href="https://redirect.github.com/github/codeql-action/pull/3773">#3773</a></li> </ul> <h2>v3.34.1</h2> <ul> <li>Downgrade default CodeQL bundle version to <a href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.24.3">2.24.3</a> due to issues with a small percentage of Actions and JavaScript analyses. <a href="https://redirect.github.com/github/codeql-action/pull/3762">#3762</a></li> </ul> <h2>v3.34.0</h2> <ul> <li>Added an experimental change which disables TRAP caching when <a href="https://redirect.github.com/github/roadmap/issues/1158">improved incremental analysis</a> is enabled, since improved incremental analysis supersedes TRAP caching. This will improve performance and reduce Actions cache usage. We expect to roll this change out to everyone in March. <a href="https://redirect.github.com/github/codeql-action/pull/3569">#3569</a></li> <li>We are rolling out improved incremental analysis to C/C++ analyses that use build mode <code>none</code>. We expect this rollout to be complete by the end of April 2026. <a href="https://redirect.github.com/github/codeql-action/pull/3584">#3584</a></li> <li>Update default CodeQL bundle version to <a href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.0">2.25.0</a>. <a href="https://redirect.github.com/github/codeql-action/pull/3585">#3585</a></li> </ul> <h2>v3.33.0</h2> <ul> <li>Upcoming change: Starting April 2026, the CodeQL Action will skip collecting file coverage information on pull requests to improve analysis performance. File coverage information will still be computed on non-PR analyses. Pull request analyses will log a warning about this upcoming change. <a href="https://redirect.github.com/github/codeql-action/pull/3562">#3562</a> To opt out of this change: <ul> <li><strong>Repositories owned by an organization:</strong> Create a custom repository property with the name <code>github-codeql-file-coverage-on-prs</code> and the type "True/false", then set this property to <code>true</code> in the repository's settings. For more information, see <a href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">Managing custom properties for repositories in your organization</a>. Alternatively, if you are using an advanced setup workflow, you can set the <code>CODEQL_ACTION_FILE_COVERAGE_ON_PRS</code> environment variable to <code>true</code> in your workflow.</li> <li><strong>User-owned repositories using default setup:</strong> Switch to an advanced setup workflow and set the <code>CODEQL_ACTION_FILE_COVERAGE_ON_PRS</code> environment variable to <code>true</code> in your workflow.</li> <li><strong>User-owned repositories using advanced setup:</strong> Set the <code>CODEQL_ACTION_FILE_COVERAGE_ON_PRS</code> environment variable to <code>true</code> in your workflow.</li> </ul> </li> <li>Fixed <a href="https://redirect.github.com/github/codeql-action/issues/3555">a bug</a> which caused the CodeQL Action to fail loading repository properties if a "Multi select" repository property was configured for the repository. <a href="https://redirect.github.com/github/codeql-action/pull/3557">#3557</a></li> <li>The CodeQL Action now loads <a href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">custom repository properties</a> on GitHub Enterprise Server, enabling the customization of features such as <code>github-codeql-disable-overlay</code> that was previously only available on GitHub.com. <a href="https://redirect.github.com/github/codeql-action/pull/3559">#3559</a></li> <li>Once <a href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">private package registries</a> can be configured with OIDC-based authentication for organizations, the CodeQL Action will now be able to accept such configurations. <a href="https://redirect.github.com/github/codeql-action/pull/3563">#3563</a></li> <li>Fixed the retry mechanism for database uploads. Previously this would fail with the error "Response body object should not be disturbed or locked". <a href="https://redirect.github.com/github/codeql-action/pull/3564">#3564</a></li> <li>A warning is now emitted if the CodeQL Action detects a repository property whose name suggests that it relates to the CodeQL Action, but which is not one of the properties recognised by the current version of the CodeQL Action. <a href="https://redirect.github.com/github/codeql-action/pull/3570">#3570</a></li> </ul> <h2>v3.32.6</h2> <ul> <li>Update default CodeQL bundle version to <a href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.24.3">2.24.3</a>. <a href="https://redirect.github.com/github/codeql-action/pull/3548">#3548</a></li> </ul> <h2>v3.32.5</h2> <ul> <li>Repositories owned by an organization can now set up the <code>github-codeql-disable-overlay</code> custom repository property to disable <a href="https://redirect.github.com/github/roadmap/issues/1158">improved incremental analysis for CodeQL</a>. First, create a custom repository property with the name <code>github-codeql-disable-overlay</code> and the type "True/false" in the organization's settings. Then in the repository's settings, set this property to <code>true</code> to disable improved incremental analysis. For more information, see <a href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">Managing custom properties for repositories in your organization</a>. This feature is not yet available on GitHub Enterprise Server. <a href="https://redirect.github.com/github/codeql-action/pull/3507">#3507</a></li> <li>Added an experimental change so that when <a href="https://redirect.github.com/github/roadmap/issues/1158">improved incremental analysis</a> fails on a runner — potentially due to insufficient disk space — the failure is recorded in the Actions cache so that subsequent runs will automatically skip improved incremental analysis until something changes (e.g. a larger runner is provisioned or a new CodeQL version is released). We expect to roll this change out to everyone in March. <a href="https://redirect.github.com/github/codeql-action/pull/3487">#3487</a></li> <li>The minimum memory check for improved incremental analysis is now skipped for CodeQL 2.24.3 and later, which has reduced peak RAM usage. <a href="https://redirect.github.com/github/codeql-action/pull/3515">#3515</a></li> <li>Reduced log levels for best-effort private package registry connection check failures to reduce noise from workflow annotations. <a href="https://redirect.github.com/github/codeql-action/pull/3516">#3516</a></li> <li>Added an experimental change which lowers the minimum disk space requirement for <a href="https://redirect.github.com/github/roadmap/issues/1158">improved incremental analysis</a>, enabling it to run on standard GitHub Actions runners. We expect to roll this change out to everyone in March. <a href="https://redirect.github.com/github/codeql-action/pull/3498">#3498</a></li> <li>Added an experimental change which allows the <code>start-proxy</code> action to resolve the CodeQL CLI version from feature flags instead of using the linked CLI bundle version. We expect to roll this change out to everyone in March. <a href="https://redirect.github.com/github/codeql-action/pull/3512">#3512</a></li> <li>The previously experimental changes from versions 4.32.3, 4.32.4, 3.32.3 and 3.32.4 are now enabled by default. <a href="https://redirect.github.com/github/codeql-action/pull/3503">#3503</a>, <a href="https://redirect.github.com/github/codeql-action/pull/3504">#3504</a></li> </ul> <h2>v3.32.4</h2> <ul> <li>Update default CodeQL bundle version to <a href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.24.2">2.24.2</a>. <a href="https://redirect.github.com/github/codeql-action/pull/3493">#3493</a></li> <li>Added an experimental change which improves how certificates are generated for the authentication proxy that is used by the CodeQL Action in Default Setup when <a href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">private package registries are configured</a>. This is expected to generate more widely compatible certificates and should have no impact on analyses which are working correctly already. We expect to roll this change out to everyone in February. <a href="https://redirect.github.com/github/codeql-action/pull/3473">#3473</a></li> <li>When the CodeQL Action is run <a href="https://docs.github.com/en/code-security/how-tos/scan-code-for-vulnerabilities/troubleshooting/troubleshooting-analysis-errors/logs-not-detailed-enough#creating-codeql-debugging-artifacts-for-codeql-default-setup">with debugging enabled in Default Setup</a> and <a href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">private package registries are configured</a>, the "Setup proxy for registries" step will output additional diagnostic information that can be used for troubleshooting. <a href="https://redirect.github.com/github/codeql-action/pull/3486">#3486</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's changelog</a>.</em></p> <blockquote> <h2>4.32.3 - 13 Feb 2026</h2> <ul> <li>Added experimental support for testing connections to <a href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">private package registries</a>. This feature is not currently enabled for any analysis. In the future, it may be enabled by default for Default Setup. <a href="https://redirect.github.com/github/codeql-action/pull/3466">#3466</a></li> </ul> <h2>4.32.2 - 05 Feb 2026</h2> <ul> <li>Update default CodeQL bundle version to <a href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.24.1">2.24.1</a>. <a href="https://redirect.github.com/github/codeql-action/pull/3460">#3460</a></li> </ul> <h2>4.32.1 - 02 Feb 2026</h2> <ul> <li>A warning is now shown in Default Setup workflow logs if a <a href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">private package registry is configured</a> using a GitHub Personal Access Token (PAT), but no username is configured. <a href="https://redirect.github.com/github/codeql-action/pull/3422">#3422</a></li> <li>Fixed a bug which caused the CodeQL Action to fail when repository properties cannot successfully be retrieved. <a href="https://redirect.github.com/github/codeql-action/pull/3421">#3421</a></li> </ul> <h2>4.32.0 - 26 Jan 2026</h2> <ul> <li>Update default CodeQL bundle version to <a href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.24.0">2.24.0</a>. <a href="https://redirect.github.com/github/codeql-action/pull/3425">#3425</a></li> </ul> <h2>4.31.11 - 23 Jan 2026</h2> <ul> <li>When running a Default Setup workflow with <a href="https://docs.github.com/en/actions/how-tos/monitor-workflows/enable-debug-logging">Actions debugging enabled</a>, the CodeQL Action will now use more unique names when uploading logs from the Dependabot authentication proxy as workflow artifacts. This ensures that the artifact names do not clash between multiple jobs in a build matrix. <a href="https://redirect.github.com/github/codeql-action/pull/3409">#3409</a></li> <li>Improved error handling throughout the CodeQL Action. <a href="https://redirect.github.com/github/codeql-action/pull/3415">#3415</a></li> <li>Added experimental support for automatically excluding <a href="https://docs.github.com/en/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github">generated files</a> from the analysis. This feature is not currently enabled for any analysis. In the future, it may be enabled by default for some GitHub-managed analyses. <a href="https://redirect.github.com/github/codeql-action/pull/3318">#3318</a></li> <li>The changelog extracts that are included with releases of the CodeQL Action are now shorter to avoid duplicated information from appearing in Dependabot PRs. <a href="https://redirect.github.com/github/codeql-action/pull/3403">#3403</a></li> </ul> <h2>4.31.10 - 12 Jan 2026</h2> <ul> <li>Update default CodeQL bundle version to 2.23.9. <a href="https://redirect.github.com/github/codeql-action/pull/3393">#3393</a></li> </ul> <h2>4.31.9 - 16 Dec 2025</h2> <p>No user facing changes.</p> <h2>4.31.8 - 11 Dec 2025</h2> <ul> <li>Update default CodeQL bundle version to 2.23.8. <a href="https://redirect.github.com/github/codeql-action/pull/3354">#3354</a></li> </ul> <h2>4.31.7 - 05 Dec 2025</h2> <ul> <li>Update default CodeQL bundle version to 2.23.7. <a href="https://redirect.github.com/github/codeql-action/pull/3343">#3343</a></li> </ul> <h2>4.31.6 - 01 Dec 2025</h2> <p>No user facing changes.</p> <h2>4.31.5 - 24 Nov 2025</h2> <ul> <li>Update default CodeQL bundle version to 2.23.6. <a href="https://redirect.github.com/github/codeql-action/pull/3321">#3321</a></li> </ul> <h2>4.31.4 - 18 Nov 2025</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/github/codeql-action/commit/43d8420a422ee51e6e1fb42471cc4d81bcb9de36"><code>43d8420</code></a> Do not run Swift in debug artifacts after failure check</li> <li><a href="https://github.com/github/codeql-action/commit/76a687e1d810ec603951c060d5afa98f121364a7"><code>76a687e</code></a> Merge pull request <a href="https://redirect.github.com/github/codeql-action/issues/3804">#3804</a> from github/dependabot/npm_and_yarn/npm-minor-e84c60...</li> <li><a href="https://github.com/github/codeql-action/commit/751f3e2f7c70f1b35c8409fff7733427119273d1"><code>751f3e2</code></a> Bump eslint-plugin-jsdoc from 62.8.1 to 62.9.0 in the npm-minor group</li> <li><a href="https://github.com/github/codeql-action/commit/808513f0486bc371babf5ba9bc8cfdd90ae751c4"><code>808513f</code></a> Update language aliases test</li> <li><a href="https://github.com/github/codeql-action/commit/e452857e57abf124ce8bc6415dd025417a9640ee"><code>e452857</code></a> Throw error early rather than warning</li> <li><a href="https://github.com/github/codeql-action/commit/b623f5fd572a69d335c9da3487c1ce53741a09bf"><code>b623f5f</code></a> Merge pull request <a href="https://redirect.github.com/github/codeql-action/issues/3799">#3799</a> from github/mario-campos/test-multiple-registries</li> <li>See full diff in <a href="https://github.com/github/codeql-action/compare/v3...v4">compare view</a></li> </ul> </details> <br /> Updates `actions/upload-pages-artifact` from 4 to 5 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/upload-pages-artifact/releases">actions/upload-pages-artifact's releases</a>.</em></p> <blockquote> <h2>v5.0.0</h2> <h1>Changelog</h1> <ul> <li>Update upload-artifact action to version 7 <a href="https://github.com/Tom-van-Woudenberg"><code>@Tom-van-Woudenberg</code></a> (<a href="https://redirect.github.com/actions/upload-pages-artifact/issues/139">#139</a>)</li> <li>feat: add <code>include-hidden-files</code> input <a href="https://github.com/jonchurch"><code>@jonchurch</code></a> (<a href="https://redirect.github.com/actions/upload-pages-artifact/issues/137">#137</a>)</li> </ul> <p>See details of <a href="https://github.com/actions/upload-pages-artifact/compare/v4.0.0...v4.0.1">all code changes</a> since previous release.</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/upload-pages-artifact/commit/fc324d3547104276b827a68afc52ff2a11cc49c9"><code>fc324d3</code></a> Merge pull request <a href="https://redirect.github.com/actions/upload-pages-artifact/issues/139">#139</a> from Tom-van-Woudenberg/patch-1</li> <li><a href="https://github.com/actions/upload-pages-artifact/commit/fe9d4b7d84090e1d8d9c53a0236f810d4e00d2c3"><code>fe9d4b7</code></a> Merge branch 'main' into patch-1</li> <li><a href="https://github.com/actions/upload-pages-artifact/commit/0ca16172ca884f0a37117fed41734f29784cc980"><code>0ca1617</code></a> Merge pull request <a href="https://redirect.github.com/actions/upload-pages-artifact/issues/137">#137</a> from jonchurch/include-hidden-files</li> <li><a href="https://github.com/actions/upload-pages-artifact/commit/57f0e8492b437b7818227931fef2faa1a379839b"><code>57f0e84</code></a> Update action.yml</li> <li><a href="https://github.com/actions/upload-pages-artifact/commit/4a90348b2933470dc78cec55534259872a6d3c0d"><code>4a90348</code></a> v7 --> hash</li> <li><a href="https://github.com/actions/upload-pages-artifact/commit/56f665a6f297fa95f8d735b314187fb2d7764569"><code>56f665a</code></a> Update upload-artifact action to version 7</li> <li><a href="https://github.com/actions/upload-pages-artifact/commit/f7615f5917213b24245d49ba96693d0f5375a414"><code>f7615f5</code></a> Add <code>include-hidden-files</code> input</li> <li>See full diff in <a href="https://github.com/actions/upload-pages-artifact/compare/v4...v5">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: mpaulosky <60372079+mpaulosky@users.noreply.github.com>
Updated [Aspire.Hosting.MongoDB](https://github.com/microsoft/aspire) from 13.2.3 to 13.2.4. <details> <summary>Release notes</summary> _Sourced from [Aspire.Hosting.MongoDB's releases](https://github.com/microsoft/aspire/releases)._ ## 13.2.4 # Aspire 13.2.4 ## What's New in Aspire 13.2.4 Patch release addressing a security advisory in OpenTelemetry dependencies. ### 🐛 Fixes - 🔒 Bumped OpenTelemetry dependencies to address CVE-2026-40894 (#16420) ### 🏷️ Housekeeping - 🚀 Bumped branding to 13.2.4 (#16436) Commits viewable in [compare view](microsoft/aspire@v13.2.3...v13.2.4). </details> Updated [Aspire.Hosting.Redis](https://github.com/microsoft/aspire) from 13.2.3 to 13.2.4. <details> <summary>Release notes</summary> _Sourced from [Aspire.Hosting.Redis's releases](https://github.com/microsoft/aspire/releases)._ ## 13.2.4 # Aspire 13.2.4 ## What's New in Aspire 13.2.4 Patch release addressing a security advisory in OpenTelemetry dependencies. ### 🐛 Fixes - 🔒 Bumped OpenTelemetry dependencies to address CVE-2026-40894 (#16420) ### 🏷️ Housekeeping - 🚀 Bumped branding to 13.2.4 (#16436) Commits viewable in [compare view](microsoft/aspire@v13.2.3...v13.2.4). </details> Updated [Aspire.Hosting.Testing](https://github.com/microsoft/aspire) from 13.2.3 to 13.2.4. <details> <summary>Release notes</summary> _Sourced from [Aspire.Hosting.Testing's releases](https://github.com/microsoft/aspire/releases)._ ## 13.2.4 # Aspire 13.2.4 ## What's New in Aspire 13.2.4 Patch release addressing a security advisory in OpenTelemetry dependencies. ### 🐛 Fixes - 🔒 Bumped OpenTelemetry dependencies to address CVE-2026-40894 (#16420) ### 🏷️ Housekeeping - 🚀 Bumped branding to 13.2.4 (#16436) Commits viewable in [compare view](microsoft/aspire@v13.2.3...v13.2.4). </details> Updated [Aspire.MongoDB.Driver](https://github.com/microsoft/aspire) from 13.2.3 to 13.2.4. <details> <summary>Release notes</summary> _Sourced from [Aspire.MongoDB.Driver's releases](https://github.com/microsoft/aspire/releases)._ ## 13.2.4 # Aspire 13.2.4 ## What's New in Aspire 13.2.4 Patch release addressing a security advisory in OpenTelemetry dependencies. ### 🐛 Fixes - 🔒 Bumped OpenTelemetry dependencies to address CVE-2026-40894 (#16420) ### 🏷️ Housekeeping - 🚀 Bumped branding to 13.2.4 (#16436) Commits viewable in [compare view](microsoft/aspire@v13.2.3...v13.2.4). </details> Updated [Aspire.StackExchange.Redis.DistributedCaching](https://github.com/microsoft/aspire) from 13.2.3 to 13.2.4. <details> <summary>Release notes</summary> _Sourced from [Aspire.StackExchange.Redis.DistributedCaching's releases](https://github.com/microsoft/aspire/releases)._ ## 13.2.4 # Aspire 13.2.4 ## What's New in Aspire 13.2.4 Patch release addressing a security advisory in OpenTelemetry dependencies. ### 🐛 Fixes - 🔒 Bumped OpenTelemetry dependencies to address CVE-2026-40894 (#16420) ### 🏷️ Housekeeping - 🚀 Bumped branding to 13.2.4 (#16436) Commits viewable in [compare view](microsoft/aspire@v13.2.3...v13.2.4). </details> Updated [Microsoft.Playwright](https://github.com/microsoft/playwright-dotnet) from 1.48.0 to 1.59.0. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Playwright's releases](https://github.com/microsoft/playwright-dotnet/releases)._ ## 1.59.0 ## 🎬 Screencast New [Page.Screencast](https://playwright.dev/dotnet/docs/api/class-page#page-screencast) API provides a unified interface for capturing page content with: - Screencast recordings - Action annotations - Visual overlays - Real-time frame capture - Agentic video receipts <center> <img src="https://raw.githubusercontent.com/microsoft/playwright/main/docs/src/images/release-notes-1.59-screencast-demo.gif" alt="Demo" width="500" height="313" /> </center> **Screencast recording** — record video with precise start/stop control, as an alternative to the [`recordVideoDir`](https://playwright.dev/dotnet/docs/api/class-browser#browser-new-context-option-record-video-dir) option: ```csharp await page.Screencast.StartAsync(new() { Path = "video.webm" }); // ... perform actions ... await page.Screencast.StopAsync(); ``` **Action annotations** — enable built-in visual annotations that highlight interacted elements and display action titles during recording: ```csharp await page.Screencast.ShowActionsAsync(new() { Position = "top-right" }); ``` `ShowActionsAsync` accepts `Position` (`"top-left"`, `"top"`, `"top-right"`, `"bottom-left"`, `"bottom"`, `"bottom-right"`), `Duration` (ms per annotation), and `FontSize` (px). Returns a disposable to stop showing actions. **Visual overlays** — add chapter titles and custom HTML overlays on top of the page for richer narration: ```csharp await page.Screencast.ShowChapterAsync("Adding TODOs", new() { Description = "Type and press enter for each TODO", Duration = 1000, }); await page.Screencast.ShowOverlayAsync("<div style=\"color: red\">Recording</div>"); ``` **Real-time frame capture** — stream JPEG-encoded frames for custom processing like thumbnails, live previews, AI vision, and more: ```csharp await page.Screencast.StartAsync(new() { OnFrame = frame => SendToVisionModel(frame.Data), }); ``` ... (truncated) ## 1.58.0 ## Trace Viewer Improvements - New 'system' theme option follows your OS dark/light mode preference - Search functionality (Cmd/Ctrl+F) is now available in code editors - Network details panel has been reorganized for better usability - JSON responses are now automatically formatted for readability Thanks to [@cpAdm](https://github.com/cpAdm) for contributing these improvements! ## Miscellaneous [BrowserType.ConnectOverCDPAsync()](https://playwright.dev/dotnet/docs/api/class-browsertype#browser-type-connect-over-cdp) now accepts an `IsLocal` option. When set to `true`, it tells Playwright that it runs on the same host as the CDP server, enabling file system optimizations. ## Breaking Changes⚠️ - Removed `_react` and `_vue` selectors. See [locators guide](https://playwright.dev/dotnet/docs/locators) for alternatives. - Removed `:light` selector engine suffix. Use standard CSS selectors instead. - Option `Devtools` from [BrowserType.LaunchAsync()](https://playwright.dev/dotnet/docs/api/class-browsertype#browser-type-launch) has been removed. Use `Args = new[] { "--auto-open-devtools-for-tabs" }` instead. - Removed macOS 13 support for WebKit. ## Browser Versions - Chromium 145.0.7632.6 - Mozilla Firefox 146.0.1 - WebKit 26.0 ## 1.57.0 ## Chrome for Testing Starting with this release, Playwright switches from Chromium, to using [Chrome for Testing](https://developer.chrome.com/blog/chrome-for-testing/) builds. Both headed and headless browsers are subject to this. Your tests should still be passing after upgrading to Playwright 1.57. We're expecting no functional changes to come from this switch. The biggest change is the new icon and title in your toolbar. <img width="500" alt="new and old logo" src="https://github.com/user-attachments/assets/e9a5c4f2-9f35-4c27-9382-0f5eda377097" /> If you still see an unexpected behaviour change, please [file an issue](https://github.com/microsoft/playwright/issues/new). On Arm64 Linux, Playwright continues to use Chromium. ## Breaking Change After 3 years of being deprecated, we removed `Page.Accessibility` from our API. Please use other libraries such as [Axe](https://www.deque.com/axe/) if you need to test page accessibility. See our Node.js [guide](https://playwright.dev/docs/accessibility-testing) for integration with Axe. ## New APIs - [Worker.Console](https://playwright.dev/dotnet/docs/api/class-worker#worker-event-console) event is emitted when JavaScript within the worker calls one of console API methods, e.g. console.log or console.dir. - [Locator.Description](https://playwright.dev/dotnet/docs/api/class-locator#locator-description) returns locator description previously set with [Locator.Describe()](https://playwright.dev/dotnet/docs/api/class-locator#locator-describe). - New option [`Steps`](https://playwright.dev/dotnet/docs/api/class-locator#locator-click-option-steps) in [Locator.ClickAsync()](https://playwright.dev/dotnet/docs/api/class-locator#locator-click) and [Locator.DragToAsync()](https://playwright.dev/dotnet/docs/api/class-locator#locator-drag-to) that configures the number of `mousemove` events emitted while moving the mouse pointer to the target element. ## Browser Versions - Chromium 143.0.7499.4 - Mozilla Firefox 144.0.2 - WebKit 26.0 ## 1.56.0 ## New APIs - New methods [Page.ConsoleMessagesAsync()](https://playwright.dev/dotnet/docs/api/class-page#page-console-messages) and [Page.PageErrorsAsync()](https://playwright.dev/dotnet/docs/api/class-page#page-page-errors) for retrieving the most recent console messages from the page - New method [Page.RequestsAsync()](https://playwright.dev/dotnet/docs/api/class-page#page-requests) for retrieving the most recent network requests from the page ## Breaking Changes - Event [BrowserContext.BackgroundPage](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-event-background-page) has been deprecated and will not be emitted. Property [BrowserContext.BackgroundPages](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-background-pages) will return an empty list ## Miscellaneous - Aria snapshots render and compare `input` `placeholder` ## Browser Versions - Chromium 141.0.7390.37 - Mozilla Firefox 142.0.1 - WebKit 26.0 ## 1.55.0 ## Codegen - Automatic `ToBeVisibleAsync()` assertions: Codegen can now generate automatic `ToBeVisibleAsync()` assertions for common UI interactions. This feature can be enabled in the Codegen settings UI. ## Breaking Changes -⚠️ Dropped support for Chromium extension manifest v2. ## Miscellaneous - Added support for Debian 13 "Trixie". - Added support for Xunit v3 as part of [`Microsoft.Playwright.Xunit.v3`](https://www.nuget.org/packages/Microsoft.Playwright.Xunit.v3) - Added support for MSTest v4 as part of [`Microsoft.Playwright.MSTest.v4`](https://www.nuget.org/packages/Microsoft.Playwright.MSTest.v4) ## Browser Versions - Chromium 140.0.7339.16 - Mozilla Firefox 141.0 - WebKit 26.0 This version was also tested against the following stable channels: - Google Chrome 139 - Microsoft Edge 139 ## 1.54.0 ## Highlights - New cookie property `PartitionKey` in [browserContext.cookies()](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-cookies) and [browserContext.addCookies()](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-add-cookies). This property allows to save and restore partitioned cookies. See [CHIPS MDN article](https://developer.mozilla.org/en-US/docs/Web/Privacy/Guides/Privacy_sandbox/Partitioned_cookies) for more information. Note that browsers have different support and defaults for cookie partitioning. - New option `--user-data-dir` in multiple commands. You can specify the same user data dir to reuse browsing state, like authentication, between sessions. ```bash pwsh bin/Debug/netX/playwright.ps1 codegen --user-data-dir=./user-data ``` - `pwsh bin/Debug/netX/playwright.ps1 open` does not open the test recorder anymore. Use `pwsh bin/Debug/netX/playwright.ps1 codegen` instead. ## Browser Versions - Chromium 139.0.7258.5 - Mozilla Firefox 140.0.2 - WebKit 26.0 This version was also tested against the following stable channels: - Google Chrome 140 - Microsoft Edge 140 ## 1.53.0 ## Miscellaneous - New Steps in Trace Viewer: <img src="https://github.com/user-attachments/assets/1963ff7d-4070-41be-a79b-4333176921a2" alt="New Trace Viewer Steps" height="500"> - New method [Locator.Describe()](https://playwright.dev/dotnet/docs/api/class-locator#locator-describe) to describe a locator. Used for trace viewer. ```csharp var button = Page.GetByTestId("btn-sub").Describe("Subscribe button"); await button.ClickAsync(); ``` - `pwsh bin/Debug/netX/playwright.ps1 install --list` will now list all installed browsers, versions and locations. ## Browser Versions - Chromium 138.0.7204.4 - Mozilla Firefox 139.0 - WebKit 18.5 This version was also tested against the following stable channels: - Google Chrome 137 - Microsoft Edge 137 ## 1.52.0 ## Highlights - New method [Expect(locator).ToContainClassAsync()](https://playwright.dev/dotnet/docs/api/class-locatorassertions#locator-assertions-to-contain-class) to ergonomically assert individual class names on the element. ```csharp await Expect(Page.GetByRole(AriaRole.Listitem, new() { Name = "Ship v1.52" })).ToContainClassAsync("done"); ``` - [Aria Snapshots](https://playwright.dev/dotnet/docs/aria-snapshots) got two new properties: [`/children`](https://playwright.dev/dotnet/docs/aria-snapshots#strict-matching) for strict matching and `/url` for links. ```csharp await Expect(locator).ToMatchAriaSnapshotAsync(@" - list - /children: equal - listitem: Feature A - listitem: - link ""Feature B"": - /url: ""https://playwright.dev"" "); ``` ## Miscellaneous - New option [`MaxRedirects`](https://playwright.dev/dotnet/docs/api/class-apirequest#api-request-new-context-option-max-redirects) in [apiRequest.NewContextAsync()](https://playwright.dev/dotnet/docs/api/class-apirequest#api-request-new-context) to control the maximum number of redirects. - New option [`Ref`](https://playwright.dev/dotnet/docs/api/class-locator#locator-aria-snapshot-option-ref) in [locator.AriaSnapshotAsync()](https://playwright.dev/dotnet/docs/api/class-locator#locator-aria-snapshot) to generate reference for each element in the snapshot which can later be used to locate the element. ## Breaking Changes - Method [route.ContinueAsync()](https://playwright.dev/dotnet/docs/api/class-route#route-continue) does not allow to override the `Cookie` header anymore. If a `Cookie` header is provided, it will be ignored, and the cookie will be loaded from the browser's cookie store. To set custom cookies, use [browserContext.AddCookiesAsync()](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-add-cookies). - macOS 13 is now deprecated and will no longer receive WebKit updates. Please upgrade to a more recent macOS version to continue benefiting from the latest WebKit improvements. ## Browser Versions - Chromium 136.0.7103.25 - Mozilla Firefox 137.0 - WebKit 18.4 This version was also tested against the following stable channels: - Google Chrome 135 - Microsoft Edge 135 ## 1.51.0 ## Highlights * New option [`IndexedDB`](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-storage-state-option-indexed-db) for [BrowserContext.StorageStateAsync()](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-storage-state) allows to save and restore IndexedDB contents. Useful when your application uses [IndexedDB API](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API) to store authentication tokens, like Firebase Authentication. Here is an example following the [authentication guide](https://playwright.dev/dotnet/docs/auth#reusing-signed-in-state): ```csharp // Save storage state into the file. Make sure to include IndexedDB. await context.StorageStateAsync(new() { Path = "../../../playwright/.auth/state.json", IndexedDB = true }); // Create a new context with the saved storage state. var context = await browser.NewContextAsync(new() { StorageStatePath = "../../../playwright/.auth/state.json" }); ``` * New option [`Visible`](https://playwright.dev/dotnet/docs/api/class-locator#locator-filter-option-visible) for [locator.filter()](https://playwright.dev/dotnet/docs/api/class-locator#locator-filter) allows matching only visible elements. ```csharp // Ignore invisible todo items. var todoItems = Page.GetByTestId("todo-item").Filter(new() { Visible = true }); // Check there are exactly 3 visible ones. await Expect(todoItems).ToHaveCountAsync(3); ``` * New option `Contrast` for methods [page.emulateMedia()](https://playwright.dev/dotnet/docs/api/class-page#page-emulate-media) and [Browser.NewContextAsync()](https://playwright.dev/dotnet/docs/api/class-browser#browser-new-context) allows to emulate the `prefers-contrast` media feature. * New option [`FailOnStatusCode`](https://playwright.dev/dotnet/docs/api/class-apirequest#api-request-new-context-option-fail-on-status-code) makes all fetch requests made through the [APIRequestContext](https://playwright.dev/dotnet/docs/api/class-apirequestcontext) throw on response codes other than 2xx and 3xx. ## Browser Versions * Chromium 134.0.6998.35 * Mozilla Firefox 135.0 * WebKit 18.4 This version was also tested against the following stable channels: * Google Chrome 133 * Microsoft Edge 133 ## 1.50.0 ## Support for Xunit * Support for xUnit 2.8+ via [Microsoft.Playwright.Xunit](https://www.nuget.org/packages/Microsoft.Playwright.Xunit). Follow our [Getting Started](https://playwright.dev/dotnet/docs/intro) guide to learn more. ## Miscellaneous * Added method [Expect(locator).toHaveAccessibleErrorMessage()](https://playwright.dev/dotnet/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-error-message) to assert the Locator points to an element with a given [aria errormessage](https://w3c.github.io/aria/#aria-errormessage). ## UI updates * New button in Codegen for picking elements to produce aria snapshots. * Additional details (such as keys pressed) are now displayed alongside action API calls in traces. * Display of `canvas` content in traces is error-prone. Display is now disabled by default, and can be enabled via the `Display canvas content` UI setting. * `Call` and `Network` panels now display additional time information. ## Breaking * [Expect(locator).toBeEditable()](https://playwright.dev/dotnet/docs/api/class-locatorassertions#locator-assertions-to-be-editable) and [locator.isEditable()](https://playwright.dev/dotnet/docs/api/class-locator#locator-is-editable) now throw if the target element is not `<input>`, `<select>`, or a number of other editable elements. ## Browser Versions * Chromium 133.0.6943.16 * Mozilla Firefox 134.0 * WebKit 18.2 This version was also tested against the following stable channels: * Google Chrome 132 * Microsoft Edge 132 ## 1.49.0 ## Aria snapshots New assertion [Expect(locator).toMatchAriaSnapshot()](https://playwright.dev/dotnet/docs/api/class-locatorassertions#locator-assertions-to-match-aria-snapshot) verifies page structure by comparing to an expected accessibility tree, represented as YAML. ```csharp await page.GotoAsync("https://playwright.dev"); await Expect(page.Locator("body")).ToMatchAriaSnapshotAsync(@" - banner: - heading /Playwright enables reliable/ [level=1] - link ""Get started"" - link ""Star microsoft/playwright on GitHub"" - main: - img ""Browsers (Chromium, Firefox, WebKit)"" - heading ""Any browser • Any platform • One API"" "); ``` You can generate this assertion with [Test Generator](https://playwright.dev/dotnet/docs/codegen) or by calling [locator.ariaSnapshot()](https://playwright.dev/dotnet/docs/api/class-locator#locator-aria-snapshot). Learn more in the [aria snapshots guide](https://playwright.dev/dotnet/docs/aria-snapshots). ## Tracing groups New method [tracing.group()](https://playwright.dev/dotnet/docs/api/class-tracing#tracing-group) allows you to visually group actions in the trace viewer. ```csharp // All actions between GroupAsync and GroupEndAsync // will be shown in the trace viewer as a group. await Page.Context.Tracing.GroupAsync("Open Playwright.dev > API"); await Page.GotoAsync("https://playwright.dev/"); await Page.GetByRole(AriaRole.Link, new() { Name = "API" }).ClickAsync(); await Page.Context.Tracing.GroupEndAsync(); ``` ## Breaking: `chrome` and `msedge` channels switch to new headless mode This change affects you if you're using one of the following channels in your `playwright.config.ts`: - `chrome`, `chrome-dev`, `chrome-beta`, or `chrome-canary` - `msedge`, `msedge-dev`, `msedge-beta`, or `msedge-canary` After updating to Playwright v1.49, run your test suite. If it still passes, you're good to go. If not, you will probably need to update your snapshots, and adapt some of your test code around PDF viewers and extensions. See [issue #33566](microsoft/playwright#33566) for more details. ## Try new Chromium headless You can opt into the new headless mode by using `'chromium'` channel. As [official Chrome documentation puts it](https://developer.chrome.com/blog/chrome-headless-shell): > New Headless on the other hand is the real Chrome browser, and is thus more authentic, reliable, and offers more features. This makes it more suitable for high-accuracy end-to-end web app testing or browser extension testing. See [issue #33566](microsoft/playwright#33566) for the list of possible breakages you could encounter and more details on Chromium headless. Please file an issue if you see any problems after opting in. ... (truncated) Commits viewable in [compare view](microsoft/playwright-dotnet@v1.48.0...v1.59.0). </details> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: mpaulosky <60372079+mpaulosky@users.noreply.github.com>
- promote Sprint 12 from sprint/12-xunit-v3-apphost-tests into dev - add the Dependabot auto-merge workflow validated in PR #202 - complete Sprint 12 milestone closeout Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Merges Sprint 13 into dev, including the milestone workflow-chain repair and AppHost.Tests xUnit v3 / Playwright E2E updates.
Closes #211 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- preserve main ancestry in dev so the release PR no longer hits reconciliation conflicts - keep dev's xUnit v3 test layout while resolving backport drift - carry forward the reviewed Gimli history fix Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
🏗️ PR Added to Squad Triage QueueThis PR has been labeled with Next steps:
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #213 +/- ##
==========================================
+ Coverage 72.12% 78.64% +6.51%
==========================================
Files 43 43
Lines 721 721
Branches 112 112
==========================================
+ Hits 520 567 +47
+ Misses 150 108 -42
+ Partials 51 46 -5 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Promotes dev to main for the Sprint 13 release while aligning the repo on the current xUnit v3 test layout and updating supporting CI/workflow + documentation artifacts that accompany the release state.
Changes:
- Migrates remaining test projects to
xunit.v3, addsxunit.runner.jsonwhere needed, and updates test code/fixtures for xUnit v3 conventions. - Updates central package/tooling versions (
Directory.Packages.props,global.json) and refreshes multiple GitHub workflows. - Adds Sprint 7/8 retrospectives and ADRs documenting the xUnit v3 rollout.
Reviewed changes
Copilot reviewed 63 out of 67 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/Web.Tests/xunit.runner.json | Adds xUnit runner settings (parallelization + display options). |
| tests/Web.Tests/Web.Tests.csproj | Switches to xunit.v3 and copies xunit.runner.json to output. |
| tests/Web.Tests/Security/RoleClaimsHelperTests.cs | Updates header project name. |
| tests/Web.Tests/ResultTests.cs | Updates header + trims duplicate header + adds AAA comments. |
| tests/Web.Tests/Handlers/UserManagementHandlerTests.cs | Updates header + adds AAA comments. |
| tests/Web.Tests/Handlers/GetBlogPostsHandlerTests.cs | Formatting/indentation normalization. |
| tests/Web.Tests/Handlers/EditBlogPostHandlerTests.cs | Formatting/indentation normalization + AAA comments. |
| tests/Web.Tests/Handlers/DeleteBlogPostHandlerTests.cs | Formatting/indentation normalization + AAA comments. |
| tests/Web.Tests/Handlers/CreateBlogPostHandlerTests.cs | Formatting/indentation normalization + AAA comments. |
| tests/Web.Tests/Features/BlogPosts/Commands/EditBlogPostCommandValidatorTests.cs | Updates header + adds AAA comments. |
| tests/Web.Tests/Features/BlogPosts/Commands/DeleteBlogPostCommandValidatorTests.cs | Updates header + adds AAA comments. |
| tests/Web.Tests/Features/BlogPosts/Commands/CreateBlogPostCommandValidatorTests.cs | Updates header + adds AAA comments. |
| tests/Web.Tests/Data/BlogPostMappingsTests.cs | Updates header project name. |
| tests/Web.Tests/BlogPostTests.cs | Updates header + adds AAA comments. |
| tests/Web.Tests/Behaviors/ValidationBehaviorTests.cs | Updates header + adds AAA comments. |
| tests/Web.Tests.Integration/Web.Tests.Integration.csproj | Switches to xunit.v3 and standardizes runner json as Content. |
| tests/Web.Tests.Integration/IntegrationTest1.cs | Removes unused starter template test file. |
| tests/Web.Tests.Integration/Infrastructure/RedisFixture.cs | Updates header + migrates IAsyncLifetime methods to ValueTask. |
| tests/Web.Tests.Integration/Infrastructure/RedisCachingCollection.cs | Updates header project name. |
| tests/Web.Tests.Integration/Infrastructure/MongoDbFixture.cs | Updates header + migrates IAsyncLifetime methods to ValueTask. |
| tests/Web.Tests.Integration/Infrastructure/BlogPostIntegrationCollection.cs | Updates header project name. |
| tests/Web.Tests.Integration/Caching/BlogPostCacheServiceTests.cs | Threads xUnit v3 TestContext cancellation token into async calls. |
| tests/Web.Tests.Integration/BlogPosts/MongoDbBlogPostRepositoryTests.cs | Threads xUnit v3 TestContext cancellation token into async calls. |
| tests/Web.Tests.Bunit/xunit.runner.json | Adds xUnit runner settings for bUnit test project. |
| tests/Web.Tests.Bunit/Web.Tests.Bunit.csproj | Switches to xunit.v3 and adds runner json content copy. |
| tests/Web.Tests.Bunit/Testing/TestAuthorizationService.cs | Removes duplicate/legacy header block. |
| tests/Web.Tests.Bunit/Features/ProfileTests.cs | Updates header + renames test methods. |
| tests/Web.Tests.Bunit/Components/Theme/ThemeSelectorTests.cs | Updates header + renames tests + minor comment text update. |
| tests/Web.Tests.Bunit/Components/Theme/ThemeProviderTests.cs | Updates header + renames tests. |
| tests/Web.Tests.Bunit/Components/RazorSmokeTests.cs | Updates header + renames tests + removes duplicate header block. |
| tests/Web.Tests.Bunit/Components/Layout/NavMenuTests.cs | Updates header + renames tests + removes duplicate header block. |
| tests/Domain.Tests/xunit.runner.json | Adds xUnit runner settings for Domain tests. |
| tests/Domain.Tests/Domain.Tests.csproj | Switches to xunit.v3 and adds runner json content copy. |
| tests/Architecture.Tests/xunit.runner.json | Adds xUnit runner settings for Architecture tests. |
| tests/Architecture.Tests/VsaLayerTests.cs | Refactors AAA comments/variable naming in architecture rules. |
| tests/Architecture.Tests/ThemeLayerTests.cs | Adds explicit AAA comments. |
| tests/Architecture.Tests/DomainLayerTests.cs | Adds explicit AAA comments and extracts assembly var. |
| tests/Architecture.Tests/CachingLayerTests.cs | Adds explicit AAA comments. |
| tests/Architecture.Tests/Architecture.Tests.csproj | Adds xunit.v3 + xunit.analyzers + runner json content copy. |
| tests/AppHost.Tests/xunit.runner.json | Adds runner config (disables assembly parallelization). |
| tests/AppHost.Tests/Infrastructure/PlaywrightManager.cs | Updates IAsyncLifetime methods to ValueTask + suppress finalize. |
| tests/AppHost.Tests/Infrastructure/AspireManager.cs | Updates IAsyncLifetime methods to ValueTask + suppress finalize. |
| tests/AppHost.Tests/EnvVarTests.cs | Threads TestContext.Current.CancellationToken into app host builder call. |
| tests/AppHost.Tests/AppHost.Tests.csproj | Switches to xunit.v3 and adds runner json content copy + formatting. |
| global.json | Bumps pinned .NET SDK version. |
| docs/sprint-8-xunit-v3-pilot-retro.md | Adds Sprint 8 retrospective doc for xUnit v3 pilot rollout. |
| docs/sprint-7-xunit-v3-pilot-retro.md | Adds Sprint 7 pilot retrospective template/doc. |
| docs/adr/sprint8-architecture-tests-xunit-v3-rollout.md | Adds ADR for Architecture.Tests xUnit v3 migration decision. |
| docs/adr/sprint7-xunit-v3-migration.md | Adds ADR for initial xUnit v3 pilot decision. |
| Directory.Packages.props | Updates Aspire + Playwright versions; updates centralized xUnit package set. |
| .squad/agents/pippin/history.md | Updates squad agent history with sprint documentation work. |
| .squad/agents/gimli/history.md | Updates squad agent history with migration details/learnings. |
| .squad/agents/boromir/history.md | Updates squad agent history with packaging/CI learnings. |
| .squad/agents/aragorn/history.md | Updates squad agent history with release/migration learnings. |
| .github/workflows/sync-readme.yml | Updates action versions used by sync workflow. |
| .github/workflows/static.yml | Updates Pages artifact action version. |
| .github/workflows/squad-test.yml | Adds Domain.Tests job and updates workflow dependencies/summary. |
| .github/workflows/squad-promote.yml | Updates setup-dotnet action version. |
| .github/workflows/squad-preview.yml | Updates setup-dotnet action version and adds Domain.Tests run. |
| .github/workflows/squad-label-enforce.yml | Updates checkout action version. |
| .github/workflows/squad-ci.yml | Updates checkout + setup-dotnet action versions. |
| .github/workflows/release-blog.yml | Improves output writing + ensures gh issue create uses explicit repo. |
| .github/workflows/milestone-release-decision.yml | Uses explicit --repo for gh commands and output grouping. |
| .github/workflows/milestone-blog.yml | Uses explicit --repo for gh issue create and output grouping. |
| .github/workflows/dependabot-auto-merge.yml | Adds workflow to enable/refresh auto-merge for Dependabot PRs. |
| .github/workflows/codeql-analysis.yml | Updates checkout, setup-dotnet, and CodeQL action major versions. |
| .github/workflows/code-metrics.yml | Bumps create-pull-request action patch version. |
Comments suppressed due to low confidence (2)
tests/Web.Tests/Data/BlogPostMappingsTests.cs:11
- The file header now says
Web.Tests, but the namespace is stillUnit.Data. SinceWeb.Tests.csprojsets<RootNamespace>Web</RootNamespace>, keepingUnit.*namespaces in this project is confusing and makes it harder to navigate/find tests. Consider renaming the namespace to align with the project (e.g.,Web.DataorWeb.Tests.Data).
tests/Web.Tests/Handlers/UserManagementHandlerTests.cs:11 - This file is in the
Web.Testsproject, but it still declaresnamespace Unit.Handlers;(left over from the oldUnit.Testsproject naming). Aligning the namespace with the project (Web.Handlers) will keep discovery/navigation consistent with the rest of the test suite.
| ### Per-project versioning strategy | ||
|
|
||
| Use `Directory.Packages.props` to manage xUnit versions per project: | ||
|
|
||
| ```xml | ||
| <ItemGroup> | ||
| <PackageVersion Include="xunit" Version="2.9.3" /> | ||
| <PackageVersion Include="xunit.v3" Version="3.0.x" /> | ||
| <PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" /> | ||
| </ItemGroup> | ||
| ``` | ||
|
|
||
| Each project's `.csproj` declares which version it uses. This allows coexistence during migration — projects can upgrade independently without blocking each other. |
There was a problem hiding this comment.
The "Per-project versioning strategy" snippet still documents a central PackageVersion Include="xunit" Version="2.9.3" entry and xunit.v3 Version="3.0.x", but Directory.Packages.props in this PR removes the xUnit v2 entry and pins xunit.v3 to 3.2.2. Please update this section to reflect the current centralized package strategy used by the repo (and remove guidance about v2/v3 coexistence if it's no longer supported/needed).
| ``` | ||
|
|
||
| Versions are centralized in `Directory.Packages.props` (3.2.2, 1.27.0, 3.1.1 respectively). | ||
| No individual `.csproj` version pins. See `.squad/decisions/inbox/boromir-xunit-v3-package-strategy.md`. |
There was a problem hiding this comment.
This doc links to .squad/decisions/inbox/... files, but .squad/decisions/inbox/ is gitignored (so readers on GitHub won't be able to open those references). Please replace these with links to tracked sources (e.g., .squad/decisions.md after Scribe merge, or a tracked ADR under docs/adr/).
| No individual `.csproj` version pins. See `.squad/decisions/inbox/boromir-xunit-v3-package-strategy.md`. | |
| No individual `.csproj` version pins. See the tracked team decisions in | |
| [`.squad/decisions.md`](../.squad/decisions.md). |
| | xUnit v3 Rollout Strategy (Architecture → Blazor) | Aragorn | `aragorn-xunit-v3-rollout-strategy.md` | | ||
|
|
||
| --- | ||
|
|
||
| ## Next Steps & Recommendations | ||
|
|
||
| ### Should Blazor.Tests adopt xUnit v3 next? | ||
|
|
||
| **Yes — recommended for Sprint 9.** The two projects with the most complex | ||
| migration surface are `Unit.Tests` and `Blazor.Tests`. `Blazor.Tests` uses | ||
| bUnit which has explicit xUnit v3 support. Migrating it next would complete | ||
| the pilot phase and establish the bUnit + xUnit v3 pattern. | ||
|
|
||
| **Suggested Sprint 9 scope:** | ||
| - Wave 1 (Boromir): Update `Blazor.Tests` packages | ||
| - Wave 2 (Gimli): Migrate test code, confirm bUnit compatibility | ||
| - Wave 3 (Pippin): ADR, (Aragorn): Retrospective | ||
|
|
||
| ### Should Unit.Tests be migrated alongside or after Blazor.Tests? | ||
|
|
||
| `Unit.Tests` and `Blazor.Tests` can potentially be done in the same sprint | ||
| in parallel waves if CI capacity allows. If sequenced, do `Blazor.Tests` first | ||
| (higher value, more interesting migration surface) and `Unit.Tests` second. |
There was a problem hiding this comment.
This retrospective refers to Blazor.Tests and tests/Blazor.Tests, but this repository's bUnit project is tests/Web.Tests.Bunit (and there is no tests/Blazor.Tests directory). Please update the project names/tables in this section to match the actual test project layout so future readers aren't sent looking for non-existent projects.
| | xUnit v3 Rollout Strategy (Architecture → Blazor) | Aragorn | `aragorn-xunit-v3-rollout-strategy.md` | | |
| --- | |
| ## Next Steps & Recommendations | |
| ### Should Blazor.Tests adopt xUnit v3 next? | |
| **Yes — recommended for Sprint 9.** The two projects with the most complex | |
| migration surface are `Unit.Tests` and `Blazor.Tests`. `Blazor.Tests` uses | |
| bUnit which has explicit xUnit v3 support. Migrating it next would complete | |
| the pilot phase and establish the bUnit + xUnit v3 pattern. | |
| **Suggested Sprint 9 scope:** | |
| - Wave 1 (Boromir): Update `Blazor.Tests` packages | |
| - Wave 2 (Gimli): Migrate test code, confirm bUnit compatibility | |
| - Wave 3 (Pippin): ADR, (Aragorn): Retrospective | |
| ### Should Unit.Tests be migrated alongside or after Blazor.Tests? | |
| `Unit.Tests` and `Blazor.Tests` can potentially be done in the same sprint | |
| in parallel waves if CI capacity allows. If sequenced, do `Blazor.Tests` first | |
| (higher value, more interesting migration surface) and `Unit.Tests` second. | |
| | xUnit v3 Rollout Strategy (Architecture → Web.Tests.Bunit) | Aragorn | `aragorn-xunit-v3-rollout-strategy.md` | | |
| --- | |
| ## Next Steps & Recommendations | |
| ### Should Web.Tests.Bunit adopt xUnit v3 next? | |
| **Yes — recommended for Sprint 9.** The two projects with the most complex | |
| migration surface are `Unit.Tests` and `Web.Tests.Bunit`. | |
| `Web.Tests.Bunit` uses bUnit which has explicit xUnit v3 support. | |
| Migrating it next would complete the pilot phase and establish the | |
| bUnit + xUnit v3 pattern. | |
| **Suggested Sprint 9 scope:** | |
| - Wave 1 (Boromir): Update `Web.Tests.Bunit` packages | |
| - Wave 2 (Gimli): Migrate test code, confirm bUnit compatibility | |
| - Wave 3 (Pippin): ADR, (Aragorn): Retrospective | |
| ### Should Unit.Tests be migrated alongside or after Web.Tests.Bunit? | |
| `Unit.Tests` and `Web.Tests.Bunit` can potentially be done in the same | |
| sprint in parallel waves if CI capacity allows. If sequenced, do | |
| `Web.Tests.Bunit` first (higher value, more interesting migration | |
| surface) and `Unit.Tests` second. |
| <PackageReference Include="bunit"/> | ||
| <PackageReference Include="coverlet.collector"/> | ||
| <PackageReference Include="coverlet.msbuild"> | ||
| <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||
| <PrivateAssets>all</PrivateAssets> | ||
| </PackageReference> | ||
| <PackageReference Include="FluentAssertions"/> | ||
| <PackageReference Include="Microsoft.NET.Test.Sdk" /> | ||
| <PackageReference Include="NSubstitute"/> | ||
| <PackageReference Include="xunit"/> | ||
| <PackageReference Include="xunit.v3"/> | ||
| <PackageReference Include="xunit.runner.visualstudio"/> |
There was a problem hiding this comment.
tests/Web.Tests.Bunit now targets xunit.v3 and already includes coverlet.collector, but it still references coverlet.msbuild. Other test projects in this PR removed coverlet.msbuild, and having both is redundant and can complicate coverage runs. Consider removing coverlet.msbuild here and standardizing on coverlet.collector only.
| Adopt xUnit v3 for **Architecture.Tests** in Sprint 8 Wave 2, following the same pattern established by Domain.Tests pilot: | ||
|
|
||
| 1. **Package reference** — Use `xunit.v3` (v3.2.2) via `Directory.Packages.props` | ||
| 2. **Output type** — Set `<OutputType>Exe</OutputType>` for standalone MTP execution | ||
| 3. **API rewrite** — Update attribute naming (`[Fact]` → `[Test]`) and assertion patterns | ||
| 4. **Test validation** — All 11 architecture tests pass with xUnit v3 |
There was a problem hiding this comment.
This ADR lists migration steps that don't match the actual repo changes: the test projects still use [Fact] (no [Test] rename) and the csproj files shown in this PR do not set <OutputType>Exe</OutputType>. Please update the "Decision" section so it describes the real migration steps used here (package swap + runner json + any actual API changes).
| Adopt xUnit v3 for **Architecture.Tests** in Sprint 8 Wave 2, following the same pattern established by Domain.Tests pilot: | |
| 1. **Package reference** — Use `xunit.v3` (v3.2.2) via `Directory.Packages.props` | |
| 2. **Output type** — Set `<OutputType>Exe</OutputType>` for standalone MTP execution | |
| 3. **API rewrite** — Update attribute naming (`[Fact]` → `[Test]`) and assertion patterns | |
| 4. **Test validation** — All 11 architecture tests pass with xUnit v3 | |
| Adopt xUnit v3 for **Architecture.Tests** in Sprint 8 Wave 2, following the | |
| same rollout shape validated by the Domain.Tests pilot, but reflecting the | |
| actual changes made in this project: | |
| 1. **Package reference** — Replace xUnit v2 package usage with `xunit.v3` | |
| (v3.2.2) via `Directory.Packages.props` | |
| 2. **Runner configuration** — Add/update `xunit.runner.json` settings needed | |
| for the v3 runner and test execution model used in this repo | |
| 3. **Test code changes** — Keep existing `[Fact]`-based tests; do not rename | |
| attributes to `[Test]`; apply only the minimal API/compatibility updates | |
| actually required by the Architecture.Tests project | |
| 4. **Test validation** — All 11 architecture tests pass with xUnit v3 after | |
| the package and runner configuration changes |
| |---|---|---| | ||
| | `tests/Domain.Tests` | ✅ Migrated | Sprint 7 | | ||
| | `tests/Architecture.Tests` | ✅ Migrated | Sprint 8 | | ||
| | `tests/Blazor.Tests` | 🔜 Recommended next | Sprint 9 | |
There was a problem hiding this comment.
This rollout status table lists tests/Blazor.Tests, but the repo currently has tests/Web.Tests.Bunit (and no Blazor.Tests project). Please update the table to reflect the actual test projects under tests/ so the status summary remains accurate.
| | `tests/Blazor.Tests` | 🔜 Recommended next | Sprint 9 | | |
| | `tests/Web.Tests.Bunit` | 🔜 Recommended next | Sprint 9 | |
| ## Next Steps | ||
|
|
||
| > **📋 If decision = Proceed:** | ||
|
|
||
| | Sprint | Scope | Owner | | ||
| |---|---|---| | ||
| | Sprint 8 | Migrate `tests/Unit.Tests` | Gimli | | ||
| | Sprint 9 | Migrate `tests/Architecture.Tests` | Gimli | | ||
| | Sprint 10 | Migrate `tests/Blazor.Tests` (bUnit) | Gimli + Legolas | | ||
|
|
There was a problem hiding this comment.
This Sprint 7 retro template refers to Blazor.Tests / tests/Blazor.Tests, but the repo's bUnit project is tests/Web.Tests.Bunit (and no Blazor.Tests project exists). Please update these references so the planned rollout targets match the actual test project layout.
|
|
||
| ### Issues Encountered | ||
|
|
||
| - _TBD — see tracking doc `.squad/decisions/inbox/aragorn-sprint7-xunit-pilot-tracking.md`_ |
There was a problem hiding this comment.
This doc references a tracking file under .squad/decisions/inbox/, but that directory is gitignored and won't be available to readers/reviewers on GitHub. Consider moving the tracking info to a tracked doc (or remove the link and reference an issue/PR instead).
| - _TBD — see tracking doc `.squad/decisions/inbox/aragorn-sprint7-xunit-pilot-tracking.md`_ | |
| - _TBD — summarize sprint issues here after sprint close_ |
|
|
||
| steps: | ||
| - name: Enable auto-merge | ||
| uses: actions/github-script@v8 |
There was a problem hiding this comment.
This workflow uses actions/github-script@v8, but the rest of the repo's workflows standardize on actions/github-script@v9. Please bump to @v9 here as well to stay consistent and pick up the latest fixes/security updates.
| uses: actions/github-script@v8 | |
| uses: actions/github-script@v9 |
| 2. **Output type** — Set `<OutputType>Exe</OutputType>` to enable standalone test execution via MTP | ||
| 3. **Compatibility** — Confirm existing test code compiles without major rewrites |
There was a problem hiding this comment.
The ADR states the pilot requires setting <OutputType>Exe</OutputType> and implies [Fact] becomes [Test], but the test projects in this PR continue to use [Fact] and do not set OutputType in their csproj files. Please revise the pilot requirements to match the migration pattern actually implemented in this repository.
| 2. **Output type** — Set `<OutputType>Exe</OutputType>` to enable standalone test execution via MTP | |
| 3. **Compatibility** — Confirm existing test code compiles without major rewrites | |
| 2. **Project-file compatibility** — Keep the existing test project shape used in this repository; the pilot does not require setting `<OutputType>Exe</OutputType>` | |
| 3. **Test-code compatibility** — Confirm existing test code compiles and runs with minimal changes, including continued use of current xUnit attributes such as `[Fact]` |
## Release Checklist - [x] Latest dev CI is green on `0dc7e88` - [x] Release scope reviewed - [x] No breaking changes identified - [x] Release notes drafted ## Release Scope - Sprint 14 — Board Automation Reliability (#215, #238, #239, #240, #244) - Sprint 15 — Local Mongo Clear Command (#246, #247, #248, #249, #252) - Supporting squad maintenance, docs, lint, dependency, and test updates already merged into `dev` since PR #213 - Sync PR #256 merged `main` into `dev` to clear the release conflicts on this PR ## Release Notes - Sprint 14 ships board automation hardening, theme toggle/theme selector persistence fixes, workspace skill cleanup, and higher Web project coverage. - Sprint 15 ships the local-only AppHost `clear-myblog-data` command plus Mongo clear hardening and test coverage. - This release also includes accumulated docs, test-migration, lint, and maintenance updates already validated on `dev`. ## Notes - Sprint 15 milestone was closed during release prep because it had 0 open issues. - PR #256 reconciled `main` into `dev` with a merge commit so this release PR is mergeable again. - This PR promotes the current `dev` branch to `main` per the release-only branch model.
Release Checklist
Scope
mainback intodevvia PR Reconcile main into dev before release #212dev->mainrelease pathRelease Notes
xunitpackage reference and standardize onxunit.v3across the repo test surfaceNotes
mainancestry indevbefore this promotion.devCI on commit02cf370completed green before this checklist was updated.main.