Open
Conversation
# Conflicts: # Directory.Packages.props # OrchardCore.sln # src/OrchardCore.Build/TargetFrameworks.props
Refactor all Cypress functional tests in a 1:1 migration to Playwright.
The CI runners have Yarn 1.x globally but the project uses Yarn 4.9.4 via packageManager field. Adding corepack enable ensures the correct Yarn version is used. Also removes unnecessary cd into subdirectory for functional_all_db.yml since yarn workspace commands run from root.
* Initial plan * Refactor Playwright functional tests from TypeScript to C# - Remove TypeScript Playwright test project (test/OrchardCore.Tests.Playwright) - Create C# Playwright test project at test/OrchardCore.Tests.Functional - Add xUnit v3 test classes mirroring all original TS tests - Add helper classes for auth, tenants, configuration, lifecycle, etc. - Update all CI workflows to use dotnet test instead of yarn/npm - Update OrchardCore.slnx, Directory.Packages.props, AGENTS.md - Revert root package.json (remove Playwright workspace/scripts) Co-authored-by: Skrypt <3228637+Skrypt@users.noreply.github.com> * Fix code review feedback: use base-32 encoding and static members Co-authored-by: Skrypt <3228637+Skrypt@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Skrypt <3228637+Skrypt@users.noreply.github.com>
… TypeScript → C# migration (#18992) * Initial plan * Fix CI workflows by removing obsolete Node.js setup step Co-authored-by: Skrypt <3228637+Skrypt@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Skrypt <3228637+Skrypt@users.noreply.github.com>
….csproj Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…18994) * Initial plan * Fix: only delete migrations recipe if it was copied by us in this run Co-authored-by: Skrypt <3228637+Skrypt@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Skrypt <3228637+Skrypt@users.noreply.github.com>
* Initial plan * Refactor CMS tests to use CmsTestBase, eliminating duplicate tenant setup logic Co-authored-by: Skrypt <3228637+Skrypt@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Skrypt <3228637+Skrypt@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Initial plan * Fix BrowserContext leak in CreatePageAsync by closing context when page closes Co-authored-by: Skrypt <3228637+Skrypt@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Skrypt <3228637+Skrypt@users.noreply.github.com>
…stion merge (#18997) * Initial plan * Fix CS1513 syntax error in TenantHelper.cs - malformed review suggestion merge Co-authored-by: Skrypt <3228637+Skrypt@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Skrypt <3228637+Skrypt@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Initial plan * fix: address review comments - HttpClient timeout and external site setup detection Co-authored-by: Skrypt <3228637+Skrypt@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Skrypt <3228637+Skrypt@users.noreply.github.com>
Add an AllowAnonymousSchemaAccess setting (default: true) that controls whether the JSON schema endpoints (/swagger/v1/swagger.json, /openapi/v1.json) can be accessed without authentication. When disabled, these endpoints require the ApiManage permission, returning 401 for unauthenticated and 403 for unauthorized requests. This allows administrators to temporarily expose the schema for code generators like NSwag and lock it down otherwise.
Contributor
Author
|
@sebastienros Done, I moved them to features. The UI now only shows which UI is enabled.
|
Replace references to removed EnableSwaggerUI/ReDocUI/ScalarUI checkboxes with feature enablement via FeatureHelper. Tests now enable the individual sub-features (SwaggerUI, ReDocUI, ScalarUI) instead of toggling settings checkboxes, and assert against the new AllowAnonymousSchemaAccess element on the settings page.
Add explicit endpoint names (operationId) to all API controllers and minimal API endpoints using [EndpointName] and .WithName() respectively. This prevents NSwag from generating ambiguous method names like ContentGET2Async by giving each operation a unique, descriptive identifier. All names are prefixed with "Api" to avoid collisions with existing admin route names. Also adds an OpenApi generation recipe to the OpenApi module that enables all features exposing API endpoints.
Contributor
|
This pull request has merge conflicts. Please resolve those before requesting a review. |
Contributor
|
This pull request has merge conflicts. Please resolve those before requesting a review. |
This was referenced Apr 1, 2026
Contributor
|
This pull request has merge conflicts. Please resolve those before requesting a review. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Introduces the
OrchardCore.OpenApimodule, providing OpenAPI specification generation and three interactive API documentation UIs for Orchard Core./swagger) — Interactive API explorer with "Try it out" support/redoc) — Read-only API reference documentation/scalar/v1) — Modern API reference with built-in HTTP clientEach UI can be individually enabled/disabled from the admin settings page (Settings > OpenApi). All endpoints are protected by the
ApiViewContentpermission (granted to Administrators by default) — unauthenticated users are redirected to/admin, unauthorized users receive 403.Authentication
The module supports two authentication modes for the "Try it out" / "Send" buttons:
What's included
Startup.csOpenApiSettingsOpenApiSettingsDisplayDriverOpenApiPermissionsApiViewContentpermissionProblemDetailsApiControllerExtensionsApiBadRequestProblem,ApiNotFoundProblem,ApiValidationProblem, etc.)OrchardCore.OpenApi.nswagsrc/docs/reference/modules/OpenApi/README.mdNew dependencies
Microsoft.AspNetCore.OpenApi10.0.5Scalar.AspNetCore2.0.0Swashbuckle.AspNetCore.SwaggerGen/SwaggerUI/ReDoc10.1.4TODO: