Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ protected override async Task InitializeCoreAsync(TestContext context)

[Theory]
[InlineData(BrowserKind.Chromium)]
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/66035")]
public async Task WebWorkerTemplate_CanInvokeMethods(BrowserKind browserKind)
{
await using var testRun = await SetupWorkerLibAndBuild(_sharedHostProject);
Expand All @@ -58,7 +57,6 @@ public async Task WebWorkerTemplate_CanInvokeMethods(BrowserKind browserKind)

[Theory]
[InlineData(BrowserKind.Chromium)]
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/66035")]
public async Task WebWorkerTemplate_HandlesErrors(BrowserKind browserKind)
{
await using var testRun = await SetupWorkerLibAndBuild(_sharedHostProject);
Expand All @@ -74,7 +72,6 @@ public async Task WebWorkerTemplate_HandlesErrors(BrowserKind browserKind)

[Theory]
[InlineData(BrowserKind.Chromium)]
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/66035")]
public async Task WebWorkerTemplate_CanDisposeWorker(BrowserKind browserKind)
{
await using var testRun = await SetupWorkerLibAndBuild(_sharedHostProject);
Expand All @@ -90,7 +87,6 @@ public async Task WebWorkerTemplate_CanDisposeWorker(BrowserKind browserKind)

[Theory]
[InlineData(BrowserKind.Chromium)]
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/66035")]
public async Task WebWorkerTemplate_CanInvokeMethodsAfterPublish(BrowserKind browserKind)
{
await using var testRun = await SetupWorkerLibAndPublish(_sharedHostProject);
Expand All @@ -117,6 +113,8 @@ private async Task<WorkerLibTestRun> SetupWorkerLibAndPublish(Project hostProjec
await AddWorkerLibReferenceAsync(hostProject);
await hostProject.RunDotNetPublishAsync(noRestore: false);

LogBuildDiagnostics(hostProject, "publish");

return new WorkerLibTestRun(workerLibDir, hostProject, Output);
}

Expand All @@ -135,6 +133,8 @@ private async Task<WorkerLibTestRun> SetupWorkerLibAndBuild(Project hostProject)
await AddWorkerLibReferenceAsync(hostProject);
await hostProject.RunDotNetBuildAsync();

LogBuildDiagnostics(hostProject, "build");

return new WorkerLibTestRun(workerLibDir, hostProject, Output);
}

Expand Down Expand Up @@ -235,6 +235,88 @@ private void CopyTestAssets(Project hostProject)
File.Copy(workerMethodsSource, Path.Combine(hostProject.TemplateOutputDir, "TestWorkerMethods.cs"), overwrite: true);
}

private void LogBuildDiagnostics(Project hostProject, string buildKind)
{
// Log the processed index.html to check if fingerprints resolved correctly.
// The #[.{fingerprint}] placeholder should be replaced with an actual hash.
// If it resolves to empty, the script tag will reference the unfingerprinted
// 'blazor.webassembly.js' which returns 404 from the dev server.
Comment on lines +240 to +243

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.

Are we checking/asserting that this happened correctly somewhere? E.g., that the fingerprint is not empty and is not "#[.{fingerprint}]" still?

var objDirectory = Path.Combine(hostProject.TemplateOutputDir, "obj");
var processedHtmlFiles = Array.Empty<string>();
if (!Directory.Exists(objDirectory))
{
Output.WriteLine($"[Diagnostics:{buildKind}] WARNING: Build obj directory not found at {objDirectory}");
}
else
{
processedHtmlFiles = Directory.GetFiles(objDirectory, "*.html", SearchOption.AllDirectories);
}

Output.WriteLine($"[Diagnostics:{buildKind}] Processed HTML files found: {processedHtmlFiles.Length}");
foreach (var htmlFile in processedHtmlFiles)
{
var scriptLines = File.ReadLines(htmlFile)
.Where(l => l.Contains("blazor.webassembly", StringComparison.OrdinalIgnoreCase))
.Select(l => l.Trim())
.ToList();
if (scriptLines.Count > 0)
{
Output.WriteLine($"[Diagnostics:{buildKind}] {htmlFile}");
foreach (var line in scriptLines)
{
Output.WriteLine($"[Diagnostics:{buildKind}] {line}");
}
}
}

// Log endpoints manifest routes for blazor.webassembly to verify route registration.
// Use TemplateBuildDir for build, TemplatePublishDir for publish to match actual output paths.
var outputDir = buildKind == "publish" ? hostProject.TemplatePublishDir : hostProject.TemplateBuildDir;
var endpointsManifest = Path.Combine(outputDir,
$"{hostProject.ProjectName}.staticwebassets.endpoints.json");
if (File.Exists(endpointsManifest))
{
try
{
using var doc = System.Text.Json.JsonDocument.Parse(File.ReadAllText(endpointsManifest));
var endpoints = doc.RootElement.GetProperty("Endpoints");
Output.WriteLine($"[Diagnostics:{buildKind}] Endpoints manifest blazor.webassembly routes:");
foreach (var endpoint in endpoints.EnumerateArray())
{
var route = endpoint.GetProperty("Route").GetString();
if (route?.Contains("blazor.webassembly", StringComparison.OrdinalIgnoreCase) == true)
{
var assetFile = endpoint.GetProperty("AssetFile").GetString();
Output.WriteLine($"[Diagnostics:{buildKind}] Route: {route} -> AssetFile: {assetFile}");
}
}
}
catch (Exception ex)
{
Output.WriteLine($"[Diagnostics:{buildKind}] Failed to parse endpoints manifest: {ex}");
}
}
else
{
Output.WriteLine($"[Diagnostics:{buildKind}] WARNING: Endpoints manifest not found at {endpointsManifest}");
}

// Log the original index.html to check the raw source state.
var sourceHtml = Path.Combine(hostProject.TemplateOutputDir, "wwwroot", "index.html");
if (File.Exists(sourceHtml))
{
var scriptLines = File.ReadLines(sourceHtml)
.Where(l => l.Contains("blazor.webassembly", StringComparison.OrdinalIgnoreCase))
.Select(l => l.Trim())
.ToList();
Output.WriteLine($"[Diagnostics:{buildKind}] Source wwwroot/index.html blazor.webassembly references:");
foreach (var line in scriptLines)
{
Output.WriteLine($"[Diagnostics:{buildKind}] {line}");
}
}
}

private async Task TestWebWorkerInteraction(BrowserKind browserKind, string baseUri, string clientRoute = null)
{
if (!BrowserManager.IsAvailable(browserKind))
Expand Down
Loading