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
Copy 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
Copy 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
Copy 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
Copy 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')