-
Notifications
You must be signed in to change notification settings - Fork 3
/
PlaywrightBootstrapper.cs
65 lines (57 loc) · 1.87 KB
/
PlaywrightBootstrapper.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
using Microsoft.Extensions.Logging;
internal enum PlaywrightInstallStatus
{
Installed,
AlreadyInstalled,
Failed
}
internal static class PlaywrightBootstrapper
{
internal static string HomePath
{
get
{
var home = Environment.GetEnvironmentVariable("HOME_EXPANDED");
return string.IsNullOrWhiteSpace(home) ?
Path.Combine(Environment.ExpandEnvironmentVariables("%localappdata%"), "ms-playwright") :
Path.Combine(home, "ms-playwright");
}
}
internal static string ChromiumExecutablePath
{
get
{
//find the path to chrome.exe in the HomePath
var files = System.IO.Directory.EnumerateFileSystemEntries(
PlaywrightBootstrapper.HomePath,
"chrome.exe",
System.IO.SearchOption.AllDirectories);
return files.First();
}
}
/// <summary>
/// Returns true if Playwright was installed, false if it was already installed
/// </summary>
/// <returns></returns>
internal static PlaywrightInstallStatus Run()
{
//azure functions running on azure, require the use of HOME_EXPANDED
if (!string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("HOME_EXPANDED")))
{
Environment.SetEnvironmentVariable("PLAYWRIGHT_BROWSERS_PATH", PlaywrightBootstrapper.HomePath);
}
if (!Directory.Exists(PlaywrightBootstrapper.HomePath))
{
try
{
Microsoft.Playwright.Program.Main(new[] { "install", "chromium" });
return PlaywrightInstallStatus.Installed;
}
catch
{
return PlaywrightInstallStatus.Failed;
}
}
return PlaywrightInstallStatus.AlreadyInstalled;
}
}