Documentation › Maximo Testing Playbook
Maximo Testing Playbook
Maximo is a demanding application to automate — nested iframes, dynamically-generated element ids, dirty-record prompts, and rich field states. MaxTAF is built specifically to handle these, but a few habits make your tests far more reliable. This playbook collects them.
Why Maximo needs a specialised approach
- Everything lives in an iframe. Maximo's main content renders inside
#manage-shell_Iframe. Automation has to switch into that frame to interact with fields. - Element ids are volatile. Ids like
md3801d08-tbare generated; some carry a stable, meaningful suffix (e.g.STATUS@483,ASSETNUM@483). - Records get "dirty". Leaving a page or logging out with unsaved changes raises a native browser prompt.
- Fields have states, not just values — required, read-only, in-error — that a plain DOM check misses.
MaxTAF's MXML language, the recorder and the AI tester all account for these; the patterns below help you get the most out of them.
Pattern: frames are handled for you — but stay aware
When you record, MaxTAF inserts <ui:switchToFrame> / <ui:switchToDefaultFrame/> automatically as your interaction crosses frame boundaries, and the frame-switch tag retries via the parent frame on timeout. In an AI case, run recorder contextAction commands from the main frame — MaxTAF searches all frames to find the element by id. When hand-editing MXML, switch into the frame before acting and back out afterwards.
Pattern: prefer stable locators
- Favour an
idwith a meaningful suffix (STATUS@483) or a robustcssSelector/xpathover a purely generated id. - Never rely on
<ui:className>— it isn't supported by the engine. - If a recorded id looks purely random, re-record that step against a field that exposes a Maximo attribute (like the business field name), or replace the locator by hand.
Pattern: assert field state, not just value
Maximo shows required/read-only/error states that matter for real acceptance testing. Use the state-aware asserts:
<ui:assertValue value="WAPPR"><ui:id>STATUS@483</ui:id></ui:assertValue>
<ui:assertElementRequired><ui:id>DESCRIPTION@27</ui:id></ui:assertElementRequired>
<ui:assertElementReadonly><ui:id>WONUM@27</ui:id></ui:assertElementReadonly>
<ui:assertElementError><ui:id>SCHEDSTART@27</ui:id></ui:assertElementError>
In an AI case, the equivalent recorder command is contextAction with action: 'assertValue' (or assertElementRequired, etc.) — see the recorder actions.
Pattern: navigate via the address parameter
Don't hard-code the Maximo URL inside cases. Point tests at the mx.maximo.address project parameter so one change moves every case to a new environment:
<native>driver.get(mxService.getParam("mx.maximo.address"))</native>
Set mx.maximo.address (and, if you use auto-login, mx.maximo.username / mx.maximo.password) on the Parameters page.
Pattern: a canonical work-order smoke test
A reliable Maximo smoke test as AI-case steps (record it to get a reusable MXML case):
Navigate to the Maximo address.
Login with the Maximo credentials.
Go to the Work Order Tracking application.
Click the New Work Order button.
Wait for the work order form to load.
Type "Pump repair" into the Description field.
Verify the Status field shows "WAPPR".
Save the work order.
Report what was checked.
The same shape works for Assets (create asset → assert Asset Number), Locations, and other applications — swap the application name and the field checks.
Pattern: let dirty-record prompts resolve automatically
Maximo raises a native "leave page?" prompt when a record is unsaved. MaxTAF's execution accepts these automatically so automation keeps moving — but for clean tests, explicitly save or discard the record before you navigate away or sign out.
Pattern: capture video and screenshots for acceptance evidence
- Enable video with
mx.selenium.enable_video_recording=true(scripted/MXML) ormx.playwright.enable_video_recording=true(AI). - Add
<ui:screenshot/>at key moments in MXML, or ask an AI case to take a screenshot after a decisive step. - Remember videos may capture on-screen credentials — see Security.
MXML Reference · Writing AI Test Cases · Recorder Guide · Troubleshooting