<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Hiralasa</title>
    <description>The latest articles on DEV Community by Hiralasa (@yui058766).</description>
    <link>https://dev.to/yui058766</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3978639%2F15d021de-ab44-4513-9db2-a3738fdbcfe3.png</url>
      <title>DEV Community: Hiralasa</title>
      <link>https://dev.to/yui058766</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yui058766"/>
    <language>en</language>
    <item>
      <title>I automated my Gumroad product screenshots with Playwright</title>
      <dc:creator>Hiralasa</dc:creator>
      <pubDate>Thu, 11 Jun 2026 03:32:26 +0000</pubDate>
      <link>https://dev.to/yui058766/i-automated-my-gumroad-product-screenshots-with-playwright-5518</link>
      <guid>https://dev.to/yui058766/i-automated-my-gumroad-product-screenshots-with-playwright-5518</guid>
      <description>&lt;p&gt;I automated my Gumroad product screenshots with Playwright&lt;/p&gt;

&lt;p&gt;I recently started packaging a few small frontend projects as digital products, and one surprisingly annoying part was preparing product screenshots.&lt;/p&gt;

&lt;p&gt;Manual screenshots quickly became messy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;different browser sizes&lt;/li&gt;
&lt;li&gt;inconsistent cropping&lt;/li&gt;
&lt;li&gt;blurry images&lt;/li&gt;
&lt;li&gt;mobile screenshots were easy to get wrong&lt;/li&gt;
&lt;li&gt;Gumroad needed a square thumbnail&lt;/li&gt;
&lt;li&gt;every update meant taking screenshots again&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I built a small local screenshot workflow with Next.js and Playwright.&lt;/p&gt;

&lt;p&gt;The workflow captures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;desktop screenshots&lt;/li&gt;
&lt;li&gt;mobile screenshots&lt;/li&gt;
&lt;li&gt;square thumbnail images&lt;/li&gt;
&lt;li&gt;consistent PNG outputs&lt;/li&gt;
&lt;li&gt;route status checks&lt;/li&gt;
&lt;li&gt;basic console error reporting&lt;/li&gt;
&lt;li&gt;basic horizontal overflow checks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The basic command flow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run build
npm run start
npm run screenshots
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The script reads a simple config file, opens the configured local routes, captures each screenshot with consistent viewport settings, and exports the images into a predictable folder.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;screenshots/gumroad/
  landing.png
  dashboard.png
  template-preview.png
  mobile-preview.png
  thumbnail.png
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I found this especially useful when preparing Gumroad product galleries, because I could regenerate all product images after every UI change instead of taking screenshots manually.&lt;/p&gt;

&lt;p&gt;This is not a hosted screenshot service. It is just a local source-code workflow for people who want to generate product screenshots from their own Next.js pages.&lt;/p&gt;

&lt;p&gt;I packaged the workflow as a small Gumroad product here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://remix410.gumroad.com/l/screenshot-automation-kit" rel="noopener noreferrer"&gt;https://remix410.gumroad.com/l/screenshot-automation-kit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Curious how other developers handle product screenshots. Do you take them manually, use Playwright/Puppeteer, or use a design tool workflow?&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>webdev</category>
      <category>playwright</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
