Links

Sample Project - Mobile

Similarly to web, a project should include 3 core files:
oxygen.conf.js, which includes the project configuration, this file contains the tools for the project such as which modules to use, creating suites to run multiple scripts, reporting type, etc.
oxygen.env.js, which includes the versions, different configurations, usernames, connection strings etc.
oxygen.po.js, which includes all the page objects, locators, functions, etc.

Simple mobile test example from scratch

Let's start by creating a folder and inside it creating the oxygen.env.js and defining our app settings
module.exports = {
test_version_9: {
username: 'user',
password: 'pass',
con_string: 'Driver={SQL Server};Server=DESKTOP\\SQLEXPRESS;',
capabilities: {
"deviceName": "ad071702170f42d9a0",
"platformVersion": "8.0.0",
"platformName": "Android",
"appPackage": "clalit.android",
"appActivity": "clalit.android.MainActivity",
"automationName": "UIAutomator2",
"noReset": false
}
},
prod_version_9: {
username: 'user',
password: 'pass',
con_string: 'Driver={SQL Server};Server=DESKTOP\\SQLEXPRESS;',
capabilities: {
"deviceName": "ad071702170f42d9a0",
"platformVersion": "9.0.0",
"platformName": "Android",
"appPackage": "clalit.android",
"appActivity": "clalit.android.MainActivity",
"automationName": "UIAutomator2",
"noReset": false
}
},
}
Now let's create the oxygen.po.js file
module.exports = {
loginScreen: {
usernameInput: 'id=app.android:id/user',
passwordInput: 'id=app.android:id/pass',
loginButton: 'id=app.android:id/login_button',
},
searchScreen: {
searchInput: 'id=app.android:id/search_input',
searchButton: 'id=app.android:id/search_button',
},
searchUser: (name) => {
mob.type(po.searchScreen.searchInput, name)
mob.click(po.searchScreen.searchButton)
}
}
Finally let's create the oxygen.conf.js file
module.exports = {
suites: [{
name: 'End to End tests',
cases: [
{ path: './Scripts/01. ' },
{ path: './Scripts/02. ' },
{ path: './Scripts/03. ' },
]
}],
modules: ['mob', 'log', 'assert'],
reporting: {
reporters: ['html', 'json']
},
}
And now let's create a folder with our test scripts
Don't forget to choose an environment
mob.transaction('01. Initialize')
mob.init(env.capabilities)
mob.transaction('02. Type username & password')
mob.type(po.loginScreen.usernameInput, env.username)
mob.type(po.loginScreen.passwordInput, env.password)
mob.transaction('03. Login')
mob.click(po.loginScreen.loginButton)
mob.transaction('04. Search User')
po.searchUser('Tony')
mob.transaction('05. Assert Results')
mob.assertText('android.view.View[2]/android.widget.UserText', 'Tony')