6 ms·
Oh, I didn't know this existed. Definitely going to try this. I'm currently using Puppeteer Sharp (https://github.com/hardkoded/puppeteer-sharp https://github.c
by philliphaydon 5y ago
Oh, I didn't know this existed. Definitely going to try this. I'm currently using Puppeteer Sharp (https://github.com/hardkoded/puppeteer-sharp https://github.com/hardkoded/puppeteer-sharp) and something like:
> await page.GotoAsync("https://playwright.dev/dotnet"); https://playwright.dev/dotnet");
> await page.ScreenshotAsync(new PageScreenshotOptions() { Path = "screenshot.png" });
Is broken, if you have background images in CSS the screenshot happens after Page Load is completed but before all CSS images are loaded so you end up not getting backgrounds in the screenshot. The only solution is to try add a delay before taking the screen grab, and it there's any sort of latency then the delay could result in not getting a good screenshot...
- MauroIksem 5y agoHave you tried selinium and phantomjs headless ? I was using that a few years ago and it worked very well.
- philliphaydon 5y agoI couldn't get it working in an AWS Lambda. May work now but I haven't had time this year to re-visit that project.
- caseymarquis 5y agoAssuming those run a container? With puppeteer on Heroku, I had to install chrome as part of the container, then pass it no-sandbox on startup. I'd guess you'd need something similar with chrome (I'm on mobile, so excuse the formatting): #Install Chrome for Puppeteer: RUN curl -LO https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb RUN apt-get update -y RUN apt-get install -y ./google-chrome-stable_current_amd64.deb RUN rm google-chrome-stable_current_amd64.deb ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome-stable browser = await Puppeteer.LaunchAsync( new LaunchOptions { //If we're debugging, then open actual chrome: Headless = !Debugger.IsAttached, Args = new string[] { "--no-sandbox" }, });
- philliphaydon 5y agoI can run puppeteer in a Lambda fine, it's just that when you navigate to a webpage with a background loaded as a css image it doesn't wait for that to load before taking the screen grab. :( https://github.com/puppeteer/puppeteer/issues/4046 https://github.com/puppeteer/puppeteer/issues/4046
- hbcondo714 5y agoCould be the same reason why this doesn't work as an Azure Function either: https://github.com/microsoft/playwright-dotnet/issues/1076 https://github.com/microsoft/playwright-dotnet/issues/1076
- lloydatkinson 5y agoPhtantomJS was abandoned officially a long time ago because of all these new and better tools. Selenium is a source of constant bugs and misery - it's truly a waste of time maintaining its usage in a codebase because randomly sometimes tests fail. The C# wrapper for it is even worse, as it does not follow the idioms of C# and is a straight 1:1 port from the Java version. Highlights include getting exceptions from properties when you hover over them during debug in Visual Studio.
- tester34 5y agoit reflects my experience rerunning tests because always a few of them fail on first run but I noticed that the biggest reason was that often my browser was a little ahead when it comes to version than engine, and after updating both of them the situation was a kinda better. Anyway I don't recommend Selenium, it wastes too much time
- lbriner 5y agoSelenium is still very flaky. We have almost zero problems with playwright except where we made the mistake. On the other hand, we get all sorts of weird glitches with Selenium and often have to re-run tests for them to pass with no other changes.
- Rapzid 5y agoI have built selenium test harnesses using webdriverjs and Jest as the runner at my two most recent jobs. Been using the webdriverjs 4 alpha which has/had been in progress forever. I've never had a flakey-ness issue that was the fault of selenium. I don't understand why it doesn't get more love and support. You can build higher level testing frameworks right on top of it.
- tren 5y agoSame guy does playwright sharp, he should really have more supporters
- philliphaydon 5y agoOH WOW! I had no idea! Yeah he does deserve more support. I still donno why MS can't contribute to projects directly. But I'm happy there's another possible solution to my problem.
- 9wzYQbTYsAIc 5y ago.NET Foundation is where a lot of the contribution back to the community happens, I believe.
- pjerem 5y agoI'm using Playwright right now, migrating horrendous Selenium tests at work and it's a real breeze of fresh air. It just works, it comes battery included with superb debugging tools (step by step execution directly in the browser, trace dumping for further analysis, reliable interactions recorder with pretty decent code generation ...). It's an amazing piece of software for a domain that was kept on the side of the road for years. If you already tried Cypress, then it's Cypress but with true multiple browser support, available in 4 languages, without the bloat and a cleaner and more idiomatic API.
- polskibus 5y agoIs it less flaky than Cypress? We're constantly running into Cypress bugs, when we find a workaround for one, two more show up.
- lucasmullens 5y agoIn my experience yes. We ran into a Cypress bug that was bad enough that we just switched to Playwright and it works great.
- leaveyou 5y agoyou need to put this before the Screenshot ? await page.WaitForLoadStateAsync(LoadState.NetworkIdle);
- philliphaydon 5y agoI’ll give it a go thanks.
- starik36 5y agoAs others mentioned, the same guy is involved in Playwright. One thing I wanted to mention is that he is extremely responsive. I posted several issues a number of years ago and he fixed them pronto. And even dug into the underlying Chromium issues.
- philliphaydon 5y agoYeah he’s good. Helped me with an issue I had. The particular issue I have is actually in puppeteer. But I need a .net library so that’s why I mentioned it. Not trying to downplay his project cos it’s actually really good.