Skip to content

Add E2E test to bit Boilerplate (#13064) - #13065

Closed
yasmoradi wants to merge 2 commits into
developfrom
e2e
Closed

yasmoradi wants to merge 2 commits into
developfrom
e2e

Conversation

@yasmoradi

@yasmoradi yasmoradi commented Aug 30, 2026

Copy link
Copy Markdown
Member

closes #13064

Summary by CodeRabbit

  • New Features

    • Added cross-platform end-to-end smoke testing for web, Android, and Windows applications.
    • Added first-visit download-size checks to detect web performance regressions.
    • Added support for running browser tests through a remote Playwright server.
    • Boilerplate projects now include configurable E2E test setup and platform-specific test execution scripts.
  • Chores

    • Simplified deployment pipelines by retaining Android and iOS/macOS builds while removing unused web and Windows build jobs.
    • Updated MAUI build settings for improved runtime behavior.

@coderabbitai

coderabbitai Bot commented Aug 30, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 3b9ee315-0107-4ea3-9977-4295a8e79033

📥 Commits

Reviewing files that changed from the base of the PR and between eb0b817 and e62bc5e.

📒 Files selected for processing (26)
  • .github/workflows/admin-sample.cd.yml
  • .github/workflows/blazorui.demo.cd.yml
  • .github/workflows/todo-sample.cd.yml
  • src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Maui/Bit.BlazorUI.Demo.Client.Maui.csproj
  • src/Templates/Boilerplate/Bit.Boilerplate/.template.config/template.json
  • src/Templates/Boilerplate/Bit.Boilerplate/Boilerplate.Web.slnf
  • src/Templates/Boilerplate/Bit.Boilerplate/Boilerplate.slnx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Boilerplate.Client.Maui.csproj
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Internal/Boilerplate.Tests.E2E/.runsettings
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Internal/Boilerplate.Tests.E2E/Boilerplate.Tests.E2E.csproj
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Internal/Boilerplate.Tests.E2E/Features/Android/AndroidSmokeTests.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Internal/Boilerplate.Tests.E2E/Features/Core/SmokeTestsBase.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Internal/Boilerplate.Tests.E2E/Features/Web/WebAppDownloadSizeTests.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Internal/Boilerplate.Tests.E2E/Features/Web/WebSmokeTests.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Internal/Boilerplate.Tests.E2E/Features/Windows/WindowsSmokeTests.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Internal/Boilerplate.Tests.E2E/Infrastructure/App.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Internal/Boilerplate.Tests.E2E/Infrastructure/AppOpeners.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Internal/Boilerplate.Tests.E2E/Infrastructure/AppsTestBase.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Internal/Boilerplate.Tests.E2E/Infrastructure/DeployedApps.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Internal/Boilerplate.Tests.E2E/Infrastructure/HybridAppConnector.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Internal/Boilerplate.Tests.E2E/Infrastructure/TestCategories.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Internal/Boilerplate.Tests.E2E/Infrastructure/TestConfiguration.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Internal/Boilerplate.Tests.E2E/MSTestSettings.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Internal/Boilerplate.Tests.E2E/RunTests.bat
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Tests/.runsettings
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Tests/Infrastructure/AppPageTest.cs

Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting


Walkthrough

The PR adds conditional boilerplate E2E testing for web, Windows, and Android apps. It adds Playwright launch infrastructure, smoke and download-size tests, and test runners. It also disables Mono for MAUI clients and removes selected sample workflow build jobs.

Changes

Boilerplate E2E coverage

Layer / File(s) Summary
Template integration and project setup
.template.config/template.json, Boilerplate.Web.slnf, Boilerplate.slnx, src/Internal/...
The E2E project is conditionally included in template solutions and excluded from generated output. The project adds MSTest and Playwright configuration.
App identities and test configuration
Infrastructure/App.cs, Infrastructure/DeployedApps.cs, Infrastructure/TestCategories.cs, Infrastructure/TestConfiguration.cs
The tests define app identities, deployed endpoints, platform categories, and configuration loading from user secrets and environment variables.
App opening and lifecycle management
Infrastructure/AppOpeners.cs, Infrastructure/AppsTestBase.cs, Infrastructure/HybridAppConnector.cs
The infrastructure opens web, Windows, and Android apps, connects to hybrid WebViews over CDP, and disposes sessions after each test.
Smoke and download-size validation
Features/*
Platform smoke tests verify app interactivity. Web tests measure first-visit download sizes against configured tolerances.
Test execution and remote browser support
MSTestSettings.cs, RunTests.bat, .runsettings, AppPageTest.cs
The suite adds platform-specific test commands, method-level parallelism, and optional remote Playwright connections.

MAUI runtime configuration

Layer / File(s) Summary
MAUI runtime settings
src/BlazorUI/.../Bit.BlazorUI.Demo.Client.Maui.csproj, src/Templates/.../Boilerplate.Client.Maui.csproj
Both MAUI projects set UseMonoRuntime to false. The boilerplate project also receives a UTF-8 byte-order mark.

Sample workflow pruning

Layer / File(s) Summary
Removed sample deployment jobs
.github/workflows/*sample*.cd.yml, .github/workflows/blazorui.demo.cd.yml
The workflows remove web, standalone WebAssembly, and Windows hybrid build jobs. Android and iOS/macOS hybrid jobs remain.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant TestRunner
  participant AppOpener
  participant HybridAppConnector
  participant Playwright
  participant App
  TestRunner->>AppOpener: TryOpen(App)
  AppOpener->>HybridAppConnector: LaunchWindowsApp or LaunchAndroidApp
  HybridAppConnector->>App: Start app and expose WebView CDP
  HybridAppConnector->>Playwright: ConnectWithRetry(CDP endpoint)
  Playwright-->>TestRunner: Return app page
  TestRunner->>App: Verify main container and app menu
Loading

Poem

A rabbit hops where test pages gleam
New browsers chase each platform dream
Android, Windows, web align
MAUI sheds its Mono line
Old build jobs fade from view
E2E checks now run true

✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch e2e

Warning

Some tools did not complete. Review the errors below.

🔧 Biome (2.5.7)
src/Templates/Boilerplate/Bit.Boilerplate/.template.config/template.json

File contains syntax errors that prevent linting: Line 26: Expected a property but instead found '//Guid generator for App Id'.; Line 27: End of file expected; Line 27: End of file expected; Line 32: expected , but instead found //Guid format; Line 27: End of file expected; Line 34: End of file expected; Line 35: End of file expected; Line 35: End of file expected; Line 35: End of file expected; Line 42: End of file expected; Line 43: End of file expected; Line 43: End of file expected; Line 43: End of file expected; Line 71: End of file expected; Line 72: End of file expected; Line 72: End of file expected; Line 72: End of file expected; Line 96: End of file expected; Line 97: End of file expected; Line 97: End of file expected; Line 97: End of file expected; Line 112: End of file expected; Line 113: End of file expected; Line 113: End of file expected; Line 113: End of file expected; Line 132: End of file expected; Line 133: End of file expected; Line 133: End of file expected; L

... [truncated 9731 characters] ...

ine 898: End of file expected; Line 899: End of file expected; Line 919: End of file expected; Line 920: End of file expected; Line 925: End of file expected; Line 926: End of file expected; Line 932: End of file expected; Line 933: End of file expected; Line 940: End of file expected; Line 941: End of file expected; Line 948: End of file expected; Line 949: End of file expected; Line 954: End of file expected; Line 955: End of file expected; Line 960: End of file expected; Line 961: End of file expected; Line 967: End of file expected; Line 968: End of file expected; Line 973: End of file expected; Line 974: End of file expected; Line 992: End of file expected; Line 993: End of file expected; Line 1002: End of file expected; Line 1003: End of file expected; Line 1010: End of file expected


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@yasmoradi yasmoradi closed this Aug 30, 2026
@yasmoradi
yasmoradi deleted the e2e branch August 30, 2026 13:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bit Boilerplate E2E tests are missing

1 participant