<?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: Faris Kurnia</title>
    <description>The latest articles on DEV Community by Faris Kurnia (@modalqa).</description>
    <link>https://dev.to/modalqa</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%2F2589870%2F47039cd4-4122-4dca-891a-2493f50bd359.jpg</url>
      <title>DEV Community: Faris Kurnia</title>
      <link>https://dev.to/modalqa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/modalqa"/>
    <language>en</language>
    <item>
      <title>Bug Deduplication with AI (Node.js + OpenRouter)</title>
      <dc:creator>Faris Kurnia</dc:creator>
      <pubDate>Wed, 24 Sep 2025 16:52:04 +0000</pubDate>
      <link>https://dev.to/modalqa/bug-deduplication-with-ai-nodejs-openrouter-597o</link>
      <guid>https://dev.to/modalqa/bug-deduplication-with-ai-nodejs-openrouter-597o</guid>
      <description>&lt;p&gt;QA teams often face the same problem: duplicate bug reports. Different test cases fail, but the root cause is actually the same. To cut through the noise, I built a Proof of Concept (PoC) using Node.js + OpenRouter AI to automatically cluster similar failures and suggest root causes&lt;/p&gt;

&lt;h2&gt;
  
  
  Why?
&lt;/h2&gt;

&lt;p&gt;🚫 Less time wasted triaging duplicate bugs&lt;br&gt;
🔍 Faster root cause analysis&lt;br&gt;
🤖 AI-driven clustering &amp;amp; summarization&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;ml-kmeans for clustering&lt;/li&gt;
&lt;li&gt;OpenRouter API (chat model for semantic grouping)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Setup&lt;/strong&gt;&lt;br&gt;
Install dependencies:&lt;br&gt;
&lt;code&gt;npm install node-fetch ml-kmeans dotenv&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Add your API key to .env:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;OPENROUTER_API_KEY=your_api_key_here&lt;br&gt;
CHAT_MODEL=google/gemma-3n-e2b-it:free&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Example snippet:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftl8v2ebnza1ujqkoidgg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftl8v2ebnza1ujqkoidgg.png" alt=" " width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Example result:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9s19zoift95fjzmlnp5y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9s19zoift95fjzmlnp5y.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaways
&lt;/h2&gt;

&lt;p&gt;✅ AI reduces noise from duplicate bugs&lt;br&gt;
✅ Saves QA team time during triage&lt;br&gt;
✅ Extensible to native CI/CD logs&lt;/p&gt;

&lt;p&gt;This is just a PoC, but it shows how AI can make QA workflows smarter. What do you think of this POC? If you have any suggestions, leave a comment&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://medium.com/@niarsdet/bug-deduplication-with-ai-grouping-hundreds-of-failures-into-a-few-original-bugs-a9d321fc4176" rel="noopener noreferrer"&gt;Or if you want to read the full version, you can click here&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>testing</category>
      <category>programming</category>
      <category>productivity</category>
      <category>ai</category>
    </item>
    <item>
      <title>3 Groundbreaking AI Developer Tools That Are Redefining Software Automation</title>
      <dc:creator>Faris Kurnia</dc:creator>
      <pubDate>Sun, 27 Jul 2025 06:24:52 +0000</pubDate>
      <link>https://dev.to/modalqa/3-groundbreaking-ai-developer-tools-that-are-redefining-software-automation-1ng8</link>
      <guid>https://dev.to/modalqa/3-groundbreaking-ai-developer-tools-that-are-redefining-software-automation-1ng8</guid>
      <description>&lt;p&gt;In today's fast-paced software development landscape, the demand for speed, quality, and automation has never been higher. From intelligent task planning to autonomous testing and DevOps orchestration, a new wave of AI-powered tools is emerging, designed not just to assist developers and QA engineers, but to act on their behalf&lt;/p&gt;

&lt;p&gt;In this article, we explore 5 cutting-edge platforms and open-source projects that leverage Large Language Models (LLMs) and agentic frameworks to automate workflows, generate tests, debug code, and manage infrastructure, pushing the boundaries of what's possible with AI in software engineering&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;a href="https://medium.com/@niarsdet/5-groundbreaking-ai-developer-tools-that-are-redefining-software-automation-44502fe06927" rel="noopener noreferrer"&gt;In the full article there are 5 tools discussed as well as feedback from the community, here is the link for medium members&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Plandex - The AI Task Planner for DevOps Automation&lt;br&gt;
GitHub: &lt;a href="https://github.com/plandex-ai/plandex" rel="noopener noreferrer"&gt;plandex-ai/plandex&lt;/a&gt;&lt;br&gt;
Type: Open Source, with 14k stars 💥&lt;/p&gt;

