public PuppeteerExtra Use(IPuppeteerExtraPlugin plugin) { ResolveDependencies(plugin); _plugins.Add(plugin); plugin.OnPluginRegistered(); return(this); }
protected async Task <Browser> LaunchWithPluginAsync(IPuppeteerExtraPlugin plugin, LaunchOptions options = null) { var extra = new PuppeteerExtra().Use(plugin); //DownloadChromeIfNotExists(); options ??= CreateDefaultOptions(); var browser = await extra.LaunchAsync(options); _launchedBrowsers.Add(browser); return(browser); }
protected async Task <Page> LaunchAndGetPage(IPuppeteerExtraPlugin plugin = null) { Browser browser = null; if (plugin != null) { browser = await LaunchWithPluginAsync(plugin); } else { browser = await LaunchAsync(); } var page = (await browser.PagesAsync())[0]; return(page); }
private void ResolveDependencies(IPuppeteerExtraPlugin plugin) { if (plugin.Dependencies is null || !plugin.Dependencies.Any()) { return; } var dependencies = plugin.Dependencies.ToList(); foreach (var puppeteerExtraPlugin in dependencies) { Use(puppeteerExtraPlugin); var plugDependencies = puppeteerExtraPlugin.Dependencies?.ToList(); if (plugDependencies != null && plugDependencies.Any()) { plugDependencies.ForEach(ResolveDependencies); } } }