api-GET, api-POST, api-PUT, api-DELETE, api-PATCH
Execute REST API calls natively within any test suite with automated AES-GCM credential decryption.
Download ZIP ↓
Learn the NextTest JSON format, find the right action, and start with examples you can adapt to your app.
A NextTest suite is JSON. It describes the app, the test cases, and the ordered actions the runner should perform. Start with a URL and a check you can verify.
{
"name": "Login page smoke check",
"platform": "WEB",
"engine": "SELENIUM",
"data": { "baseUrl": "https://your-app.example" },
"testCases": [
{
"testCaseId": "LOGIN-001",
"Case": "Login page opens",
"isRun": true,
"hardStop": true,
"testSteps": [
{
"steps": "Open the login page",
"action": "openBrowserChrome",
"value": "${baseUrl}",
"isRun": true
},
{
"steps": "Check the page title",
"action": "validateTitle",
"value": "Your app title",
"isRun": true
},
{
"steps": "Close the browser",
"action": "closeBrowser",
"isRun": true
}
]
}
]
}AI authoring tip Tell the assistant the target URL, the workflow, and the expected outcome. Provide selectors from the actual page (or inspect the DOM) so the generated steps can target real elements.
Suites contain test cases; each case contains ordered test steps. Most fields are optional unless the action needs them.
nameHuman-readable suite name.platformWEB by default; platform tests need matching drivers and devices.engineSELENIUM or PLAYWRIGHT; action support can differ by engine.dataValues referenced with placeholders such as ${baseUrl}.testCasesThe test cases to run, in order.testCaseId, CaseStable ID and display name.isRun, hardStopEnable the case; optionally stop on a failure.testStepsOrdered action steps.steps, actionHuman-readable intent and NextTest action name.locatorType, locatorTypeValueHow to find a target element.value, actualValueAction input/expected value and optional secondary value.isRun, hardStopEnable the step; optionally stop the case on failure.isPassed, status, and durationMs.Search common browser, API, and assertion actions. Names are case-insensitive; prefer these canonical names and confirm specialized actions in the full guide or a shipped sample.
api-GET, api-POST, api-PUT, api-DELETE, api-PATCHExecute REST API calls natively within any test suite with automated AES-GCM credential decryption.
enterEncryptedPasswordDecrypts AES-256-GCM encrypted passwords in memory and enters into field with zero plaintext leakage (••••••••).
openBrowserChrome, openBrowserFirefox, openBrowserEdgeOpen a browser session. Set value to a URL to navigate on launch.
enterUrlNavigate the current browser to a URL; opens a session if needed.
refresh, browserBack, browserForward, closeBrowserReload, navigate browser history, or close the current session.
click, doubleClick, contextClickClick a located element using locatorType and locatorTypeValue.
sendKeys, clearAndSendKeys, type, clearType into a field, clear then type, or clear a text field.
typeAppendTypes text into an input or textarea element without clearing existing content.
selectDropdownByText, selectDropdownByValue, selectDropdownByIndexSelect a dropdown option by visible text, option value, or index.
markAsChecked, markAsNotCheckedSet the state of a checkbox or radio button.
mouseHover, scrollIntoViewMove the pointer over an element or scroll it into view.
switchToIFrame, switchToDefaultFrameSwitch execution focus into a target iframe element or return back to default document context.
acceptAlertAccepts and confirms a native browser JavaScript alert, confirm, or prompt modal.
windowSizeSet the browser window size.
takingScreenshotCapture a screenshot. An optional value can provide a filename.
validateTitleCheck the current page title against the expected value.
validateUrlCheck the current URL against the expected value.
validateTextAssert that a located element’s text matches the expected value.
validateVisualBaselinePerceptual visual diff assertion against saved golden baseline image.
validateContainsText, validateStartsWithText, validateEndsWithTextAssert a text value contains, begins with, or ends with the expected text.
isDisplayed, isEnabled, isDisabled, isSelectedAssert a located element’s visibility, enabled, or selected state.
elementExistsAndThrowFail the step if the located element is missing.
getTextRead text from a located element and store it under a data key.
setModuleTextValueSet a suite-level text value.
setModuleNumber, incrementModuleNumberSet or increment a numeric suite-level value.
sleepPause for a fixed duration in milliseconds. Prefer explicit waits when possible.
Use selectors from the actual DOM or app. Prefer stable IDs, accessible names, or test IDs when available.
idlogin-submitnameemailclassName / classprimary-buttoncss / cssSelectorform button[type='submit']xpath//button[@type='submit']linkTextForgot password?partialLinkTextForgot passwordtagName / tagbuttonaccessibilityIdAppium accessibility labelandroidUIAutomator, iOSClassChain, and iOSNsPredicateString require the matching device and driver setup.Keep environment-specific values in suite data and refer to them in action values. Don’t hardcode secrets in generated suites.
${key}Substitute a suite, case, or step data value.{{key}}Alternative placeholder syntax used in suites and recorded credentials.!Data->keyRead a value from a data, locator, case, or step dictionary.!D->row->ColumnRead a column from a data-driven row; follow the shipped table-loop examples.!File->pathLoad file contents for supported step fields; resolve from the process working directory.!Gen->...Generate synthetic test data using a matching shipped example.Keep credentials out of the suite. Use a placeholder such as {{PASSWORD}} and provide the value securely at run time.
For API actions, value is the endpoint and actualValue holds the request configuration. This shape is taken from the bundled token-chaining example.
{
"steps": "Request protected students",
"action": "api-GET",
"value": "/api/students",
"actualValue": "{\"BaseUrl\":\"https://your-app.example\",\"Url\":\"/api/students\",\"Headers\":{\"Authorization\":\"Bearer {{authToken}}\",\"Content-Type\":\"application/json\"}}",
"isRun": true
}From the published distribution folder, run tests headlessly with intelligent locator recovery enabled. Reports are generated in HTML and JUnit formats.
.\NextTest.bat --run .\sample-application\scenarios\01-browser-lifecycle-and-navigation.json --headless --self-healing --apply-healing --output-dir .\reports --report-formats junit,html--self-healing --apply-healing prevents broken locators from failing your automated build pipelines.