&lt;p&gt;Overview:&lt;br&gt;
Plandex is an open-source agentic framework built for intelligent task planning and execution. It enables the creation of AI agents capable of understanding task chains and running them independently using LLM&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwczlofszxu9423ba55h8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwczlofszxu9423ba55h8.png" alt=" " width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AnyAny.js - CLI Framework for AI Agents&lt;br&gt;
GitHub: &lt;a href="https://github.com/modalqa/anyany.js" rel="noopener noreferrer"&gt;modalqa/anyany.js&lt;/a&gt;&lt;br&gt;
Type: Open Source&lt;/p&gt;

&lt;p&gt;Overview:&lt;br&gt;
AnyAny.js is a prompt-driven CLI framework for building AI agents that can run commands, test flows, and read documentation contextually through a terminal interface&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9zkeszf7gx4qj00eqlbc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9zkeszf7gx4qj00eqlbc.png" alt=" " width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CodeOps AI - Your DevOps Copilot&lt;br&gt;
Website: &lt;a href="https://getcodeops.ai" rel="noopener noreferrer"&gt;https://getcodeops.ai&lt;/a&gt;&lt;br&gt;
Type: Commercial&lt;/p&gt;

&lt;p&gt;Overview:&lt;br&gt;
CodeOps is a DevOps AI assistant that allows teams to operate and observe CI/CD pipelines, analyze logs, and manage infrastructure via natural language prompts&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkp4lh98nhb7y5hoe4prb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkp4lh98nhb7y5hoe4prb.png" alt=" " width="800" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎯 Final Thoughts: AI Agents Are the New DevOps &amp;amp; QA Superpower&lt;br&gt;
These 3 tools represent a growing shift in how developers and testers can delegate repetitive or complex tasks to autonomous AI systems. Whether you're building custom test flows, managing infrastructure, or debugging large applications, these tools can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Increase productivity&lt;/li&gt;
&lt;li&gt;Reduce errors&lt;/li&gt;
&lt;li&gt;Accelerate release cycles&lt;/li&gt;
&lt;li&gt;Enhance quality through deeper analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As the AI-agent ecosystem continues to mature, teams that embrace and experiment with these tools will gain a competitive edge in both innovation and delivery speed&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;a href="https://medium.com/@niarsdet/5-groundbreaking-ai-developer-tools-that-are-redefining-software-automation-44502fe06927" rel="noopener noreferrer"&gt;In the full article there are 5 tools discussed as well as feedback from the community, here is the link for medium members&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>testing</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>QA Assistant Agent with Runner H: Validate Bug Priority from Google Sheets and Send Report via Email</title>
      <dc:creator>Faris Kurnia</dc:creator>
      <pubDate>Mon, 09 Jun 2025 04:29:58 +0000</pubDate>
      <link>https://dev.to/modalqa/qa-assistant-agent-with-runner-h-validate-bug-priority-from-google-sheets-and-send-report-via-email-ekg</link>
      <guid>https://dev.to/modalqa/qa-assistant-agent-with-runner-h-validate-bug-priority-from-google-sheets-and-send-report-via-email-ekg</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/runnerh"&gt;Runner H "AI Agent Prompting" Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built a simple yet impactful &lt;strong&gt;AI QA Assistant Agent&lt;/strong&gt; using Runner H that automatically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accesses a shared Google Sheet containing bug reports&lt;/li&gt;
&lt;li&gt;Analyzes whether each bug description aligns with its assigned priority&lt;/li&gt;
&lt;li&gt;Detects any mismatch or inconsistency&lt;/li&gt;
&lt;li&gt;Summarizes the findings&lt;/li&gt;
&lt;li&gt;Sends the result directly via email to the QA team&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This helps streamline manual QA validation work and promotes consistent prioritization of issues.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;👉 &lt;a href="https://www.loom.com/share/49b5aa14077e4d3da64f8ed1638fb20d?sid=76f974ce-198d-4c99-9e18-95974c75e2a1" rel="noopener noreferrer"&gt;https://www.loom.com/share/49b5aa14077e4d3da64f8ed1638fb20d?sid=76f974ce-198d-4c99-9e18-95974c75e2a1&lt;/a&gt;  &lt;/p&gt;




&lt;h2&gt;
  
  
  How I Used Runner H
&lt;/h2&gt;

&lt;p&gt;Here's how I set up the workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tools Integrated&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Google Sheets (read access)&lt;/li&gt;
&lt;li&gt;Gmail (send report)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Prompt Used&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Access the Google Sheet at this link: https://docs.google.com/spreadsheets/d/1astlWEzpP1FiLOqhojPuMC_Kzdto8zv7Hybr7Oa098A/edit?usp=sharing 
Analyze each row to check if the 'Bug Description' matches the assigned 'Priority' level appropriately. 
For any mismatch or inconsistency, list the row number, bug description, and explanation. 
Then, email the result to testing.niar@gmail.com with the subject: 'Bug-Priority Validation Report'.
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Logic Flow (MermaidJS)&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flowchart TD
    A[Access Google Sheet] --&amp;gt; B[For Each Row: Analyze Bug Description vs Priority]
    B --&amp;gt; C{Is Priority Appropriate?}
    C -- No --&amp;gt; D[Add to Report]
    C -- Yes --&amp;gt; E[Skip to Next Row]
    D --&amp;gt; B
    E --&amp;gt; B
    B --&amp;gt;|All Rows Processed| F[Summarize Result]
    F --&amp;gt; G[Send Email with Result]
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Execution&lt;/strong&gt;: Runner H parsed and ran the above logic in one smooth flow with no custom code needed.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Use Case &amp;amp; Impact
&lt;/h2&gt;

&lt;p&gt;🎯 &lt;strong&gt;Use Case&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
This agent is designed for &lt;strong&gt;QA Teams&lt;/strong&gt;, &lt;strong&gt;Project Managers&lt;/strong&gt;, or &lt;strong&gt;Bug Triage Committees&lt;/strong&gt; who want to validate if developers/testers are assigning appropriate priority levels based on bug severity.&lt;/p&gt;

&lt;p&gt;🚀 &lt;strong&gt;Impact&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Saves time from manually reviewing each entry&lt;/li&gt;
&lt;li&gt;Ensures alignment in issue prioritization&lt;/li&gt;
&lt;li&gt;Prevents "low priority critical bugs" slipping through&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👤 &lt;strong&gt;Who Benefits&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;QA Engineers
&lt;/li&gt;
&lt;li&gt;Product Owners
&lt;/li&gt;
&lt;li&gt;Agile teams who manage large-scale issue tracking via shared spreadsheets&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Please like, comment, or share if you find this useful! ❤️&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Thanks to Runner H and DEV for enabling makers to build no-code intelligent automation this easily!&lt;/p&gt;

</description>
      <category>agents</category>
      <category>runnerh</category>
      <category>runnerhcontest</category>
      <category>automation</category>
    </item>
    <item>
      <title>Exploring QA Opportunities &amp; Challenges When Transition from HTMX to HMPL.js</title>
      <dc:creator>Faris Kurnia</dc:creator>
      <pubDate>Sat, 07 Jun 2025 07:39:03 +0000</pubDate>
      <link>https://dev.to/modalqa/exploring-qa-opportunities-challenges-when-transition-from-htmx-to-hmpljs-586k</link>
      <guid>https://dev.to/modalqa/exploring-qa-opportunities-challenges-when-transition-from-htmx-to-hmpljs-586k</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This article was inspired by &lt;a href="https://dev.to/anthonymax/i-replaced-the-htmx-in-the-project-to-this-module-56bc"&gt;Anthony Max&lt;/a&gt; discussing replacing HTMX with a new module called HMPL.js. From a QA Engineer’s POV, there are many important lessons to be learned from this approach&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;What is HTMX and HMPL.js?&lt;/strong&gt;&lt;br&gt;
HTMX is a frontend library that allows page manipulation via HTML attributes such as “hx-post”, “hx-target”, and “hx-swap” without writing explicit JavaScript. HTMX uses “XMLHttpRequest” as the main engine behind its AJAX&lt;/p&gt;

