Skip to content

Conversation

@maraf
Copy link
Member

@maraf maraf commented Oct 2, 2025

  • One of the goals of this PR is to use WasmSDK in most standard way and avoid too much deviation just for runtime repo
  • Hook WasmSDK pack into InTree build
  • Remove WasmAppBuilder and targets around it
  • Move AOT & EAT smoke tests from Helix to AzDo. We don't support "AOT on Helix" in WasmSDK because of the way how build is composed. The whole set of tests won't finish there, but we don't run it on runtime pipeline. It would require a significant amount of work. We have options if we need it later
  • Remove minimal-config sample as we have a proper way to generate bundler-friendly boot config
  • MSBuild tests changes have brief explanations why they are neded
  • Library tests don't follow the convention that StaticWebAssetsSDK expects. We have LinkContentToWwwroot task to manipulate incoming @(Content) and $(PublishDir) files to the shape that can be consumed by SWA and accessible at some URL (in the wwwroot)
  • Remove unused WasmInvariantGlobalization
  • Fix paths for WasmRunWasmOpt

Fixes #103025

TODO
  • Copy to library test output
    • test-main.js
    • index.html
    • WasmTestRunner.dll as mainAssembly
    • WasmSymbolicator.dll
    • wasm-symbol-patterns.txt
  • Pack.Tasks for TrimmingTests
  • Exclude XHarness plugins (WasmSymbolicator.dll) from AOT compilation
    • The reason why it's failing here is that <Content Link="..." copy the assembly to the publish output early enough, so that it gets picked up to WasmAssembliesToBundle and so the AOT compiler gets it
  • NetCoreServer and RemoteLoopServer GetCurrentProjectBuildStaticWebAssetItems
  • Support WasmFilesToIncludeInFileSystem - We needed coreVfs for runtimeConfig, but we have that solved now by embedding it into the boot manifest. I think we can drop coreVfs. The challenge is that VFS items has targetPath as well, so SWA standard properties aren't enough
  • Support IncludeSatelliteAssembliesInVFS (it's not used anywhere anymore)
    • Implement it only in tests.targets
  • browser-wasm linux Release LibraryTests_EAT (aka AOTonHelix)
    • Use Wasm.Build.Tests infrastructure
    • tests.proj
      • RunSmokeTestsOnly=true
      • RunHighAOTResourceRequiringTestsOnly=true
    • ProxyProjectForAOTOnHelix.proj is using WasmApp.LocalBuild.props/targets
    • Update default target. For AOT it does AOT compilation, but it doesn't invoke "Build". The .NET build runs on AzDO, WasmBuild runs on Helix
      • Run PrepareForRun (DependsOn) for SWA
      • Run ComputeAndCopyFilesToPublishDirectory for SWA
    • WasmAppDir
    • Support AOT in build
  • <OutputType Condition="'$(OutputType)' == ''">exe</OutputType> in Microsoft.NET.Sdk.WebAssembly.Browser.props is too relaxed as at the point the default value of library is already supplied by general SDK props
  • Library tests are doing native relink
  • FunctionalTests
    • StartupHookForFunctionalTest.csproj
  • Wasm.Advanced.Sample.csproj has WasmAssembliesToBundle item is empty
  • StartupHookForFunctionalTest conflicting SWA Microsoft.CSharp.wasm
  • If we unhook all WasmSDK targets from in nested publish, IncrementalClean will delete the files in bin folder
  • Library tests are not loading ICU correctly
    • InvariantGlobalization is empty, results in _WasmInvariantGlobalization=true
    • Follow WasmIncludeFullIcuData
  • Remove WasmAppBuilder and related targets
    • Remove WasmExtraFilesToDeploy from tests
    • <WasmEnvironmentVariable Include="DOTNET_DiagnosticPorts" Value="$(DiagnosticPorts)" Condition="'$(DiagnosticPorts)' != ''"/>
  • TrimmingTests
    • InvariantGlobalization
  • RuntimeTests
    • dotnet.js is just boot config, it doesn't contain the loader script

@maraf maraf added this to the 11.0.0 milestone Oct 2, 2025
@maraf maraf self-assigned this Oct 2, 2025
@maraf maraf added arch-wasm WebAssembly architecture area-Build-mono os-browser Browser variant of arch-wasm labels Oct 2, 2025
@maraf

This comment was marked as resolved.

@maraf
Copy link
Member Author

maraf commented Nov 29, 2025

/azp run runtime-wasm

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@maraf
Copy link
Member Author

maraf commented Nov 29, 2025

/azp run runtime-wasm

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@maraf
Copy link
Member Author

maraf commented Dec 4, 2025

/azp run runtime-wasm

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

Copy link
Member

@radekdoulik radekdoulik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice to see that simplified, thank you. Looking forward to coreclr changes on top of that.

LGTM, does any documentation need change too? Doesn't need to be done in this PR though.

@pavelsavara
Copy link
Member

/azp run runtime-wasm

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@pavelsavara
Copy link
Member

/azp run runtime-wasm

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@maraf
Copy link
Member Author

maraf commented Dec 4, 2025

Extended set of Smoke_AOT tests passed

@maraf
Copy link
Member Author

maraf commented Dec 5, 2025

does any documentation need change too?

I have change what I encounter on the road. I think we need to do some more house cleaning when we introduce a native build for CoreCLR.

@maraf
Copy link
Member Author

maraf commented Dec 5, 2025

/ba-g Wasm.Build.Tests and CoreCLR failures are not related

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

arch-wasm WebAssembly architecture area-Build-mono os-browser Browser variant of arch-wasm

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[browser] Migrate runtime tests to WebAssembly SDK

4 participants