<?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: Jamilur Rahman</title>
    <description>The latest articles on DEV Community by Jamilur Rahman (@jamilurr).</description>
    <link>https://dev.to/jamilurr</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1101531%2Fcd6dbaeb-43fe-49bd-babf-c502a8973fe0.jpeg</url>
      <title>DEV Community: Jamilur Rahman</title>
      <link>https://dev.to/jamilurr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jamilurr"/>
    <language>en</language>
    <item>
      <title>A 500-Line Flutter Login Test Became One Promt</title>
      <dc:creator>Jamilur Rahman</dc:creator>
      <pubDate>Wed, 05 Aug 2026 20:44:14 +0000</pubDate>
      <link>https://dev.to/jamilurr/a-500-line-flutter-login-test-became-one-promt-52np</link>
      <guid>https://dev.to/jamilurr/a-500-line-flutter-login-test-became-one-promt-52np</guid>
      <description>&lt;p&gt;Lets start with a bit of back story.&lt;/p&gt;

&lt;p&gt;I am a full stack developer. &lt;strong&gt;Developer&lt;/strong&gt; being the keyword here, not a QA developer.&lt;/p&gt;

&lt;p&gt;But in my current role, I was recently asked to come up with a testing suite for the web application and the Flutter app I was managing and maintaining.&lt;/p&gt;

&lt;p&gt;At that time, I didn’t have anything better to do and thought this would be a fun little project to work on for a couple of weeks.&lt;/p&gt;

&lt;p&gt;Boy o boy, I was wrong.&lt;/p&gt;

&lt;p&gt;People in QA are so opinionated.&lt;/p&gt;

&lt;p&gt;Everyone has their preferred framework, structure, naming convention, abstraction, folder structure and a very strong opinion about why your approach is wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Starting with the industry best practices
&lt;/h2&gt;

&lt;p&gt;I started by trying to follow the trends and best practices used in the industry.&lt;/p&gt;

&lt;p&gt;Page Object Models, reusable helpers, proper assertions and all the usual bits and bobs.&lt;/p&gt;

&lt;p&gt;For the web application, which was built with React, I chose Playwright.&lt;/p&gt;

&lt;p&gt;For the Flutter app, I went with &lt;code&gt;integration_test&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Sounded simple enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  The login test that took three hours
&lt;/h2&gt;

&lt;p&gt;The first test I tried to write was a simple login flow.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Open the application&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter the username and password&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Press the login button&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wait for the dashboard&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Easy, right?&lt;/p&gt;

&lt;p&gt;It took me ages.&lt;/p&gt;

&lt;p&gt;And by ages, I mean roughly three hours just to get the web test to pass reliably.&lt;/p&gt;

&lt;p&gt;The actual Playwright test ended up being around 300 lines once I included the boilerplate, setup, selectors, assertions, waits, Page Object Model structure and everything else needed around the actual journey.&lt;/p&gt;

&lt;p&gt;Then came the Flutter app.&lt;/p&gt;

&lt;p&gt;That one was worse.&lt;/p&gt;

&lt;p&gt;The app has its own custom way of starting different flavors, and both the web application and Flutter app are white-labelled products.&lt;/p&gt;

&lt;p&gt;That means there are a lot of variations to cover.&lt;/p&gt;

&lt;p&gt;Different branding, configurations, screens and sometimes slightly different user journeys.&lt;/p&gt;

&lt;p&gt;Before I could even test the login flow, I needed a pile of setup code just to launch the correct version of the app.&lt;/p&gt;

&lt;p&gt;The Flutter test eventually went beyond 500 lines, including the boilerplate.&lt;/p&gt;

&lt;p&gt;I couldn’t even get it to run on the first day.&lt;/p&gt;

&lt;p&gt;On the next day, with a fresh cup of coffee and Claude sitting beside me like an unpaid junior developer, I finally managed to get somewhere.&lt;/p&gt;

&lt;p&gt;It ran.&lt;/p&gt;

&lt;p&gt;But it was still flaky.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fixed waits are a trap
&lt;/h2&gt;

&lt;p&gt;The APIs did not always respond at the same speed.&lt;/p&gt;

&lt;p&gt;Sometimes the dashboard loaded quickly.&lt;/p&gt;

&lt;p&gt;Sometimes it took a few extra seconds.&lt;/p&gt;

&lt;p&gt;Sometimes a loading indicator appeared.&lt;/p&gt;

