Repository navigation
Enable NativeAOT WASI smoke test execution on Helix - #137001
Conversation
Reuse the WASI Helix queue and wasmtime correlation payload. Launch NativeAOT WASM executables through the shared WASI wrappers instead of the desktop NativeAOT launcher. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Azure Pipelines: Successfully started running 6 pipeline(s). 9 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
|
Tagging subscribers to this area: @agocke, @dotnet/ilc-contrib |
|
@copilot I'm seeing the following failures in the CI: |
Co-authored-by: MichalStrehovsky <13110571+MichalStrehovsky@users.noreply.github.com>
... Fixed in 3927866. Result import incorrectly applied NativeAOT’s extra Added four regression cases, verified failing before the fix and passing afterward on CoreCLR; all four also pass as compiled NativeAOT WASI. Built and ran the real WASI smoke tree locally: all 16 results now import, with 14 passing and two separate child-test failures remaining:
Those failures are not suppressed. These counts come from the XML; the merged runner still returns 100 despite test failures. Remote Helix execution of the fix has not been validated. |
|
@copilot revert the changes in TestConfigTester.cs and src/tests/README.md |
Co-authored-by: MichalStrehovsky <13110571+MichalStrehovsky@users.noreply.github.com>
|
Tagging subscribers to 'arch-wasm': @lewing, @pavelsavara |
There was a problem hiding this comment.
🟡 Changes recommended
The template call in eng/pipelines/runtime.yml passes the undeclared testRunNamePrefixSuffix parameter, causing Azure Pipelines to reject the call before the leg can build or submit tests.
1 open issue
What changed in this PR
This PR enables Helix execution for the existing checked NativeAOT WASI smoke-test leg, reusing the CoreCLR WASI infrastructure.
Changes:
- Connects the pipeline leg to NativeAOT test submission and WASI Helix queues.
- Runs NativeAOT
.wasmexecutables directly under wasmtime without acquiring a host .NET runtime. - Aligns precomputed result lookup with test-plan paths and skips stack-trace line-number checks on WebAssembly.
| File | Description |
|---|---|
src/tests/nativeaot/SmokeTests/UnitTests/StackTraces.cs |
Skips line-number checks on WebAssembly for a tracked issue. |
src/tests/Common/helixpublishwitharcade.proj |
Bypasses desktop NativeAOT launchers and host runtime acquisition for WASI. |
src/tests/Common/CoreCLRTestLibrary/OutOfProcessTest.cs |
Uses test-plan paths when importing precomputed results. |
src/tests/Common/CLRTest.Execute.Bash.targets |
Launches NativeAOT WASI executables directly through wasmtime. |
eng/pipelines/runtime.yml |
Changes the checked NativeAOT WASI leg from build-only to Helix execution. |
Review effort: Balanced
|
Native AOT WASI-WASM now runs in the CI, logs from this run at https://helixr1107v0xdeko0k025g8.blob.core.windows.net/dotnet-runtime-refs-pull-137001-merge-c71c6e6d871247e093/nativeaot/1/console.632c6657.log?helixlogtype=result. @dotnet/ilc-contrib could someone have a look? |
|
/ba-g the mac legs have been stuck for 19 hours, I don't think they will finish. relevant leg was good and I also spot checked CoreCLR WASI manually |

Enable Helix execution for the existing checked NativeAOT WASI smoke-test leg instead of only building the tests.
Reuse the CoreCLR WASI Helix queue, wasmtime provisioning/correlation payload, and generated WASI wrappers. NativeAOT wrappers execute
native/<test>.wasmdirectly instead of passing a managed DLL to corerun. This retains shared environment forwarding, sandbox mappings, timeout handling, out-of-process orchestration, and result uploads. WASI NativeAOT submissions bypass the desktopnativeaottest.shlauncher and do not acquire a host .NET runtime. Document the execution path in the runtime-test README.Validation
git diff --check— passed..dotnet/dotnet msbuild src/tests/Common/helixpublishwitharcade.proj -p:TargetOS=wasi -p:TargetArchitecture=wasm -p:RuntimeFlavor=coreclr -p:Configuration=Checked -p:NativeAotTest=true -t:StageWasmtimeForHelixPayload— passed.Not validated: full NativeAOT WASI compilation and remote Helix execution.
./build.sh clr+libs -lc release -rc checkedfailed during NuGet restore with NU1900/NU1905 because the vulnerability-data endpoint was unreachable. Retrying with/p:NuGetAudit=falsealso failed during package restore/downloads. The executable used for focused execution checks was a C WASI component, not a managed NativeAOT smoke test.Note
This pull request was generated by GitHub Copilot.