Код: Выделить всё
public class BrowserWrapper : IBrowserWrapper
{
private readonly IBrowser _browser;
private readonly IPage _page;
private readonly IBrowserContext _context;
private readonly TracingManager _tracingManager;
public IPage Page => _page;
private BrowserWrapper(IBrowser browser, IBrowserContext context, IPage page, TracingManager tracingManager)
{
_browser = browser;
_context = context;
_page = page;
_tracingManager = tracingManager;
}
public static async Task CreateAsync(IConfiguration configuration)
{
var browserName = configuration["Browser:Name"];
var headless = bool.Parse(configuration["Browser:Headless"]);
var incognito = bool.Parse(configuration["Browser:Incognito"]);
var viewportWidth = int.Parse(configuration["Browser:ViewportWidth"]);
var viewportHeight = int.Parse(configuration["Browser:ViewportHeight"]);
var slowMo = int.Parse(configuration["Browser:SlowMo"]);
var tracingEnabled = bool.Parse(configuration["Browser:Tracing"]);
var playwright = await Playwright.CreateAsync();
IBrowser browser;
if (browserName.ToLower() == "firefox")
{
browser = await playwright.Firefox.LaunchAsync(new BrowserTypeLaunchOptions { Headless = headless, SlowMo = slowMo });
}
else if (browserName.ToLower() == "webkit")
{
browser = await playwright.Webkit.LaunchAsync(new BrowserTypeLaunchOptions { Headless = headless, SlowMo = slowMo });
}
else
{
browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions { Headless = headless, SlowMo = slowMo });
}
var contextOptions = new BrowserNewContextOptions
{
ViewportSize = new ViewportSize
{
Width = viewportWidth,
Height = viewportHeight
}
};
var context = incognito ? await browser.NewContextAsync(contextOptions) : await browser.NewContextAsync();
var tracingManager = new TracingManager(context, tracingEnabled);
if (tracingEnabled)
{
await tracingManager.StartTracingAsync();
}
var page = await context.NewPageAsync();
return new BrowserWrapper(browser, context, page, tracingManager);
}
}
Код: Выделить всё
public class BaseTest
{
protected IConfiguration Configuration { get; private set; }
protected IBrowserWrapper BrowserWrapper { get; private set; }
[SetUp]
public async Task SetUp()
{
// Load configuration
Configuration = ConfigurationLoader.LoadConfiguration();
// Initialize the browser and page
BrowserWrapper = await BrowserWrapper.CreateAsync(Configuration);
}
}
Что я здесь делаю не так?
Подробнее здесь: https://stackoverflow.com/questions/788 ... thod-accep