&lt;p&gt;Sometimes it disappeared almost instantly.&lt;/p&gt;

&lt;p&gt;So fixed waits were unreliable.&lt;/p&gt;

&lt;p&gt;Wait too little and the test fails.&lt;/p&gt;

&lt;p&gt;Wait too long and the whole suite becomes painfully slow.&lt;/p&gt;

&lt;p&gt;Then you add more conditions, more retries, more &lt;code&gt;pumpAndSettle&lt;/code&gt;, more element checks and more code around what should be an extremely simple user journey.&lt;/p&gt;

&lt;p&gt;At one point I stopped and thought:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Why am I explaining every single technical action when the actual requirement is obvious?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The requirement was simply:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The user should be able to launch the app, log in and reach the dashboard.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So I decided to break down the same journey as a prompt and let Claude try to execute it.&lt;/p&gt;

&lt;p&gt;The prompt was something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
Launch the app and wait for loading to finish. Tap login, fill in the username and password, submit the form and verify the dashboard appears.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That was basically it.&lt;/p&gt;

&lt;p&gt;Less than 120 characters of actual testing intent, depending on how you phrase it.&lt;/p&gt;

&lt;p&gt;And on the first try, it got it right.&lt;/p&gt;

&lt;p&gt;I was starstruck.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually changed
&lt;/h2&gt;

&lt;p&gt;Obviously the prompt does not magically remove all the complexity.&lt;/p&gt;

&lt;p&gt;Something still needs to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Launch the app&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Inspect the interface&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Find the relevant elements&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Interact with them&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wait for the correct states&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Decide whether the journey passed or failed&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But that responsibility no longer had to sit inside hundreds of lines of test code written and maintained by me.&lt;/p&gt;

&lt;p&gt;With Playwright or Flutter integration tests, I had to explain &lt;strong&gt;how&lt;/strong&gt; every action should happen.&lt;/p&gt;

&lt;p&gt;With the prompt, I only had to explain &lt;strong&gt;what&lt;/strong&gt; the user was trying to achieve.&lt;/p&gt;

&lt;p&gt;That was the aha moment.&lt;/p&gt;

&lt;h2&gt;
  
  
  From one prompt to full user journeys
&lt;/h2&gt;

&lt;p&gt;From there, I kept adding more prompts for different user journeys.&lt;/p&gt;

&lt;p&gt;Login.&lt;/p&gt;

&lt;p&gt;Create a beneficiary.&lt;/p&gt;

&lt;p&gt;Start a transaction.&lt;/p&gt;

&lt;p&gt;Complete multi-step forms.&lt;/p&gt;

&lt;p&gt;Check that records appeared in the correct list.&lt;/p&gt;

&lt;p&gt;The only scripts I wanted to maintain were the ones needed to launch the Flutter app or open the web application.&lt;/p&gt;

&lt;p&gt;The rest of the journey could be described in natural language.&lt;/p&gt;

&lt;p&gt;The next journey was much easier to add.&lt;/p&gt;

&lt;p&gt;Then the next one.&lt;/p&gt;

&lt;p&gt;And the next one after that.&lt;/p&gt;

&lt;h2&gt;
  
  
  It was not perfect
&lt;/h2&gt;

&lt;p&gt;I don’t want to make this sound like one prompt suddenly solved every testing problem.&lt;/p&gt;

&lt;p&gt;It didn’t.&lt;/p&gt;

&lt;p&gt;Sometimes the instructions were too vague.&lt;/p&gt;

&lt;p&gt;Sometimes the application entered a state the agent could not recover from.&lt;/p&gt;

&lt;p&gt;Sometimes a site blocked automation completely.&lt;/p&gt;

&lt;p&gt;And traditional coded tests are still better when you need complete determinism and precise control over every interaction.&lt;/p&gt;

&lt;p&gt;Playwright is also faster and more predictable for stable flows where you already know exactly what should happen.&lt;/p&gt;

&lt;p&gt;But for business-level user journeys, this felt completely different.&lt;/p&gt;

&lt;p&gt;I was no longer spending most of my time writing selectors, waits and boilerplate.&lt;/p&gt;

&lt;p&gt;I was describing what the user should be able to do.&lt;/p&gt;

&lt;h2&gt;
  
  
  That small moment became CueTest
&lt;/h2&gt;

&lt;p&gt;That small aha moment eventually gave birth to &lt;a href="https://cuetest.dev" rel="noopener noreferrer"&gt;CueTest&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;CueTest lets you describe end-to-end tests in natural language and watch the browser execute them.&lt;/p&gt;

