Testing/E2E: Guides and Practical Know-how | Page 8 | mironsoft Blog
Testing/E2E
-
Dec 10, 2025
A GraphQL resolver that combines database queries, validation, permission checks and transformation logic in a single class is no longer a resolver, it is an unbounded mini-service. This article shows how to keep resolvers thin, introduce clear layers, and move business logic to where it actually belongs.
-
Dec 8, 2025
Stabilizing E2E tests with page.waitForTimeout or fixed sleep calls only fights symptoms instead of causes. Before every action, Playwright automatically checks whether an element is visible, stable, enabled and actually clickable, and repeats this check until it passes or a timeout is reached. This article shows how these actionability checks work, why fixed wait times mask flakiness instead of fixing it, and how to precisely diagnose timeout errors with the Trace Viewer.
-
Dec 7, 2025
A Bash script that runs cleanly on your own machine can fail on the target system because it runs a different coreutils version, is missing a tool, or ships a different Bash version. Docker test containers make these differences reproducibly visible and can be reused across the CI pipeline instead of being rebuilt from scratch on every run.
-
Dec 7, 2025
MFTF automates exactly the class of bugs that unit tests systematically miss: broken checkout flows, faulty JavaScript interactions and admin forms that suddenly stop saving after an update. Whoever sets up MFTF properly gets a browser driven safety net that replays real click paths in storefront and backend automatically and catches regressions before customers do.
-
Dec 4, 2025
An HTTP security header such as the Content Security Policy or the X-Frame-Options header usually gets carefully configured once, often as part of a security audit, and then barely gets touched again. This exact calm turns into a trap the moment a later web server refactor, a new CDN, or a changed Nginx configuration accidentally shortens, removes, or misconfigures the header, since normal storefront operation gives nobody an immediate signal that a protection mechanism has silently vanished. Adding a fixed assertion for the most important security headers to the existing end-to-end test suite instead lets such a regression surface at the very next test run, long before it turns into a real security problem in production.
-
Dec 2, 2025
Progressive Web Apps bring service workers, offline fallbacks and install prompts that classic E2E tests do not cover. Anyone using Cypress or Playwright without a dedicated strategy for network simulation, cache invalidation and manifest validation misses exactly the bugs that confront customers with stale prices offline or right after a deploy. This article shows how PWA testing works reliably in practice.
-
Dec 1, 2025
When PHPStan is green locally but red in the CI pipeline, it comes down to a configuration mismatch. The problem is solvable: align pre-commit hooks, PhpStorm quality gates and the CI pipeline so that what runs locally checks exactly what the pipeline checks, no push that fails right out of the gate.
-
Nov 24, 2025
Hyva has no Knockout viewmodels and therefore no classic JavaScript unit test layer the way Luma themes had it. Building a testing strategy for Hyva themes means rethinking the test pyramid itself: PHPUnit checks the PHP logic behind the ViewModels, PHPStan catches type errors before a single test even runs, and Playwright covers exactly the Alpine.js interaction in a real browser for which Hyva simply has no meaningful unit test layer.
-
Nov 24, 2025
Testing Alpine.js components isn't obvious: the framework is tightly coupled to the DOM, which calls for a special test setup. With Vitest, jsdom, and @testing-library/dom, reactive Alpine components can be tested reliably, maintainably, and fast.
-
Nov 24, 2025
In production systems, GraphQL is not a query format, it is an architecture topic. Anyone who writes elegant queries but ignores resolver depth, N+1 problems, complexity limits and caching builds APIs that break under load. These 50 patterns show what actually works in real GraphQL projects.