Skip to content

Commit 46c991e

Browse files
committed
fix: experimenting with starting electron for playwright
1 parent 8f3dfc9 commit 46c991e

File tree

2 files changed

+36
-27
lines changed

2 files changed

+36
-27
lines changed

ui-tests-experimental/Helpers/CodetracerLauncher.cs

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,12 @@ public static int RecordProgram(string relativePath)
4848

4949
public static void StartCore(int traceId, int runPid)
5050
{
51-
var psi = new ProcessStartInfo(CtPath, $"start_core {traceId} {runPid}")
51+
var psi = new ProcessStartInfo(CtPath)
5252
{
53-
WorkingDirectory = CtInstallDir
53+
WorkingDirectory = CtInstallDir,
54+
CreateNoWindow = true,
55+
UseShellExecute = true,
56+
ArgumentList = {"start_core", $"{traceId}", $"{runPid}"},
5457
};
5558
Process.Start(psi);
5659
}
@@ -61,34 +64,39 @@ public static class PlaywrightCodetracerLauncher
6164
public static string CtPath => CodetracerLauncher.CtPath;
6265
public static bool IsCtAvailable => CodetracerLauncher.IsCtAvailable;
6366

64-
public static async Task<IPage> LaunchAsync(string programRelativePath)
67+
public static async Task<IBrowser> LaunchAsync(string programRelativePath)
6568
{
6669
if (!IsCtAvailable)
6770
throw new FileNotFoundException($"ct executable not found at {CtPath}");
6871

6972
int traceId = CodetracerLauncher.RecordProgram(programRelativePath);
70-
CodetracerLauncher.StartCore(traceId, 1);
7173

72-
var playwright = await Playwright.CreateAsync();
73-
var app = await ((dynamic)playwright)._electron.LaunchAsync(new
74+
// CodetracerLauncher.StartCore(traceId, 1);
75+
76+
var info = new ProcessStartInfo(CtPath)
7477
{
75-
executablePath = CtPath,
76-
cwd = CodetracerLauncher.CtInstallDir,
77-
env = new
78-
{
79-
CODETRACER_CALLER_PID = "1",
80-
CODETRACER_TRACE_ID = traceId.ToString(),
81-
CODETRACER_IN_UI_TEST = "1",
82-
CODETRACER_TEST = "1",
83-
CODETRACER_WRAP_ELECTRON = "1",
84-
CODETRACER_START_INDEX = "1"
85-
}
86-
});
87-
88-
var firstWindow = await app.FirstWindowAsync();
89-
return (await firstWindow.TitleAsync()) == "DevTools"
90-
? (await app.WindowsAsync())[1]
91-
: firstWindow;
78+
WorkingDirectory = CodetracerLauncher.CtInstallDir,
79+
// UseShellExecute = true,
80+
ArgumentList = { "--remote-debugging-port=9222" },
81+
};
82+
83+
info.EnvironmentVariables.Add("CODETRACER_CALLER_PID", "1");
84+
info.EnvironmentVariables.Add("CODETRACER_TRACE_ID", traceId.ToString());
85+
info.EnvironmentVariables.Add("CODETRACER_IN_UI_TEST", "1");
86+
info.EnvironmentVariables.Add("CODETRACER_TEST", "1");
87+
info.EnvironmentVariables.Add("CODETRACER_WRAP_ELECTRON", "1");
88+
info.EnvironmentVariables.Add("CODETRACER_START_INDEX", "1");
89+
90+
Process.Start(info);
91+
92+
var playwright = await Playwright.CreateAsync();
93+
var app = await playwright.Chromium.ConnectOverCDPAsync("localhost:9223");
94+
95+
return app;
96+
// var firstWindow = await app.FirstWindowAsync();
97+
// return (await firstWindow.TitleAsync()) == "DevTools"
98+
// ? (await app.WindowsAsync())[1]
99+
// : firstWindow;
92100
}
93101
}
94102

ui-tests-experimental/Program.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,15 @@ public static async Task Main()
1616
return;
1717
}
1818

19-
using var driver = SeleniumCodetracerLauncher.Launch("noir_space_ship");
19+
var driver = await PlaywrightCodetracerLauncher.LaunchAsync("noir_space_ship");
2020
await Task.Delay(TimeSpan.FromSeconds(10));
2121

22-
bool isVisible = false;
22+
// bool isVisible = false;
2323
try
2424
{
25-
var element = driver.FindElement(By.CssSelector(".menu-logo-img"));
26-
isVisible = element.Displayed;
25+
// await driver. ClickAsync("div");
26+
// var element = driver.FindElement(By.CssSelector(".menu-logo-img"));
27+
// isVisible = element.Displayed;
2728
}
2829
catch (NoSuchElementException)
2930
{

0 commit comments

Comments
 (0)