World’s largest virtual agentic engineering & quality conference
Test every field, validation rule, conditional field, file upload, and error state on your forms in plain English. No Selenium, no Playwright, no code.

Eugene Kwaka
Author

Himanshu Sheth
Reviewer
Last Updated on: July 21, 2026
Every form on your site is a transaction waiting to happen: a signup, a lead, a support request, a payment. When a form breaks, the failure is quiet. A required-field check that fires on the wrong input, a phone mask that rejects valid numbers, a submit button that never re-enables after a validation error: none of these throw a server exception, so nothing shows up in your logs. The visitor just gives up and leaves, and you never learn why.
Forms are also the most-edited surface in most products. Every new field, every reworked validation rule, every A/B test on the checkout is a fresh chance to break something that worked yesterday. The traditional fix is automated testing. The traditional problem is that automated testing means code.
A form looks like a few boxes and a button, but real coverage has to touch every rule and every way each one can fail:
And that is one form. Real coverage means testing empty submissions, partial submissions, paste versus type, browser autofill, and every browser and device your visitors actually use.
Here is what checking two validation rules, that an invalid email and a too-short phone number each raise the right error, looks like in a typical Selenium setup:
const { Builder, By, until } = require("selenium-webdriver");
const assert = require("assert");
const driver = await new Builder().forBrowser("chrome").build();
await driver.get("https://yourapp.com/signup");
await driver.findElement(By.id("email")).sendKeys("not-an-email");
await driver.findElement(By.id("phone")).sendKeys("123");
await driver.findElement(By.css("button[type='submit']")).click();
const emailErr = await driver.wait(until.elementLocated(By.css("#email + .error")), 5000);
assert.strictEqual(await emailErr.getText(), "Enter a valid email address");
const phoneErr = await driver.findElement(By.css("#phone + .error")).getText();
assert.ok(phoneErr.includes("at least 10 digits"), "Unexpected phone error: " + phoneErr);Eleven lines to cover two of the dozen rules on one form. And it is fragile. The moment a developer renames the email field, changes the error container from a sibling span to a tooltip, or reorders the inputs, the assertions fail. Maintenance like this is the dominant cost of a large automation suite: engineers spend a large share of every sprint re-pointing selectors and rewriting assertions instead of adding new coverage. And this approach still needs someone on the team who writes JavaScript or Python in the first place, which conditional fields and file uploads only make harder. It is the core tradeoff behind code-based vs. codeless test automation.
If you are a manual QA engineer, a PM, or a founder without a dedicated automation engineer, the code wall means forms usually get tested by hand, one field at a time, and only on the browser that happens to be open.
With KaneAI, you write the same test the way you would describe filling the form to a colleague:
That is the whole test. KaneAI reads each step, finds the right field on your live form the way a person would, by understanding the labels and layout rather than matching brittle CSS selectors, and executes it. It asserts error states in natural language, so verify the email field shows a valid-email error is the test, not a selector for a hidden span. It handles conditional fields that appear after a selection, drives a file upload through its accepted and rejected states, and makes smart assertions on required fields without you naming a single element. When a developer renames a field or restyles the error message, the test re-anchors the step and flags the change for you to review, which significantly reduces maintenance.

Once the happy path works, real coverage is just more English. Here are the form scenarios worth adding, each takes about two minutes to write:
Run every one of these across Chrome, Safari, Firefox, and real mobile devices from the same plain-English steps, with no per-browser rewrites.
Form tests earn their keep when they run without anyone remembering to start them:
When a form test fails, you do not get a NoSuchElementException at line 47. You get a plain-English reason for the exact step that failed. Anyone on the team can read that, and anyone can fix the test, because the test is just English.
Your forms are where visitors become customers, so they are too important to test by hand and too dynamic for brittle scripts. Test them in the language you already speak. Once your forms are covered, read how to test payment gateways without code and how to test search functionality without code to cover the steps your users reach next.
Note: Test every field on your form without writing a line of code. Start with KaneAI free.
Author
Eugene is a Software Developer with a strong background in Python (Django) and a passionate tech enthusiast. He enjoys writing and researching various topics related to emerging trends in technology. Eugene is particularly interested in Software Testing, Backend Software Development, and best practices. He thrives on exploring and building new projects, always eager to learn and improve his skills. When he's not coding, Eugene enjoys traveling, listening to music, and trying different foods.
Reviewer
Himanshu Sheth is the Director of Marketing (Technical Content) at TestMu AI, with over 8 years of hands-on experience in Selenium, Cypress, and other test automation frameworks. He has authored more than 130 technical blogs for TestMu AI, covering software testing, automation strategy, and CI/CD. At TestMu AI, he leads the technical content efforts across blogs, YouTube, and social media, while closely collaborating with contributors to enhance content quality and product feedback loops. He has done his graduation with a B.E. in Computer Engineering from Mumbai University. Before TestMu AI, Himanshu led engineering teams in embedded software domains at companies like Samsung Research, Motorola, and NXP Semiconductors. He is a core member of DZone and has been a speaker at several unconferences focused on technical writing and software quality.
Did you find this page helpful?
More Related Blogs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance