
https://github.com/surendrajaganadam/Testing_MobileApp
Explore the XCUITest API, including XTest, XCTestCase, and X application, to learn how to create, manage, and execute tests with setup, teardown, and performance measures.
\
func testCharacter(){
let app = XCUIApplication()
app.launch()
app.staticTexts["Text Fields"].tap()
app.textFields.element(boundBy: 1).tap()
app.textFields.element(boundBy: 1).typeText("demo user")
sleep(3)
app.keys["delete"].press(forDuration: 2)
sleep(3)
app.terminate()
}
NOTE: THIS VIDEO DURATION IS UPTO 5:16sec only , there is an issue with conversion hence its showing as 8mins.
script:
func testCharacterBy(){
let app = XCUIApplication()
app.launch()
app.staticTexts["Text Fields"].tap()
app.textFields.element(boundBy: 1).tap()
app.keys["numbers"].tap()
app.keys["9"].tap()
app.keys["6"].tap()
app.keys["1"].tap()
app.keys["8"].tap()
app.keys["8"].tap()
app.keys["1"].tap()
app.keys["7"].tap()
app.keys["7"].tap()
app.keys["7"].tap()
app.keys["1"].tap()
sleep(3)
app.terminate()
}
Explore printing all text field values in an iOS UI test with Swift and XCUITest by looping over text fields and printing each value to the console.
Learn how to capture and attach screenshots in XCUITest for iOS UI automation using Swift, name and keep screenshots, and view them in test run reports.
func testPredicate(){
let app = XCUIApplication()
app.launch()
let predicate = NSPredicate(format: "label CONTAINS[c] %@", "ActivityIndicator")
let elementQuery = app.staticTexts.containing(predicate)
if elementQuery.count > 0 {
print("Element displayed")
elementQuery.element.tap()
}
sleep(6)
app.terminate()
}
Learn to synchronize iOS UI tests with XCUITest by using the waitForExistence command to wait up to 10 seconds for elements before proceeding, avoiding hard sleeps.
func testBluetoothOff(){
let app = XCUIApplication(bundleIdentifier: "com.apple.Preferences")
app.launch()
app.cells["Bluetooth"].tap()
app.switches["Bluetooth"].tap()
app.buttons["Turn Off"].tap()
sleep(3)
app.terminate()
}
func testBluetoothOn(){
let app = XCUIApplication(bundleIdentifier: "com.apple.Preferences")
app.launch()
app.cells["Bluetooth"].tap()
app.switches["Bluetooth"].tap()
sleep(3)
app.terminate()
}
func testVerifyBluetoothOff(){
let app = XCUIApplication(bundleIdentifier: "com.apple.Preferences")
app.launch()
app.cells["Bluetooth"].tap()
app.switches["Bluetooth"].tap()
if(app.buttons["Turn Off"].exists){
app.buttons["Turn Off"].tap()
}
sleep(1)
app.terminate()
}
func testWifiToggleStatus(){
let app = XCUIApplication(bundleIdentifier: "com.apple.Preferences")
app.launch()
app.cells["Wi-Fi"].tap()
app.switches["Wi-Fi"].tap()
sleep(3)
app.terminate()
}
func testPressHomeButton(){
sleep(3)
XCUIDevice.shared.press(XCUIDevice.Button.home)
sleep(1)
}
func testVerifyWidget(){
XCUIDevice.shared.press(XCUIDevice.Button.home)
let springBoardAppInstance = XCUIApplication(bundleIdentifier: "com.apple.springboard")
springBoardAppInstance.swipeRight()
springBoardAppInstance.swipeRight()
springBoardAppInstance.swipeUp()
sleep(1)
springBoardAppInstance.buttons["Edit"].tap()
springBoardAppInstance.buttons["Add Widget"].tap()
springBoardAppInstance.cells["Batteries"].tap()
springBoardAppInstance.buttons[" Add Widget"].tap()
springBoardAppInstance.buttons["Done"].tap()
}
Learn to handle iOS widgets in XCUITest by establishing a Springboard session, swiping to reveal widgets, then editing, adding a widget, and managing deletions on simulator and real devices.
Explore how human-in-the-loop AI enhances software testing and development, with examples from advanced chess, banking form fields, and prompt-driven tools, while acknowledging AI limitations.
Explore fine tuning to tailor AI interactions for customers, branch staff, and officials by updating the existing knowledge base. Compare this with retrieval augmented generation and external policies.
Understand how providing context improves the accuracy of language models in LMS, and apply it to iOS UI automation with XCUITest by supplying clear topic information.
Explore prompt engineering and the role of clear input in guiding AI responses. See how explicit context and constraints help avoid hallucinations and yield a tailored, step-by-step plan.
Build an n8n workflow that reads a sheet, validates an email value, and sends an email via an AI-driven prompt.
Execute an n8n workflow to create Jira bugs from a sheet by passing credentials and URL, validating connections, and auto creating defects in zero for new statuses.
Create a Chrome extension for record and playback using cursor AI, generate Playwright TypeScript or Selenium scripts from browser actions, and preview, download, and debug recorded actions.
Create a free Azure dev apps account, sign up, and set up an organization and project for test automation. Then configure a pipeline to run playwright tests from that project.
Develop a manual test case generator agent that fetches user story details from Azure, prints the title, description, and acceptance criteria, and stores UI mockups.
Define rules for generating comprehensive manual test cases for end-to-end user journeys, including negative and edge cases, with P1/P2 priorities, action keywords, and draft-saving to a story ID markdown file.
Provide update on AI video series; content is being updated, with 12+ videos created; will complete in a week, featuring basics to advanced AI concepts, test script generation, and frameworks.
Install the GitHub Copilot extension for Visual Studio Code and sign in with your GitHub account to enable AI pair programming for writing and debugging code.
Learn how while loop and do while loop control repeated execution with conditions, contrast with for loops, and avoid infinite loops by proper increment and condition checks.
Create objects with constructor functions by using a capitalized name and the new operator, assigning this.name and this.age, and supporting multiple object instances with parameters.
Install detox globally and per-project, using npm to install the detox CLI; set up node, Xcode, iOS simulators, and Homebrew to enable iOS and Android testing.
Create a new React Native Expo project, install dependencies, and launch Android and iPhone simulators while preparing to configure Detox for local setup.
Configure detox for the React Native project by installing detox, initializing it, and reviewing the generated config.js and starter.js files, then load the project for editing.
Configure Detox for iOS UI automation by verifying the simulator device list and running tests on an iPhone 16 Pro with npm start in the iOS simulator debugger configuration.
Explore how asynchronous concepts like promise, async, and await drive reliable UI automation, showing how to wait for actions, handle launches, visibility checks, and synchronized UI interactions with Detox.
Learn to launch already installed iOS apps on a simulator with detox by configuring the bundle id and binary path in detox, enabling testing of locator strategies.
Configure a real android device for detox by enabling developer options and usb debugging, connecting with wiser, and setting android home and sdk root for adb verification.
** Complete mobile path: XCUITest (Swift) + Detox (JavaScript) + AI for QA **
Learn iOS UI automation with XCUITest and Swift, plus Detox mobile automation with JavaScript for React Native — including AI testing concepts for modern QA engineers.
This XCUITest and Detox course is built for manual testers, beginners, and automation engineers who want practical native iOS testing and cross-platform mobile E2E skills in one path.
What you will learn in this course:
- Swift fundamentals required for XCUITest automation
- XCUITest basics: setup, locators, assertions, and test structure
- iOS UI automation: gestures, alerts, waits, and validations
- AI-driven implementation concepts for XCUITest
- JavaScript fundamentals required for Detox
- Detox mobile automation for React Native apps
- Detox actions and Android automation workflows
- Practical skills for real mobile projects and interviews
Keywords covered in this course:
XCUITest, XCUITest Swift, iOS UI automation, iOS automation testing, Detox, Detox JavaScript, Detox React Native, mobile automation testing, Swift UI testing, React Native E2E, AI for QA, Xcode UI testing.
This course combines native iOS automation with XCUITest Swift and Detox JavaScript mobile E2E so you can build strong mobile automation skills for projects and interviews.
If you are searching for XCUITest Swift, iOS UI automation, Detox JavaScript, or XCUITest and Detox training in one course, this course is for you.
Mobile applications are at the heart of modern digital products, and skilled professionals in mobile automation testing are in high demand. This course is a complete, hands-on guide to XCUITest iOS automation, iOS UI automation testing, and Detox mobile automation using JavaScript, designed to take you from beginner to advanced level.
You will start with the fundamentals of iOS test automation from scratch, learning how to automate iOS apps using the XCUITest iOS automation framework and Swift for test automation. You’ll understand how to identify elements, handle gestures, alerts, waits, and validations, and design reliable and maintainable iOS automation frameworks used in real-world projects.
The course then focuses on Detox automation with JavaScript, a powerful solution for end-to-end mobile testing and cross-platform mobile automation. You’ll learn how to write stable tests, manage synchronization, and automate real user workflows for modern mobile applications.
To help you stay future-ready, the course introduces AI in test automation and AI-powered testing concepts. You’ll understand how intelligent test automation, self-healing tests, and test automation with AI can improve test coverage, reliability, and overall automation efficiency in modern QA teams.
This course is ideal for manual testers moving to automation, QA automation engineers, and anyone looking to build job-ready mobile automation skills. It also helps with iOS automation interview preparation and career growth for testers who want to work on advanced mobile automation frameworks.
By the end of this course, you’ll be confident in building scalable, maintainable, and modern mobile automation testing solutions for real-world applications.
XCUITest, iOS Automation, Swift, Detox, Mobile Testing
XCUITest iOS automation
iOS UI automation testing
Mobile automation testing
Swift for test automation
Detox mobile automation
Detox automation with JavaScript
iOS automation framework
End-to-end mobile testing
iOS test automation from scratch
Mobile testing for beginners
Cross-platform mobile automation
Automation testing for mobile apps
iOS automation interview preparation
QA automation engineer
Mobile automation framework design
AI in test automation
AI-powered testing
Intelligent test automation
Self-healing tests
Test automation with AI
Modern QA automation
Manual tester to automation
QA tester career growth
Automation testing for testers
Beginner to advanced mobile automation
Job-ready mobile automation skills
Course updated on 27 December 2025 with below concepts:
Object identification using Layout Inspector
Object identification using App.js
Actions on Android app UI Elements
Handling text fields - tapBackspaceKey, replaceText, clearText, tapReturnKey - android device
Handling long press, scroll , slider, screenshot , datepicker - android device
Handling Android Real Devices
Generate Android code using a copilot prompt
Course updated on 26 December 2025 with below concepts:
Detox Android Configuration
Course updated on 24 December 2025 with below concepts:
Introduction to Javascript
Javascript Configuration on Windows MAC
Overview on Console.log() & Hello World Program
Overview on Variables, Comments, Constants, Datatypes, Operators with examples
Conditional, Looping, break, continue, switch Statements, Functions, Anonymous, Arrow , Objects with examples
Arrays, forEach, class, object, constructor & methods
Course updated on 23 December 2025 with below concepts:
Performing Slider on element using adjustSliderToPosition
Handling DatePicker using setDatePickerDate
Overview on Device object & commands
Expect - toBeVisible(), toExist() , toHaveText(), toHaveLabel(), toHaveId(), toHaveValue(), waitFor(), withTimeout(), toBeFocused() with examples
Course updated on 22 December 2025 with below concepts:
Performing Tap on element
Performing Tap on element using coordinates
How to open app source in xcode and identify locators
Performing MultiTap on element
Performing LongPress on element
Performing Swipe Operation - Left, Right, Up & Down
Performing Pinch Operation
Performing Scroll Operation - top , bottom, left & right
Handling text fields - tapBackspaceKey, replaceText, clearText, tapReturnKey
Capture Screenshot
Course updated on 16 December 2025 with below concepts:
Overview on JEST
Jest describe, beforeAll, afterAll, beforeEach , afterEach with examples
Overview on Promise, async & await
Element identification using Accessibility Inspector
Update reinstallApp configuration in detox configuration file
Launch already installed apps using detox
Identify an element using it label - example on by.label() method
Identify an element using it text - example on by.text() method
capture element information using getAttributes()
capture all elements information using getAttributes()
Identify an element using it index - example on atIndex() method
Identify an element using by.traits([traits]) & and(matcher)
Identify an element using withAncestor(matcher)
Course updated on 15 December 2025 with below concepts:
Introduction to Detox
Detox vs Appium vs XCUITest
Detox- Gray Box Testing
Environment Setup for Detox
Creating a project for Detox
Configuring project with Detox
Course updated on 08 December 2025 with below concepts:
Overview on AI
Overview on LLM
Overview on RAG
Overview on Generative AI
Overview on Memory
Overview on AI Agent
Overview on LangChain & LangGraph
Overview on MCP Server
Overview on Human In the loop , Hallucination & Guardrails
Overview on Fine-Tuning
Overview on Context
Overview on Prompts
ChatGPT vs CoPilot vs CURSOR
Overview on OpenAI
Overview on AI Models
Overview on n8n workflow
Generate API Key in OpenAI
Create workflow in n8n
Create Public Chat in n8n workflow
Overview on OpenAI Tokens
CURSOR - Create a Chrome Extension for Record & Playback
CURSOR - Create an OTP Shield Mobile APP
Generate XCUITest test using VSCode Editor
Course updated on 29 January 2025 with below concepts:
Getting status of a switch and handling switch
Course updated on 1st August 2024 with below concepts:
Turn On/ Turn Off Bluetooth
Turn On/ Turn Off Wifi
Widgets Handling
XCUIDevice --> Press Home
Course updated on 1st Apr 2024 with below concepts:
Enter Character By Character into Text Field using KEYS
Course updated on 31st Mar 2024 with below concepts:
How to Delete a value from Text Field using Keys["Delete"]
Course updated on 28th Mar 2024 with below concepts:
. NSPredicate with Example
Course updated on 24th Jan 2024 with below concepts:
How to capture Coordinates of an Element
How to Perform Drag and Drop Operation
Course updated on 22nd Dec 2023 with below concepts:
Example on Matching - Identifier
How to Handle Cells Objects
Launch IPhoneSetting & Delete Safari History
Convert Integer to String
Generate Dynamic Number
arc4random --> Random Number Generator
Automate SauceDemo login flow on Safari browser
Tap Using Coordinates
Course updated on 14th Dec 2023 with below concepts:
How to identify Multiple Objects / Identify a unique object
We are updating the content based on the students requirements itself, if you feel that some more content needs to be added feel free to share with us so that we will update the content with the requested topics soon.
Course updated on 4th June 2023 with below concepts:
How to delete value from a text field using XCUITest and re-enter a new value
How to capture values from all the text fields and print them to the console.
How to verify a specific value from the list of values and break a loop
How to capture screenshot
Course updated on 20th Apr 2023 with below concepts:
Handling safari browsers using XCUITest
WaitforExistance
Page Factory Framework with example
Build input file not found info.plist issue and the solution which we need to implement
Course updated on 12th Apr 2023 with below concepts:
Overview on Functions in swift with examples