Skip to content
Merged
Show file tree
Hide file tree
Changes from 59 commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
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
a2599ac
Refactor functional tests to use WebApplicationFactory and enable par…
Skrypt Mar 19, 2026
dbaa6e5
Fix recipe file race condition when fixtures initialize in parallel
Skrypt Mar 19, 2026
7b39115
Replace WebApplicationFactory with direct host builder and remove dep…
Skrypt Mar 20, 2026
1e87871
Clean up App_Data_Tests directories after functional tests complete
Skrypt Mar 20, 2026
5049f1b
Set unique table prefix per fixture to isolate shared databases in CI
Skrypt Mar 20, 2026
01c185a
Fix table prefix
Skrypt Mar 20, 2026
6b88767
Set table prefix via configuration instead of setup form UI
Skrypt Mar 20, 2026
7aa8cc0
Create unique database per fixture for parallel CI execution
Skrypt Mar 20, 2026
90a068f
Fix database isolation for shared database CI jobs
Skrypt Mar 20, 2026
9d4b7b4
Fix cascading database name suffix when fixtures modify the env var
Skrypt Mar 20, 2026
1bb5895
Simplified OrchardTestServer
Skrypt Mar 20, 2026
76fe360
different db names
Skrypt Mar 20, 2026
39afc6f
Fix CI workflow: update actions/cache to Node.js 24, add tracing and …
Copilot Mar 20, 2026
8d6537d
add doc
Skrypt Mar 20, 2026
2903588
Merge branch 'skrypt/playwright' of https://github.com/OrchardCMS/Orc…
Skrypt Mar 20, 2026
ef0efb9
Replace env var usage
Skrypt Mar 20, 2026
6726f02
trying to fix it
Skrypt Mar 20, 2026
e373445
fix concurrency issues
Skrypt Mar 20, 2026
701e868
fix concurrency issues
Skrypt Mar 20, 2026
6ba8d76
force production mode
Skrypt Mar 20, 2026
117eb03
remove env var for testing
Skrypt Mar 20, 2026
68ab748
add missing file
Skrypt Mar 20, 2026
0ebd093
Intentionally failing functional test
Piedone Mar 21, 2026
245c1c2
Revert "Intentionally failing functional test"
Piedone Mar 21, 2026
9ea4498
Removing unnecessary namespace imports
Piedone Mar 21, 2026
ff4c444
Re-adding actually needed usings
Piedone Mar 21, 2026
ba68d17
Replace custom InMemoryLoggerProvider with FakeLoggerProvider in func…
Copilot Mar 21, 2026
87325c1
Playwright migration from Cypress (#19042)
Copilot Mar 21, 2026
8ae9ffb
Playwright - Remove deprecated Razor runtime compilation and enable H…
Skrypt Mar 22, 2026
57070ac
Fix All databases functional test
Skrypt Mar 24, 2026
f719a43
Revert Razor compilation removal (moved to skrypt/playwright-comp)
Skrypt Mar 27, 2026
d65fb0b
Clean up CI workflows and harden functional test helpers
Skrypt Mar 27, 2026
ea70463
Merge branch 'main' into skrypt/playwright
Skrypt Mar 27, 2026
a343dae
Test parallel execution on Github
Skrypt Mar 27, 2026
6643d97
Enable parallel test execution and eliminate shared mutable state
Skrypt Mar 27, 2026
db788e0
Update test/OrchardCore.Tests.Functional/README.md
Skrypt Mar 27, 2026
6c29de4
Update test/OrchardCore.Tests.Functional/Helpers/TenantHelper.cs
Skrypt Mar 27, 2026
f933904
Update test/OrchardCore.Tests.Functional/Helpers/EmbeddedRecipeHarves…
Skrypt Mar 27, 2026
8587d61
Fix CA1845: use span-based string.Concat in EmbeddedRecipeHarvester
Skrypt Mar 27, 2026
52ab6dc
Add Docker Hub credentials to functional_all_db service containers
Skrypt Mar 27, 2026
96a80f9
Fix parallel database collision by clearing env vars at process start
Skrypt Mar 27, 2026
37b2c8e
Fix SaaS tenant setup on external databases and add run-db-tests.sh
Skrypt Mar 27, 2026
e2ffe43
cleanup
Skrypt Mar 27, 2026
5dbf5e2
remove maxParallelThreads
Skrypt Mar 27, 2026
cb67430
Fix README to match current test infrastructure behavior
Skrypt Mar 27, 2026
59db9b8
Add powershell script
Skrypt Mar 28, 2026
f2c6935
revert changes on SharedViewCompilerProvider
Skrypt Mar 28, 2026
9bf5258
Merge branch 'main' into skrypt/playwright
Skrypt Mar 28, 2026
ec568fd
Remove unecessary xunit.runner.json file
Skrypt Mar 28, 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
125 changes: 81 additions & 44 deletions .github/workflows/functional_all_db.yml
Comment thread
Piedone marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ on:
env:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
PLAYWRIGHT_TRACING: true
Comment thread
Skrypt marked this conversation as resolved.
ASPNETCORE_ENVIRONMENT: Production

jobs:
test_functional_mvc:
Expand All @@ -30,53 +32,65 @@ jobs:
github.event.review.state == 'APPROVED' ||
github.event.review.state == 'CHANGES_REQUESTED'
runs-on: ubuntu-24.04
container:
image: cypress/included:15.12.0
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/setup-dotnet
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- name: Build
run: |
dotnet build -c Release test/OrchardCore.Tests.Functional/OrchardCore.Tests.Functional.csproj
- name: Cache Playwright Browsers
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
node-version: "15"
package-manager-cache: false
path: ~/.cache/ms-playwright
key: playwright-${{ hashFiles('Directory.Packages.props') }}
- name: Install Playwright Browsers
run: |
pwsh test/OrchardCore.Tests.Functional/bin/Release/net10.0/playwright.ps1 install --with-deps chromium
- name: Functional Tests
run: |
cd test/OrchardCore.Tests.Functional
npm install
npm run mvc:test
dotnet test --project test/OrchardCore.Tests.Functional/OrchardCore.Tests.Functional.csproj -c Release --no-build --filter-class "*Mvc*"
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
if: failure()
with:
name: functional-mvc-screenshots
path: test/OrchardCore.Tests.Functional/mvc-tests/cypress/screenshots
name: functional-mvc-failure
path: |
src/OrchardCore.Mvc.Web/App_Data_Tests/logs
test/OrchardCore.Tests.Functional/traces
retention-days: 3

test_functional_cms_sqlite:
name: Functional Tests - CMS Sqlite
if: github.event_name == 'workflow_dispatch' ||
github.event_name == 'push' ||
github.event.review.state == 'APPROVED' ||
github.event.review.state == 'CHANGES_REQUESTED'
runs-on: ubuntu-24.04
container:
image: cypress/included:15.12.0
env:
OrchardCore__OrchardCore_YesSql__EnableThreadSafetyChecks: true
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/setup-dotnet
- name: Build
run: |
dotnet build -c Release test/OrchardCore.Tests.Functional/OrchardCore.Tests.Functional.csproj
- name: Cache Playwright Browsers
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: ~/.cache/ms-playwright
key: playwright-${{ hashFiles('Directory.Packages.props') }}
- name: Install Playwright Browsers
run: |
pwsh test/OrchardCore.Tests.Functional/bin/Release/net10.0/playwright.ps1 install --with-deps chromium
- name: Functional Tests
run: |
cd test/OrchardCore.Tests.Functional
npm install
npm run cms:test
dotnet test --project test/OrchardCore.Tests.Functional/OrchardCore.Tests.Functional.csproj -c Release --no-build --filter-class "*Cms*"
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
if: failure()
with:
name: functional-cms-sqlite-failure
path: |
test/OrchardCore.Tests.Functional/cms-tests/cypress/screenshots
src/OrchardCore.Cms.Web/App_Data/logs
src/OrchardCore.Cms.Web/App_Data_Tests_*/logs
test/OrchardCore.Tests.Functional/traces
retention-days: 3

test_functional_cms_postgresql:
Expand All @@ -86,11 +100,11 @@ jobs:
github.event.review.state == 'APPROVED' ||
github.event.review.state == 'CHANGES_REQUESTED'
runs-on: ubuntu-24.04
container:
image: cypress/included:15.12.0
services:
postgres:
image: postgres:11
ports:
- 5432:5432
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: admin
Expand All @@ -102,24 +116,33 @@ jobs:
--health-timeout 5s
--health-retries 5
env:
OrchardCore__ConnectionString: "User ID=postgres;Password=admin;Host=postgres;Port=5432;Database=app;"
OrchardCore__ConnectionString: "User ID=postgres;Password=admin;Host=localhost;Port=5432;Database=app;"
OrchardCore__DatabaseProvider: "Postgres"
OrchardCore__OrchardCore_YesSql__EnableThreadSafetyChecks: true
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/setup-dotnet
- name: Build
run: |
dotnet build -c Release test/OrchardCore.Tests.Functional/OrchardCore.Tests.Functional.csproj
- name: Cache Playwright Browsers
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: ~/.cache/ms-playwright
key: playwright-${{ hashFiles('Directory.Packages.props') }}
- name: Install Playwright Browsers
run: |
pwsh test/OrchardCore.Tests.Functional/bin/Release/net10.0/playwright.ps1 install --with-deps chromium
- name: Functional Tests
run: |
cd test/OrchardCore.Tests.Functional
npm install
npm run cms:test
dotnet test --project test/OrchardCore.Tests.Functional/OrchardCore.Tests.Functional.csproj -c Release --no-build --filter-class "*Cms*"
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
if: failure()
with:
name: functional-cms-postgresql-failure
path: |
test/OrchardCore.Tests.Functional/cms-tests/cypress/screenshots
src/OrchardCore.Cms.Web/App_Data/logs
src/OrchardCore.Cms.Web/App_Data_Tests_*/logs
test/OrchardCore.Tests.Functional/traces
retention-days: 3

test_functional_cms_mysql:
Expand All @@ -129,36 +152,43 @@ jobs:
github.event.review.state == 'APPROVED' ||
github.event.review.state == 'CHANGES_REQUESTED'
runs-on: ubuntu-24.04
container:
image: cypress/included:15.12.0
services:
mysql:
image: mysql:8
ports:
- 3306
- 3306:3306
env:
MYSQL_DATABASE: test
MYSQL_ROOT_PASSWORD: test123
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
env:
OrchardCore__ConnectionString: "server=mysql;uid=root;pwd=test123;database=test"
OrchardCore__ConnectionString: "server=localhost;uid=root;pwd=test123;database=test"
Comment thread
Skrypt marked this conversation as resolved.
OrchardCore__DatabaseProvider: "MySql"
OrchardCore__OrchardCore_YesSql__EnableThreadSafetyChecks: true
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/setup-dotnet
- name: Build
run: |
dotnet build -c Release test/OrchardCore.Tests.Functional/OrchardCore.Tests.Functional.csproj
- name: Cache Playwright Browsers
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: ~/.cache/ms-playwright
key: playwright-${{ hashFiles('Directory.Packages.props') }}
- name: Install Playwright Browsers
run: |
pwsh test/OrchardCore.Tests.Functional/bin/Release/net10.0/playwright.ps1 install --with-deps chromium
- name: Functional Tests
run: |
cd test/OrchardCore.Tests.Functional
npm install
npm run cms:test
dotnet test --project test/OrchardCore.Tests.Functional/OrchardCore.Tests.Functional.csproj -c Release --no-build --filter-class "*Cms*"
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
if: failure()
with:
name: functional-cms-mysql-failure
path: |
test/OrchardCore.Tests.Functional/cms-tests/cypress/screenshots
src/OrchardCore.Cms.Web/App_Data/logs
src/OrchardCore.Cms.Web/App_Data_Tests_*/logs
test/OrchardCore.Tests.Functional/traces
retention-days: 3

test_functional_cms_mssql:
Expand All @@ -168,33 +198,40 @@ jobs:
github.event.review.state == 'APPROVED' ||
github.event.review.state == 'CHANGES_REQUESTED'
runs-on: ubuntu-24.04
container:
image: cypress/included:15.12.0
services:
mssql:
image: mcr.microsoft.com/mssql/server:2019-latest
ports:
- 1433
- 1433:1433
env:
ACCEPT_EULA: Y
MSSQL_SA_PASSWORD: Password12!
env:
OrchardCore__ConnectionString: "Server=mssql;Database=tempdb;User Id=sa;Password=Password12!;Encrypt=False"
OrchardCore__ConnectionString: "Server=localhost;Database=tempdb;User Id=sa;Password=Password12!;Encrypt=False"
OrchardCore__DatabaseProvider: "SqlConnection"
OrchardCore__OrchardCore_YesSql__EnableThreadSafetyChecks: true
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/setup-dotnet
- name: Build
run: |
dotnet build -c Release test/OrchardCore.Tests.Functional/OrchardCore.Tests.Functional.csproj
- name: Cache Playwright Browsers
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: ~/.cache/ms-playwright
key: playwright-${{ hashFiles('Directory.Packages.props') }}
- name: Install Playwright Browsers
run: |
pwsh test/OrchardCore.Tests.Functional/bin/Release/net10.0/playwright.ps1 install --with-deps chromium
- name: Functional Tests
run: |
cd test/OrchardCore.Tests.Functional
npm install
npm run cms:test
dotnet test --project test/OrchardCore.Tests.Functional/OrchardCore.Tests.Functional.csproj -c Release --no-build --filter-class "*Cms*"
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
if: failure()
with:
name: functional-cms-mssql-failure
path: |
test/OrchardCore.Tests.Functional/cms-tests/cypress/screenshots
src/OrchardCore.Cms.Web/App_Data/logs
src/OrchardCore.Cms.Web/App_Data_Tests_*/logs
test/OrchardCore.Tests.Functional/traces
retention-days: 3
32 changes: 21 additions & 11 deletions .github/workflows/main_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ on:
env:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
PLAYWRIGHT_TRACING: true

jobs:
test:
Expand All @@ -24,10 +25,6 @@ jobs:
os: [ubuntu-24.04, windows-2022]
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: "15"
package-manager-cache: false
- uses: ./.github/actions/setup-dotnet
- name: Build
# See pr_ci.yml for the reason why we disable NuGet audit warnings.
Expand All @@ -36,17 +33,30 @@ jobs:
- name: Unit Tests
run: |
dotnet test --project ./test/OrchardCore.Tests/OrchardCore.Tests.csproj -c Release --no-build
- name: Functional Tests
- name: Cache Playwright Browsers
if: matrix.os == 'ubuntu-24.04'
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: ~/.cache/ms-playwright
Comment thread
Piedone marked this conversation as resolved.
key: playwright-${{ hashFiles('Directory.Packages.props') }}
- name: Install Playwright Browsers
if: matrix.os == 'ubuntu-24.04'
run: |
pwsh test/OrchardCore.Tests.Functional/bin/Release/net10.0/playwright.ps1 install --with-deps chromium
- name: Functional Tests - CMS
if: matrix.os == 'ubuntu-24.04'
run: |
dotnet test --project test/OrchardCore.Tests.Functional/OrchardCore.Tests.Functional.csproj -c Release --no-build --filter-class "*Cms*"
- name: Functional Tests - MVC
if: matrix.os == 'ubuntu-24.04'
run: |
cd test/OrchardCore.Tests.Functional
npm install
npm run cms:test
npm run mvc:test
dotnet test --project test/OrchardCore.Tests.Functional/OrchardCore.Tests.Functional.csproj -c Release --no-build --filter-class "*Mvc*"
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
if: matrix.os == 'ubuntu-24.04' && failure()
with:
name: Functional Test failure
path: |
test/OrchardCore.Tests.Functional/cms-tests/cypress/screenshots
src/OrchardCore.Cms.Web/App_Data_Tests/logs
src/OrchardCore.Cms.Web/App_Data_Tests_*/logs
src/OrchardCore.Mvc.Web/App_Data_Tests/logs
test/OrchardCore.Tests.Functional/traces
retention-days: 3
32 changes: 21 additions & 11 deletions .github/workflows/pr_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ concurrency:
env:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
PLAYWRIGHT_TRACING: true
jobs:
Comment thread
Skrypt marked this conversation as resolved.
build_test:
runs-on: ${{ matrix.os }}
Expand All @@ -18,10 +19,6 @@ jobs:
name: Build & Test
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: "15"
package-manager-cache: false
- uses: ./.github/actions/setup-dotnet
- name: Build
# We disable NuGet audit warnings, see https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu1901-nu1904.
Expand All @@ -33,17 +30,30 @@ jobs:
- name: Unit Tests
run: |
dotnet test --project ./test/OrchardCore.Tests/OrchardCore.Tests.csproj -c Release --no-build
- name: Functional Tests
- name: Cache Playwright Browsers
if: matrix.os == 'ubuntu-24.04'
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: ~/.cache/ms-playwright
key: playwright-${{ hashFiles('Directory.Packages.props') }}
- name: Install Playwright Browsers
if: matrix.os == 'ubuntu-24.04'
run: |
pwsh test/OrchardCore.Tests.Functional/bin/Release/net10.0/playwright.ps1 install --with-deps chromium
- name: Functional Tests - CMS
if: matrix.os == 'ubuntu-24.04'
run: |
dotnet test --project test/OrchardCore.Tests.Functional/OrchardCore.Tests.Functional.csproj -c Release --no-build --filter-class "*Cms*"
- name: Functional Tests - MVC
if: matrix.os == 'ubuntu-24.04'
run: |
cd test/OrchardCore.Tests.Functional
npm install
npm run cms:test
npm run mvc:test
dotnet test --project test/OrchardCore.Tests.Functional/OrchardCore.Tests.Functional.csproj -c Release --no-build --filter-class "*Mvc*"
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
if: matrix.os == 'ubuntu-24.04' && failure()
with:
name: functional-test-failure
path: |
test/OrchardCore.Tests.Functional/cms-tests/cypress/screenshots
src/OrchardCore.Cms.Web/App_Data/logs
src/OrchardCore.Cms.Web/App_Data_Tests_*/logs
src/OrchardCore.Mvc.Web/App_Data_Tests/logs
test/OrchardCore.Tests.Functional/traces
retention-days: 3
Loading
Loading