Appium: iOS Testing with Node.js Step-by-Step Guide

Good day to everyone, in this tutorial, we will go through the process of writing node.js tests for iOS, from software installation to running actual tests on simulated devices with use of Appium.

Appium is a freely distributed open source framework for mobile application UI testing. Appium supports all languages that have Selenium client libraries like Java, Objective-C, JavaScript with node.js, PHP, Ruby, Python, C# etc.

Prerequisites to use Appium for iOS testing:

  1. OS X. I recommend using OS X Sierra (10.12 or higher). This is an essential requirement, since Appium cannot start sessions for iOS without Xcode, which is available only for Mac.
  2. JDK (Java Development Kit).
  3. Xcode. Get one either from AppStore or Apple Developer. By default, comes with iOS SDK, which we will need for running simulators.
  4. Homebrew – package manager for Mac. Will make our life easier in the long run.
  5. Appium Client for Mac (client).
  6. IDE and testing framework of choice. In our case, we will use js and mocha testing frameworks, so we need to install node.js at first. We will do so in the “Environment Setup” section below. NOTE: even though Appium client supplied with “Node.exe” and NPM (node package manager), we will install those manually to have the latest version.
  7. carthage – dependency for running XCUItests for iOS apps.

Environment Setup

Step 1. Download and install Xcode. Go to AppStore and type “xcode” in a search field. Grab the first one, provide your Apple ID if needed. After download is completed, go to the Applications folder and run Xcode to finish installation.

Step 2. Install Homebrew.

2.1. Open your terminal and run this command “/usr/bin/ruby –e “$(curl -fsSL“” (without outer quotes). Homebrew will start installation and ask for root password if needed. Just follow installation guidelines and you’ll be fine. For more details visit Homebrew site.

2.2. After installation run “brew doctor” (without quotes) to verify, that everything is okay.

2.3. Run a command “export PATH=”/usr/local/bin:$PATH”” (without outer quotes).

Step 3. Install node.js.

3.1. We will use Homebrew for this, so in terminal run a command “brew install node”. This will setup everything you need.

3.2. After installation, run commands “node –v” and “npm –v” to see installed version of node.js and npm respectively.

Step 4. Download and install JDK. After download is complete, navigate to your Downloads folder, double-click the downloaded .dmg file and follow installation instructions.

Step 5. Download and install Appium Client. Installation process doesn’t differ from the one described in Step 4.

Step 6. Install carthage. Simply run “brew install carthage” in the terminal.

Now, all of the required software is installed, let’s proceed with further setup.

Simulator setup.

In order to run our tests, we will need a device to run them on. For sake of this tutorial we will use iOS simulator, which is bundled with Xcode.

Step 1. Press Command + Space to launch Spotlight.

Step 2. Type Simulator and hit Enter.

Step 3. Launch a Simulator from search results

Step 4. When in Simulator, click the “Hardware” menu, then the “Device” “Manage Devices…”.

Step 5. In a Devices window you can view all available devices to you. Click the one you want to use for tests, let’s say “iPhone SE” with iOS version of 10.3.1.

Step 6. We will need info about the name, iOS, and Identifier to start both Appium Inspector session and our test execution. NOTE: if you need to run tests on device with iOS version not presented in list, you can create it by yourself.

6.1. Click the “+” button at bottom left corner of the window and choose the “Add Simulator”.

6.2. Set device name (it is mandatory to set unique device name), choose device type and iOS version. Download one you need if it is not presented in list.

6.3. Now you should see the newly created simulator in a list of simulators. Do not close this window yet as we will need it.

Step 7. Launch the Appium Client from your Applications folder.

Step 8. Type “localhost” (without quotes) in a Host field and click the “Start Server v.1.6.5” button. Now we have Appium Server up and running.

Step 9. Click the “Start Inspector Session” (button with magnifier on it). You should see this:

Step 10. Now, let’s specify details of simulator we want to use and app we want to install. Create the following set of Desired Capabilities:

Points to remember here:

  • app – full path to your built app on Mac. I’m using TestApp provided by Appium Team and available here. In case you want launch tests for Safari, omit this option and use “browserName”: “safari” NOTE: your app must be built specifically for simulator and testing purposes.
  • platformName – name of our platform. Since we want to run iOS tests, type iOS.
  • platformVersion – version of iOS on tested device. Look at “iOS” parameter of your simulator of choice on the “Devices” window and set it here.
  • deviceName – name of device you want to use. Grab the “Identifier” parameter of desired simulator on the “Devices” window and set it here.

Step 11. After that, switch back to your Simulator, go “Hardware” “Device” and choose a device type you want if your simulator isn’t already of that type. Wait for Simulator to restart and keep it running – this will decrease Appium Inspector startup time drastically.

Step 12. In Appium, click the “Start Session” button. You should see app being installed on your simulator of choice as good as Appium Inspector loading. NOTE: if you’ve encountered Appium error stating “could not get xcode version” you may want to set path to Xcode manually. In terminal, run commands “sudo xcode-select –reset” and sudo xcode-select –switch /Applications/ (both without quotes). This should fix the issue. You should specify path to your according to your installation folder in case it differs from Applications. You should see something like this:


Writing tests

Now, we have everything set up. At this point, we can proceed with writing tests for our app using node.js.

Step 1. In Documents, create a new folder and name it “ios-node-test”. This will be our project folder.

Step 2. Open Terminal and navigate to your project folder using command “cd /full/path/to/your/folder” or start it in project folder directly.

Step 3. Execute the “npm init” command in the folder. Follow the setup process in a command line to configure package.json file of your project.

Step 4. After the basic setup, we need to add a bunch of dependencies in order to make our tests work. We will use mocha as our testing framework with chai for assertions. Also, we will require webdriverio testing utility, which improves interaction with mobile web, native and hybrid apps. So, run the following commands:

  • npm install mocha
  • npm install chai
  • npm install chai-as-promised
  • npm install wd
  • npm install wdio-mocha-framework –D (–D parameter here stands for installation this dependency only for developers)
  • npm install webdriverio@4.7.1 –D

NOTE: at the time of writing this guide the latest version of webdriverio is 4.8.0. However, we are installing v.4.7.1 due to setValue() method working incorrectly when using webdriverio v.4.8.0 in conjunction with Appium v1.6.5. Probably, fix for this issue will be included in future releases either from Appium or Webdriverio team.

Step 5. Create a subfolder and call it “helpers”. In “helpers” create file with .js extension and name in “desiredCapabilities”. In this file we will specify all the necessary details for our script, such as application we want to run and device we want to use for testing. Here is the completed content of the file, which follows our previous steps:

As you can see, in desiredCapabilities we haven’t change anything compare to Appium Inspector, although you may consider setting apps bundle id if you have one.

Step 6. Return to project folder and create a file “native.js”. This will be our script to run tests for native app. In order to locate elements, we will use accessibility id strategy, provided by webdriverio, for example:


This resource is specific to TestApp application, provided by Appium team as code sample. To get accessibility id of the element or any other identifier available we will use Appium Inspector. Just click the element while in the “Select” mod to properties panel to appear and grab the most suitable attribute or identifier. If by any means you cannot retrieve any selector except xpath you can use it as well, for example:

.click(//XCUIElement TypeButton[@name=”ComputeSumButton”])


Step 7. With that in place, we are ready to start scripting. As I said earlier, we will use webdriverio for writing our test, so consider looking at their docs for more info.

7.1. Let’s import all required components and create client – main object for interactions and actions:

var webdriverio = require(‘webdriverio’);

var expect = require(‘chai’).expect;

var config = require(‘./helpers/desiredCapabilities’).options;

var client = webdriverio.remote(config);

7.2. Now, create the main function by using describe keyword and pass “Simple cases” as the first parameter. This function will wrap our tests and declare before hook. This will be executed before our test-suite.

describe(‘Simple cases’, function () {

before(function () {


return client.init();


7.3. Create a sub-function by using describe keyword and call it “test-app-addition”. Set timeout for executing tests of this suite and write the tests with use of it keyword.

describe(“test-app-addition”, function(){

it(“add-3-3”, function(){

return client.element(‘~IntegerA’)







.then(function (text) {





7.4. In scope of wrapper function, add after hook, which will close the connection as well as the AUT.

after(function() {

return client.end();



Step 8. Open “package.json” and under scripts section add exactly the same line: “native”: “mocha native.js”. This will allow us to run our test by “npm run native”.

Step 9. Finally, your “ios-node-test” folder should be like this:

And “helpers” folder should be like this:

Step 10. Close your Appium inspector by hitting the “Quit Session & Close Inspector” button at the top-center panel.

Step 11. Run a script by executing “npm run native” in your project folder. You should see execution process on your device as good as mocha log in the console:

That’s it! Now you know how to install, setup and configure all required software to run your tests for iOS UI automated tests, as well as prepare environment for your tests. And, of course, you have a basic knowledge about writing tests themselves using node.js with webdriverio and mocha.

TestMatick company offers automation testing services for web and mobile applications. With TestMatick you can also utilize all the advantages of continuous integration. It includes setup of the environment which automatically integrates all parts of a project and executes tests every-time when someone makes a commit to the version control.

We provide QA automation services using the following automation tools:

– Selenium WebDriver
– Appium
– Automated QA TestComplete
– HP / Mercury QTP
– Segue SilkTest
– Ranorex
– Robotium

5 Major Challenges of Mobile App Testing

The increase in mobile phone usage is pretty evident nowadays. The smartphones are quickly becoming the primary tool of communication between consumers and businesses globally, giving birth to thousands of apps every day.

In other words, this phenomenal growth of mobile devices has opened up avenues for organizations to integrate them into the computing environment. Today’s mobile applications deliver complex functionality on platforms that have limited resources for computing. Diversity presents unique challenges that require unique testing strategies.

In comparison with web or desktop applications, mobile app testing is much more ambiguous. During this process, mobile app developers and app testers undergo various challenges.

Mobile apps have evolved at a much quicker rate than expected. They have made an unconquerable place in the lives of people that led to a significant increase in app usage. There is an upsurge in mobile app development services.

According to various statistics:

  • Mobile apps are expected to generate around the US $189 billion, by 2020.
  • The percentage of mobile users that are not happy with online user experience is 39%.
  • The percentage of users who do not return after getting poor experience is 46%.
  • Worldwide mobile app downloads are expected to rise up to 288 billion, by 2020.

The statistics mentioned above, highlight the importance of proper testing. The main motive is to provide better app performance and user experience. Nevertheless, there are a few challenges that an app tester must overcome, so he could develop better apps.

Here is the list of those major challenges.

  1. Creating a Better User Experience

A good user experience is fundamental for mobile apps success. There are various experts required for the mobile app development services. This comprises of developers, analysts, and designers.

After passing through various phases of development, the app lands up in quality assurance department to the tester. He inspects each and every aspect of the app development.

Nonetheless, the main challenge at this point in time is to have a clear understanding of target market, users, and relevant competitors. In order to conduct the test, these all things must be kept under consideration with brands value.

You have to be very careful while testing because the slightest negligence can result in poor UX. This can be overcome with extra research and good communication.

  1. Awareness about the Latest Innovations and Modifications

There is a genuine need for mobile app tester to stay updated with innovative and latest testing approaches. This begins with operations of mobile app and incorporates data testing with the environment.

Let keep this under consideration that mobile app functionalities modify in accordance with various data, sooner or later inviting a wholly new scenario for the testing process.

Apart from this, the evolving pitch of smartphones further makes the situation ambiguous. There is a critical need for a tester to stay updated with same things in accordance to modify the testing methods.

  1. Testing Automation

Testing automation is the most significant part of mobile app testing. There is the variety of tools available in the market to serve this purpose. Now it is the responsibility of the tester to identify and select which tool suits the best in executing the process.

This is determined by the operating system the application belongs to and the fact if it is paid or free. Let’s just think it this way, if you cannot find the best-suited tool to test the app, ask it from your own self; if it is paid or free. These are a few challenges that an app tester encounters while testing the app.

  1. Multi Device Testing

In this situation, you will require a testing laboratory set up accommodated with mobile devices. The tester will then check app performance on various devices.

This mobile app development service process might prove to be pricier in contrast to imitation technique as it confirms device based functions and other significant QoS strictures. On the contrary, fruitful execution will depend on the sudden variations in the platforms and the mobile devices.

In order to manage this again, it is important to stay updated with the latest trends of this industry. The tester is required to amalgamate those trends to conduct tests.

  1. Checking if The Network is Compatible

Network connectivity cannot be defined based on presuppositions. 3G or 4G connectivity does not always ensure a sound connectivity. There is also a probability that app users may be dependent on the 2G network.

Cross checking is required for mobile app tester to make sure that the app is working smoothly. In order to do this, mobile app tester has to make sure that he performs the test on all sorts of networks.


Mobile app testing comprehensively plays an imperative role in success and growth of any app. A little mistake and generate disastrous outcomes for your company. Here come the responsibilities of the client and development team to have a transparent communication. This should be combined with smart and hard work in order to deliver excellent results.

Author Bio:

Ray Parker is an entrepreneur and internet marketer with over 15 years of experience in Search Engine Optimization, Creative Writer and Digital Marketing with IQVIS. He has worked with several clients from all over the globe to offer his services in various domains with a proven track record of success.

5 Major Mobile App Testing Challenges & Solutions to Check Out

As compared to traditional desktop and web application testing, mobile app testing is more complex; thus, it is important for mobile app developers and testers to go through different challenges during the app testing process.

In the recent times, mobile apps have made a huge space in the lives of humans and have grown much faster than we expected. However, an increase in the app usage has been followed by rapid mobile app development that gave birth to a need for proper testing. One of the main reasons behind this is to provide better user experience and app performance.

But there are some of the challenges that a mobile app tester will face while testing an application, so he/she needs to overcome the challenges and develop a competing mobile application. Before we jump into the different challenges of it, we should understand the exact need of it.

Importance of Mobile App Testing

As per the latest report, 39% of mobile users are not happy with the online experience that they get on a daily basis. One another report suggests that 46% of these unsatisfied users will never come back after experiencing a poor experience.

According to these two reports, there is a huge need of improvement. Once you act on right time, you will have approximately 3 to 5 people worldwide, who prefer to purchase smartphone so that they can make them your application user by 2020. These numbers have formed a need to learn why you should enhance the mobile app experience.

Let’s Give an Instant Look at the Major Challenges of Mobile App Testing 


It is important that a mobile app tester stays updated with the latest and current innovative testing approaches. However, it can begin the process of mobile app and comprise everything till the data functionalities with the environment.

You should comprehend that the mobile functionalities can modify as per the contexts with different data that ultimately invite a completely new scenario for the testing process. Apart from this, the changing field of smartphones complexes the situation. Therefore, the app tester also needs to stay updated with the same. 

Device Differences

Because of the compatibility issues, mobile app testing is quite difficult as the mobile app can be deployed across different devices, which have varied operating systems like iOS, Android, etc., manufactures (Samsung, Apple, etc.) and more. Moreover, the team can’t be 100% sure about the tested application that if the app works well with a given device, it will run efficiently on other devices. 

Creating User Experience

In the success of the mobile application, user experience plays a very important role. However, the process of developing an app needs different experts and professionals, including designers, developers, and analysts that are on the top on the list.

Though every single of them does their work efficiently, it lands on the tester to appraise the mobile application. However, he needs to go carefully through each aspect. One of the major challenges here is to comprehend the target users, market, and the competitors.

Therefore, you should keep these all together with the brand’s value and app tester needs to conduct important tests. Even the smallest mistake can result in poor user experience, but it can be solved with the right communication between the team and by some research. 


As we all know that mobile device screens are quite small, and there is always a huge data that we want to present than possible to fit the screen. It is challenging for you to keep the interaction clean and easy for the user, and showing all the important information.

However, readability and font size are also considered as the complex factors of usability. While testing mobile apps, it is essential to give attention on the size of click areas and ensure that all texts are readable without lenses. 

Compatibility With the Network

The connectivity of the network can’t be defined based on beliefs. A user with 4G/3G connectivity doesn’t necessarily have sound connectivity. However, there are some good chances that your application users might be dependent on a 2G network.

Thus, it is important for a mobile app tester to cross check that the app works smoothly and wonderfully on different networks. In order to do this, the tester needs to ensure he executes the tests on all different network types.

So, these are the five major challenges of mobile app testing that every mobile app tester face while testing an app, but it is must they overcome these challenges and make the app more efficient. However, it would be better to hire a professional mobile app tester company that has a qualified team of quality assurance.


Author: Sohel Ather



Global Mobile Application Testing Services Market Growing at a CAGR of 18.31% during 2017-2021

Software testers face many challenges while developing innovative and error-free software products and applications. They require IT solutions that can minimize the cost of testing services and enhance the quality of software. Rapid changes in technology and increasing mobility solutions compel software developers to consider testing as an important phase of the software development life cycle. An inadequate test environment for software testers lowers operational efficiencies and reduces the quality of software products and applications. Unidentified bugs and errors in the MAT process hinder the performance of software, incurring huge losses for firms.

Technavios analysts forecast the global MAT services market to grow at a CAGR of 18.31% during the period 2017-2021.

Covered in this report
The report covers the present scenario and the growth prospects of the global MAT services market for 2017-2021. To calculate the market size, the report considers global demand for MAT services.

The market is divided into the following segments based on geography:

Technavio’s report, Global MAT Services Market 2017-2021, has been prepared based on an in-depth market analysis with inputs from industry experts. The report covers the market landscape and its growth prospects over the coming years. The report also includes a discussion of the key vendors operating in this market.

Download Sample Copy of Report at

Key vendors

Other prominent vendors
Computer Sciences Corporation (CSC)
Sopra Steria
Hewlett Packard Enterprise
NTT Data
Tata Consultancy Services
Tech Mahindra
QualiTest Group

Market driver
Need for cost reduction and faster release of mobile application
For a full, detailed list, view our report

Market challenge
Cyber security concerns in cloud-based testing environment
For a full, detailed list, view our report

Market trend
Increased usage of crowdsourced testing
For a full, detailed list, view our report

Key questions answered in this report
What will the market size be in 2021 and what will the growth rate be?
What are the key market trends?
What is driving this market?
What are the challenges to market growth?
Who are the key vendors in this market space?
What are the market opportunities and threats faced by the key vendors?
What are the strengths and weaknesses of the key vendors?

Contact Details:
MRR Biz | MarketResearchReports.Biz
Email Id:

Mobile Application Testing Solutions Market To Increase at Steady Growth Rate

Revenues from mobile application testing solutions market are expected to grow substantially through the forecast period. The mobile application testing solutions market is predominantly controlled by manual testing tools. Growing popularity of these tools in various end-use industries is fostering their demand and subsequently driving the growth of globalmobile application testing solutions market. In addition, the increasing adaptation by the corporates to protect and manage their mobile applications portfolio has turned out to be an important factor in its market expansion.

The growing adoption of mobile application and software over its computer operated counterpart owing to a large variety of relevant devices, systems and networks has successfully penetrated a narrower section of the market. The increasing number of mobile application developers and rising competition in the market has led to massive improvements in the quality of testing devices launched in the market.

The global mobile application testing solutionsmarket was never a by-product of the traditional software testing market, but rather came up as an independent entity. The mobile application testing solutionsmarket is witnessing the entry of new players, such as Soasta and Experitest. As new entrants bring in new models and advanced testing solutions, the market is expected to witness further growth during the forecast period, 2016-2026.

Mobile application development and testing are rapidly evolving as top primacies for IT. As the number, type, and overall software of mobile devices and tablets is ever-evolving, testing device manufacturers have to adapt to the changes quickly so that they continue to offer the right testing platforms for app developers.

Mobile Application Testing Solutions Market:Drivers & Restraints

The growing need of maintaining a competitive edge in the market is encouraging corporates and enterprises to increasingly invest in mobile application testing solutions. In addition, the evolving market of mobile application testing solutions is benefitting from growing customisation in testing tools. Growing popularity of automated testing is also boosting the growth of the market. The market is also expected to be driven by strategic partnerships between leading industry members.

Mobile Application Testing Solutions Market: Segmentation

The mobile application testing solution market has been segmented on the basis of product type and service type.

By product type, the global mobile application testing solutions market is segmented into:

Manual Testing Tools

Automated Testing Tools

By service type market, the mobile application testing solutions market is segmented into:

Development and implementation


Support and Maintenance

Mobile Application Testing Solutions Market: Region-wise Outlook

The global mobile application testing market is projected to register a favourable growth through the forecast period, 2016-2026. North America is expected to retain its position as the leading market for mobile application testing during the forecast period. Presence of a large user-base comprising of app developers and coders in the US and Canada is also expected to contribute to the growth of the market during the forecast period.

Visit More Information@

Asia Pacific, the region where smartphone users are expected to be over 2 billion by 2020, will also offer growth opportunities to mobile app testing device manufacturers. Countries like South Korea, Taiwan, and China have a sizeable user-base and many recent popular apps have been developed by developers from APAC. It is expected that Asia Pacific will emerge as a strong region for mobile application testing device market during the forecast period 2016-2026.

Mobile Application Testing Solutions Market: Key Players

Some of the key market participants in global mobile application testing market are Keynotes DevicesAnywhere, Perfecto Mobile, Experitest, Mobile Labs LLC, Soasta,Perfecto Mobile Ltd., Sauce Labs, and Jamo Solutions.

Contact Details:
Yogesh | Future Market Insights
Email Id:

The Best Automation Tools for Mobile Testing

There are many many automation tools available for Mobile Testing, that help release versions of mobile applications.


Appium is an open source testing tool that automates native, hybrid, and mobile applications on both platforms, i.e. Android and iOS. Mobile or web applications are accessed using different browsers. It is a freely distributed open source mobile application UI testing framework.

Appium offers cross-platform application testing i.e. single API works for both Android and iOS platform test scripts.

Appium supports all languages that have Selenium client libraries like- Java, Objective-C, JavaScript with node.js, PHP, Ruby, Python, C# etc.


Robotium is an open-source test framework for writing automatic gray-box testing cases for Android applications. It has complete control over hybrid and native applications. This testing tool makes it easier for users to document useful and rigid automatic black-box UI tests for Android mobile applications.

Through Robotium, mobile app developers can write system, function, and user acceptance test scenarios.


MonkeyTalk is a testing tool has been designed to automate the process of performing real functional interactive tests for Android and iOS mobile applications. The entire process ranges from standard smoke tests to complex data oriented tests.

Smoke testing is conducted to check whether the new framework added by the development team is highly stable or not. However, data-oriented tests involve the process of storing test data in some external space and utilizing the data while performing these tests.


Calabash is an automated acceptance testing tool for Android as well as iOS mobile applications. Calabash provides end-users with APIs that are customized to suit mobile applications. It can also be compared to Selenium WebDriver.

1 2 3 9