Best Puppeteer-sharp code snippet using PuppeteerSharp.Tracing.StopAsync
Program.cs
Source:Program.cs  
...91                92                var page = await browser.NewPageAsync().ConfigureAwait(false);93                94                //await page.Tracing.StartAsync(new TracingOptions { Path = "" }).ConfigureAwait(false);95                //await page.Tracing.StopAsync().ConfigureAwait(false);96                //await page.CloseAsync().ConfigureAwait(false);97                var tryLimit = 30;98                var currentTry = 0;99                while (currentTry < tryLimit)100                {101                    while (links.TryDequeue(out var nextUrl))102                    {103                        currentTry = 0;104                        try105                        {106                            logger.LogInformation("{threadId} Getting url {nextUrl}", threadId, nextUrl);107                            Response? pageNav = null;108                            var tries = 0;109                            do...Scrape.cs
Source:Scrape.cs  
...56                });57                var client = await page.Target.CreateCDPSessionAsync();58                await client.SendAsync("Network.clearBrowserCache");59                await page.GoToAsync(url, timeout: 0);60                string rawTrace = await page.Tracing.StopAsync();61                string content = await page.GetContentAsync();62                //Image63                var imageElements = await page.QuerySelectorAllAsync("img");64                if (imageElements != null)65                {66                    imageCount = imageElements.Count();67                    imageProperties = await new ImageHelper().GetImageData(imageElements);68                }69                await browser.CloseAsync();70                //Trace71                traces = new TraceHelper().GetTraceData(rawTrace);72                Uri requestUri = new Uri(url);73                string host = requestUri.Host;74                HtmlDocument doc = new HtmlDocument();...TracingTests.cs
Source:TracingTests.cs  
...55                Screenshots = true,56                Path = _file57            });58            await Page.GoToAsync(TestConstants.ServerUrl + "/grid.html");59            await Page.Tracing.StopAsync();60            Assert.True(File.Exists(_file));61        }62        [PuppeteerTest("tracing.spec.ts", "Tracing", "should run with custom categories if provided")]63        [SkipBrowserFact(skipFirefox: true)]64        public async Task ShouldRunWithCustomCategoriesProvided()65        {66            await Page.Tracing.StartAsync(new TracingOptions67            {68                Screenshots = true,69                Path = _file,70                Categories = new List<string>71                {72                    "disabled-by-default-v8.cpu_profiler.hires"73                }74            });75            await Page.Tracing.StopAsync();76            using (var file = File.OpenText(_file))77            using (var reader = new JsonTextReader(file))78            {79                var traceJson = JToken.ReadFrom(reader);80                Assert.Contains("disabled-by-default-v8.cpu_profiler.hires", traceJson["metadata"]["trace-config"].ToString());81            }82        }83        [PuppeteerTest("tracing.spec.ts", "Tracing", "should throw if tracing on two pages")]84        [SkipBrowserFact(skipFirefox: true)]85        public async Task ShouldThrowIfTracingOnTwoPages()86        {87            await Page.Tracing.StartAsync(new TracingOptions88            {89                Path = _file90            });91            var newPage = await Browser.NewPageAsync();92            await Assert.ThrowsAsync<InvalidOperationException>(async () =>93            {94                await Page.Tracing.StartAsync(new TracingOptions95                {96                    Path = _file97                });98            });99            await newPage.CloseAsync();100            await Page.Tracing.StopAsync();101        }102        [PuppeteerTest("tracing.spec.ts", "Tracing", "should return a buffer")]103        [SkipBrowserFact(skipFirefox: true)]104        public async Task ShouldReturnABuffer()105        {106            await Page.Tracing.StartAsync(new TracingOptions107            {108                Screenshots = true,109                Path = _file110            });111            await Page.GoToAsync(TestConstants.ServerUrl + "/grid.html");112            var trace = await Page.Tracing.StopAsync();113            var buf = File.ReadAllText(_file);114            Assert.Equal(trace, buf);115        }116        [PuppeteerTest("tracing.spec.ts", "Tracing", "should work without options")]117        [SkipBrowserFact(skipFirefox: true)]118        public async Task ShouldWorkWithoutOptions()119        {120            await Page.Tracing.StartAsync();121            await Page.GoToAsync(TestConstants.ServerUrl + "/grid.html");122            var trace = await Page.Tracing.StopAsync();123            Assert.NotNull(trace);124        }125        [PuppeteerTest("tracing.spec.ts", "Tracing", "should support a buffer without a path")]126        [SkipBrowserFact(skipFirefox: true)]127        public async Task ShouldSupportABufferWithoutAPath()128        {129            await Page.Tracing.StartAsync(new TracingOptions130            {131                Screenshots = true132            });133            await Page.GoToAsync(TestConstants.ServerUrl + "/grid.html");134            var trace = await Page.Tracing.StopAsync();135            Assert.Contains("screenshot", trace);136        }137    }138}...Tracing.cs
Source:Tracing.cs  
...5using PuppeteerSharp.Messaging;6namespace PuppeteerSharp7{8    /// <summary>9    /// You can use <see cref="Tracing.StartAsync(TracingOptions)"/> and <see cref="Tracing.StopAsync"/> to create a trace file which can be opened in Chrome DevTools or timeline viewer.10    /// </summary>11    /// <example>12    /// <code>13    /// await Page.Tracing.StartAsync(new TracingOptions14    /// {15    ///     Screenshots = true,16    ///     Path = _file17    /// });18    /// await Page.GoToAsync(TestConstants.ServerUrl + "/grid.html");19    /// await Page.Tracing.StopAsync();20    /// </code>21    /// </example>22    public class Tracing23    {24        private readonly CDPSession _client;25        private bool _recording;26        private string _path;27        private static readonly List<string> _defaultCategories = new List<string>()28        {29            "-*",30            "devtools.timeline",31            "v8.execute",32            "disabled-by-default-devtools.timeline",33            "disabled-by-default-devtools.timeline.frame",34            "toplevel",35            "blink.console",36            "blink.user_timing",37            "latencyInfo",38            "disabled-by-default-devtools.timeline.stack",39            "disabled-by-default-v8.cpu_profiler"40        };41        internal Tracing(CDPSession client)42        {43            _client = client;44        }45        /// <summary>46        /// Starts tracing.47        /// </summary>48        /// <returns>Start task</returns>49        /// <param name="options">Tracing options</param>50        public async Task StartAsync(TracingOptions options)51        {52            if (_recording)53            {54                throw new InvalidOperationException("Cannot start recording trace while already recording trace.");55            }5657            if (string.IsNullOrEmpty(options.Path))58            {59                throw new ArgumentException("Must specify a path to write trace file to.");60            }616263            var categories = options.Categories ?? _defaultCategories;6465            if (options.Screenshots)66            {67                categories.Add("disabled-by-default-devtools.screenshot");68            }6970            _path = options.Path;71            _recording = true;7273            await _client.SendAsync("Tracing.start", new74            {75                transferMode = "ReturnAsStream",76                categories = string.Join(", ", categories)77            });78        }7980        /// <summary>81        /// Stops tracing82        /// </summary>83        /// <returns>Stop task</returns>84        public async Task StopAsync()85        {86            var taskWrapper = new TaskCompletionSource<bool>();8788            async void EventHandler(object sender, TracingCompleteEventArgs e)89            {90                await ReadStream(e.Stream, _path);91                _client.TracingComplete -= EventHandler;92                taskWrapper.SetResult(true);93            }9495            _client.TracingComplete += EventHandler;9697            await _client.SendAsync("Tracing.end");98
...StopAsync
Using AI Code Generation
1using System;2using System.Threading.Tasks;3using PuppeteerSharp;4{5    {6        static async Task Main(string[] args)7        {8            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);9            using (var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = false }))10            using (var page = await browser.NewPageAsync())11            {12                var client = await page.Target.CreateCDPSessionAsync();13                var tracing = await Tracing.CreateAsync(client);14                await tracing.StartAsync(new TracingOptions { screenshots = true, categories = new string[] { "devtools.timeline" } });15                await tracing.StopAsync(new TracingOptions { path = "trace.json" });16            }17        }18    }19}20Recommended Posts: PuppeteerSharp | PuppeteerSharp.Page.ScreenshotStreamAsync()21PuppeteerSharp | PuppeteerSharp.Page.ScreenshotDataAsync()22PuppeteerSharp | PuppeteerSharp.Page.ScreenshotAsync()23PuppeteerSharp | PuppeteerSharp.Page.ScreenshotAsync()24PuppeteerSharp | PuppeteerSharp.Page.PdfStreamAsync()25PuppeteerSharp | PuppeteerSharp.Page.PdfDataAsync()26PuppeteerSharp | PuppeteerSharp.Page.PdfAsync()27PuppeteerSharp | PuppeteerSharp.Page.PdfAsync()28PuppeteerSharp | PuppeteerSharp.Page.AddScriptTagAsync()29PuppeteerSharp | PuppeteerSharp.Page.AddStyleTagAsync()30PuppeteerSharp | PuppeteerSharp.Page.BringToFrontAsync()31PuppeteerSharp | PuppeteerSharp.Page.ClickAsync()32PuppeteerSharp | PuppeteerSharp.Page.CloseAsync()33PuppeteerSharp | PuppeteerSharp.Page.EvaluateExpressionAsync()34PuppeteerSharp | PuppeteerSharp.Page.EvaluateFunctionAsync()35PuppeteerSharp | PuppeteerSharp.Page.EvaluateFunctionHandleAsync()36PuppeteerSharp | PuppeteerSharp.Page.EvaluateHandleAsync()37PuppeteerSharp | PuppeteerSharp.Page.EvaluateOnNewDocumentAsync()38PuppeteerSharp | PuppeteerSharp.Page.EvaluateOnSelectorAsync()39PuppeteerSharp | PuppeteerSharp.Page.EvaluateOnSelectorAllAsync()40PuppeteerSharp | PuppeteerSharp.Page.FocusAsync()StopAsync
Using AI Code Generation
1using System;2using System.Threading.Tasks;3using PuppeteerSharp;4{5    {6        static async Task Main(string[] args)7        {8            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);9            var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = false });10            var page = await browser.NewPageAsync();11            var client = await page.Target.CreateCDPSessionAsync();12            var tracing = await client.SendAsync("Tracing.start", new { });13            await Task.Delay(5000);14            var result = await client.SendAsync("Tracing.end", new { });15            var trace = result.As<TracingResult>();16            await File.WriteAllBytesAsync("trace.json", trace.Data);17            await browser.CloseAsync();18        }19    }20}21using System;22using System.Threading.Tasks;23using PuppeteerSharp;24{25    {26        static async Task Main(string[] args)27        {28            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);29            var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = false });30            var page = await browser.NewPageAsync();31            var tracing = await page.Tracing.StartAsync(new TracingOptions { Categories = new[] { "devtools.timeline" } });32            await Task.Delay(5000);33            await page.Tracing.StopAsync(new TracingResultOptions { Path = "trace.json" });34            await browser.CloseAsync();35        }36    }37}38using System;39using System.Threading.Tasks;40using PuppeteerSharp;41{42    {43        static async Task Main(string[] args)44        {45            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);46            var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = false });47            var page = await browser.NewPageAsync();48            var tracing = await page.Tracing.StartAsync(new TracingOptions { Categories = newStopAsync
Using AI Code Generation
1using (var browser = await Puppeteer.LaunchAsync(new LaunchOptions2{3}))4{5    var page = await browser.NewPageAsync();6    var client = await page.Target.CreateCDPSessionAsync();7    await client.SendAsync("Page.startScreencast", new { format = "png", everyNthFrame = 1 });8    await client.SendAsync("Page.enable");9    await client.SendAsync("Page.startScreencast", new { format = "png", everyNthFrame = 1 });10    await page.WaitForSelectorAsync("input[name='q']");11    await page.TypeAsync("input[name='q']", "Puppeteer");12    await page.WaitForTimeoutAsync(5000);13    var tracing = await page.Tracing.StartAsync(new TracingOptions14    {15        Categories = new string[] { "devtools.timeline" }16    });17    await page.ClickAsync("input[name='btnK']");18    await page.WaitForTimeoutAsync(5000);19    await tracing.StopAsync();20    await browser.CloseAsync();21}StopAsync
Using AI Code Generation
1using System;2using System.Threading.Tasks;3using PuppeteerSharp;4{5    {6        static void Main(string[] args)7        {8            MainAsync().GetAwaiter().GetResult();9        }10        static async Task MainAsync()11        {12            var options = new LaunchOptions { Headless = false };13            using (var browser = await Puppeteer.LaunchAsync(options))14            using (var page = await browser.NewPageAsync())15            {16                var tracing = await page.Tracing.StartAsync(new TracingOptions17                {18                });19                await tracing.StopAsync();20            }21        }22    }23}StopAsync
Using AI Code Generation
1using PuppeteerSharp;2using System;3using System.Threading.Tasks;4{5    {6        static async Task Main(string[] args)7        {8            Console.WriteLine("Hello World!");9            var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = false });10            var page = await browser.NewPageAsync();11            var tracing = await page.Tracing.StartAsync(new TracingOptions { Path = "trace.json" });12            await tracing.StopAsync();13            await browser.CloseAsync();14            Console.WriteLine("Done");15        }16    }17}StopAsync
Using AI Code Generation
1using System;2using System.Threading.Tasks;3using PuppeteerSharp;4{5    {6        static async Task Main(string[] args)7        {8            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);9            using (var browser = await Puppeteer.LaunchAsync(new LaunchOptions10            {11                Args = new string[] { "--no-sandbox" }12            }))13            {14                using (var page = await browser.NewPageAsync())15                {16                    await page.ScreenshotAsync("google.png");17                }18            }19            await Tracing.StopAsync("trace.json");20        }21    }22}23using System;24using System.Threading.Tasks;25using PuppeteerSharp;26{27    {28        static async Task Main(string[] args)29        {30            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);31            using (var browser = await Puppeteer.LaunchAsync(new LaunchOptions32            {33                Args = new string[] { "--no-sandbox" }34            }))35            {36                using (var page = await browser.NewPageAsync())37                {38                    await Tracing.StartAsync(new TracingOptions39                    {40                    });41                    await page.ScreenshotAsync("google.png");42                }43            }44            await Tracing.StopAsync();45        }46    }47}48using System;49using System.Threading.Tasks;50using PuppeteerSharp;51{52    {53        static async Task Main(string[] args)54        {55            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);56            using (var browser = await Puppeteer.LaunchAsync(new LaunchOptions57            {58                Args = new string[] { "--no-sandbox" }59            }))Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