&lt;p&gt;The Android testing side is not live yet, but the web testing platform is available now.&lt;/p&gt;

&lt;p&gt;I am still figuring out how far this approach can go, where it breaks and where traditional frameworks still make more sense.&lt;/p&gt;

&lt;p&gt;So please don’t expect a polished marketing answer from me.&lt;/p&gt;

&lt;p&gt;Try it.&lt;/p&gt;

&lt;p&gt;Break it.&lt;/p&gt;

&lt;p&gt;Give it a weird user journey.&lt;/p&gt;

&lt;p&gt;And leave me your honest feedback.&lt;/p&gt;

&lt;p&gt;I would especially love to hear from people maintaining Playwright, Selenium, Cypress or Flutter integration test suites.&lt;/p&gt;

&lt;p&gt;Do you think agentic testing will eventually replace most traditional end-to-end scripts, or will it mainly sit beside them?&lt;/p&gt;

</description>
      <category>testing</category>
      <category>ai</category>
      <category>playwright</category>
      <category>flutter</category>
    </item>
    <item>
      <title>Agentic E2E Testing Without the AI Hype: What It Actually Means</title>
      <dc:creator>Jamilur Rahman</dc:creator>
      <pubDate>Wed, 05 Aug 2026 18:00:55 +0000</pubDate>
      <link>https://dev.to/jamilurr/agentic-e2e-testing-without-the-ai-hype-what-it-actually-means-2g07</link>
      <guid>https://dev.to/jamilurr/agentic-e2e-testing-without-the-ai-hype-what-it-actually-means-2g07</guid>
      <description>&lt;p&gt;I keep seeing two phrases buzzing around my feed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agentic testing&lt;/strong&gt; and &lt;strong&gt;AI-powered testing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They are often used as though they mean the same thing. They don’t.&lt;/p&gt;

&lt;p&gt;So let’s break this down first.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does AI-powered testing actually mean?
&lt;/h2&gt;

&lt;p&gt;“AI-powered testing” can mean many different things.&lt;/p&gt;

&lt;p&gt;It might mean using AI to generate tests for frameworks such as Playwright, Selenium, Cypress, or whatever testing framework your QA team refuses to stop talking about.&lt;/p&gt;

&lt;p&gt;The QA team at my office loves Selenium and keeps pushing for it.&lt;/p&gt;

&lt;p&gt;Insider news: I am not letting that happen while I am still here.&lt;/p&gt;

&lt;p&gt;Jokes aside, AI-generated test code is probably the most common version of AI-powered testing today.&lt;/p&gt;

&lt;p&gt;You give Claude, Codex, Cursor, or another coding assistant a description of the feature, and it produces a test script for you.&lt;/p&gt;

&lt;p&gt;The result is still a traditional code-based test.&lt;/p&gt;

&lt;p&gt;AI simply helped write it.&lt;/p&gt;

&lt;p&gt;AI-powered testing can also mean adding intelligence around an existing test suite.&lt;/p&gt;

&lt;p&gt;For example, you may already have Playwright or Selenium tests. When one of them fails, AI can help determine whether:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The application is genuinely broken&lt;/li&gt;
&lt;li&gt;The test is outdated&lt;/li&gt;
&lt;li&gt;A selector changed&lt;/li&gt;
&lt;li&gt;The failure was caused by timing or flaky behaviour&lt;/li&gt;
&lt;li&gt;The user journey itself has changed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI can also analyse logs, screenshots, browser activity, and failure messages to explain what probably happened.&lt;/p&gt;

&lt;p&gt;Another version is AI-assisted recovery.&lt;/p&gt;

&lt;p&gt;A test fails at a particular step, but instead of stopping immediately, the system tries to understand the page and find another valid way to continue.&lt;/p&gt;

&lt;p&gt;This is commonly called &lt;strong&gt;self-healing test automation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A few years ago, doing this reliably was extremely difficult. Even now, “self-healing” is often oversold, but modern browser agents and language models have made limited recovery much more practical.&lt;/p&gt;

&lt;p&gt;So AI-powered testing can mean:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generating test code&lt;/li&gt;
&lt;li&gt;Analysing test failures&lt;/li&gt;
&lt;li&gt;Updating outdated tests&lt;/li&gt;
&lt;li&gt;Recovering from broken selectors&lt;/li&gt;
&lt;li&gt;Explaining whether a failure came from the product or the test&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agentic testing is slightly different.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is agentic E2E testing?
&lt;/h2&gt;

&lt;p&gt;With agentic testing, you are not necessarily writing the test implementation yourself.&lt;/p&gt;

&lt;p&gt;You describe the user journey, expected outcome, or task in natural language.&lt;/p&gt;

&lt;p&gt;The agent then uses the tools available to it to understand the application and execute the journey.&lt;/p&gt;

&lt;p&gt;For a web application, those tools might allow the agent to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inspect the current page&lt;/li&gt;
&lt;li&gt;Find interactive elements&lt;/li&gt;
&lt;li&gt;Click buttons&lt;/li&gt;
&lt;li&gt;Fill forms&lt;/li&gt;
&lt;li&gt;Navigate between screens&lt;/li&gt;
&lt;li&gt;Read visible content&lt;/li&gt;
&lt;li&gt;Check whether an expected result appeared&lt;/li&gt;
&lt;li&gt;Recover when a small UI change blocks the original path&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For Android, iOS, desktop software, or other weird things you somehow ended up having to test, the available tools would be different.&lt;/p&gt;

&lt;p&gt;The main idea remains the same:&lt;/p&gt;

&lt;p&gt;You describe the goal.&lt;/p&gt;

&lt;p&gt;The agent decides how to complete it.&lt;/p&gt;

&lt;p&gt;This workflow does not make much sense for unit testing. Unit tests require precise inputs, outputs, assertions, and deterministic behaviour.&lt;/p&gt;

&lt;p&gt;But it can be extremely useful for end-to-end testing.&lt;/p&gt;

&lt;p&gt;E2E tests are about user journeys.&lt;/p&gt;

&lt;p&gt;Can the user sign in?&lt;/p&gt;

&lt;p&gt;Can they create an account?&lt;/p&gt;

&lt;p&gt;Can they add a product to the cart?&lt;/p&gt;

&lt;p&gt;Can they complete checkout?&lt;/p&gt;

&lt;p&gt;Can they create a transaction?&lt;/p&gt;

&lt;p&gt;Can they reach the expected confirmation screen?&lt;/p&gt;

&lt;p&gt;These are exactly the kinds of tasks that a browser agent can understand and attempt inside a real application.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem I had with traditional test automation
&lt;/h2&gt;

&lt;p&gt;I am a developer, not a dedicated test automation engineer.&lt;/p&gt;

&lt;p&gt;I can write tests, but I do not always know the best way to structure a serious E2E testing suite from day one.&lt;/p&gt;

&lt;p&gt;This is probably common in smaller companies.&lt;/p&gt;

&lt;p&gt;You may not have a full QA automation team. Management still wants important workflows covered, so the responsibility lands on whichever developer looked least busy during the meeting.&lt;/p&gt;

&lt;p&gt;That developer may be you.&lt;/p&gt;

&lt;p&gt;It has definitely been me.&lt;/p&gt;

&lt;p&gt;The usual solution is straightforward.&lt;/p&gt;

&lt;p&gt;You open Claude, Codex, Cursor, or another coding assistant and ask it to generate a Playwright or Selenium test.&lt;/p&gt;

&lt;p&gt;The generated test looks reasonable.&lt;/p&gt;

&lt;p&gt;It runs.&lt;/p&gt;

&lt;p&gt;You get a green check mark.&lt;/p&gt;

&lt;p&gt;You call it a day.&lt;/p&gt;

&lt;p&gt;Then a few days later, somebody pushes a UI change.&lt;/p&gt;

&lt;p&gt;A new button appears.&lt;/p&gt;

&lt;p&gt;A label is renamed.&lt;/p&gt;

&lt;p&gt;The page structure changes.&lt;/p&gt;

&lt;p&gt;A table starts overflowing on smaller screens.&lt;/p&gt;

&lt;p&gt;The main test might still pass because the original journey is technically working.&lt;/p&gt;

&lt;p&gt;But the new button is not covered.&lt;/p&gt;

&lt;p&gt;The overflowing table is not detected.&lt;/p&gt;

&lt;p&gt;Or the test fails because a selector changed, and now you are asked to figure out whether the application broke or the test simply became outdated.&lt;/p&gt;

&lt;p&gt;Adding coverage for the button is easy enough.&lt;/p&gt;

&lt;p&gt;But what about the table overflow?&lt;/p&gt;

&lt;p&gt;How exactly should I script that?&lt;/p&gt;

&lt;p&gt;How do I test layout issues across multiple screen sizes?&lt;/p&gt;

&lt;p&gt;How do I distinguish a harmless DOM change from a genuine user-facing regression?&lt;/p&gt;

&lt;p&gt;With my limited testing knowledge, my first instinct would be to ask Claude again.&lt;/p&gt;

&lt;p&gt;Then I would ask it to fix the first generated test.&lt;/p&gt;

&lt;p&gt;Then fix the fix.&lt;/p&gt;

&lt;p&gt;Then add another helper.&lt;/p&gt;

&lt;p&gt;Then update the selector strategy.&lt;/p&gt;

&lt;p&gt;Before long, the test suite becomes an AI-generated soup that technically belongs to me but is no longer something I confidently understand or want to maintain.&lt;/p&gt;

&lt;p&gt;That was the problem I kept running into.&lt;/p&gt;

&lt;h2&gt;
  
  
  My first experiment with agentic testing
&lt;/h2&gt;

&lt;p&gt;I started wondering whether the process could be simplified.&lt;/p&gt;

&lt;p&gt;Instead of asking AI to keep generating and repairing test code, what would happen if the AI agent directly executed the user journey?&lt;/p&gt;

&lt;p&gt;That led me toward agentic E2E testing.&lt;/p&gt;

&lt;p&gt;The idea looked genuinely exciting.&lt;/p&gt;

&lt;p&gt;Rather than writing every click, selector, wait condition, and fallback path, I could describe the flow and let an agent operate the browser.&lt;/p&gt;

&lt;p&gt;So I started building a small internal testing suite around the idea.&lt;/p&gt;

&lt;p&gt;Then I kept building.&lt;/p&gt;

&lt;p&gt;Nobody stopped me and asked:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Where exactly are you going with this?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Honestly, I did not know either.&lt;/p&gt;

&lt;p&gt;At first, I only wanted a better way to test my own applications.&lt;/p&gt;

&lt;p&gt;But when the initial version started working, I could watch the agent interact with the application in real time.&lt;/p&gt;

&lt;p&gt;It would open the browser, inspect the page, navigate through the user journey, fill forms, make decisions, and report what happened.&lt;/p&gt;

&lt;p&gt;I could see the web application being tested live instead of staring at a terminal and waiting for a pass or fail message.&lt;/p&gt;

&lt;p&gt;More importantly, the final result included useful context.&lt;/p&gt;

&lt;p&gt;Not just:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Test failed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But information about where the agent got blocked, what it expected to find, what it actually found, and what might have caused the problem.&lt;/p&gt;

&lt;p&gt;That small experiment slowly turned into an MVP for an agentic E2E testing platform.&lt;/p&gt;

&lt;p&gt;And eventually, CueTest came out of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What CueTest does
&lt;/h2&gt;

&lt;p&gt;CueTest is an agentic end-to-end testing platform for web applications.&lt;/p&gt;

&lt;p&gt;You describe the user journey using natural language.&lt;/p&gt;

&lt;p&gt;CueTest runs that journey against your staging or deployed application using an agent inside a real hosted browser.&lt;/p&gt;

&lt;p&gt;While the test is running, you can watch the browser session and follow the live execution logs.&lt;/p&gt;

&lt;p&gt;The agent can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate through the application&lt;/li&gt;
&lt;li&gt;Interact with forms and UI elements&lt;/li&gt;
&lt;li&gt;Verify expected outcomes&lt;/li&gt;
&lt;li&gt;Handle limited UI changes&lt;/li&gt;
&lt;li&gt;Attempt bounded recovery when an action fails&lt;/li&gt;
&lt;li&gt;Stop when the application is genuinely blocked&lt;/li&gt;
&lt;li&gt;Analyse failures and provide useful context&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important difference is that the test is based on the intended user journey rather than a fixed sequence of selectors.&lt;/p&gt;

&lt;p&gt;For example, suppose your original instruction is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Sign in, open the beneficiaries page, create a new beneficiary, and verify that it appears in the list.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Later, the UI changes.&lt;/p&gt;

&lt;p&gt;The button moves.&lt;/p&gt;

&lt;p&gt;The wording changes from “Add beneficiary” to “Create beneficiary.”&lt;/p&gt;

&lt;p&gt;The form layout is updated.&lt;/p&gt;

&lt;p&gt;A traditional test may fail because the implementation changed, even though the user journey stayed exactly the same.&lt;/p&gt;

&lt;p&gt;An agentic test may still complete the journey because it is trying to achieve the goal rather than blindly replaying one exact sequence.&lt;/p&gt;

&lt;p&gt;That does not mean the agent will magically survive every redesign.&lt;/p&gt;

&lt;p&gt;It will not.&lt;/p&gt;

&lt;p&gt;Agentic testing is not magic, and it is definitely not perfectly deterministic.&lt;/p&gt;

&lt;p&gt;But when the journey remains the same and the UI changes slightly, the original natural-language test can often continue working without being rewritten.&lt;/p&gt;

&lt;p&gt;When the journey itself changes, you update the description.&lt;/p&gt;

&lt;p&gt;Instead of refactoring a large test script, you explain the new flow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agentic testing is not replacing Playwright
&lt;/h2&gt;

&lt;p&gt;I do not think agentic testing will completely replace Playwright, Selenium, Cypress, or other code-based testing frameworks.&lt;/p&gt;

&lt;p&gt;Code-based tests still provide more precise control.&lt;/p&gt;

&lt;p&gt;They are better when you need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strict assertions&lt;/li&gt;
&lt;li&gt;Fully deterministic execution&lt;/li&gt;
&lt;li&gt;Complex fixtures&lt;/li&gt;
&lt;li&gt;Custom setup and teardown logic&lt;/li&gt;
&lt;li&gt;Detailed control over network requests&lt;/li&gt;
&lt;li&gt;Deep integration with engineering workflows&lt;/li&gt;
&lt;li&gt;Extremely predictable regression coverage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agentic testing offers a different trade-off.&lt;/p&gt;

&lt;p&gt;It can make tests faster to create, easier to understand, and more adaptable to smaller UI changes.&lt;/p&gt;

&lt;p&gt;It can also make E2E testing more accessible to developers, manual QA testers, product managers, and small teams that do not have the resources to build and maintain a large automation framework.&lt;/p&gt;

&lt;p&gt;The strongest approach will probably be a combination of both.&lt;/p&gt;

&lt;p&gt;Use code-based tests for critical workflows that require maximum predictability.&lt;/p&gt;

&lt;p&gt;Use agentic tests for broader user journeys, rapidly changing features, exploratory coverage, and scenarios where writing and maintaining a full scripted test would be too expensive.&lt;/p&gt;

&lt;h2&gt;
  
  
  The harder problem is trust
&lt;/h2&gt;

&lt;p&gt;Getting an AI agent to click buttons is not the hardest part.&lt;/p&gt;

&lt;p&gt;The harder part is building a testing system that teams can understand and trust.&lt;/p&gt;

&lt;p&gt;The agent needs boundaries.&lt;/p&gt;

&lt;p&gt;It should not keep retrying forever.&lt;/p&gt;

&lt;p&gt;It should not invent credentials.&lt;/p&gt;

&lt;p&gt;It should not randomly explore unrelated pages.&lt;/p&gt;

&lt;p&gt;It should not mark a test as passed simply because it managed to click through several screens.&lt;/p&gt;

&lt;p&gt;It needs clear objectives, visible execution, limited recovery, meaningful stopping conditions, and useful failure analysis.&lt;/p&gt;

&lt;p&gt;That is the part I am continuing to work on with CueTest.&lt;/p&gt;

&lt;p&gt;The real question is not whether an AI agent can operate a browser.&lt;/p&gt;

&lt;p&gt;It clearly can.&lt;/p&gt;

&lt;p&gt;The more interesting question is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much uncertainty are teams willing to accept in exchange for faster test creation, broader coverage, and lower maintenance?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I would genuinely like to hear how other developers and QA engineers see this.&lt;/p&gt;

&lt;p&gt;Which parts of your E2E test suite would you trust to an agent?&lt;/p&gt;

&lt;p&gt;And which parts would you always keep code-based?&lt;/p&gt;




&lt;p&gt;I am building CueTest, an agentic E2E testing platform for creating and running browser tests from natural-language user journeys.&lt;/p&gt;

&lt;p&gt;You can check it out at &lt;strong&gt;&lt;a href="https://cuetest.dev/" rel="noopener noreferrer"&gt;cuetest.dev&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article is based on my own experience building CueTest. I used AI to help organize and polish the writing, but the technical decisions, product experience, opinions, and questionable Selenium jokes are mine.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>testing</category>
      <category>ai</category>
      <category>automation</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
