NextTest Automation Masterclass
A comprehensive, hands-on curriculum guide for QA engineers, test leads, and SDETs transitioning to modern AI-assisted test automation.
Every action named in this book was checked against the runner in the release folder. The catalogue holds 214 actions, prefixes, and keywords (including 200 core test execution actions), and the bundled sample ships 43 JSON and 35 Excel suites. The core web and API sets are verified on the shipped engine—the browser lifecycle suite and the API token-chaining suite both pass. Individual sample suites can still fail for app- or data-specific reasons, so run them in your own environment before treating them as a baseline.
Architecture, Installation & Studio Overview
Welcome to modern test automation. For over a decade, testing teams have faced a difficult compromise: low-code record-and-playback tools that break as applications scale, or code-heavy frameworks (Selenium, Playwright, Cypress) requiring hundreds of lines of boilerplate code.
NextTest bridges this gap. It provides a clean, visual desktop studio coupled with a headless command-line runner that executes on top of dual native engines: Selenium WebDriver and Playwright.
1.1 Core Platform Architecture
- Dual-Engine Core: Run tests on Selenium for cross-browser enterprise maturity or Playwright for high-speed modern web applications.
- Multi-Surface Coverage: Automate Web browsers, REST APIs, native Windows desktop software, and Visual regression checks in a single suite.
- Zero Installation Friction: NextTest is fully portable. No complex node_modules, Python virtual environments, or package registries required.
- Built-In Heuristic Auto-Healing: Dynamic locator recovery prevents flaky builds by auto-recovering changed selectors during execution.
NextTest is 100% free with no license keys or trial expirations. Download NextTest Distribution (main.zip) 📥, extract the archive, and double-click NextTest.bat to launch the studio immediately.
NextTest Suite Anatomy (JSON & Excel)
In NextTest, test scenarios are stored in clean, transparent data formats: structured JSON files or standard Microsoft Excel (.xlsx) workbooks. This makes tests easy to version in Git, review in pull requests, and edit in any text editor.
2.1 Anatomy of a JSON Test Suite
Every NextTest suite is structured into metadata, shared suite data, and sequential test cases:
{
"name": "User Authentication Smoke Suite",
"platform": "WEB",
"engine": "SELENIUM",
"data": {
"baseUrl": "http://127.0.0.1:3100",
"adminUser": "admin@quickitdotnet.in"
},
"testCases": [
{
"testCaseId": "AUTH-001",
"Case": "Successful Admin Login",
"isRun": true,
"hardStop": true,
"testSteps": [
{
"steps": "Open Chrome to application login",
"action": "openBrowserChrome",
"value": "${baseUrl}",
"isRun": true
},
{
"steps": "Enter admin email",
"action": "sendKeys",
"locatorType": "id",
"locatorTypeValue": "username",
"value": "${adminUser}",
"isRun": true
},
{
"steps": "Click submit button",
"action": "click",
"locatorType": "css",
"locatorTypeValue": "button[type='submit']",
"isRun": true
},
{
"steps": "Validate dashboard banner",
"action": "validateText",
"locatorType": "css",
"locatorTypeValue": ".dashboard-welcome",
"value": "Welcome back",
"isRun": true
}
]
}
]
}
2.2 Important Suite Attributes
isRun(Boolean): Enables or disables an entire test case or individual step without deleting it.hardStop(Boolean): If set totrue, a failure in this step immediately aborts remaining cases (crucial for prerequisite login steps).dataDictionary: Stores environment variables and shared test data referenced via${variableName}.{{PASSWORD}}Placeholder &enterEncryptedPassword: Secure AES-256-GCM encrypted credential protection. Plaintext is never written to disk or logs (••••••••), and tokens are automatically decrypted in memory for web inputs, mobile fields, desktop apps, and REST API calls.locatorType/locatorTypeValue: The canonical locator pair used by the shipped samples—for examplecsswithbutton[type='submit']. Older suites may also uselocator/locatorValue, which the loader still accepts.
Web Automation Mastery
NextTest catalogues 214 actions, prefixes, and keywords (including 200 core test execution actions), and the core web and API sets are verified against the shipped runner. From REST API calls, multi-tab management, and nested iframes to dropdowns, alerts, and drag-and-drop, modern interactions are covered natively out of the box.
3.1 Essential Web Action Catalog
The actions below are covered by the bundled suites and were exercised against the v1.0.0 runner.
| Action | Purpose | Locator Required | Value Example |
|---|---|---|---|
openBrowserChrome |
Launches Google Chrome to target URL | No | https://app.example.com |
click |
Scrolls element into view and performs click | Yes | N/A |
jclick |
Executes direct JavaScript click (bypasses overlays) | Yes | N/A |
type / sendKeys |
Clears the field and types the given string | Yes | John Doe |
typeAppend |
Appends keystrokes without clearing existing field value | Yes | - Verified |
enterEncryptedPassword |
Decrypts AES-GCM {{PASSWORD}} in memory and enters with zero plaintext leak (••••••••) |
Yes | {{PASSWORD}} |
clearAndSendKeys |
Explicitly wipes current input content and sets new value | Yes | Updated Content |
selectDropDown |
Selects option in <select> by visible text label |
Yes | United States |
selectDropDownValue |
Selects option in <select> by its value attribute |
Yes | US |
mouseHover |
Moves cursor over element to trigger flyouts and tooltips | Yes | N/A |
scrollIntoView |
Smoothly scrolls target element into viewport center | Yes | N/A |
switchToIFrame |
Shifts driver focus into nested child iframe | Yes | N/A |
switchToDefaultFrame |
Returns driver focus from iframe back to main parent document | No | N/A |
acceptAlert |
Accepts (clicks OK on) JavaScript alert or confirm popup | No | N/A |
switchTab |
Switches focus to browser tab by index (0, 1, 2) | No | 1 |
refresh |
Refreshes active browser page context | No | N/A |
validateText |
Asserts element contains expected text string | Yes | Order Confirmed |
takeScreenshot |
Captures high-resolution visual proof of viewport | No | evidence.png |
validateVisualBaseline |
Perceptual visual diff assertion against saved golden baseline image | Yes | baseline.png |
Intelligent Auto-Healing Deep Dive
Test maintenance is the #1 pain point in quality engineering. In modern web frameworks, developer updates to IDs, dynamic classes, and nested containers cause traditional test runners to throw NoSuchElementException, failing nightly build pipelines.
NextTest does not stop when a locator fails. It dynamically evaluates alternative DOM attributes (data-testids, ARIA roles, text labels, relative positions), calculates candidate similarity scores, and self-heals the step in real time.
4.1 How It Works Under the Hood
- Initial Execution: NextTest attempts to find the element using the configured locator (e.g.
#submit-btn). - Heuristic Fallback: If not found within timeout, the auto-healing engine inspects candidate elements matching the element's tag, accessible role, and text content.
- Live Recovery: NextTest performs the interaction on the highest-confidence recovered element and marks the test status as
HEALED. - Persistent Suite Healing: When run with the
--apply-healingflag, NextTest rewrites the healed selector back into your test suite JSON file on disk, permanently updating your test!
.\NextTest.bat --run .\sample-application\scenarios\01-admin-student-crud.json --headless --self-healing --apply-healing
REST API Testing & Dynamic Token Chaining
Modern applications rarely consist of only a frontend UI. NextTest lets you describe API steps inside the same suites as your browser tests, so a single runner covers an end-to-end integration workflow.
The api-GET, api-POST, api-PUT, api-DELETE, and api-PATCH actions run on the shipped engine. The bundled 09-api-automation-and-token-chaining.json suite logs in, extracts a JWT, and queries a protected endpoint successfully. In addition, 20-verified-api-and-ui-actions.json and .xlsx exercise all five HTTP methods with automated AES-GCM credential decryption and status verification.
5.1 Hands-On Token Chaining Workflow
A common enterprise pattern is authenticating via an API endpoint, extracting a dynamic JWT Bearer token from the response, and reusing that token in later requests:
[
{
"steps": "Authenticate Admin User",
"action": "api-POST",
"value": "/api/auth/login",
"actualValue": "{\"BaseUrl\":\"http://127.0.0.1:3100\",\"Headers\":{\"Content-Type\":\"application/json\"},\"Payload\":{\"email\":\"admin@quickitdotnet.in\",\"password\":\"Admin@123\"}}",
"isRun": true
},
{
"steps": "Fetch Student Directory with Dynamic Bearer Token",
"action": "api-GET",
"value": "/api/students",
"actualValue": "{\"BaseUrl\":\"http://127.0.0.1:3100\",\"Headers\":{\"Authorization\":\"Bearer {{authToken}}\",\"Content-Type\":\"application/json\"}}",
"isRun": true
}
]
NextTest parses the JSON response, extracts fields such as token, and maps them to {{authToken}} for reuse in later steps. The API Collection tab shows the traffic a run produced.
Database Workbench & Data-Driven Testing
Validating that the user interface matches the underlying database is critical. NextTest includes a full JDBC Database Workbench supporting PostgreSQL, MySQL, SQL Server, Oracle, and SQLite.
6.1 Excel Data-Driven Iterations
Instead of hardcoding customer details, link an Excel spreadsheet in your suite data:
- Set
"dataFiles": [{ "name": "data/students.xlsx" }]in suite data. - Reference columns in steps:
${studentName},${email},${course}. - NextTest runs the test case automatically for every row in your spreadsheet.
Desktop & Visual AI Regression Testing
NextTest extends beyond the browser. It automates native Windows desktop software (WPF, Win32, WinForms, Electron) and provides pixel-accurate visual snapshot regression testing.
7.1 Visual Snapshot Verification
Using the action validateVisualBaseline, NextTest compares the live viewport against a baseline master image. Layout shifts, broken fonts, and pixel misalignments are flagged in red-line diff evidence reports.
Headless Execution & Enterprise CI/CD Pipelines
NextTest can run entirely headlessly without a graphical display, making it ready for automated build pipelines such as GitHub Actions, GitLab CI, Jenkins, Azure DevOps, and Docker.
8.1 Ready-to-Use GitHub Actions Workflow
name: NextTest CI Pipeline
on: [push, pull_request]
jobs:
test:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Execute NextTest Headless Regression
run: |
.\NextTest.bat --run .\sample-application\scenarios\01-browser-lifecycle-and-navigation.json --headless --self-healing --output-dir .\reports
- name: Upload HTML Test Reports
uses: actions/upload-artifact@v4
if: always()
with:
name: test-reports
path: .\reports
AI-Assisted Test Authoring
NextTest bundles an action catalog specification in COMMANDS.md. You can share this catalog with modern AI models (ChatGPT, Claude, Gemini) to transform everyday user stories into structured NextTest suites.
"You are a NextTest automation engineer. Based on the JSON action schema in COMMANDS.md, author an end-to-end checkout test suite for http://127.0.0.1:3100 that adds a course to cart, fills billing info, and validates the order confirmation alert."
Capstone Project: CampusFlow & Certification
Congratulations on completing the modules! Put your skills to the test with the CampusFlow Student Registration capstone challenge bundled in sample-application/.
Capstone Objectives:
- Start the CampusFlow web application (
npm install && npm startathttp://127.0.0.1:3100). - Author a UI scenario automating Admin Login and validating dashboard counters.
- Execute a data-driven registration flow reading 5 student records from Excel.
- Simulate an element ID rename in HTML and verify NextTest auto-heals the locator.
- Verify the newly registered students via an
api-GETrequest to/api/students. - Generate interactive HTML execution reports.
Need live mentorship, hands-on corporate workshops, or Automation-as-a-Service? Connect with the Quickitdotnet team at https://quickitdotnet.in/ or email NextTest@quickitdotnet.in.
Shipped Test Suite Directory & Complete Scenario Catalog
NextTest bundles 43 JSON suites and 35 Microsoft Excel (.xlsx) workbooks in sample-application/scenarios/. These scenarios demonstrate battle-tested automation across Web, REST API, native Windows Desktop, Accessibility, and Data-Driven workflows.
11.1 Shipped Scenario Catalog
All test suites can be executed interactively in NextTest Studio or headlessly via the command-line runner.
| Suite / Files (.json & .xlsx) | Category & Coverage | Key Verified Actions | Headless Run Command |
|---|---|---|---|
01-browser-lifecycle-and-navigation |
Browser Lifecycle & Navigation | openBrowserChrome, maximizeWindow, navigate, refresh, validateTitle, closeBrowser |
NextTest.bat --suite sample-application/scenarios/01-browser-lifecycle-and-navigation.json --headless |
02-form-controls-and-inputs |
Form Controls & Input Handling | sendKeys, clearAndSendKeys, selectDropdown, checkboxCheck, mouseHover |
NextTest.bat --suite sample-application/scenarios/02-form-controls-and-inputs.json --headless |
03-validations-and-assertions |
DOM Assertions & Screenshots | validateText, validateAttribute, validateElementPresent, takeScreenshot |
NextTest.bat --suite sample-application/scenarios/03-validations-and-assertions.json --headless |
04-cdp-network-mocking-and-throttling |
CDP Network Emulation | cdpNetworkThrottle, cdpMockResponse, cdpClearMocking, setCookie |
NextTest.bat --suite sample-application/scenarios/04-cdp-network-mocking-and-throttling.json --headless |
05-visual-regression-and-pixel-diffing |
Visual Regression Diffing | validateVisualBaseline, takeElementScreenshot |
NextTest.bat --suite sample-application/scenarios/05-visual-regression-and-pixel-diffing.json --headless |
06-javascript-and-script-files |
JS Execution & External Scripts | executeJavaScript, executeAsyncScript, runScriptFile |
NextTest.bat --suite sample-application/scenarios/06-javascript-and-script-files.json --headless |
06-complete-actions-master-suite |
Complete Actions Master Suite | 190+ comprehensive verified actions across all domains | NextTest.bat --suite sample-application/scenarios/06-complete-actions-master-suite.json --headless |
07-desktop-windows-calc-notepad |
Windows Native Desktop Automation | openDesktopApp, desktopClick, desktopSendKeys, validateDesktopText |
NextTest.bat --suite sample-application/scenarios/07-desktop-windows-calc-notepad.json --headless |
07-dynamic-java-and-delegates |
Dynamic Java Compilation | executeJavaCode, executeJavaDelegate |
NextTest.bat --suite sample-application/scenarios/07-dynamic-java-and-delegates.json --headless |
08-synthetic-test-data-generation |
Dynamic Synthetic Generators | ${UUID}, ${TIMESTAMP}, ${RANDOM_INT}, ${RANDOM_EMAIL} |
NextTest.bat --suite sample-application/scenarios/08-synthetic-test-data-generation.json --headless |
09-api-automation-and-token-chaining |
REST API JWT Token Chaining | sendApiRequest, extractApiResponseJson, validateApiResponseCode |
NextTest.bat --suite sample-application/scenarios/09-api-automation-and-token-chaining.json --headless |
10-database-validation-suite |
SQL Database Assertions | connectDatabase, executeSqlQuery, validateSqlResult, disconnectDatabase |
NextTest.bat --suite sample-application/scenarios/10-database-validation-suite.json --headless |
11-mouse-drag-drop-and-actions |
Complex Mouse Interactions | dragAndDrop, mouseHover, contextClick, doubleClick |
NextTest.bat --suite sample-application/scenarios/11-mouse-drag-drop-and-actions.json --headless |
12-windows-tabs-alerts-and-dialogs |
Window Tabs & Native Alerts | switchTab, alertAccept, alertDismiss, validateAlertText |
NextTest.bat --suite sample-application/scenarios/12-windows-tabs-alerts-and-dialogs.json --headless |
13-desktop-notepad-calc-workflow |
Desktop Multi-App Interop | openDesktopApp, desktopSendKeys, desktopGetText |
NextTest.bat --suite sample-application/scenarios/13-desktop-notepad-calc-workflow.json --headless |
16-api-login-and-multi-tab-data |
Hybrid API & Multi-Tab Web | sendApiRequest, switchTab, validateText |
NextTest.bat --suite sample-application/scenarios/16-api-login-and-multi-tab-data.json --headless |
18-dynamic-locator-and-api-data-loop |
Dynamic Locators & Data Loops | loop, sendKeys, validateText |
NextTest.bat --suite sample-application/scenarios/18-dynamic-locator-and-api-data-loop.json --headless |
19-encrypted-passwords-and-aes-gcm |
AES-256-GCM Password Protection | {{Password}}, sendKeys, automated runtime decryption |
NextTest.bat --suite sample-application/scenarios/19-encrypted-passwords-and-aes-gcm.json --headless |
20-verified-api-and-ui-actions |
Full HTTP REST Verification | api-GET, api-POST, api-PUT, api-DELETE, api-PATCH |
NextTest.bat --suite sample-application/scenarios/20-verified-api-and-ui-actions.json --headless |
21-accessibility-and-quality-audit |
WCAG 2.1 AA & Asset Health | checkaccessibility, validatebrokenlink, validatebrokenimage |
NextTest.bat --suite sample-application/scenarios/21-accessibility-and-quality-audit.json --headless |
22-advanced-table-sorting-and-filters |
Grid Sorting & Filtering | validatesorted, validatenumbersorted, validatenotduplicate, count, parentchildclick |
NextTest.bat --suite sample-application/scenarios/22-advanced-table-sorting-and-filters.json --headless |
Advanced Quality Engineering: Accessibility, Broken Assets & Complex Grids
In modern enterprise test automation, functional correctness is merely the baseline. High-performing QA teams also continuously audit digital accessibility, link integrity, asset health, and tabular data reliability.
12.1 Automated Accessibility Audits (WCAG 2.1 AA)
NextTest provides the checkaccessibility action to run zero-configuration accessibility audits directly within your test scenarios. It analyzes the rendered DOM against international accessibility standards (WCAG 2.1 Level A and AA).
{
"steps": "Audit campus student portal for WCAG 2.1 AA compliance",
"action": "checkaccessibility",
"locatorType": "NA",
"locatorTypeValue": "NA",
"value": "WCAG2AA",
"isRun": true
}
12.2 Website Asset & Dead Link Detection
Broken hyperlinks and missing images degrade user experience and trigger customer support escalations. NextTest provides dedicated actions to validate these assets in real time:
validatebrokenlink: Scans all<a href="...">anchors on the active page, makes asynchronous HEAD/GET requests, and asserts that no links return HTTP 404 or 500 status codes.validatebrokenimage: Inspects all<img>tags, checks image HTTP status codes, and verifies via browser JavaScript thatimage.naturalWidth > 0.
{
"steps": "Verify zero broken links on registration page",
"action": "validatebrokenlink",
"locatorType": "NA",
"locatorTypeValue": "NA",
"value": "NA",
"isRun": true
},
{
"steps": "Verify all course thumbnails and logos load successfully",
"action": "validatebrokenimage",
"locatorType": "NA",
"locatorTypeValue": "NA",
"value": "NA",
"isRun": true
}
12.3 Advanced Grid & Table Data Validations
Enterprise applications rely heavily on data tables with sorting, pagination, and action buttons. NextTest provides specialized actions to validate complex data grid behaviors without fragile custom JavaScript:
| Action | Description | Target Locator | Value / Argument |
|---|---|---|---|
validatesorted |
Asserts that elements identified by the locator are sorted alphabetically in ascending or descending order. | Column cells: //table[@id='students']/tbody/tr/td[2] |
asc or desc |
validatenumbersorted |
Asserts that numeric values (currency, counts, IDs) in column cells are sorted correctly. | Column cells: //table[@id='fees']/tbody/tr/td[4] |
asc or desc |
validatenotduplicate |
Validates that every row value in a column is unique (e.g., student IDs, email addresses). | Column cells: //table[@id='students']/tbody/tr/td[1] |
NA |
count / validatecount |
Counts matching DOM elements and asserts the count equals the expected number. | Grid rows: //table[@id='students']/tbody/tr |
15 |
hasclass |
Asserts that an element currently has a specific CSS class (e.g. active, badge-success). |
Row or badge: //tr[@id='row-1']//span |
badge-success |
parentchildclick |
Locates a parent row or card by selector, then finds and clicks a child action button (e.g., Edit/Delete) inside that parent. | Parent row: //tr[contains(., 'John Doe')] |
Child selector: button.btn-edit |
Explore full working scenarios for these actions in sample-application/scenarios/21-accessibility-and-quality-audit.json and 22-advanced-table-sorting-and-filters.json (and their corresponding .xlsx versions).