-
Notifications
You must be signed in to change notification settings - Fork 3.4k
Use latest xUnit, MSTest + move to MTP #924
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Evangelink
commented
Dec 1, 2025
- Move xUnit and MSTest to latest version.
- Fix new diagnostics from test frameworks bumps
- Migrate to MTP (from VSTest)
Youssef1313
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR modernizes the test infrastructure by migrating from VSTest to Microsoft Testing Platform (MTP) and updating test frameworks to their latest versions. The migration affects all test projects across the solution, including MSTest-based unit tests and xUnit-based functional tests.
Key Changes
- Framework Migration: Migrated from VSTest to Microsoft Testing Platform (MTP) with MSTest 4.0.2 and xUnit v3 (3.2.1)
- Test Framework Updates: Updated MSTest assertions to use modern methods (
Assert.HasCount,Assert.IsEmpty) with correct parameter ordering (expected, actual) - Cancellation Token Support: Added proper cancellation token propagation through
TestContext.CancellationToken(MSTest) andTestContext.Current.CancellationToken(xUnit) to async operations
Reviewed changes
Copilot reviewed 29 out of 29 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| global.json | Updated SDK version to 10.0.100, added MTP runner configuration and MSTest.Sdk version |
| Directory.Packages.props | Consolidated MSTest packages to single MSTest 4.0.2, updated xUnit to v3 MTP package, removed VSTest SDK |
| tests/Directory.Build.props | Added MSTest and xUnit MTP configuration settings |
| tests/Ordering.UnitTests/Ordering.UnitTests.csproj | Migrated to MSTest.Sdk, removed explicit test package references, added OutputType=Exe |
| tests/Ordering.UnitTests/GlobalUsings.cs | Added common system namespaces and assembly-level Parallelize attribute |
| tests/Ordering.UnitTests/Domain/SeedWork/ValueObjectTests.cs | Added [TestClass] attribute, removed empty constructor |
| tests/Ordering.UnitTests/Domain/OrderAggregateTest.cs | Migrated assertions from AreEqual to HasCount for collection counts |
| tests/Ordering.UnitTests/Domain/BuyerAggregateTest.cs | Migrated assertions from AreEqual to HasCount for collection counts |
| tests/Ordering.UnitTests/Application/SetStockRejectedOrderStatusCommandTest.cs | Migrated assertions from AreEqual to HasCount for collection counts |
| tests/Ordering.FunctionalTests/OrderingApiTests.cs | Added TestContext.Current.CancellationToken to all async HTTP operations |
| tests/Ordering.FunctionalTests/OrderingApiFixture.cs | Changed InitializeAsync return type from Task to ValueTask |
| tests/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj | Replaced explicit xUnit/VSTest packages with xunit.v3.mtp-v2, added OutputType=Exe |
| tests/Ordering.FunctionalTests/GlobalUsings.cs | Added common system namespaces for cleaner test code |
| tests/ClientApp.UnitTests/ViewModels/MockViewModelTests.cs | Fixed Assert.AreEqual/AreNotEqual parameter order (expected first, actual second) |
| tests/ClientApp.UnitTests/ViewModels/CatalogViewModelTests.cs | Migrated assertions from AreEqual to IsEmpty for empty collection checks |
| tests/ClientApp.UnitTests/Services/*.cs | Fixed Assert.AreNotEqual parameter order (expected first, actual second) |
| tests/ClientApp.UnitTests/GlobalUsings.cs | Added assembly-level Parallelize attribute |
| tests/ClientApp.UnitTests/ClientApp.UnitTests.csproj | Migrated to MSTest.Sdk, removed explicit test package references, added OutputType=Exe |
| tests/Catalog.FunctionalTests/GlobalUsings.cs | Added common system namespaces for cleaner test code |
| tests/Catalog.FunctionalTests/CatalogApiTests.cs | Added UTF-8 BOM, added TestContext.Current.CancellationToken to all async HTTP operations |
| tests/Catalog.FunctionalTests/CatalogApiFixture.cs | Changed InitializeAsync return type from Task to ValueTask |
| tests/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj | Replaced explicit xUnit/VSTest packages with xunit.v3.mtp-v2, added OutputType=Exe |
| tests/Basket.UnitTests/Helpers/TestServerCallContext.cs | Added UTF-8 BOM for proper file encoding |
| tests/Basket.UnitTests/GlobalUsings.cs | Added common system namespaces and assembly-level Parallelize attribute |
| tests/Basket.UnitTests/BasketServiceTests.cs | Added TestContext property, updated assertions to HasCount/IsEmpty, passed TestContext.CancellationToken to test helpers |
| tests/Basket.UnitTests/Basket.UnitTests.csproj | Migrated to MSTest.Sdk, removed explicit test package references, added OutputType=Exe |
| .github/workflows/pr-validation.yml | Updated test command to use --solution flag with --no-build for MTP compatibility |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
jamesmontemagno
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
* Update to Aspire 13 (dotnet#916) * Update to official versions and fix the build * Update to v7 RabbitMQ Remove some native AOT workarounds Convert to use artifacts output so the src directory isn't litered with bin/obj folders * Update to latest patch, including Aspire.Npgsql.EntityFrameworkCore.PostgreSQL * Use latest xUnit, MSTest + move to MTP (dotnet#924) * Use latest xUnit, MSTest + move to MTP * Add no progress and detailed output * Fix test * Fix dotnet test call for maui * chore(repo): sync fork with upstream update to Aspire 13 * Merge remote-tracking branch 'origin/main' into pr/Pinguladora/52
* Add Zizmor support and GitSign verification (#40) * Configure Renovate (#1) * Add renovate.json * chore(deps): update renovate.json configuration for enhanced dependency management * chore(deps): remove redundant docker manager from Renovate configuration * chore(deps): correct typo in separateMajor option --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Pinguladora <mec@gmail.com> * chore(deps): add semantic commit scope and clean up schedule and package rules in Renovate config (#4) * chore(deps): update dependency node to v22 (#3) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Reconfigure renovate (#6) * chore(deps): add semantic commit scope and clean up schedule and package rules in Renovate config * chore(deps): add merge confidence badge and enable weekly lock file maintenance * chore(deps): update Renovate config to use baseBranchPatterns and simplify lock file maintenance * chore(deps): update minimumReleaseAge to 3 days for improved dependency management * fix(deps): correct key name from matchPackagePatterns to matchPackageNames in Renovate config --------- Signed-off-by: Pinguladora <50406923+Pinguladora@users.noreply.github.com> Co-authored-by: Pinguladora <mec@gmail.com> * chore(deps): update actions/checkout action to v5 (#19) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): add lockfile to all projects (#28) Co-authored-by: Pinguladora <mec@gmail.com> * feat(build): add pre-commit framework support (#30) * chore(ci): add pre-commit configuration for Gitleaks secret detection * chore(pre-commit): add Oxipng compression tool for PNG optimization * chore(pre-commit): reorganize hooks and add descriptions for clarity * chore(pre-commit): replace commitizen with Cocogitto for commit message verification --------- Co-authored-by: Pinguladora <mec@gmail.com> * feat(build): add devcontainer support (#29) * chore(build): add devcontainer prototype configuration for .NET Aspire environment * fix: update SDK version to 10.0.0-rc.2.25502.107 in global.json * fix: update .NET Aspire devcontainer image to 10.0 and modify onCreateCommand --------- Co-authored-by: Pinguladora <mec@gmail.com> * feat(workflows): add GitHub Actions security analysis with zizmor implements Zizmor analysis. Resolves #34. * feat(build): add pre-commit hook for Renovate (#38) * feat(pre-commit): add renovate pre-commit * Feature/#37-gitsign-verification (#39) * feat(ci): add Gitsign verification for PR * feat(ci): add Chainguard source.yaml configuration * feat(ci): update Gitsign verification workflow remove broad permissions disable credential persistence * fix(playwright): update webServer configuration to use port instead of url --------- Signed-off-by: Pinguladora <50406923+Pinguladora@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Pinguladora <mec@gmail.com> * Upgrade to Aspire 13 and update testing frameworks (#53) * Update to Aspire 13 (dotnet#916) * Update to official versions and fix the build * Update to v7 RabbitMQ Remove some native AOT workarounds Convert to use artifacts output so the src directory isn't litered with bin/obj folders * Update to latest patch, including Aspire.Npgsql.EntityFrameworkCore.PostgreSQL * Use latest xUnit, MSTest + move to MTP (dotnet#924) * Use latest xUnit, MSTest + move to MTP * Add no progress and detailed output * Fix test * Fix dotnet test call for maui * chore(repo): sync fork with upstream update to Aspire 13 * Merge remote-tracking branch 'origin/main' into pr/Pinguladora/52 --------- Signed-off-by: Pinguladora <50406923+Pinguladora@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Pinguladora <mec@gmail.com>
* Sync main (#54) * Add Zizmor support and GitSign verification (#40) * Configure Renovate (#1) * Add renovate.json * chore(deps): update renovate.json configuration for enhanced dependency management * chore(deps): remove redundant docker manager from Renovate configuration * chore(deps): correct typo in separateMajor option --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Pinguladora <mec@gmail.com> * chore(deps): add semantic commit scope and clean up schedule and package rules in Renovate config (#4) * chore(deps): update dependency node to v22 (#3) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Reconfigure renovate (#6) * chore(deps): add semantic commit scope and clean up schedule and package rules in Renovate config * chore(deps): add merge confidence badge and enable weekly lock file maintenance * chore(deps): update Renovate config to use baseBranchPatterns and simplify lock file maintenance * chore(deps): update minimumReleaseAge to 3 days for improved dependency management * fix(deps): correct key name from matchPackagePatterns to matchPackageNames in Renovate config --------- Signed-off-by: Pinguladora <50406923+Pinguladora@users.noreply.github.com> Co-authored-by: Pinguladora <mec@gmail.com> * chore(deps): update actions/checkout action to v5 (#19) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): add lockfile to all projects (#28) Co-authored-by: Pinguladora <mec@gmail.com> * feat(build): add pre-commit framework support (#30) * chore(ci): add pre-commit configuration for Gitleaks secret detection * chore(pre-commit): add Oxipng compression tool for PNG optimization * chore(pre-commit): reorganize hooks and add descriptions for clarity * chore(pre-commit): replace commitizen with Cocogitto for commit message verification --------- Co-authored-by: Pinguladora <mec@gmail.com> * feat(build): add devcontainer support (#29) * chore(build): add devcontainer prototype configuration for .NET Aspire environment * fix: update SDK version to 10.0.0-rc.2.25502.107 in global.json * fix: update .NET Aspire devcontainer image to 10.0 and modify onCreateCommand --------- Co-authored-by: Pinguladora <mec@gmail.com> * feat(workflows): add GitHub Actions security analysis with zizmor implements Zizmor analysis. Resolves #34. * feat(build): add pre-commit hook for Renovate (#38) * feat(pre-commit): add renovate pre-commit * Feature/#37-gitsign-verification (#39) * feat(ci): add Gitsign verification for PR * feat(ci): add Chainguard source.yaml configuration * feat(ci): update Gitsign verification workflow remove broad permissions disable credential persistence * fix(playwright): update webServer configuration to use port instead of url --------- Signed-off-by: Pinguladora <50406923+Pinguladora@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Pinguladora <mec@gmail.com> * Upgrade to Aspire 13 and update testing frameworks (#53) * Update to Aspire 13 (dotnet#916) * Update to official versions and fix the build * Update to v7 RabbitMQ Remove some native AOT workarounds Convert to use artifacts output so the src directory isn't litered with bin/obj folders * Update to latest patch, including Aspire.Npgsql.EntityFrameworkCore.PostgreSQL * Use latest xUnit, MSTest + move to MTP (dotnet#924) * Use latest xUnit, MSTest + move to MTP * Add no progress and detailed output * Fix test * Fix dotnet test call for maui * chore(repo): sync fork with upstream update to Aspire 13 * Merge remote-tracking branch 'origin/main' into pr/Pinguladora/52 --------- Signed-off-by: Pinguladora <50406923+Pinguladora@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Pinguladora <mec@gmail.com> * Feature/#51-update-to-dotnet-10-lts (#56) chore(dotnet): update .NET SDK version to 10.0.101 Co-authored-by: Pinguladora <mec@gmail.com> * chore(renovate): fix typo on preset config --------- Signed-off-by: Pinguladora <50406923+Pinguladora@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Pinguladora <mec@gmail.com>
* Sync main (#54) * Add Zizmor support and GitSign verification (#40) * Configure Renovate (#1) * Add renovate.json * chore(deps): update renovate.json configuration for enhanced dependency management * chore(deps): remove redundant docker manager from Renovate configuration * chore(deps): correct typo in separateMajor option --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Pinguladora <mec@gmail.com> * chore(deps): add semantic commit scope and clean up schedule and package rules in Renovate config (#4) * chore(deps): update dependency node to v22 (#3) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Reconfigure renovate (#6) * chore(deps): add semantic commit scope and clean up schedule and package rules in Renovate config * chore(deps): add merge confidence badge and enable weekly lock file maintenance * chore(deps): update Renovate config to use baseBranchPatterns and simplify lock file maintenance * chore(deps): update minimumReleaseAge to 3 days for improved dependency management * fix(deps): correct key name from matchPackagePatterns to matchPackageNames in Renovate config --------- Signed-off-by: Pinguladora <50406923+Pinguladora@users.noreply.github.com> Co-authored-by: Pinguladora <mec@gmail.com> * chore(deps): update actions/checkout action to v5 (#19) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): add lockfile to all projects (#28) Co-authored-by: Pinguladora <mec@gmail.com> * feat(build): add pre-commit framework support (#30) * chore(ci): add pre-commit configuration for Gitleaks secret detection * chore(pre-commit): add Oxipng compression tool for PNG optimization * chore(pre-commit): reorganize hooks and add descriptions for clarity * chore(pre-commit): replace commitizen with Cocogitto for commit message verification --------- Co-authored-by: Pinguladora <mec@gmail.com> * feat(build): add devcontainer support (#29) * chore(build): add devcontainer prototype configuration for .NET Aspire environment * fix: update SDK version to 10.0.0-rc.2.25502.107 in global.json * fix: update .NET Aspire devcontainer image to 10.0 and modify onCreateCommand --------- Co-authored-by: Pinguladora <mec@gmail.com> * feat(workflows): add GitHub Actions security analysis with zizmor implements Zizmor analysis. Resolves #34. * feat(build): add pre-commit hook for Renovate (#38) * feat(pre-commit): add renovate pre-commit * Feature/#37-gitsign-verification (#39) * feat(ci): add Gitsign verification for PR * feat(ci): add Chainguard source.yaml configuration * feat(ci): update Gitsign verification workflow remove broad permissions disable credential persistence * fix(playwright): update webServer configuration to use port instead of url --------- Signed-off-by: Pinguladora <50406923+Pinguladora@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Pinguladora <mec@gmail.com> * Upgrade to Aspire 13 and update testing frameworks (#53) * Update to Aspire 13 (dotnet#916) * Update to official versions and fix the build * Update to v7 RabbitMQ Remove some native AOT workarounds Convert to use artifacts output so the src directory isn't litered with bin/obj folders * Update to latest patch, including Aspire.Npgsql.EntityFrameworkCore.PostgreSQL * Use latest xUnit, MSTest + move to MTP (dotnet#924) * Use latest xUnit, MSTest + move to MTP * Add no progress and detailed output * Fix test * Fix dotnet test call for maui * chore(repo): sync fork with upstream update to Aspire 13 * Merge remote-tracking branch 'origin/main' into pr/Pinguladora/52 --------- Signed-off-by: Pinguladora <50406923+Pinguladora@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Pinguladora <mec@gmail.com> * Feature/#51-update-to-dotnet-10-lts (#56) chore(dotnet): update .NET SDK version to 10.0.101 Co-authored-by: Pinguladora <mec@gmail.com> * Renovate/reconfigure (#57) chore(renovate): fix typo on preset config Co-authored-by: Pinguladora <mec@gmail.com> * feat(trivy): enhance trivy support (#49) * feat(trivy): add prototype config file * chore(trivy): add .trivyignore file and update trivy.yaml configuration * chore(trivy): update Trivy configuration to use exit code 0 non 0 exit codes make pre-commit job fail --------- Co-authored-by: Pinguladora <mec@gmail.com> * chore(deps): update dependency node to v18 (#66) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update actions/setup-node action to v5 (#62) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update actions/upload-artifact action to v5 (#64) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency node to v20 (#67) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Feature/#70 skip workflows created by renovate (#71) * chore(ci): update gitsign workflow name and trigger events for commit verification * chore(ci): renovate skip and add timeout for commit verification --------- Co-authored-by: Pinguladora <mec@gmail.com> * chore(deps): update dependency node to v22 (#68) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency node to v24 (#69) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update actions/setup-node action to v6 (#63) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update pre-commit hook renovatebot/pre-commit-hooks to v42 (#73) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update pre-commit hook gitleaks/gitleaks to v8.30.0 (#72) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update zizmorcore/zizmor-action action to v0.3.0 * Update GitSign workflow for commit verification (#74) * chore(ci): update gitsign workflow name and trigger events for commit verification * chore(ci): renovate skip and add timeout for commit verification * chore(ci): skip GitSign verification workflow for Renovate bot commits bettet than previous approach which still ran jobs adding overhead and charges for runners see https://github.com/orgs/community/discussions/6943 --------- Co-authored-by: Pinguladora <mec@gmail.com> * chore(deps): update actions/upload-artifact action to v6 (#65) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Update Renovate setup (#58) * chore(renovate): fix typo on preset config * chore(renovate): update config skip CI on version pinning rebase stale PRs open PRs as drafts * chore(renovate): adjust PR limits set concurrency to 10 remove hourly limit --------- Co-authored-by: Pinguladora <mec@gmail.com> * chore(deps): update actions/setup-dotnet action to v5.0.1 (#80) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update actions/checkout action to v6 (#79) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update pre-commit hook oxipng/oxipng to v10 (#88) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update pre-commit hook renovatebot/pre-commit-hooks to v42.71.0 (#87) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update chainguard-dev/actions action to v1.5.10 * Feature/#90-add-zensical (#92) * feat(docs): add architecture and development documentation with Zensical * chore(ci): add workflow for Zensical page deploy * chore(markdown): update markdownlint workflow and ignore settings for Zensical documentation * chore(ci): only run action on PRs ready for review * chore(ci): pin and verify action versions --------- Co-authored-by: Pinguladora <mec@gmail.com> * Feature/#90-add-zensical (#2) (#93) * feat(docs): add architecture and development documentation with Zensical * chore(ci): add workflow for Zensical page deploy * chore(markdown): update markdownlint workflow and ignore settings for Zensical documentation * chore(ci): only run action on PRs ready for review * chore(ci): pin and verify action versions * chore(ci): fix zensical GHA add zensical.toml to workflow trigger add zensical.toml to checkout --------- Co-authored-by: Pinguladora <mec@gmail.com> * Feature/#90-add-zensical (#3) (#103) * feat(docs): add architecture and development documentation with Zensical * chore(ci): add workflow for Zensical page deploy * chore(markdown): update markdownlint workflow and ignore settings for Zensical documentation * chore(ci): only run action on PRs ready for review * chore(ci): pin and verify action versions * chore(ci): fix zensical GHA add zensical.toml to workflow trigger add zensical.toml to checkout * chore: merge branch 'develop' into feature/#90-add-zensical * chore(ci): update Zensical GHA adjust workflow dispatch trigger add workflow path as trigger for push add feature branch for testing * chore(ci): remove feature branch trigger after testing it deploys to GitHub Pages * chore: merge branch 'develop' into feature/#90-add-zensical * Feature/#60-improve-gha-setup (#109) * chore(ci): remove CI on draft closes #75 * chore(ci): set concurrency setting fixes #83 * chore(ci): disable credentials persistence * chore(ci): adjust checkout filters fixes #104 * chore(ci): set permissions on GHA fixes #82 * chore(ci): set timeout on jobs fixes #84 * chore(ci): adjust zizmor triggers fixes #81 * chore(ci): refactor Zizmor workflow fixes #104 * chore(ci): add blob filtering fixes #105 * chore(ci): optimize Git config closes #105 * chore(ci): optimize Git config closes #105 * chore(ci): format all workflow files fix missing negation pattern on playwright workflow * chore(ci): add Caliebre image optimization solves #85 * chore(ci): add ghalint config file closes #108 * chore(ci): change path of ghalint config file * chore(ci): add actionlint support closes #107 props to Gabo (https://github.com/ashishb/gabo) for the baseline * chore(ci): fix sparse checkout * chore(ci): format workflows files --------- Co-authored-by: Pinguladora <mec@gmail.com> * feat(analytics): add Rybbit analytics (#110) * feat(analytics): add Rybbit analytics integration and configuration * refactor(zensical): point to proper CSS expected path --------- Co-authored-by: Pinguladora <mec@gmail.com> * chore(ci): fix Zensical workflows forgot to expand sparse checkout filter * chore(ci): fix Playwright workflow remove sparse checkout to reduce cognitive complexity --------- Signed-off-by: Pinguladora <50406923+Pinguladora@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Pinguladora <mec@gmail.com>