World’s largest virtual agentic engineering & quality conference
Test ServiceNow catalog items, approvals, and record updates in plain English across every post-upgrade release. No Selenium, no iframe selectors, no code.

Chandrika Deb
Author

Salman Khan
Reviewer
Last Updated on: July 21, 2026
ServiceNow runs the work your company cannot afford to lose: IT incidents, HR cases, hardware requests, change approvals, and the catalog items every new hire touches on day one. When a workflow breaks, a submitted request lands in a state nobody owns, an approval never routes, and a fulfillment task never gets created. The employee waits, the SLA clock keeps running, and the service desk fields the fallout.
The hard part is that ServiceNow changes constantly. Twice-a-year platform upgrades, weekly update sets, and a business rule someone tweaked on Friday can each quietly reroute a flow or hide a variable. Nobody notices until a VP cannot order a laptop. The traditional fix is automated testing. The traditional problem is that automated testing means code.
A ServiceNow form looks like an ordinary web page, but real coverage runs into platform behavior that ordinary scripts were never built for:
And that is one catalog item on one instance. Real coverage means testing new hires vs. returning employees, self-service portal vs. agent workspace, and every browser your workforce actually opens tickets in.
Here is what verifying a simple order-a-laptop-and-check-the-ticket scenario looks like in a typical Selenium setup:
const driver = await new Builder().forBrowser("chrome").build();
await driver.get("https://yourinstance.service-now.com/sp?id=sc_cat_item&sys_id=8a5c...");
await driver.switchTo().frame(driver.findElement(By.id("gsft_main")));
const desc = await driver.wait(until.elementLocated(By.css("textarea[name='short_description']")), 10000);
await desc.sendKeys("New laptop for a new hire");
await driver.findElement(By.css("select[name='urgency']")).sendKeys("High");
await driver.findElement(By.css("button#order_now")).click();
await driver.wait(until.elementLocated(By.css(".request-number")), 15000);
const ticket = await driver.findElement(By.css(".request-number")).getText();
assert(/REQ\d{7}/.test(ticket), `Expected a REQ ticket number, got: ${ticket}`);Ten lines, and it is fragile. The frame switch assumes the classic UI, the sys_id is pinned to one instance, and the moment an upgrade renames the urgency variable or moves the request number into a new widget, the test breaks. Maintenance like this is the dominant cost of a large ServiceNow suite: engineers spend a large share of every sprint re-pointing selectors and re-recording frame paths after each release instead of adding new coverage. And this approach still needs someone on the team who writes Selenium in the first place, which iframes and asynchronous approvals only make harder. It is the core tradeoff behind code-based vs. codeless test automation.
If you are a ServiceNow admin, a process owner, or a QA analyst without a dedicated automation engineer, the code wall means the catalog and incident flows usually get tested by hand after every upgrade, slowly, inconsistently, and never fully before the change window closes.
With KaneAI, you write the same test in plain English:
That is the entire test. KaneAI reads each step, finds the right fields on your live instance the way a human would, by understanding the form rather than matching a frame path and a CSS selector, and executes the flow. Because it works by intent, the gsft_main iframe and portal widgets are handled for you, dynamic form fields that appear as answers change are followed automatically, and frequent platform updates that rename a variable no longer break the run. When an upgrade shifts the UI, the test self-heals and re-anchors the step instead of failing, so a scheduled post-upgrade regression stays green, and you assert record state, Pending Approval, the assigned group, the linked RITM, in natural language.

Once the happy path works, real coverage is just more English. Here are the ServiceNow scenarios worth adding, each takes about two minutes to write:
Run all of them across Chrome, Edge, Safari, and real mobile devices from the same plain-English steps, so the employee experience is verified everywhere ServiceNow is used, with no per-browser rewrites.
ServiceNow tests are most valuable when they run without you:
When a test fails, you do not get a NoSuchElementException from somewhere inside gsft_main. You get a plain-English reason for the exact step that failed. Anyone on the service management team can read it, and anyone can fix the test, because the test is just English.
Your ServiceNow instance is too central to test by hand and too dynamic for brittle scripts. Test it in the language your service management team already speaks. When you are ready to cover the rest of your enterprise stack, read how to test SAP applications and Microsoft Dynamics 365 the same way.
Note: Test your ServiceNow workflows without writing a line of code. Start with KaneAI free.
Author
Chandrika Deb is a Community Contributor with over 4 years of experience in DevOps, JUnit, and application testing frameworks. She built a Face Mask Detection System using OpenCV and Keras/TensorFlow, applying deep learning and computer vision to detect masks in static images and real-time video streams. The project has earned over 1.6k stars on GitHub. With 2,000+ followers on GitHub and more than 9,000 on Twitter, she actively engages with the developer communities. She has completed B.Tech in Computer Science from BIT Mesra.
Reviewer
Salman is a Test Automation Evangelist and Community Contributor at TestMu AI, with over 6 years of hands-on experience in software testing and automation. He has completed his Master of Technology in Computer Science and Engineering, demonstrating strong technical expertise in software development, testing, AI agents and LLMs. He is certified in KaneAI, Automation Testing, Selenium, Cypress, Playwright, and Appium, with deep experience in CI/CD pipelines, cross-browser testing, AI in testing, and mobile automation. Salman works closely with engineering teams to convert complex testing concepts into actionable, developer-first content. Salman has authored 120+ technical tutorials, guides, and documentation on test automation, web development, and related domains, making him a strong voice in the QA and testing community.
Did you find this page helpful?
More Related Blogs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance