[wasm] Stop testing with V8 and wasmconsole - #108711

Merged
ilonatommy merged 16 commits into
dotnet:mainfrom
ilonatommy:stop-testing-v8&console
Oct 16, 2024
Merged

[wasm] Stop testing with V8 and wasmconsole#108711
ilonatommy merged 16 commits into
dotnet:mainfrom
ilonatommy:stop-testing-v8&console

Conversation

@ilonatommy

@ilonatommyilonatommy commented Oct 9, 2024

Copy link
Copy Markdown
Member

Follow up for #108582 (comment).

  1. Do not test v8 scenario on CI. Changelog:
| lane | current scenarios | future scenarios | changed? |
|--------------------------------|-------------------------------------------------|------------------------------------|----------|
| LibraryTests Linux | WasmTestOnV8,WasmTestOnChrome,WasmTestOnFirefox | WasmTestOnChrome,WasmTestOnFirefox | Y |
| LibraryTests Windows | WasmTestOnChrome | WasmTestOnChrome | N |
| LibraryTests_Smoke_AOT Linux | WasmTestOnV8 | WasmTestOnChrome | Y |
| LibraryTests_Smoke_AOT Windows | WasmTestOnChrome | WasmTestOnChrome | N |
| LibraryTests_EAT Linux | WasmTestOnV8 | WasmTestOnChrome | Y |
| LibraryTests_Threading Linux | WasmTestOnChrome,WasmTestOnFirefox | WasmTestOnChrome,WasmTestOnFirefox | N |
| extra-platforms | WasmTestOnV8, WasmTestOnChrome | WasmTestOnChrome | Y |
| outer-loop | WasmTestOnV8 | WasmTestOnChrome | Y |
  1. Do not test wasmconsole in WasmBuildTests. Some tests were using console scenario but did not mean to target specifically console, so they had to stay but be changed to use browserwasm. This revealed a bunch of inconsistencies that required refactoring. I will try to list the biggest refactoring changes in the following points.
  2. We had WasmTemplateTestBase and WasmTemplateTestsBase that in fact could be consolidated in one class.
  3. Inheritance. We used to have, e.g.:
    NativeBuildTests <- WasmTemplateTestBase <- BlazorWasmTestBase <- WasmTemplateTestsBase <- BuildTestBase
    This was refactored to have blazor and browser apps in 2 logical "flows", e.g.:
    WorkloadRequiredTests <- BlazorWasmTestBase <- WasmTemplateTestsBase <- BuildTestBase
    NativeBuildTests <- WasmTemplateTestsBase <- BuildTestBase
  4. We used RunCommand and ToolCommand directly in the tests. Theye were exchanged for wrappers. For build/publish action we should use BuildTemplateProject and for running the browser app, RunBrowser. It is supposed to get merged with Blazor-based runners in a follow up PR, it will take too many changes to do it here.
  5. We've been doing !(buildArgs.AOT || buildArgs.Config == "Release") a lot, so it got closed in IsDotnetWasmFromRuntimePack.
  6. And a lot of building BuildProjectOptions, so we will have a "base" form of options (_basePublishProjectOptions , _baseBuildProjectOptions) that we can extend in the specific test but most frequently we use them in the default form.

The issues that were discovered when refactoring will be temporarily marked as "Issue" in the comment, then if not fixed, they will be logged as separate issues in the repo.