&lt;p&gt;&lt;a href="https://hmpl-lang.dev/" rel="noopener noreferrer"&gt;HMPL.js&lt;/a&gt; is a modern alternative. It uses a fetch API based approach and pure JavaScript to handle requests and responses, as well as templating using {{ … }} placeholders.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;And, after reading the article by Anthony Max, I started to see the approach in a different light — especially as a QA Engineer. There are a lot of interesting things that come up, both in terms of technical challenges and quality improvement opportunities, that are worth discussing briefly but deep!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Opportunities For QA Engineer&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;More Control Over Testing&lt;/strong&gt;, HMPL uses fetch explicitly, so QA can easily:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install mocks/interceptors (using MSW or Playwright)&lt;/li&gt;
&lt;li&gt;Test payloads and headers with precision&lt;/li&gt;
&lt;li&gt;Simulate error handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;JavaScript Skill Development&lt;/strong&gt;, The transition to HMPL provides an opportunity to deepen understanding of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Async/await&lt;/li&gt;
&lt;li&gt;Fetch API &amp;amp; Error Handling&lt;/li&gt;
&lt;li&gt;Dynamic DOM Manipulation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Early Involvement in Technical Decisions&lt;/strong&gt;, As a QA, you can be more active in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Determining testable structures&lt;/li&gt;
&lt;li&gt;Developing testing strategies based on full control on the JS side&lt;/li&gt;
&lt;li&gt;Providing input early on in frontend architecture development&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Challenges to Anticipate&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Lack of Documentation &amp;amp; Community&lt;/strong&gt;, HMPL is still relatively new. This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Few references&lt;/li&gt;
&lt;li&gt;Minimal best practices&lt;/li&gt;
&lt;li&gt;Must do a lot of self-exploration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Testing Complexity Increases&lt;/strong&gt;, As logic moves from HTML to JavaScript, QA needs to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read JS code to trace request flow&lt;/li&gt;
&lt;li&gt;Understand response structure &amp;amp; target DOM&lt;/li&gt;
&lt;li&gt;Anticipate race conditions and async rendering&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Hidden Bug Risk&lt;/strong&gt;, Error handling can be overlooked&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dynamic DOM structures are prone to selector breaks&lt;/li&gt;
&lt;li&gt;API response schemas need explicit validation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Based on my opinion above and after exploring some additional references, I realized that the case studies that are worth considering are as follows:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sample case&lt;/strong&gt;&lt;br&gt;
Context: A frontend team replaced HTML with HMPL on a user registration form to be more flexible in processing data and handling custom validation&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technical Changes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTMX originally used &lt;strong&gt;hx-post=”/register”&lt;/strong&gt; directly in the form tag.&lt;/li&gt;
&lt;li&gt;In HMPL, the form is rebuilt with a JavaScript “&lt;strong&gt;onSubmit&lt;/strong&gt;” handler, which uses &lt;strong&gt;fetch(‘/register’, { method: ‘POST’, body: JSON.stringify(…) })&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Challenge&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Need to rewrite test script that previously only checked for automatic DOM changes from HTML&lt;/li&gt;
&lt;li&gt;Need to validate fetch payload contents manually&lt;/li&gt;
&lt;li&gt;Create new test scenario for 422 error response and its handling in JavaScript&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using Mock Service Worker (MSW) to fake server response, if needed&lt;/li&gt;
&lt;li&gt;Adding assertion to JSON request structure&lt;/li&gt;
&lt;li&gt;Simulating error response and validating error message rendering in form&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;QA gets full visibility into a form’s data flow&lt;/li&gt;
&lt;li&gt;Test automation becomes more resilient to markup changes&lt;/li&gt;
&lt;li&gt;Developers and QA work more closely together because the flow is no longer “hidden” in HTML attributes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HMPL offers high flexibility for development teams, but demands more technical and adaptive QA. So if you are a QA Engineer who wants to level up and be relevant in modern architecture, understanding the transition from HTMX to HMPL is a very valuable opportunity and worth trying or learning more deeply&lt;/p&gt;

</description>
      <category>testing</category>
      <category>javascript</category>
      <category>discuss</category>
      <category>webdev</category>
    </item>
    <item>
      <title>CSS Doom and Modern QA Challenges: Learning Visual Regression and DOM-less Testing from Extreme Experiments</title>
      <dc:creator>Faris Kurnia</dc:creator>
      <pubDate>Thu, 15 May 2025 04:23:25 +0000</pubDate>
      <link>https://dev.to/modalqa/css-doom-and-modern-qa-challenges-learning-visual-regression-and-dom-less-testing-from-extreme-2hik</link>
      <guid>https://dev.to/modalqa/css-doom-and-modern-qa-challenges-learning-visual-regression-and-dom-less-testing-from-extreme-2hik</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5q5ef9o1clvx5dytr43p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5q5ef9o1clvx5dytr43p.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Imagine the classic game DOOM running in the browser, not with JavaScript, WebGL, or Canvas, but with just a single "div" and CSS. It sounds impossible, but that's exactly what &lt;a href="https://dev.to/grahamthedev"&gt;GrahamTheDev&lt;/a&gt; managed to create in his article "&lt;a href="https://dev.to/grahamthedev/doomrendered-using-a-single-div-and-css-1fal"&gt;DOOM…rendered using a single div and CSS&lt;/a&gt;"&lt;/p&gt;

