Hi team,
I have an issue when running Katalon E2E tests on a ReactJS frontend. Whenever the test tries to interact with the UI (for example: typing text, clicking a dropdown, or selecting an option), there is a short delay or “freeze” before the action actually happens. It feels like the page is fetching data or updating the state, and Katalon tries to interact with the element before it’s fully ready.
Has anyone encountered this before?
Is there a recommended approach to handle React rendering delays — such as using specific wait conditions, increasing timeouts, or adjusting Smart Wait?
Any suggestions or best practices would be appreciated.
hi @wuttipat.jam
React apps are tricky with Katalon because of how React handles state updates and re-renders. the element is technically “there” but not fully interactive yet.
you can try these workarounds:
wait for elements to be clickable, not just present
Selenium-based technologies including Katalon Studio were originally designed a few decades ago with synchronous (static) HTML pages as the primary target in mind; they do not work well with JavaScript-driven apps which work asynchronously. As @depapp pointed out above, Katalon requires users to struggle with the various “WebUI.waitForXXXX” keywords to interact with the React apps which is entirely asynchronous. I find it is difficult to accomplish.
I would recommend you to switch from Selenium to the testing frameworks in JavaScript/TypeScript such as Playwright or Puppeteer. With Playwright, you can write tests in JavaScript/TypeScript which talks to React app with the async/await syntax. The following snippet shows a typical test script using Playwright:
Hi, thanks a lot for the detailed explanation and all the workaround suggestions!
This really helps me understand why React behaves this way with Katalon.
I have another question related to Katalon Studio itself:
Right now, when I try to use Record Web with Chrome, Katalon only shows “Open Browser” and “Close Browser” — it doesn’t capture any interactions on the webpage at all. The browser opens, but no events (clicks/typing/dropdown actions) are being recorded.
Do you know if there is any specific setting or configuration I should check?
Is this usually caused by WebDriver, the Recorder extension, or something else?
Any guidance would be greatly appreciated. Thanks again!
Thanks a lot for the detailed explanation!
It helps me understand why Katalon behaves this way with my React app. I’ll give Playwright a try — it seems like a better fit for what I’m testing.