Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Prev Previous commit
Next Next commit
[wasm] WBT: include browser launch logs in test output
  • Loading branch information
radical committed Sep 27, 2022
commit 9140c37cc0569aac2df3208365ab11040d315f39
10 changes: 7 additions & 3 deletions src/mono/wasm/Wasm.Build.Tests/BrowserRunner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
using System.Threading.Tasks;
using Microsoft.Playwright;
using Wasm.Tests.Internal;
using Xunit.Abstractions;

namespace Wasm.Build.Tests;

Expand All @@ -29,6 +30,9 @@ internal class BrowserRunner : IAsyncDisposable
public Task<CommandResult>? RunTask { get; private set; }
public IList<string> OutputLines { get; private set; } = new List<string>();
private TaskCompletionSource<int> _exited = new();
private readonly ITestOutputHelper _testOutput;

public BrowserRunner(ITestOutputHelper testOutput) => _testOutput = testOutput;

// FIXME: options
public async Task<IPage> RunAsync(ToolCommand cmd, string args, bool headless = true)
Expand Down Expand Up @@ -78,7 +82,7 @@ public async Task<IPage> RunAsync(ToolCommand cmd, string args, bool headless =
var url = new Uri(urlAvailable.Task.Result);
Playwright = await Microsoft.Playwright.Playwright.CreateAsync();
string[] chromeArgs = new[] { $"--explicitly-allowed-ports={url.Port}" };
Console.WriteLine($"Launching chrome ('{s_chromePath.Value}') via playwright with args = {string.Join(',', chromeArgs)}");
_testOutput.WriteLine($"Launching chrome ('{s_chromePath.Value}') via playwright with args = {string.Join(',', chromeArgs)}");
Browser = await Playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions{
ExecutablePath = s_chromePath.Value,
Headless = headless,
Expand All @@ -99,7 +103,7 @@ public async Task WaitForExitMessageAsync(TimeSpan timeout)
await Task.WhenAny(RunTask!, _exited.Task, Task.Delay(timeout));
if (_exited.Task.IsCompleted)
{
Console.WriteLine ($"Exited with {await _exited.Task}");
_testOutput.WriteLine ($"Exited with {await _exited.Task}");
return;
}

Expand All @@ -114,7 +118,7 @@ public async Task WaitForProcessExitAsync(TimeSpan timeout)
await Task.WhenAny(RunTask!, _exited.Task, Task.Delay(timeout));
if (RunTask.IsCanceled)
{
Console.WriteLine ($"Exited with {(await RunTask).ExitCode}");
_testOutput.WriteLine ($"Exited with {(await RunTask).ExitCode}");
return;
}

Expand Down
18 changes: 15 additions & 3 deletions src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -290,13 +290,25 @@ protected void InitPaths(string id)
Directory.CreateDirectory(_logPath);
}

protected static void InitProjectDir(string dir)
protected static void InitProjectDir(string dir, bool addNuGetSourceForLocalPackages = false)
{
Directory.CreateDirectory(dir);
File.WriteAllText(Path.Combine(dir, "Directory.Build.props"), s_buildEnv.DirectoryBuildPropsContents);
File.WriteAllText(Path.Combine(dir, "Directory.Build.targets"), s_buildEnv.DirectoryBuildTargetsContents);

File.Copy(Path.Combine(BuildEnvironment.TestDataPath, NuGetConfigFileNameForDefaultFramework), Path.Combine(dir, "nuget.config"));
string targetNuGetConfigPath = Path.Combine(dir, "nuget.config");
if (addNuGetSourceForLocalPackages)
{
File.WriteAllText(targetNuGetConfigPath,
GetNuGetConfigWithLocalPackagesPath(
Path.Combine(BuildEnvironment.TestDataPath, NuGetConfigFileNameForDefaultFramework),
s_buildEnv.BuiltNuGetsPath));
}
else
{
File.Copy(Path.Combine(BuildEnvironment.TestDataPath, NuGetConfigFileNameForDefaultFramework),
targetNuGetConfigPath);
}
Directory.CreateDirectory(Path.Combine(dir, ".nuget"));
}

Expand Down Expand Up @@ -447,7 +459,7 @@ private static string GetNuGetConfigWithLocalPackagesPath(string templatePath, s
public string CreateWasmTemplateProject(string id, string template = "wasmbrowser", string extraArgs = "")
{
InitPaths(id);
InitProjectDir(id);
InitProjectDir(id, addNuGetSourceForLocalPackages: true);

File.WriteAllText(Path.Combine(_projectDir, "Directory.Build.props"), "<Project />");
File.WriteAllText(Path.Combine(_projectDir, "Directory.Build.targets"),
Expand Down
8 changes: 4 additions & 4 deletions src/mono/wasm/Wasm.Build.Tests/WasmTemplateTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ private async Task BrowserRunTwiceWithAndThenWithoutBuildAsync(string config, st
using var runCommand = new RunCommand(s_buildEnv, _testOutput)
.WithWorkingDirectory(workingDir);

await using var runner = new BrowserRunner();
await using var runner = new BrowserRunner(_testOutput);
var page = await runner.RunAsync(runCommand, $"run -c {config} --project {projectFile} --forward-console");
await runner.WaitForExitMessageAsync(TimeSpan.FromMinutes(2));
Assert.Contains("Hello, Browser!", string.Join(Environment.NewLine, runner.OutputLines));
Expand All @@ -284,7 +284,7 @@ private async Task BrowserRunTwiceWithAndThenWithoutBuildAsync(string config, st
using var runCommand = new RunCommand(s_buildEnv, _testOutput)
.WithWorkingDirectory(workingDir);

await using var runner = new BrowserRunner();
await using var runner = new BrowserRunner(_testOutput);
var page = await runner.RunAsync(runCommand, $"run -c {config} --no-build --project {projectFile} --forward-console");
await runner.WaitForExitMessageAsync(TimeSpan.FromMinutes(2));
Assert.Contains("Hello, Browser!", string.Join(Environment.NewLine, runner.OutputLines));
Expand Down Expand Up @@ -429,7 +429,7 @@ public async Task BlazorRunTest()
using var runCommand = new RunCommand(s_buildEnv, _testOutput)
.WithWorkingDirectory(_projectDir!);

await using var runner = new BrowserRunner();
await using var runner = new BrowserRunner(_testOutput);
var page = await runner.RunAsync(runCommand, $"run -c {config} --no-build");

await page.Locator("text=Counter").ClickAsync();
Expand Down Expand Up @@ -461,7 +461,7 @@ public async Task BrowserBuildAndRun(string extraNewArgs)
using var runCommand = new RunCommand(s_buildEnv, _testOutput)
.WithWorkingDirectory(_projectDir!);

await using var runner = new BrowserRunner();
await using var runner = new BrowserRunner(_testOutput);
var page = await runner.RunAsync(runCommand, $"run -c {config} --no-build -r browser-wasm --forward-console");
await runner.WaitForExitMessageAsync(TimeSpan.FromMinutes(2));
Assert.Contains("Hello, Browser!", string.Join(Environment.NewLine, runner.OutputLines));
Expand Down