DEV Community

Faris Kurnia
Faris Kurnia

Posted on • Edited on

CSS Doom and Modern QA Challenges: Learning Visual Regression and DOM-less Testing from Extreme Experiments


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 GrahamTheDev managed to create in his article "DOOM…rendered using a single div and CSS"

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

👀 What is CSS Doom?

Simply put, it's an implementation of DOOM (yes, that 1993 FPS game) using:

  • A single HTML element
  • Thousands of lines of CSS to create the 3D visual effects
  • No JavaScript or Canvas
  • An extreme experiment, which actually presents new challenges for QA

    🔍 QA Engineer Perspective: What Can We Test?

    Visual Regression Testing

    In projects where all logic is wrapped in visual styles, Visual Regression becomes the main focus:

    1. Tools like Percy, BackstopJS, or Playwright can compare rendering between versions
    2. Experiment: run snapshots in different resolutions, browsers, or even OSes to see rendering "glitches"

    Performance Testing: CSS Rendering Stress
    This game pushes the browser's capabilities hard to:

    1. Render multiple CSS layers
    2. Handle parallax, gradient, and transform effects

    🛠️ Use:

    1. Chrome DevTools (FPS meter, Performance tab)
    2. Lighthouse: especially the Layout Shift & Main Thread Work sections

    Automation Testing in an "Empty" DOM
    Since only 1

    is used:
    1. No regular DOM structure
    2. Can't use data-testid, role, or conventional selectors

    🤔 "This could be a case study: "How do automation tools like Cypress or Playwright adapt when the DOM is so minimal?"

    Accessibility Testing (A11y)
    HTML without semantic structure = a nightmare for screen reader users
    Tools that can be used:

    1. Axe DevTools
    2. Lighthouse Accessibility Audit
    3. NVDA / VoiceOver

    💡 From here, we can discuss the importance of HTML semantics for accessibility QA, even in experimental projects

    AI-Based Visual Comparison
    As a modern QA, we can try:

    1. Use AI models like Applitools Eyes or OpenCV to compare "rendered" frames between versions
    2. Analysis: Can the AI ​​visually distinguish different levels or maps?

    🎓 Educational & Experimental Opportunities
    I see this as an opportunity for founders to host bootcamps in groups or privately:

    1. 🎥 Create a mini-workshop: "Visual Regression 101 via CSS Doom" and, add Comparative study: Rendering vs Performance - CSS-only vs Canvas vs WebGL

    Conclusion

    CSS Doom is not just about CSS genius, but also about:
    How QA can continue to evolve following extreme frontend experiments
    As QA Engineers, we can learn a lot:

    1. The importance of visual regression in the era of dynamic UI
    2. The limitations of automation when DOM is unconventional
    3. The importance of accessibility even in experiments
    4. The opportunity to use AI to detect visual differences

    Closing

    Frontend experiments like this will continue to emerge. The challenge is: can our QA approach be adaptive, creative, and even exploratory?



    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


Top comments (2)

Collapse
 
keshar_chouhan_19 profile image
Keshar Chouhan

Impressive deep dive into modern QA techniques! The concept of DOM-less testing really caught my attention — it's often overlooked but clearly powerful in the right context. We're exploring visual regression at work, and this article gave me great direction.

Would love to hear more about the challenges you faced integrating this with CI/CD pipelines.

Collapse
 
modalqa profile image
Faris Kurnia

When integrating with CI/CD, the main challenge is of course ensuring consistent rendering between local and CI environments, especially when using a headless browser. If I find any other unique cases, I will update here or on Medium. Thanks a lot! for the feedback 🙌