&lt;p&gt;As a QA Engineer, I see this experimental project not only as frontend art, but also as an experimental ground to test modern testing capabilities, especially in the era of an increasingly visual, dynamic, and unconventional web&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;👀 What is CSS Doom?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Simply put, it's an implementation of DOOM (yes, that 1993 FPS game) using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A single HTML  element
&lt;/li&gt;
&lt;li&gt;Thousands of lines of CSS to create the 3D visual effects&lt;/li&gt;
&lt;li&gt;No JavaScript or Canvas&lt;/li&gt;


&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;An extreme experiment, which actually presents new challenges for QA&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;🔍 QA Engineer Perspective: What Can We Test?&lt;/strong&gt;


&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Visual Regression Testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In projects where all logic is wrapped in visual styles, Visual Regression becomes the main focus:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tools like Percy, BackstopJS, or Playwright can compare rendering between versions&lt;/li&gt;
&lt;li&gt;Experiment: run snapshots in different resolutions, browsers, or even OSes to see rendering "glitches"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Performance Testing: CSS Rendering Stress&lt;/strong&gt;&lt;br&gt;
This game pushes the browser's capabilities hard to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Render multiple CSS layers&lt;/li&gt;
&lt;li&gt;Handle parallax, gradient, and transform effects&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🛠️ Use:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Chrome DevTools (FPS meter, Performance tab)&lt;/li&gt;
&lt;li&gt;Lighthouse: especially the Layout Shift &amp;amp; Main Thread Work sections&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Automation Testing in an "Empty" DOM&lt;/strong&gt;&lt;br&gt;
Since only 1 &lt;/p&gt; is used:

&lt;ol&gt;
&lt;li&gt;No regular DOM structure&lt;/li&gt;
&lt;li&gt;Can't use data-testid, role, or conventional selectors&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🤔 &lt;em&gt;&lt;strong&gt;"This could be a case study: "How do automation tools like Cypress or Playwright adapt when the DOM is so minimal?"&lt;/strong&gt;&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accessibility Testing (A11y)&lt;/strong&gt;&lt;br&gt;
HTML without semantic structure = a nightmare for screen reader users&lt;br&gt;
Tools that can be used:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Axe DevTools&lt;/li&gt;
&lt;li&gt;Lighthouse Accessibility Audit&lt;/li&gt;
&lt;li&gt;NVDA / VoiceOver&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;💡 From here, we can discuss the importance of HTML semantics for accessibility QA, even in experimental projects&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI-Based Visual Comparison&lt;/strong&gt;&lt;br&gt;
As a modern QA, we can try:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use AI models like Applitools Eyes or OpenCV to compare "rendered" frames between versions&lt;/li&gt;
&lt;li&gt;Analysis: Can the AI ​​visually distinguish different levels or maps?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;🎓 Educational &amp;amp; Experimental Opportunities&lt;/strong&gt;&lt;br&gt;
I see this as an opportunity for founders to host bootcamps in groups or privately:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;🎥 Create a mini-workshop: "Visual Regression 101 via CSS Doom" and, add Comparative study: Rendering vs Performance - CSS-only vs Canvas vs WebGL&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;CSS Doom is not just about CSS genius, but also about:&lt;br&gt;
How QA can continue to evolve following extreme frontend experiments&lt;br&gt;
As QA Engineers, we can learn a lot:&lt;br&gt;
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The importance of visual regression in the era of dynamic UI&lt;/li&gt;
&lt;li&gt;The limitations of automation when DOM is unconventional&lt;/li&gt;
&lt;li&gt;The importance of accessibility even in experiments&lt;/li&gt;
&lt;li&gt;The opportunity to use AI to detect visual differences&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;Frontend experiments like this will continue to emerge. The challenge is: can our QA approach be adaptive, creative, and even exploratory?&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
If you're a QA who wants to explore beyond just clicking and verifying, a project like CSS Doom can be a fun, yet challenging, starting point&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;/ul&gt;

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