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