Skip to content
Open

OpenApi #19016

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
d4d7f6a
OpenApi
Skrypt Jul 18, 2025
a21668e
Add nswag config and generated clients
Skrypt Jul 18, 2025
14de477
Move to proper folders
Skrypt Jul 18, 2025
0c9993e
Fix build + add interface generation
Skrypt Jul 18, 2025
2efd60b
Merge branch 'main' into skrypt/openapi
Skrypt Jan 31, 2026
adca1ba
Fix build
Skrypt Jan 31, 2026
6548572
Playwright migration from Cypress
Skrypt Mar 11, 2026
d5f4235
Enable corepack in CI workflows for Yarn 4 compatibility
Skrypt Mar 11, 2026
2e1697f
remove failing doc
Skrypt Mar 11, 2026
4280046
Do not dotnet build twice
Skrypt Mar 11, 2026
79fe299
cache playwright browsers and fix tests
Skrypt Mar 11, 2026
701b76b
fix tests
Skrypt Mar 11, 2026
ebdd5c0
fix playwright cache usage on CI
Skrypt Mar 11, 2026
f096a46
Cleanup / docs / .slnx / .csproj
Skrypt Mar 11, 2026
4d54acf
fix csproj
Skrypt Mar 11, 2026
20b62fe
Refactor Playwright functional tests from TypeScript to C# (#18991)
Copilot Mar 12, 2026
811821b
update yarn.lock
Skrypt Mar 12, 2026
6b25b32
Fix CI workflows: remove obsolete Node.js setup step after Playwright…
Copilot Mar 12, 2026
890c1a8
Fix missing --project on command
Skrypt Mar 12, 2026
c9c3f47
Add Playwright cache CI step
Skrypt Mar 12, 2026
eeb4807
Update test/OrchardCore.Tests.Functional/OrchardCore.Tests.Functional…
Skrypt Mar 12, 2026
a106026
Update test/OrchardCore.Tests.Functional/Helpers/TenantHelper.cs
Skrypt Mar 12, 2026
fa0a69f
Only delete migrations recipe file if it was created by the test run …
Copilot Mar 12, 2026
2fa4306
Refactor CMS functional tests to use CmsTestBase (#18995)
Copilot Mar 12, 2026
b18d0e5
Update test/OrchardCore.Tests.Functional/Helpers/TenantHelper.cs
Skrypt Mar 12, 2026
415c6d0
Fix BrowserContext leak in OrchardTestFixture.CreatePageAsync (#18996)
Copilot Mar 12, 2026
1057243
Merge branch 'main' into skrypt/playwright
Skrypt Mar 12, 2026
e4aea89
Fix CS1513 build error in TenantHelper.cs from malformed review sugge…
Copilot Mar 13, 2026
14c2daf
Potential fix for pull request finding
Skrypt Mar 13, 2026
7e17cfd
Playwright migration from Cypress (#18998)
Copilot Mar 13, 2026
8cc7f68
Merge branch 'main' into skrypt/playwright
Skrypt Mar 16, 2026
723026b
Playwright migration from Cypress (#19012)
Copilot Mar 16, 2026
8b4ddf7
Update with latest code
Skrypt Mar 17, 2026
179db31
update dependencies
Skrypt Mar 17, 2026
407c06c
Merge branch 'main' into skrypt/openapi
Skrypt Mar 17, 2026
b760972
Regen NSwag clients
Skrypt Mar 17, 2026
d1eb372
WIP OpenApi
Skrypt Mar 17, 2026
d5124a3
Add OpenAPI module with Swagger, Scalar, and ReDoc UIs
Skrypt Mar 17, 2026
91d8d87
Enforce OAuth in Swagger UI by stripping cookie fallback for API requ…
Skrypt Mar 17, 2026
460b5dd
Add OpenAPI module with Swagger, Scalar, and ReDoc UIs
Skrypt Mar 18, 2026
24db1bb
rebuild assets with yarn build
Skrypt Mar 18, 2026
a65e45a
Merge branch 'skrypt/playwright' into skrypt/openapi
Skrypt Mar 18, 2026
210e8e8
Add Playwright tests to OpenApi
Skrypt Mar 19, 2026
a8bca3a
Suppress IDE0051 for unused CreateOpenIdApplicationAsync method
Skrypt Mar 19, 2026
4a765e3
Add ApiManage permission
Skrypt Mar 19, 2026
2c6a2dd
Fix UserHelper
Skrypt Mar 19, 2026
776a8a7
revert razor runtime compilation
Skrypt Mar 20, 2026
92ac181
Separate OpenApi UI providers into individual features
Skrypt Mar 21, 2026
f830313
Add setting to secure OpenAPI JSON schema endpoints
Skrypt Mar 21, 2026
7bba1d9
Make schema endpoint URLs clickable in OpenApi settings page
Skrypt Mar 21, 2026
f95a6af
Update OpenApi functional tests for feature-based UI activation
Skrypt Mar 21, 2026
5ed9ebc
Add operationId to all API endpoints and OpenApi generation recipe
Skrypt Mar 22, 2026
95bfa21
yarn build to fix CI build
Skrypt Mar 22, 2026
63b88c6
Make openapi-settings tenant aware
Skrypt Mar 22, 2026
ca794f1
Merge branch 'main' into skrypt/openapi
Skrypt Mar 28, 2026
f3cb9e2
Fixes after merging main
Skrypt Mar 28, 2026
9d07d59
update assets
Skrypt Mar 28, 2026
7773066
fix feature selector
Skrypt Mar 28, 2026
60229b9
localize openapi-settings vue app
Skrypt Mar 28, 2026
3195583
fix translations
Skrypt Mar 28, 2026
884e0f4
fix func tests
Skrypt Mar 28, 2026
8ca07fd
Merge branch 'main' into skrypt/openapi
Skrypt Mar 31, 2026
9a3cbfe
reorder deps
Skrypt Apr 2, 2026
0a24e0d
Merge branch 'main' into skrypt/openapi
Skrypt Apr 2, 2026
37183dc
reorder deps
Skrypt Apr 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/functional_all_db.yml
Original file line number Diff line number Diff line change
Expand Up @@ -241,3 +241,4 @@ jobs:
src/OrchardCore.Cms.Web/App_Data_Tests_*/logs
test/OrchardCore.Tests.Functional/traces
retention-days: 3

38 changes: 37 additions & 1 deletion .scripts/bloom/helpers/globals.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,40 @@ const isNumber = (str: string) => {
return str.length === 1 && str.match(/[0-9]/i);
};

export { getTenantName, getTechnicalName, isLetter, isNumber };
const getAntiForgeryToken = (): string | null => {
const input = document.querySelector<HTMLInputElement>(
'input[name="__RequestVerificationToken"]'
);
return input?.value ?? null;
};

/**
* Returns the tenant path base (e.g. "/authserver", "/tenant") from the current page.
* Reads from a `<script type="application/json">` element whose id ends with `-data`
* and contains a `pathBase` property, or falls back to an empty string (root tenant).
*/
const getTenantPathBase = (dataElementId?: string): string => {
if (dataElementId) {
const el = document.getElementById(dataElementId);
if (el) {
try { return JSON.parse(el.textContent || "{}").pathBase || ""; }
catch { return ""; }
}
}

// Fallback: scan for any script[type="application/json"][id$="-data"] with a pathBase.
const scripts = document.querySelectorAll<HTMLScriptElement>('script[type="application/json"][id$="-data"]');
for (const script of scripts) {
try {
const data = JSON.parse(script.textContent || "{}");
if (typeof data.pathBase === "string") {
return data.pathBase;
}
}
catch { /* skip malformed JSON */ }
}

return "";
};

export { getAntiForgeryToken, getTenantName, getTenantPathBase, getTechnicalName, isLetter, isNumber };
Loading
Loading