Follow-up PRs that will be published after this one is done:

  • Follow-up with transition to template-based tests. Instead of using [BuildAndRun( that creates a console app (with Microsoft.NET.Sdk), we should use templating mechanism. We still have ~40 tests that do not use templates.
  • Follow-up, just with refactoring. We should get rid of classes like AppTestBase, TestMainJsTestBase, TestMainJsProjectProvider and consolidate running methods from AppTestBase and WasmTemplateTestsBase, so tests derive from WasmTemplateTestsBase if they are browser apps and from BlazorWasmTestBase if they are blazor apps, nothing more. Clean up option records, BuildProjectOptions, BlazorRunOptions, BlazorBuildOptions etc.

@ilonatommyilonatommy added arch-wasm WebAssembly architecture area-Build-mono labels Oct 9, 2024
@ilonatommyilonatommy self-assigned this Oct 9, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

@ilonatommy
ilonatommy marked this pull request as draft October 9, 2024 13:52
@ilonatommy
ilonatommy marked this pull request as ready for review October 14, 2024 13:40
BuildTemplateProject(buildArgs, id: id, new BuildProjectOptions(
AssertAppBundle: false,
CreateProject: false,
HasV8Script: false,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

V8Script could be dropped too. I expect it would many more places than just WBT. Could be in next PR

AssertSymbolsFile: false // FIXME: not supported yet
));

public override string FindBinFrameworkDir(string config, bool forPublish, string framework, string? projectDir = null)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Why do we need to override it here? Blazor and Wasm SDK should behave the same

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

That's true, originally I didn't notice they are the same, it can be left in WasmSdkBasedProjectProvider only.
Note for the future: once we will align BlazorBuildOptions and AssertWasmSdkBundleOptions then maybe we will even use WASM SDK provider in Blazor and drop BlazorWasmProjectProvider.

Comment threadsrc/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs Outdated

public class DebugLevelTests : AppTestBase
{
public DebugLevelTests(ITestOutputHelper output, SharedBuildPerTestClassFixture buildContext)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think we should merge this one with Wasm.Build.Tests.DebugLevelTests and use "WasmBasicTestApp" for all of the tests.

  • Move it outside of Blazor namespace since it's not blazor specific

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

It was not done because it would require more refactoring. In the feedback commit I moved them to one file and made them use WasBasicTestApp but it broke the base class, now it's DebugLevelTests : AppTestBase. Will be cleaned up better in a follow-up

TargetFramework: BuildTestBase.DefaultTargetFramework,
UseCache: false,
IsBrowserProject: isBrowser,
IsBrowserProject: true,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think we can remove IsBrowserProject or similar if we have any

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Not yet. We have a significant bundle assert check that based on its value uses either the wasm sdk-like way assert or deprecated but still used by tests (to be removed in a follow up) mainJs-like assert. This would lead to too many other changes. Later

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Since everything is now Wasm SDK, I think we can remove this base class

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Am I right? 🤔

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Yes, it can be removed in the follow up that will be getting rid of TestMainJsProjectProvider that is still based on ProjectProviderBase and used in ~16 test files.

@ilonatommy
ilonatommy merged commit 0290065 into dotnet:mainOct 16, 2024
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Nov 16, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-mono

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ilonatommy@pavelsavara@maraf
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

[wasm] Stop testing with V8 and wasmconsole - #108711

Merged
ilonatommy merged 16 commits into
dotnet:mainfrom
ilonatommy:stop-testing-v8&console
Oct 16, 2024
Merged

[wasm] Stop testing with V8 and wasmconsole#108711
ilonatommy merged 16 commits into
dotnet:mainfrom
ilonatommy:stop-testing-v8&console

Conversation

@ilonatommy

@ilonatommyilonatommy commented Oct 9, 2024

Copy link
Copy Markdown
Member

Follow up for #108582 (comment).

  1. Do not test v8 scenario on CI. Changelog:
| lane | current scenarios | future scenarios | changed? |
|--------------------------------|-------------------------------------------------|------------------------------------|----------|
| LibraryTests Linux | WasmTestOnV8,WasmTestOnChrome,WasmTestOnFirefox | WasmTestOnChrome,WasmTestOnFirefox | Y |
| LibraryTests Windows | WasmTestOnChrome | WasmTestOnChrome | N |
| LibraryTests_Smoke_AOT Linux | WasmTestOnV8 | WasmTestOnChrome | Y |
| LibraryTests_Smoke_AOT Windows | WasmTestOnChrome | WasmTestOnChrome | N |
| LibraryTests_EAT Linux | WasmTestOnV8 | WasmTestOnChrome | Y |
| LibraryTests_Threading Linux | WasmTestOnChrome,WasmTestOnFirefox | WasmTestOnChrome,WasmTestOnFirefox | N |
| extra-platforms | WasmTestOnV8, WasmTestOnChrome | WasmTestOnChrome | Y |
| outer-loop | WasmTestOnV8 | WasmTestOnChrome | Y |
  1. Do not test wasmconsole in WasmBuildTests. Some tests were using console scenario but did not mean to target specifically console, so they had to stay but be changed to use browserwasm. This revealed a bunch of inconsistencies that required refactoring. I will try to list the biggest refactoring changes in the following points.
  2. We had WasmTemplateTestBase and WasmTemplateTestsBase that in fact could be consolidated in one class.
  3. Inheritance. We used to have, e.g.:
    NativeBuildTests <- WasmTemplateTestBase <- BlazorWasmTestBase <- WasmTemplateTestsBase <- BuildTestBase
    This was refactored to have blazor and browser apps in 2 logical "flows", e.g.:
    WorkloadRequiredTests <- BlazorWasmTestBase <- WasmTemplateTestsBase <- BuildTestBase
    NativeBuildTests <- WasmTemplateTestsBase <- BuildTestBase
  4. We used RunCommand and ToolCommand directly in the tests. Theye were exchanged for wrappers. For build/publish action we should use BuildTemplateProject and for running the browser app, RunBrowser. It is supposed to get merged with Blazor-based runners in a follow up PR, it will take too many changes to do it here.
  5. We've been doing !(buildArgs.AOT || buildArgs.Config == "Release") a lot, so it got closed in IsDotnetWasmFromRuntimePack.
  6. And a lot of building BuildProjectOptions, so we will have a "base" form of options (_basePublishProjectOptions , _baseBuildProjectOptions) that we can extend in the specific test but most frequently we use them in the default form.

The issues that were discovered when refactoring will be temporarily marked as "Issue" in the comment, then if not fixed, they will be logged as separate issues in the repo.

Follow-up PRs that will be published after this one is done:

  • Follow-up with transition to template-based tests. Instead of using [BuildAndRun( that creates a console app (with Microsoft.NET.Sdk), we should use templating mechanism. We still have ~40 tests that do not use templates.
  • Follow-up, just with refactoring. We should get rid of classes like AppTestBase, TestMainJsTestBase, TestMainJsProjectProvider and consolidate running methods from AppTestBase and WasmTemplateTestsBase, so tests derive from WasmTemplateTestsBase if they are browser apps and from BlazorWasmTestBase if they are blazor apps, nothing more. Clean up option records, BuildProjectOptions, BlazorRunOptions, BlazorBuildOptions etc.

@ilonatommyilonatommy added arch-wasm WebAssembly architecture area-Build-mono labels Oct 9, 2024
@ilonatommyilonatommy self-assigned this Oct 9, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

@ilonatommy
ilonatommy marked this pull request as draft October 9, 2024 13:52
@ilonatommy
ilonatommy marked this pull request as ready for review October 14, 2024 13:40
BuildTemplateProject(buildArgs, id: id, new BuildProjectOptions(
AssertAppBundle: false,
CreateProject: false,
HasV8Script: false,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

V8Script could be dropped too. I expect it would many more places than just WBT. Could be in next PR

AssertSymbolsFile: false // FIXME: not supported yet
));

public override string FindBinFrameworkDir(string config, bool forPublish, string framework, string? projectDir = null)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Why do we need to override it here? Blazor and Wasm SDK should behave the same

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

That's true, originally I didn't notice they are the same, it can be left in WasmSdkBasedProjectProvider only.
Note for the future: once we will align BlazorBuildOptions and AssertWasmSdkBundleOptions then maybe we will even use WASM SDK provider in Blazor and drop BlazorWasmProjectProvider.

Comment threadsrc/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs Outdated

public class DebugLevelTests : AppTestBase
{
public DebugLevelTests(ITestOutputHelper output, SharedBuildPerTestClassFixture buildContext)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think we should merge this one with Wasm.Build.Tests.DebugLevelTests and use "WasmBasicTestApp" for all of the tests.

  • Move it outside of Blazor namespace since it's not blazor specific

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

It was not done because it would require more refactoring. In the feedback commit I moved them to one file and made them use WasBasicTestApp but it broke the base class, now it's DebugLevelTests : AppTestBase. Will be cleaned up better in a follow-up

TargetFramework: BuildTestBase.DefaultTargetFramework,
UseCache: false,
IsBrowserProject: isBrowser,
IsBrowserProject: true,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think we can remove IsBrowserProject or similar if we have any

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Not yet. We have a significant bundle assert check that based on its value uses either the wasm sdk-like way assert or deprecated but still used by tests (to be removed in a follow up) mainJs-like assert. This would lead to too many other changes. Later

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Since everything is now Wasm SDK, I think we can remove this base class

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Am I right? 🤔

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Yes, it can be removed in the follow up that will be getting rid of TestMainJsProjectProvider that is still based on ProjectProviderBase and used in ~16 test files.

@ilonatommy
ilonatommy merged commit 0290065 into dotnet:mainOct 16, 2024
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Nov 16, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-mono

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ilonatommy@pavelsavara@maraf
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[wasm] Stop testing with V8 and wasmconsole - #108711

Merged
ilonatommy merged 16 commits into
dotnet:mainfrom
ilonatommy:stop-testing-v8&console
Oct 16, 2024
Merged

[wasm] Stop testing with V8 and wasmconsole#108711
ilonatommy merged 16 commits into
dotnet:mainfrom
ilonatommy:stop-testing-v8&console

Conversation

@ilonatommy

@ilonatommyilonatommy commented Oct 9, 2024

Copy link
Copy Markdown
Member

Follow up for #108582 (comment).

  1. Do not test v8 scenario on CI. Changelog:
| lane | current scenarios | future scenarios | changed? |
|--------------------------------|-------------------------------------------------|------------------------------------|----------|
| LibraryTests Linux | WasmTestOnV8,WasmTestOnChrome,WasmTestOnFirefox | WasmTestOnChrome,WasmTestOnFirefox | Y |
| LibraryTests Windows | WasmTestOnChrome | WasmTestOnChrome | N |
| LibraryTests_Smoke_AOT Linux | WasmTestOnV8 | WasmTestOnChrome | Y |
| LibraryTests_Smoke_AOT Windows | WasmTestOnChrome | WasmTestOnChrome | N |
| LibraryTests_EAT Linux | WasmTestOnV8 | WasmTestOnChrome | Y |
| LibraryTests_Threading Linux | WasmTestOnChrome,WasmTestOnFirefox | WasmTestOnChrome,WasmTestOnFirefox | N |
| extra-platforms | WasmTestOnV8, WasmTestOnChrome | WasmTestOnChrome | Y |
| outer-loop | WasmTestOnV8 | WasmTestOnChrome | Y |
  1. Do not test wasmconsole in WasmBuildTests. Some tests were using console scenario but did not mean to target specifically console, so they had to stay but be changed to use browserwasm. This revealed a bunch of inconsistencies that required refactoring. I will try to list the biggest refactoring changes in the following points.
  2. We had WasmTemplateTestBase and WasmTemplateTestsBase that in fact could be consolidated in one class.
  3. Inheritance. We used to have, e.g.:
    NativeBuildTests <- WasmTemplateTestBase <- BlazorWasmTestBase <- WasmTemplateTestsBase <- BuildTestBase
    This was refactored to have blazor and browser apps in 2 logical "flows", e.g.:
    WorkloadRequiredTests <- BlazorWasmTestBase <- WasmTemplateTestsBase <- BuildTestBase
    NativeBuildTests <- WasmTemplateTestsBase <- BuildTestBase
  4. We used RunCommand and ToolCommand directly in the tests. Theye were exchanged for wrappers. For build/publish action we should use BuildTemplateProject and for running the browser app, RunBrowser. It is supposed to get merged with Blazor-based runners in a follow up PR, it will take too many changes to do it here.
  5. We've been doing !(buildArgs.AOT || buildArgs.Config == "Release") a lot, so it got closed in IsDotnetWasmFromRuntimePack.
  6. And a lot of building BuildProjectOptions, so we will have a "base" form of options (_basePublishProjectOptions , _baseBuildProjectOptions) that we can extend in the specific test but most frequently we use them in the default form.

The issues that were discovered when refactoring will be temporarily marked as "Issue" in the comment, then if not fixed, they will be logged as separate issues in the repo.

Follow-up PRs that will be published after this one is done:

  • Follow-up with transition to template-based tests. Instead of using [BuildAndRun( that creates a console app (with Microsoft.NET.Sdk), we should use templating mechanism. We still have ~40 tests that do not use templates.
  • Follow-up, just with refactoring. We should get rid of classes like AppTestBase, TestMainJsTestBase, TestMainJsProjectProvider and consolidate running methods from AppTestBase and WasmTemplateTestsBase, so tests derive from WasmTemplateTestsBase if they are browser apps and from BlazorWasmTestBase if they are blazor apps, nothing more. Clean up option records, BuildProjectOptions, BlazorRunOptions, BlazorBuildOptions etc.

@ilonatommyilonatommy added arch-wasm WebAssembly architecture area-Build-mono labels Oct 9, 2024
@ilonatommyilonatommy self-assigned this Oct 9, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

@ilonatommy
ilonatommy marked this pull request as draft October 9, 2024 13:52
@ilonatommy
ilonatommy marked this pull request as ready for review October 14, 2024 13:40
BuildTemplateProject(buildArgs, id: id, new BuildProjectOptions(
AssertAppBundle: false,
CreateProject: false,
HasV8Script: false,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

V8Script could be dropped too. I expect it would many more places than just WBT. Could be in next PR

AssertSymbolsFile: false // FIXME: not supported yet
));

public override string FindBinFrameworkDir(string config, bool forPublish, string framework, string? projectDir = null)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Why do we need to override it here? Blazor and Wasm SDK should behave the same

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

That's true, originally I didn't notice they are the same, it can be left in WasmSdkBasedProjectProvider only.
Note for the future: once we will align BlazorBuildOptions and AssertWasmSdkBundleOptions then maybe we will even use WASM SDK provider in Blazor and drop BlazorWasmProjectProvider.

Comment threadsrc/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs Outdated

public class DebugLevelTests : AppTestBase
{
public DebugLevelTests(ITestOutputHelper output, SharedBuildPerTestClassFixture buildContext)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think we should merge this one with Wasm.Build.Tests.DebugLevelTests and use "WasmBasicTestApp" for all of the tests.

  • Move it outside of Blazor namespace since it's not blazor specific

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

It was not done because it would require more refactoring. In the feedback commit I moved them to one file and made them use WasBasicTestApp but it broke the base class, now it's DebugLevelTests : AppTestBase. Will be cleaned up better in a follow-up

TargetFramework: BuildTestBase.DefaultTargetFramework,
UseCache: false,
IsBrowserProject: isBrowser,
IsBrowserProject: true,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think we can remove IsBrowserProject or similar if we have any

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Not yet. We have a significant bundle assert check that based on its value uses either the wasm sdk-like way assert or deprecated but still used by tests (to be removed in a follow up) mainJs-like assert. This would lead to too many other changes. Later

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Since everything is now Wasm SDK, I think we can remove this base class

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Am I right? 🤔

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Yes, it can be removed in the follow up that will be getting rid of TestMainJsProjectProvider that is still based on ProjectProviderBase and used in ~16 test files.

@ilonatommy
ilonatommy merged commit 0290065 into dotnet:mainOct 16, 2024
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Nov 16, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-mono

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ilonatommy@pavelsavara@maraf
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[wasm] Stop testing with V8 and wasmconsole - #108711

Merged
ilonatommy merged 16 commits into
dotnet:mainfrom
ilonatommy:stop-testing-v8&console
Oct 16, 2024
Merged

[wasm] Stop testing with V8 and wasmconsole#108711
ilonatommy merged 16 commits into
dotnet:mainfrom
ilonatommy:stop-testing-v8&console

Conversation

@ilonatommy

@ilonatommyilonatommy commented Oct 9, 2024

Copy link
Copy Markdown
Member

Follow up for #108582 (comment).

  1. Do not test v8 scenario on CI. Changelog:
| lane | current scenarios | future scenarios | changed? |
|--------------------------------|-------------------------------------------------|------------------------------------|----------|
| LibraryTests Linux | WasmTestOnV8,WasmTestOnChrome,WasmTestOnFirefox | WasmTestOnChrome,WasmTestOnFirefox | Y |
| LibraryTests Windows | WasmTestOnChrome | WasmTestOnChrome | N |
| LibraryTests_Smoke_AOT Linux | WasmTestOnV8 | WasmTestOnChrome | Y |
| LibraryTests_Smoke_AOT Windows | WasmTestOnChrome | WasmTestOnChrome | N |
| LibraryTests_EAT Linux | WasmTestOnV8 | WasmTestOnChrome | Y |
| LibraryTests_Threading Linux | WasmTestOnChrome,WasmTestOnFirefox | WasmTestOnChrome,WasmTestOnFirefox | N |
| extra-platforms | WasmTestOnV8, WasmTestOnChrome | WasmTestOnChrome | Y |
| outer-loop | WasmTestOnV8 | WasmTestOnChrome | Y |
  1. Do not test wasmconsole in WasmBuildTests. Some tests were using console scenario but did not mean to target specifically console, so they had to stay but be changed to use browserwasm. This revealed a bunch of inconsistencies that required refactoring. I will try to list the biggest refactoring changes in the following points.
  2. We had WasmTemplateTestBase and WasmTemplateTestsBase that in fact could be consolidated in one class.
  3. Inheritance. We used to have, e.g.:
    NativeBuildTests <- WasmTemplateTestBase <- BlazorWasmTestBase <- WasmTemplateTestsBase <- BuildTestBase
    This was refactored to have blazor and browser apps in 2 logical "flows", e.g.:
    WorkloadRequiredTests <- BlazorWasmTestBase <- WasmTemplateTestsBase <- BuildTestBase
    NativeBuildTests <- WasmTemplateTestsBase <- BuildTestBase
  4. We used RunCommand and ToolCommand directly in the tests. Theye were exchanged for wrappers. For build/publish action we should use BuildTemplateProject and for running the browser app, RunBrowser. It is supposed to get merged with Blazor-based runners in a follow up PR, it will take too many changes to do it here.
  5. We've been doing !(buildArgs.AOT || buildArgs.Config == "Release") a lot, so it got closed in IsDotnetWasmFromRuntimePack.
  6. And a lot of building BuildProjectOptions, so we will have a "base" form of options (_basePublishProjectOptions , _baseBuildProjectOptions) that we can extend in the specific test but most frequently we use them in the default form.

The issues that were discovered when refactoring will be temporarily marked as "Issue" in the comment, then if not fixed, they will be logged as separate issues in the repo.

Follow-up PRs that will be published after this one is done:

  • Follow-up with transition to template-based tests. Instead of using [BuildAndRun( that creates a console app (with Microsoft.NET.Sdk), we should use templating mechanism. We still have ~40 tests that do not use templates.
  • Follow-up, just with refactoring. We should get rid of classes like AppTestBase, TestMainJsTestBase, TestMainJsProjectProvider and consolidate running methods from AppTestBase and WasmTemplateTestsBase, so tests derive from WasmTemplateTestsBase if they are browser apps and from BlazorWasmTestBase if they are blazor apps, nothing more. Clean up option records, BuildProjectOptions, BlazorRunOptions, BlazorBuildOptions etc.

@ilonatommyilonatommy added arch-wasm WebAssembly architecture area-Build-mono labels Oct 9, 2024
@ilonatommyilonatommy self-assigned this Oct 9, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

@ilonatommy
ilonatommy marked this pull request as draft October 9, 2024 13:52
@ilonatommy
ilonatommy marked this pull request as ready for review October 14, 2024 13:40
BuildTemplateProject(buildArgs, id: id, new BuildProjectOptions(
AssertAppBundle: false,
CreateProject: false,
HasV8Script: false,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

V8Script could be dropped too. I expect it would many more places than just WBT. Could be in next PR

AssertSymbolsFile: false // FIXME: not supported yet
));

public override string FindBinFrameworkDir(string config, bool forPublish, string framework, string? projectDir = null)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Why do we need to override it here? Blazor and Wasm SDK should behave the same

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

That's true, originally I didn't notice they are the same, it can be left in WasmSdkBasedProjectProvider only.
Note for the future: once we will align BlazorBuildOptions and AssertWasmSdkBundleOptions then maybe we will even use WASM SDK provider in Blazor and drop BlazorWasmProjectProvider.

Comment threadsrc/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs Outdated

public class DebugLevelTests : AppTestBase
{
public DebugLevelTests(ITestOutputHelper output, SharedBuildPerTestClassFixture buildContext)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think we should merge this one with Wasm.Build.Tests.DebugLevelTests and use "WasmBasicTestApp" for all of the tests.

  • Move it outside of Blazor namespace since it's not blazor specific

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

It was not done because it would require more refactoring. In the feedback commit I moved them to one file and made them use WasBasicTestApp but it broke the base class, now it's DebugLevelTests : AppTestBase. Will be cleaned up better in a follow-up

TargetFramework: BuildTestBase.DefaultTargetFramework,
UseCache: false,
IsBrowserProject: isBrowser,
IsBrowserProject: true,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think we can remove IsBrowserProject or similar if we have any

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Not yet. We have a significant bundle assert check that based on its value uses either the wasm sdk-like way assert or deprecated but still used by tests (to be removed in a follow up) mainJs-like assert. This would lead to too many other changes. Later

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Since everything is now Wasm SDK, I think we can remove this base class

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Am I right? 🤔

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Yes, it can be removed in the follow up that will be getting rid of TestMainJsProjectProvider that is still based on ProjectProviderBase and used in ~16 test files.

@ilonatommy
ilonatommy merged commit 0290065 into dotnet:mainOct 16, 2024
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Nov 16, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-mono

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ilonatommy@pavelsavara@maraf
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

[wasm] Stop testing with V8 and wasmconsole - #108711

Merged
ilonatommy merged 16 commits into
dotnet:mainfrom
ilonatommy:stop-testing-v8&console
Oct 16, 2024
Merged

[wasm] Stop testing with V8 and wasmconsole#108711
ilonatommy merged 16 commits into
dotnet:mainfrom
ilonatommy:stop-testing-v8&console

Conversation

@ilonatommy

@ilonatommyilonatommy commented Oct 9, 2024

Copy link
Copy Markdown
Member

Follow up for #108582 (comment).

  1. Do not test v8 scenario on CI. Changelog:
| lane | current scenarios | future scenarios | changed? |
|--------------------------------|-------------------------------------------------|------------------------------------|----------|
| LibraryTests Linux | WasmTestOnV8,WasmTestOnChrome,WasmTestOnFirefox | WasmTestOnChrome,WasmTestOnFirefox | Y |
| LibraryTests Windows | WasmTestOnChrome | WasmTestOnChrome | N |
| LibraryTests_Smoke_AOT Linux | WasmTestOnV8 | WasmTestOnChrome | Y |
| LibraryTests_Smoke_AOT Windows | WasmTestOnChrome | WasmTestOnChrome | N |
| LibraryTests_EAT Linux | WasmTestOnV8 | WasmTestOnChrome | Y |
| LibraryTests_Threading Linux | WasmTestOnChrome,WasmTestOnFirefox | WasmTestOnChrome,WasmTestOnFirefox | N |
| extra-platforms | WasmTestOnV8, WasmTestOnChrome | WasmTestOnChrome | Y |
| outer-loop | WasmTestOnV8 | WasmTestOnChrome | Y |
  1. Do not test wasmconsole in WasmBuildTests. Some tests were using console scenario but did not mean to target specifically console, so they had to stay but be changed to use browserwasm. This revealed a bunch of inconsistencies that required refactoring. I will try to list the biggest refactoring changes in the following points.
  2. We had WasmTemplateTestBase and WasmTemplateTestsBase that in fact could be consolidated in one class.
  3. Inheritance. We used to have, e.g.:
    NativeBuildTests <- WasmTemplateTestBase <- BlazorWasmTestBase <- WasmTemplateTestsBase <- BuildTestBase
    This was refactored to have blazor and browser apps in 2 logical "flows", e.g.:
    WorkloadRequiredTests <- BlazorWasmTestBase <- WasmTemplateTestsBase <- BuildTestBase
    NativeBuildTests <- WasmTemplateTestsBase <- BuildTestBase
  4. We used RunCommand and ToolCommand directly in the tests. Theye were exchanged for wrappers. For build/publish action we should use BuildTemplateProject and for running the browser app, RunBrowser. It is supposed to get merged with Blazor-based runners in a follow up PR, it will take too many changes to do it here.
  5. We've been doing !(buildArgs.AOT || buildArgs.Config == "Release") a lot, so it got closed in IsDotnetWasmFromRuntimePack.
  6. And a lot of building BuildProjectOptions, so we will have a "base" form of options (_basePublishProjectOptions , _baseBuildProjectOptions) that we can extend in the specific test but most frequently we use them in the default form.

The issues that were discovered when refactoring will be temporarily marked as "Issue" in the comment, then if not fixed, they will be logged as separate issues in the repo.

Follow-up PRs that will be published after this one is done:

  • Follow-up with transition to template-based tests. Instead of using [BuildAndRun( that creates a console app (with Microsoft.NET.Sdk), we should use templating mechanism. We still have ~40 tests that do not use templates.
  • Follow-up, just with refactoring. We should get rid of classes like AppTestBase, TestMainJsTestBase, TestMainJsProjectProvider and consolidate running methods from AppTestBase and WasmTemplateTestsBase, so tests derive from WasmTemplateTestsBase if they are browser apps and from BlazorWasmTestBase if they are blazor apps, nothing more. Clean up option records, BuildProjectOptions, BlazorRunOptions, BlazorBuildOptions etc.

@ilonatommyilonatommy added arch-wasm WebAssembly architecture area-Build-mono labels Oct 9, 2024
@ilonatommyilonatommy self-assigned this Oct 9, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

@ilonatommy
ilonatommy marked this pull request as draft October 9, 2024 13:52
@ilonatommy
ilonatommy marked this pull request as ready for review October 14, 2024 13:40
BuildTemplateProject(buildArgs, id: id, new BuildProjectOptions(
AssertAppBundle: false,
CreateProject: false,
HasV8Script: false,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

V8Script could be dropped too. I expect it would many more places than just WBT. Could be in next PR

AssertSymbolsFile: false // FIXME: not supported yet
));

public override string FindBinFrameworkDir(string config, bool forPublish, string framework, string? projectDir = null)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Why do we need to override it here? Blazor and Wasm SDK should behave the same

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

That's true, originally I didn't notice they are the same, it can be left in WasmSdkBasedProjectProvider only.
Note for the future: once we will align BlazorBuildOptions and AssertWasmSdkBundleOptions then maybe we will even use WASM SDK provider in Blazor and drop BlazorWasmProjectProvider.

Comment threadsrc/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs Outdated

public class DebugLevelTests : AppTestBase
{
public DebugLevelTests(ITestOutputHelper output, SharedBuildPerTestClassFixture buildContext)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think we should merge this one with Wasm.Build.Tests.DebugLevelTests and use "WasmBasicTestApp" for all of the tests.

  • Move it outside of Blazor namespace since it's not blazor specific

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

It was not done because it would require more refactoring. In the feedback commit I moved them to one file and made them use WasBasicTestApp but it broke the base class, now it's DebugLevelTests : AppTestBase. Will be cleaned up better in a follow-up

TargetFramework: BuildTestBase.DefaultTargetFramework,
UseCache: false,
IsBrowserProject: isBrowser,
IsBrowserProject: true,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think we can remove IsBrowserProject or similar if we have any

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Not yet. We have a significant bundle assert check that based on its value uses either the wasm sdk-like way assert or deprecated but still used by tests (to be removed in a follow up) mainJs-like assert. This would lead to too many other changes. Later

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Since everything is now Wasm SDK, I think we can remove this base class

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Am I right? 🤔

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Yes, it can be removed in the follow up that will be getting rid of TestMainJsProjectProvider that is still based on ProjectProviderBase and used in ~16 test files.

@ilonatommy
ilonatommy merged commit 0290065 into dotnet:mainOct 16, 2024
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Nov 16, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-mono

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ilonatommy@pavelsavara@maraf
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[wasm] Stop testing with V8 and wasmconsole - #108711

Merged
ilonatommy merged 16 commits into
dotnet:mainfrom
ilonatommy:stop-testing-v8&console
Oct 16, 2024
Merged

[wasm] Stop testing with V8 and wasmconsole#108711
ilonatommy merged 16 commits into
dotnet:mainfrom
ilonatommy:stop-testing-v8&console

Conversation

@ilonatommy

@ilonatommyilonatommy commented Oct 9, 2024

Copy link
Copy Markdown
Member

Follow up for #108582 (comment).

  1. Do not test v8 scenario on CI. Changelog:
| lane | current scenarios | future scenarios | changed? |
|--------------------------------|-------------------------------------------------|------------------------------------|----------|
| LibraryTests Linux | WasmTestOnV8,WasmTestOnChrome,WasmTestOnFirefox | WasmTestOnChrome,WasmTestOnFirefox | Y |
| LibraryTests Windows | WasmTestOnChrome | WasmTestOnChrome | N |
| LibraryTests_Smoke_AOT Linux | WasmTestOnV8 | WasmTestOnChrome | Y |
| LibraryTests_Smoke_AOT Windows | WasmTestOnChrome | WasmTestOnChrome | N |
| LibraryTests_EAT Linux | WasmTestOnV8 | WasmTestOnChrome | Y |
| LibraryTests_Threading Linux | WasmTestOnChrome,WasmTestOnFirefox | WasmTestOnChrome,WasmTestOnFirefox | N |
| extra-platforms | WasmTestOnV8, WasmTestOnChrome | WasmTestOnChrome | Y |
| outer-loop | WasmTestOnV8 | WasmTestOnChrome | Y |
  1. Do not test wasmconsole in WasmBuildTests. Some tests were using console scenario but did not mean to target specifically console, so they had to stay but be changed to use browserwasm. This revealed a bunch of inconsistencies that required refactoring. I will try to list the biggest refactoring changes in the following points.
  2. We had WasmTemplateTestBase and WasmTemplateTestsBase that in fact could be consolidated in one class.
  3. Inheritance. We used to have, e.g.:
    NativeBuildTests <- WasmTemplateTestBase <- BlazorWasmTestBase <- WasmTemplateTestsBase <- BuildTestBase
    This was refactored to have blazor and browser apps in 2 logical "flows", e.g.:
    WorkloadRequiredTests <- BlazorWasmTestBase <- WasmTemplateTestsBase <- BuildTestBase
    NativeBuildTests <- WasmTemplateTestsBase <- BuildTestBase
  4. We used RunCommand and ToolCommand directly in the tests. Theye were exchanged for wrappers. For build/publish action we should use BuildTemplateProject and for running the browser app, RunBrowser. It is supposed to get merged with Blazor-based runners in a follow up PR, it will take too many changes to do it here.
  5. We've been doing !(buildArgs.AOT || buildArgs.Config == "Release") a lot, so it got closed in IsDotnetWasmFromRuntimePack.
  6. And a lot of building BuildProjectOptions, so we will have a "base" form of options (_basePublishProjectOptions , _baseBuildProjectOptions) that we can extend in the specific test but most frequently we use them in the default form.

The issues that were discovered when refactoring will be temporarily marked as "Issue" in the comment, then if not fixed, they will be logged as separate issues in the repo.

Follow-up PRs that will be published after this one is done:

  • Follow-up with transition to template-based tests. Instead of using [BuildAndRun( that creates a console app (with Microsoft.NET.Sdk), we should use templating mechanism. We still have ~40 tests that do not use templates.
  • Follow-up, just with refactoring. We should get rid of classes like AppTestBase, TestMainJsTestBase, TestMainJsProjectProvider and consolidate running methods from AppTestBase and WasmTemplateTestsBase, so tests derive from WasmTemplateTestsBase if they are browser apps and from BlazorWasmTestBase if they are blazor apps, nothing more. Clean up option records, BuildProjectOptions, BlazorRunOptions, BlazorBuildOptions etc.

@ilonatommyilonatommy added arch-wasm WebAssembly architecture area-Build-mono labels Oct 9, 2024
@ilonatommyilonatommy self-assigned this Oct 9, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

@ilonatommy
ilonatommy marked this pull request as draft October 9, 2024 13:52
@ilonatommy
ilonatommy marked this pull request as ready for review October 14, 2024 13:40
BuildTemplateProject(buildArgs, id: id, new BuildProjectOptions(
AssertAppBundle: false,
CreateProject: false,
HasV8Script: false,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

V8Script could be dropped too. I expect it would many more places than just WBT. Could be in next PR

AssertSymbolsFile: false // FIXME: not supported yet
));

public override string FindBinFrameworkDir(string config, bool forPublish, string framework, string? projectDir = null)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Why do we need to override it here? Blazor and Wasm SDK should behave the same

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

That's true, originally I didn't notice they are the same, it can be left in WasmSdkBasedProjectProvider only.
Note for the future: once we will align BlazorBuildOptions and AssertWasmSdkBundleOptions then maybe we will even use WASM SDK provider in Blazor and drop BlazorWasmProjectProvider.

Comment threadsrc/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs Outdated

public class DebugLevelTests : AppTestBase
{
public DebugLevelTests(ITestOutputHelper output, SharedBuildPerTestClassFixture buildContext)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think we should merge this one with Wasm.Build.Tests.DebugLevelTests and use "WasmBasicTestApp" for all of the tests.

  • Move it outside of Blazor namespace since it's not blazor specific

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

It was not done because it would require more refactoring. In the feedback commit I moved them to one file and made them use WasBasicTestApp but it broke the base class, now it's DebugLevelTests : AppTestBase. Will be cleaned up better in a follow-up

TargetFramework: BuildTestBase.DefaultTargetFramework,
UseCache: false,
IsBrowserProject: isBrowser,
IsBrowserProject: true,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think we can remove IsBrowserProject or similar if we have any

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Not yet. We have a significant bundle assert check that based on its value uses either the wasm sdk-like way assert or deprecated but still used by tests (to be removed in a follow up) mainJs-like assert. This would lead to too many other changes. Later

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Since everything is now Wasm SDK, I think we can remove this base class

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Am I right? 🤔

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Yes, it can be removed in the follow up that will be getting rid of TestMainJsProjectProvider that is still based on ProjectProviderBase and used in ~16 test files.

@ilonatommy
ilonatommy merged commit 0290065 into dotnet:mainOct 16, 2024
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Nov 16, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-mono

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ilonatommy@pavelsavara@maraf
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[wasm] Stop testing with V8 and wasmconsole - #108711

Merged
ilonatommy merged 16 commits into
dotnet:mainfrom
ilonatommy:stop-testing-v8&console
Oct 16, 2024
Merged

[wasm] Stop testing with V8 and wasmconsole#108711
ilonatommy merged 16 commits into
dotnet:mainfrom
ilonatommy:stop-testing-v8&console

Conversation

@ilonatommy

@ilonatommyilonatommy commented Oct 9, 2024

Copy link
Copy Markdown
Member

Follow up for #108582 (comment).

  1. Do not test v8 scenario on CI. Changelog:
| lane | current scenarios | future scenarios | changed? |
|--------------------------------|-------------------------------------------------|------------------------------------|----------|
| LibraryTests Linux | WasmTestOnV8,WasmTestOnChrome,WasmTestOnFirefox | WasmTestOnChrome,WasmTestOnFirefox | Y |
| LibraryTests Windows | WasmTestOnChrome | WasmTestOnChrome | N |
| LibraryTests_Smoke_AOT Linux | WasmTestOnV8 | WasmTestOnChrome | Y |
| LibraryTests_Smoke_AOT Windows | WasmTestOnChrome | WasmTestOnChrome | N |
| LibraryTests_EAT Linux | WasmTestOnV8 | WasmTestOnChrome | Y |
| LibraryTests_Threading Linux | WasmTestOnChrome,WasmTestOnFirefox | WasmTestOnChrome,WasmTestOnFirefox | N |
| extra-platforms | WasmTestOnV8, WasmTestOnChrome | WasmTestOnChrome | Y |
| outer-loop | WasmTestOnV8 | WasmTestOnChrome | Y |
  1. Do not test wasmconsole in WasmBuildTests. Some tests were using console scenario but did not mean to target specifically console, so they had to stay but be changed to use browserwasm. This revealed a bunch of inconsistencies that required refactoring. I will try to list the biggest refactoring changes in the following points.
  2. We had WasmTemplateTestBase and WasmTemplateTestsBase that in fact could be consolidated in one class.
  3. Inheritance. We used to have, e.g.:
    NativeBuildTests <- WasmTemplateTestBase <- BlazorWasmTestBase <- WasmTemplateTestsBase <- BuildTestBase
    This was refactored to have blazor and browser apps in 2 logical "flows", e.g.:
    WorkloadRequiredTests <- BlazorWasmTestBase <- WasmTemplateTestsBase <- BuildTestBase
    NativeBuildTests <- WasmTemplateTestsBase <- BuildTestBase
  4. We used RunCommand and ToolCommand directly in the tests. Theye were exchanged for wrappers. For build/publish action we should use BuildTemplateProject and for running the browser app, RunBrowser. It is supposed to get merged with Blazor-based runners in a follow up PR, it will take too many changes to do it here.
  5. We've been doing !(buildArgs.AOT || buildArgs.Config == "Release") a lot, so it got closed in IsDotnetWasmFromRuntimePack.
  6. And a lot of building BuildProjectOptions, so we will have a "base" form of options (_basePublishProjectOptions , _baseBuildProjectOptions) that we can extend in the specific test but most frequently we use them in the default form.

The issues that were discovered when refactoring will be temporarily marked as "Issue" in the comment, then if not fixed, they will be logged as separate issues in the repo.

Follow-up PRs that will be published after this one is done:

  • Follow-up with transition to template-based tests. Instead of using [BuildAndRun( that creates a console app (with Microsoft.NET.Sdk), we should use templating mechanism. We still have ~40 tests that do not use templates.
  • Follow-up, just with refactoring. We should get rid of classes like AppTestBase, TestMainJsTestBase, TestMainJsProjectProvider and consolidate running methods from AppTestBase and WasmTemplateTestsBase, so tests derive from WasmTemplateTestsBase if they are browser apps and from BlazorWasmTestBase if they are blazor apps, nothing more. Clean up option records, BuildProjectOptions, BlazorRunOptions, BlazorBuildOptions etc.

@ilonatommyilonatommy added arch-wasm WebAssembly architecture area-Build-mono labels Oct 9, 2024
@ilonatommyilonatommy self-assigned this Oct 9, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

@ilonatommy
ilonatommy marked this pull request as draft October 9, 2024 13:52
@ilonatommy
ilonatommy marked this pull request as ready for review October 14, 2024 13:40
BuildTemplateProject(buildArgs, id: id, new BuildProjectOptions(
AssertAppBundle: false,
CreateProject: false,
HasV8Script: false,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

V8Script could be dropped too. I expect it would many more places than just WBT. Could be in next PR

AssertSymbolsFile: false // FIXME: not supported yet
));

public override string FindBinFrameworkDir(string config, bool forPublish, string framework, string? projectDir = null)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Why do we need to override it here? Blazor and Wasm SDK should behave the same

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

That's true, originally I didn't notice they are the same, it can be left in WasmSdkBasedProjectProvider only.
Note for the future: once we will align BlazorBuildOptions and AssertWasmSdkBundleOptions then maybe we will even use WASM SDK provider in Blazor and drop BlazorWasmProjectProvider.

Comment threadsrc/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs Outdated

public class DebugLevelTests : AppTestBase
{
public DebugLevelTests(ITestOutputHelper output, SharedBuildPerTestClassFixture buildContext)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think we should merge this one with Wasm.Build.Tests.DebugLevelTests and use "WasmBasicTestApp" for all of the tests.

  • Move it outside of Blazor namespace since it's not blazor specific

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

It was not done because it would require more refactoring. In the feedback commit I moved them to one file and made them use WasBasicTestApp but it broke the base class, now it's DebugLevelTests : AppTestBase. Will be cleaned up better in a follow-up

TargetFramework: BuildTestBase.DefaultTargetFramework,
UseCache: false,
IsBrowserProject: isBrowser,
IsBrowserProject: true,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think we can remove IsBrowserProject or similar if we have any

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Not yet. We have a significant bundle assert check that based on its value uses either the wasm sdk-like way assert or deprecated but still used by tests (to be removed in a follow up) mainJs-like assert. This would lead to too many other changes. Later

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Since everything is now Wasm SDK, I think we can remove this base class

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Am I right? 🤔

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Yes, it can be removed in the follow up that will be getting rid of TestMainJsProjectProvider that is still based on ProjectProviderBase and used in ~16 test files.

@ilonatommy
ilonatommy merged commit 0290065 into dotnet:mainOct 16, 2024
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Nov 16, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-mono

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ilonatommy@pavelsavara@maraf
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

[wasm] Stop testing with V8 and wasmconsole - #108711

Merged
ilonatommy merged 16 commits into
dotnet:mainfrom
ilonatommy:stop-testing-v8&console
Oct 16, 2024
Merged

[wasm] Stop testing with V8 and wasmconsole#108711
ilonatommy merged 16 commits into
dotnet:mainfrom
ilonatommy:stop-testing-v8&console

Conversation

@ilonatommy

@ilonatommyilonatommy commented Oct 9, 2024

Copy link
Copy Markdown
Member

Follow up for #108582 (comment).

  1. Do not test v8 scenario on CI. Changelog:
| lane | current scenarios | future scenarios | changed? |
|--------------------------------|-------------------------------------------------|------------------------------------|----------|
| LibraryTests Linux | WasmTestOnV8,WasmTestOnChrome,WasmTestOnFirefox | WasmTestOnChrome,WasmTestOnFirefox | Y |
| LibraryTests Windows | WasmTestOnChrome | WasmTestOnChrome | N |
| LibraryTests_Smoke_AOT Linux | WasmTestOnV8 | WasmTestOnChrome | Y |
| LibraryTests_Smoke_AOT Windows | WasmTestOnChrome | WasmTestOnChrome | N |
| LibraryTests_EAT Linux | WasmTestOnV8 | WasmTestOnChrome | Y |
| LibraryTests_Threading Linux | WasmTestOnChrome,WasmTestOnFirefox | WasmTestOnChrome,WasmTestOnFirefox | N |
| extra-platforms | WasmTestOnV8, WasmTestOnChrome | WasmTestOnChrome | Y |
| outer-loop | WasmTestOnV8 | WasmTestOnChrome | Y |
  1. Do not test wasmconsole in WasmBuildTests. Some tests were using console scenario but did not mean to target specifically console, so they had to stay but be changed to use browserwasm. This revealed a bunch of inconsistencies that required refactoring. I will try to list the biggest refactoring changes in the following points.
  2. We had WasmTemplateTestBase and WasmTemplateTestsBase that in fact could be consolidated in one class.
  3. Inheritance. We used to have, e.g.:
    NativeBuildTests <- WasmTemplateTestBase <- BlazorWasmTestBase <- WasmTemplateTestsBase <- BuildTestBase
    This was refactored to have blazor and browser apps in 2 logical "flows", e.g.:
    WorkloadRequiredTests <- BlazorWasmTestBase <- WasmTemplateTestsBase <- BuildTestBase
    NativeBuildTests <- WasmTemplateTestsBase <- BuildTestBase
  4. We used RunCommand and ToolCommand directly in the tests. Theye were exchanged for wrappers. For build/publish action we should use BuildTemplateProject and for running the browser app, RunBrowser. It is supposed to get merged with Blazor-based runners in a follow up PR, it will take too many changes to do it here.
  5. We've been doing !(buildArgs.AOT || buildArgs.Config == "Release") a lot, so it got closed in IsDotnetWasmFromRuntimePack.
  6. And a lot of building BuildProjectOptions, so we will have a "base" form of options (_basePublishProjectOptions , _baseBuildProjectOptions) that we can extend in the specific test but most frequently we use them in the default form.

The issues that were discovered when refactoring will be temporarily marked as "Issue" in the comment, then if not fixed, they will be logged as separate issues in the repo.

Follow-up PRs that will be published after this one is done:

  • Follow-up with transition to template-based tests. Instead of using [BuildAndRun( that creates a console app (with Microsoft.NET.Sdk), we should use templating mechanism. We still have ~40 tests that do not use templates.
  • Follow-up, just with refactoring. We should get rid of classes like AppTestBase, TestMainJsTestBase, TestMainJsProjectProvider and consolidate running methods from AppTestBase and WasmTemplateTestsBase, so tests derive from WasmTemplateTestsBase if they are browser apps and from BlazorWasmTestBase if they are blazor apps, nothing more. Clean up option records, BuildProjectOptions, BlazorRunOptions, BlazorBuildOptions etc.

@ilonatommyilonatommy added arch-wasm WebAssembly architecture area-Build-mono labels Oct 9, 2024
@ilonatommyilonatommy self-assigned this Oct 9, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

@ilonatommy
ilonatommy marked this pull request as draft October 9, 2024 13:52
@ilonatommy
ilonatommy marked this pull request as ready for review October 14, 2024 13:40
BuildTemplateProject(buildArgs, id: id, new BuildProjectOptions(
AssertAppBundle: false,
CreateProject: false,
HasV8Script: false,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

V8Script could be dropped too. I expect it would many more places than just WBT. Could be in next PR

AssertSymbolsFile: false // FIXME: not supported yet
));

public override string FindBinFrameworkDir(string config, bool forPublish, string framework, string? projectDir = null)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Why do we need to override it here? Blazor and Wasm SDK should behave the same

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

That's true, originally I didn't notice they are the same, it can be left in WasmSdkBasedProjectProvider only.
Note for the future: once we will align BlazorBuildOptions and AssertWasmSdkBundleOptions then maybe we will even use WASM SDK provider in Blazor and drop BlazorWasmProjectProvider.

Comment threadsrc/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs Outdated

public class DebugLevelTests : AppTestBase
{
public DebugLevelTests(ITestOutputHelper output, SharedBuildPerTestClassFixture buildContext)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think we should merge this one with Wasm.Build.Tests.DebugLevelTests and use "WasmBasicTestApp" for all of the tests.

  • Move it outside of Blazor namespace since it's not blazor specific

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

It was not done because it would require more refactoring. In the feedback commit I moved them to one file and made them use WasBasicTestApp but it broke the base class, now it's DebugLevelTests : AppTestBase. Will be cleaned up better in a follow-up

TargetFramework: BuildTestBase.DefaultTargetFramework,
UseCache: false,
IsBrowserProject: isBrowser,
IsBrowserProject: true,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think we can remove IsBrowserProject or similar if we have any

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Not yet. We have a significant bundle assert check that based on its value uses either the wasm sdk-like way assert or deprecated but still used by tests (to be removed in a follow up) mainJs-like assert. This would lead to too many other changes. Later

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Since everything is now Wasm SDK, I think we can remove this base class

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Am I right? 🤔

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Yes, it can be removed in the follow up that will be getting rid of TestMainJsProjectProvider that is still based on ProjectProviderBase and used in ~16 test files.

@ilonatommy
ilonatommy merged commit 0290065 into dotnet:mainOct 16, 2024
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Nov 16, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-Build-mono

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ilonatommy@pavelsavara@maraf