Skip to content
HN
Back to projects

Featured Project

Gaming Website Automation

End-to-end coverage for a content-heavy, highly dynamic product UI.

Automation suite for a gaming-style web platform: login, wallet validation, game search, category navigation and language switching — covering canvas-rendered game tiles, iframes, and UI that re-renders constantly.

PlaywrightTypeScriptPage Object ModelData Driven Testing
Repository link — TODO

Overview

Gaming platforms are one of the harder UI surfaces to automate: canvas-rendered game thumbnails, iframe-embedded game clients, constantly changing promotional content, and multi-language UI. This project focuses on covering the core user journeys reliably despite all of that.

Core Flows Covered

  • Login and session handling
  • Wallet balance validation after simulated transactions
  • Game search (exact match, partial match, no-result states)
  • Category navigation across dynamic, CMS-driven menus
  • Language switching and locale-specific content assertions

Responsive & Mobile Web Testing

Key journeys (login, search, wallet) are validated across desktop and emulated mobile viewports, since layout and touch interactions differ meaningfully on this type of product.

Canvas & iframe Handling

  • Game tiles rendered on canvas are validated through visible state and click coordinates rather than DOM queries.
  • Embedded game clients running inside iframes are accessed through Playwright's frame APIs, with explicit readiness checks before interacting.

Dynamic UI & Flaky Handling

Promotional banners and category lists are CMS-driven and can change between runs, so assertions target structural/behavioral outcomes (e.g. 'search returns matching cards') instead of hard-coded content, keeping tests stable as content changes.

Lessons Learned

  • Canvas UI needs a different testing mental model — assert on behavior and visible state, not DOM structure.
  • Content-driven UIs need content-independent assertions, or tests break every time marketing updates a banner.
  • iframe readiness has to be checked explicitly — auto-waiting inside a frame boundary isn't always enough.