diff --git a/eng/pipelines/common/evaluate-default-paths.yml b/eng/pipelines/common/evaluate-default-paths.yml index 35c95b86ef151..57f5746ce2e26 100644 --- a/eng/pipelines/common/evaluate-default-paths.yml +++ b/eng/pipelines/common/evaluate-default-paths.yml @@ -273,6 +273,10 @@ jobs: - src/mono/nuget/Microsoft.NETCore.BrowserDebugHost.Transport/* - ${{ parameters._const_paths._always_exclude }} + - subset: wasm_chrome + include: + - ${{ parameters._const_paths._wasm_chrome }} + # anything other than mono, or wasm specific paths - subset: non_mono_and_wasm exclude: diff --git a/eng/pipelines/common/templates/wasm-library-tests.yml b/eng/pipelines/common/templates/wasm-library-tests.yml index 4260e56ba2cb4..87fe49c793939 100644 --- a/eng/pipelines/common/templates/wasm-library-tests.yml +++ b/eng/pipelines/common/templates/wasm-library-tests.yml @@ -36,6 +36,7 @@ jobs: eq(variables['wasmDarcDependenciesChanged'], true), eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm_chrome.containsChange'], true), eq(dependencies.evaluate_paths.outputs['SetPathVars_wasm_specific_except_wbt_dbg.containsChange'], true)) ] - name: _wasmRunSmokeTestsOnlyArg @@ -45,12 +46,17 @@ jobs: value: /p:InstallChromeForTests=true ${{ else }}: value: '' + - name: v8InstallArg + ${{ if containsValue(parameters.scenarios, 'normal') }}: + value: /p:InstallV8ForTests=true + ${{ else }}: + value: '' jobParameters: isExtraPlatforms: ${{ parameters.isExtraPlatformsBuild }} testGroup: innerloop nameSuffix: LibraryTests${{ parameters.nameSuffix }} - buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:BrowserHost=$(_hostedOs) $(_wasmRunSmokeTestsOnlyArg) $(chromeInstallArg) ${{ parameters.extraBuildArgs }} + buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:BrowserHost=$(_hostedOs) $(_wasmRunSmokeTestsOnlyArg) $(chromeInstallArg) $(v8InstallArg) ${{ parameters.extraBuildArgs }} timeoutInMinutes: 240 # if !alwaysRun, then: # if this is runtime-wasm (isWasmOnlyBuild): diff --git a/eng/pipelines/common/templates/wasm-runtime-tests.yml b/eng/pipelines/common/templates/wasm-runtime-tests.yml index 2b006bb2db3cc..d8a4b76b54b59 100644 --- a/eng/pipelines/common/templates/wasm-runtime-tests.yml +++ b/eng/pipelines/common/templates/wasm-runtime-tests.yml @@ -36,7 +36,7 @@ jobs: isExtraPlatforms: ${{ parameters.isExtraPlatformsBuild }} nameSuffix: AllSubsets_Mono_RuntimeTests runtimeVariant: monointerpreter - buildArgs: -s mono+libs -c $(_BuildConfig) ${{ parameters.extraBuildArgs }} + buildArgs: -s mono+libs -c $(_BuildConfig) /p:InstallV8ForTests=false ${{ parameters.extraBuildArgs }} timeoutInMinutes: 180 condition: >- or( @@ -47,5 +47,6 @@ jobs: parameters: creator: dotnet-bot testRunNamePrefixSuffix: Mono_$(_BuildConfig) + testBuildArgs: /p:InstallV8ForTests=false extraVariablesTemplates: - template: /eng/pipelines/common/templates/runtimes/test-variables.yml diff --git a/eng/testing/WasmRunnerAOTTemplate.sh b/eng/testing/WasmRunnerAOTTemplate.sh index 856fb7ebbea1b..24b23c501f211 100644 --- a/eng/testing/WasmRunnerAOTTemplate.sh +++ b/eng/testing/WasmRunnerAOTTemplate.sh @@ -34,14 +34,6 @@ if [[ -z "$XHARNESS_COMMAND" ]]; then fi if [[ "$XHARNESS_COMMAND" == "test" ]]; then - if [[ -z "$JS_ENGINE" ]]; then - if [[ "$SCENARIO" == "WasmTestOnNodeJS" || "$SCENARIO" == "wasmtestonnodejs" ]]; then - JS_ENGINE="--engine=NodeJS" - else - JS_ENGINE="--engine=V8" - fi - fi - if [[ -z "$JS_ENGINE_ARGS" ]]; then JS_ENGINE_ARGS="--engine-arg=--stack-trace-limit=1000" if [[ "$SCENARIO" != "WasmTestOnNodeJS" && "$SCENARIO" != "wasmtestonnodejs" ]]; then @@ -55,6 +47,17 @@ if [[ "$XHARNESS_COMMAND" == "test" ]]; then if [[ -z "$MAIN_JS" ]]; then MAIN_JS="--js-file=test-main.js" fi + + if [[ -z "$JS_ENGINE" ]]; then + if [[ "$SCENARIO" == "WasmTestOnNodeJS" || "$SCENARIO" == "wasmtestonnodejs" ]]; then + JS_ENGINE="--engine=NodeJS" + else + JS_ENGINE="--engine=V8" + if [[ -n "$V8_PATH_FOR_TESTS" ]]; then + JS_ENGINE_ARGS="$JS_ENGINE_ARGS --js-engine-path=$V8_PATH_FOR_TESTS" + fi + fi + fi fi if [[ -z "$XHARNESS_ARGS" ]]; then @@ -123,4 +126,4 @@ echo ----- end $(date) ----- exit code $_exitCode ------------------------------ echo "XHarness artifacts: $XHARNESS_OUT" -exit $_exitCode \ No newline at end of file +exit $_exitCode diff --git a/eng/testing/WasmRunnerTemplate.sh b/eng/testing/WasmRunnerTemplate.sh index 8b4e9adb10c2e..71347666cde80 100644 --- a/eng/testing/WasmRunnerTemplate.sh +++ b/eng/testing/WasmRunnerTemplate.sh @@ -34,14 +34,6 @@ if [[ -z "$XHARNESS_COMMAND" ]]; then fi if [[ "$XHARNESS_COMMAND" == "test" ]]; then - if [[ -z "$JS_ENGINE" ]]; then - if [[ "$SCENARIO" == "WasmTestOnNodeJS" || "$SCENARIO" == "wasmtestonnodejs" ]]; then - JS_ENGINE="--engine=NodeJS" - else - JS_ENGINE="--engine=V8" - fi - fi - if [[ -z "$MAIN_JS" ]]; then MAIN_JS="--js-file=test-main.js" fi @@ -55,6 +47,17 @@ if [[ "$XHARNESS_COMMAND" == "test" ]]; then JS_ENGINE_ARGS="$JS_ENGINE_ARGS --engine-arg=--experimental-wasm-eh" fi fi + + if [[ -z "$JS_ENGINE" ]]; then + if [[ "$SCENARIO" == "WasmTestOnNodeJS" || "$SCENARIO" == "wasmtestonnodejs" ]]; then + JS_ENGINE="--engine=NodeJS" + else + JS_ENGINE="--engine=V8" + if [[ -n "$V8_PATH_FOR_TESTS" ]]; then + JS_ENGINE_ARGS="$JS_ENGINE_ARGS --js-engine-path=$V8_PATH_FOR_TESTS" + fi + fi + fi fi if [[ -z "$XHARNESS_ARGS" ]]; then diff --git a/eng/testing/tests.browser.targets b/eng/testing/tests.browser.targets index 4f10b931f7975..b4c2dbefc0973 100644 --- a/eng/testing/tests.browser.targets +++ b/eng/testing/tests.browser.targets @@ -24,9 +24,13 @@ false _GetWorkloadsToInstall;$(GetWorkloadInputsDependsOn) + true + true _GetRuntimePackNuGetsToBuild;_GetNugetsForAOT;$(GetNuGetsToBuildForWorkloadTestingDependsOn) <_BundleAOTTestWasmAppForHelixDependsOn>$(_BundleAOTTestWasmAppForHelixDependsOn);PrepareForWasmBuildApp;_PrepareForAOTOnHelix @@ -59,11 +63,14 @@ + Condition="'$(ContinuousIntegrationBuild)' != 'true' or '$(IsBrowserWasmProject)' != 'true'" /> <_WasmBrowserPathForTests Condition="'$(BROWSER_PATH_FOR_TESTS)' != ''">$(BROWSER_PATH_FOR_TESTS) <_WasmBrowserPathForTests Condition="'$(_WasmBrowserPathForTests)' == '' and '$(InstallChromeForTests)' == 'true'">$(ChromeBinaryPath) + + <_WasmJSEnginePathForTests Condition="'$(V8_PATH_FOR_TESTS)' != ''">$(V8_PATH_FOR_TESTS) + <_WasmJSEnginePathForTests Condition="'$(_WasmJSEnginePathForTests)' == '' and '$(InstallV8ForTests)' == 'true'">$(V8BinaryPath) diff --git a/eng/testing/wasm-provisioning.targets b/eng/testing/wasm-provisioning.targets index d1c9bda6653fe..4852fd5ecc2ec 100644 --- a/eng/testing/wasm-provisioning.targets +++ b/eng/testing/wasm-provisioning.targets @@ -11,10 +11,13 @@ false + false $(ArtifactsBinDir)firefox\ $([MSBuild]::NormalizePath($(FirefoxDir), '.install-firefox-$(FirefoxRevision).stamp')) <_BrowserStampDir>$(ArtifactsBinDir)\ + + Build @@ -38,6 +41,11 @@ $(linux_ChromeBaseSnapshotUrl)/chrome-linux.zip $(linux_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip + + $(linux_V8Version) + v8-$(linux_V8Version) + $(V8DirName).sh + <_V8PlatformId>linux64 @@ -53,6 +61,11 @@ $(win_ChromeBaseSnapshotUrl)/chrome-win.zip $(win_ChromeBaseSnapshotUrl)/chromedriver_win32.zip + + $(win_V8Version) + v8-$(win_V8Version) + $(V8DirName).cmd + <_V8PlatformId>win32 @@ -65,6 +78,12 @@ $([MSBuild]::NormalizePath($(ChromeDriverDir), $(ChromeDriverDirName), $(ChromeDriverBinaryName))) + + $(ArtifactsBinDir)$(V8DirName)\ + $([MSBuild]::NormalizePath('$(V8Dir)', '.install-$(V8Version).stamp')) + $([MSBuild]::NormalizePath($(V8Dir), $(V8BinaryName))) + + 108.0.1 https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2 @@ -72,9 +91,11 @@ + @@ -87,6 +108,7 @@ + @@ -97,9 +119,11 @@ + @@ -121,8 +145,41 @@ + + + + + + + + <_V8SnapshotUrl>https://storage.googleapis.com/chromium-v8/official/canary/v8-$(_V8PlatformId)-rel-$(V8Version).zip + + <_V8Script Condition="$([MSBuild]::IsOSPlatform('linux'))">#!/usr/bin/env bash +export __SCRIPT_DIR=%24( cd -- "%24( dirname -- "%24{BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +"$__SCRIPT_DIR/d8" --snapshot_blob="$__SCRIPT_DIR/snapshot_blob.bin" "$@" + + <_V8Script Condition="$([MSBuild]::IsOSPlatform('windows'))">@echo off +"%~dp0\d8.exe --snapshot_blob="%~dp0\snapshot_blob.bin" %* + + + + + + + + + + + + + + + <_StampFile Include="$(_BrowserStampDir).install-firefox*.stamp" /> diff --git a/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.cs b/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.cs index 431bc77820d0b..5baf88cd19b0d 100644 --- a/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.cs +++ b/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.cs @@ -428,6 +428,7 @@ private static bool GetIsInContainer() return Registry.GetValue(key, "ContainerType", defaultValue: null) != null; } + // '/.dockerenv' - is to check if this is running in a codespace return (IsLinux && File.Exists("/.dockerenv")); } diff --git a/src/libraries/sendtohelix-wasm.targets b/src/libraries/sendtohelix-wasm.targets index 89326207f9401..636177ae9d87a 100644 --- a/src/libraries/sendtohelix-wasm.targets +++ b/src/libraries/sendtohelix-wasm.targets @@ -59,6 +59,7 @@ true false true + true true true @@ -101,6 +102,8 @@ + + @@ -114,6 +117,8 @@ + + @@ -187,6 +192,8 @@ Text="Could not find chrome at $(ChromeDir)" /> + @@ -197,6 +204,10 @@ + + + + diff --git a/src/mono/wasm/Makefile b/src/mono/wasm/Makefile index 5d6f4e5308587..1355fcaa1a477 100644 --- a/src/mono/wasm/Makefile +++ b/src/mono/wasm/Makefile @@ -111,7 +111,7 @@ run-browser-tests-%: PATH="$(GECKODRIVER):$(CHROMEDRIVER):$(PATH)" XHARNESS_COMMAND="test-browser --browser=$(XHARNESS_BROWSER)" $(DOTNET) build $(TOP)/src/libraries/$*/tests/ /t:Test $(_MSBUILD_WASM_BUILD_ARGS) $(MSBUILD_ARGS) build-runtime-tests: - $(TOP)/src/tests/build.sh -mono os browser wasm $(CONFIG) + $(TOP)/src/tests/build.sh -mono os browser wasm $(CONFIG) $(MSBUILD_ARGS) build-debugger-tests-helix: $(DOTNET) build -restore -bl:$(LOG_PATH)/Wasm.Debugger.Tests.binlog \ diff --git a/src/mono/wasm/README.md b/src/mono/wasm/README.md index cdace086f5603..79b2671bf3fc7 100644 --- a/src/mono/wasm/README.md +++ b/src/mono/wasm/README.md @@ -323,7 +323,6 @@ npm update --lockfile-version=1 | Wasm.Build.Tests | linux+windows | none | linux+windows | | Debugger tests | linux+windows | none | linux+windows | | Runtime tests | linux | none | linux | -| Perftrace | linux: all tests | linux: all tests | none | | Multi-thread | linux: all tests | linux: all tests | none | * `runtime-extra-platforms` does not run any wasm jobs on PRs @@ -346,14 +345,28 @@ npm update --lockfile-version=1 | Wasm.Build.Tests | linux+windows | none | | Debugger tests | linux+windows | none | | Runtime tests | linux | none | -| Perftrace | linux: build only | none | | Multi-thread | linux: build only | none | * `high resource aot` runs a few specific library tests with AOT, that require more memory to AOT. +## Test setup on CI + +Tests are run with V8, Chrome, node, and wasmtime for the various jobs. + +- V8: the version used is from `eng/testing/ChromeVersions.props`. This is used for all the library tests, and WBT, but *not* runtime tests. +- Chrome: Same as V8. +- Node: fixed version from emsdk +- wasmtime - fixed version in `src/mono/wasi/wasi-sdk-version.txt`. + +### `eng/testing/ChromeVersions.props` + +This file is updated once a week by a github action `.github/workflows/bump-chrome-version.yml`, and the version is obtained by `src/tasks/WasmBuildTasks/GetChromeVersions.cs` task. + # Perf pipeline +- V8 version used to run the microbenchmarks is from `eng/testing/ChromeVersions.props` + TBD ## Updates needed diff --git a/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs b/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs index f5d480316ea60..a4d0470ef17e2 100644 --- a/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs +++ b/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs @@ -262,16 +262,10 @@ protected static string RunWithXHarness(string testCommand, string testLogPath, args.Append($" --expected-exit-code={expectedAppExitCode}"); args.Append($" {extraXHarnessArgs ?? string.Empty}"); + // `/.dockerenv` - is to check if this is running in a codespace if (File.Exists("/.dockerenv")) args.Append(" --browser-arg=--no-sandbox"); - if (!string.IsNullOrEmpty(EnvironmentVariables.BrowserPathForTests)) - { - if (!File.Exists(EnvironmentVariables.BrowserPathForTests)) - throw new Exception($"Cannot find BROWSER_PATH_FOR_TESTS={EnvironmentVariables.BrowserPathForTests}"); - args.Append($" --browser-path=\"{EnvironmentVariables.BrowserPathForTests}\""); - } - args.Append(" -- "); if (extraXHarnessMonoArgs != null) { diff --git a/src/mono/wasm/Wasm.Build.Tests/Common/EnvironmentVariables.cs b/src/mono/wasm/Wasm.Build.Tests/Common/EnvironmentVariables.cs index 80a1c67f9249e..841aa6a9b3456 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Common/EnvironmentVariables.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Common/EnvironmentVariables.cs @@ -17,6 +17,7 @@ internal static class EnvironmentVariables internal static readonly string? XHarnessCliPath = Environment.GetEnvironmentVariable("XHARNESS_CLI_PATH"); internal static readonly string? BuiltNuGetsPath = Environment.GetEnvironmentVariable("BUILT_NUGETS_PATH"); internal static readonly string? BrowserPathForTests = Environment.GetEnvironmentVariable("BROWSER_PATH_FOR_TESTS"); + internal static readonly string? V8PathForTests = Environment.GetEnvironmentVariable("V8_PATH_FOR_TESTS"); internal static readonly bool ShowBuildOutput = Environment.GetEnvironmentVariable("SHOW_BUILD_OUTPUT") is not null; internal static readonly bool UseWebcil = Environment.GetEnvironmentVariable("USE_WEBCIL_FOR_TESTS") is "true"; internal static readonly string? SdkDirName = Environment.GetEnvironmentVariable("SDK_DIR_NAME"); diff --git a/src/mono/wasm/Wasm.Build.Tests/HostRunner/BrowserHostRunner.cs b/src/mono/wasm/Wasm.Build.Tests/HostRunner/BrowserHostRunner.cs index 288048616f6d7..f9a215652c584 100644 --- a/src/mono/wasm/Wasm.Build.Tests/HostRunner/BrowserHostRunner.cs +++ b/src/mono/wasm/Wasm.Build.Tests/HostRunner/BrowserHostRunner.cs @@ -5,11 +5,37 @@ namespace Wasm.Build.Tests; +using System; +using System.IO; + public class BrowserHostRunner : IHostRunner { + private static string? s_binaryPathArg; + private static string BinaryPathArg + { + get + { + if (s_binaryPathArg is null) + { + if (!string.IsNullOrEmpty(EnvironmentVariables.BrowserPathForTests)) + { + if (!File.Exists(EnvironmentVariables.BrowserPathForTests)) + throw new Exception($"Cannot find BROWSER_PATH_FOR_TESTS={EnvironmentVariables.BrowserPathForTests}"); + s_binaryPathArg = $" --browser-path=\"{EnvironmentVariables.BrowserPathForTests}\""; + } + else + { + s_binaryPathArg = ""; + } + } + return s_binaryPathArg; + } + } + + public string GetTestCommand() => "wasm test-browser"; - public string GetXharnessArgsWindowsOS(XHarnessArgsOptions options) => $"-v trace -b {options.host} --browser-arg=--lang={options.environmentLocale} --web-server-use-cop"; // Windows: chrome.exe --lang=locale - public string GetXharnessArgsOtherOS(XHarnessArgsOptions options) => $"-v trace -b {options.host} --locale={options.environmentLocale} --web-server-use-cop"; // Linux: LANGUAGE=locale ./chrome + public string GetXharnessArgsWindowsOS(XHarnessArgsOptions options) => $"-v trace -b {options.host} --browser-arg=--lang={options.environmentLocale} --web-server-use-cop {BinaryPathArg}"; // Windows: chrome.exe --lang=locale + public string GetXharnessArgsOtherOS(XHarnessArgsOptions options) => $"-v trace -b {options.host} --locale={options.environmentLocale} --web-server-use-cop {BinaryPathArg}"; // Linux: LANGUAGE=locale ./chrome public bool UseWasmConsoleOutput() => false; public bool CanRunWBT() => true; } diff --git a/src/mono/wasm/Wasm.Build.Tests/HostRunner/V8HostRunner.cs b/src/mono/wasm/Wasm.Build.Tests/HostRunner/V8HostRunner.cs index 8a797ef570576..95349d7209003 100644 --- a/src/mono/wasm/Wasm.Build.Tests/HostRunner/V8HostRunner.cs +++ b/src/mono/wasm/Wasm.Build.Tests/HostRunner/V8HostRunner.cs @@ -5,11 +5,35 @@ namespace Wasm.Build.Tests; +using System; +using System.IO; using System.Runtime.InteropServices; public class V8HostRunner : IHostRunner { - private string GetXharnessArgs(string jsRelativePath) => $"--js-file={jsRelativePath} --engine=V8 -v trace --engine-arg=--experimental-wasm-simd --engine-arg=--module"; + private static string? s_binaryPathArg; + private static string BinaryPathArg + { + get + { + if (s_binaryPathArg is null) + { + if (!string.IsNullOrEmpty(EnvironmentVariables.V8PathForTests)) + { + if (!File.Exists(EnvironmentVariables.V8PathForTests)) + throw new Exception($"Cannot find V8_PATH_FOR_TESTS={EnvironmentVariables.V8PathForTests}"); + s_binaryPathArg += $" --js-engine-path=\"{EnvironmentVariables.V8PathForTests}\""; + } + else + { + s_binaryPathArg = ""; + } + } + return s_binaryPathArg; + } + } + + private string GetXharnessArgs(string jsRelativePath) => $"--js-file={jsRelativePath} --engine=V8 -v trace --engine-arg=--experimental-wasm-simd --engine-arg=--module {BinaryPathArg}"; public string GetTestCommand() => "wasm test"; public string GetXharnessArgsWindowsOS(XHarnessArgsOptions options) => GetXharnessArgs(options.jsRelativePath); diff --git a/src/mono/wasm/Wasm.Build.Tests/Wasm.Build.Tests.csproj b/src/mono/wasm/Wasm.Build.Tests/Wasm.Build.Tests.csproj index d5059f1d5f432..fb3359df0b929 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Wasm.Build.Tests.csproj +++ b/src/mono/wasm/Wasm.Build.Tests/Wasm.Build.Tests.csproj @@ -15,7 +15,9 @@ false true + true + true false @@ -94,6 +96,9 @@ + + + diff --git a/src/mono/wasm/build/WasmApp.targets b/src/mono/wasm/build/WasmApp.targets index 14131231fda4a..57763bab47ab6 100644 --- a/src/mono/wasm/build/WasmApp.targets +++ b/src/mono/wasm/build/WasmApp.targets @@ -475,7 +475,7 @@ - + ExtractConnUrl (string str, ILogger logger) private static string GetInitParms(int port, string lang="en-US") { string str = $"--headless --disable-gpu --lang={lang} --incognito --remote-debugging-port={port}"; + // `/.dockerenv` - is to check if this is running in a codespace if (File.Exists("/.dockerenv")) { Console.WriteLine ("Detected a container, disabling sandboxing for debugger tests."); diff --git a/src/mono/wasm/debugger/DebuggerTestSuite/DebuggerTestSuite.csproj b/src/mono/wasm/debugger/DebuggerTestSuite/DebuggerTestSuite.csproj index a23373483041b..2f1bbba894b2e 100644 --- a/src/mono/wasm/debugger/DebuggerTestSuite/DebuggerTestSuite.csproj +++ b/src/mono/wasm/debugger/DebuggerTestSuite/DebuggerTestSuite.csproj @@ -8,6 +8,7 @@ $(DefineConstants);RUN_IN_CHROME $(DefineConstants);RELEASE_RUNTIME windows + <_ProvisionBrowser Condition="'$(ContinuousIntegrationBuild)' == 'true' or Exists('/.dockerenv')">true true true diff --git a/src/tests/Directory.Build.props b/src/tests/Directory.Build.props index 9dbee315a5910..fbd2172408146 100644 --- a/src/tests/Directory.Build.props +++ b/src/tests/Directory.Build.props @@ -4,6 +4,7 @@ Release true + false