menu

All Editions

43
Setting iOS App Permissions Automatically
Java
iOS
Simulators
Last updated on Nov 14, 2018
Using a special capability, you can automatically set the permissions necessary to test your app, which makes dealing with iOS system alerts authorizing those permissions a thing of the past. Some extra system setup is required to make this new capability work, but it's worth it.
42
Simulating Incoming Phone Calls On Android
Java
Android
All Devices
Last updated on Nov 7, 2018
Just as you can generate artificial text messages to an Android emulator, so you can also convince an emulator to believe it's receiving a phone call! Appium has a simple API for triggering incoming phone calls from arbitrary numbers, which can be useful for a variety of reasons, not least of which is making sure your app stays functional during a call.
41
How To Test Real iOS Devices With Appium, Part 2
Java
iOS
Real Devices
Last updated on Oct 31, 2018
This is the second part in a full tutorial on getting real iOS devices to work with Appium. Assuming everything is installed and set up correctly, this is what you need to do to make Appium work its magic.
40
How To Test On Real iOS Devices With Appium, Part 1
Java
iOS
Real Devices
Last updated on Oct 24, 2018
Connecting an iOS device to your computer and setting it up to be automated by Appium for the first time can be challenging; follow along with this post to get all the details you need for a first-time installation
39
Early-Stage AI for Appium Test Automation
Java
All Platforms
All Devices
Last updated on Oct 23, 2018
There's been a lot of discussion around the potential ramifications of AI for automated testing. While the debate will no doubt rage on, Appium and Test.ai have teamed up to release a simple integration which allows you to find elements using a machine learning model, making it possible to find icons in your app without knowing anything about your app or looking up selectors.
38
Capturing Browser Errors and Logs in Android Web/Hybrid Apps
Java
Android
All Devices
Last updated on Oct 10, 2018
When using Chrome on Android, or Chrome-backed webviews, it is possible to retrieve logs written by web applications (or hybrid applications) to the browser console. Retrieving these logs is useful for a number of reasons, from observing app state to saving app-internal logs along with test artifacts.
37
Capturing Browser Errors and Logs in iOS Web/Hybrid Apps
Java
iOS
All Devices
Last updated on Oct 3, 2018
A lot of information is transmitted through the browser console, some of which is very useful, especially in cases of app errors. Using the log retrieval capabilities of the Appium client, we can gather browser console messages for storage as a test artifact or even to make assertions on app state.
36
Using The 'nativeWebTap' Capability
Java
iOS
All Devices
Last updated on Sep 26, 2018
When automating web applications using Appium, we sometimes run into situations where clicking an element doesn't appear to do anything in our tests, even though clicking the element manually works. The nativeWebTap capability comes to our rescue!
35
Writing XPath Queries That Work
All Languages
All Platforms
All Devices
Last updated on Sep 26, 2018
We hear a lot (from Appium Pro and other places) about how it's not a good idea to use XPath. That's generally correct. There are times, however, when it is totally fine to use XPath, or when XPath is the only option. In this edition we take a look at how to write good XPath queries to minimize the XPath blast radius.
34
Simulating Hardware Keys And Key Events On Android
Java
Android
All Devices
Last updated on Sep 12, 2018
Appium automation doesn't necessarily stop at the edge of the screen. Your Android device has hardware buttons (power, volume control, etc...), and Appium gives you the ability to automate these as well, using a generic KeyEvent interface from Android.
33
Finding Elements By Image, Part 2
Java
All Platforms
All Devices
Last updated on Oct 10, 2018
We've already seen how to find elements by image, but this doesn't always work out of the box. There are a number of knobs, dials, and switches you can play with (in the form of Appium settings) that help modulate the behavior of the image matching procedures. These will help fine-tune and stabilize your find-by-element usage.
32
Finding Elements By Image, Part 1
Java
All Platforms
All Devices
Last updated on Sep 5, 2018
When you just can't find an element, whether because it's built using non-standard APIs or has no uniquely identifying markers, it's possible to fall back to image matching via a template image. This technique, when used appropriately, can help overcome roadblocks to automation.
31
Automating Custom Alert Buttons on iOS
Java
iOS
All Devices
Last updated on Aug 22, 2018
Alerts in native mobile apps don't always work exactly the same way that alerts in web browsers do, which means we need a bit more than the WebDriver spec can give us. Appium has a special command to help manage the extra buttons that can be present in mobile alerts. In this edition we take a look at how it works on iOS.
30
iOS-Specific Touch Action Methods
Java
iOS
All Devices
Last updated on Aug 2, 2018
Sometimes using the standard Action APIs leads to undesired behavior due to the not-always-perfect mapping between the WebDriver spec and the available mobile automation technologies Appium uses. That's why Appium also makes platform-specific action methods available for 'direct' access to underlying action automation methods.
29
Automating Complex Gestures with the W3C Actions API
Java
All Platforms
All Devices
Last updated on Aug 1, 2018
The ability to automate all the actions a user could take is essential, and that extends to touch gestures like pinch, zoom, and tapping with custom durations. Appium can do all this and more, with its support of the W3C Actions API that allows the encoding of arbitrary touch input behavior.
28
Running Multiple Appium Tests in Parallel
Java
All Platforms
All Devices
Last updated on Jul 31, 2018
The best way to achieve a speedy build when it's full of Appium tests is to run those tests in parallel. In this article, we explore how to set up parallel testing locally, utilizing either multiple Appium servers or just a single server hosting multiple sessions.
27
Making Your Appium Tests Fast and Reliable, Part 9: When Things Go Wrong
All Languages
All Platforms
All Devices
Last updated on Jul 25, 2018
Rounding out this series on speed and reliability, we consider failure resolution strategies. How do you debug issues? How do you locate a problem in the Appium stack? Where do you report bugs? And so on.
26
Making Your Appium Tests Fast and Reliable, Part 8: Mocking External Services
Java
iOS and Android
All Devices
Last updated on Jul 19, 2018
One of the most common causes of instability or non-determinacy in tests is due to dependence on external services, like a backend API server. Often, when testing your app it is not really necessary to simultaneously test these backend services, and a 'mock' server can be used instead, which greatly increases both the speed and reliability of your tests.
25
Making Your Appium Tests Fast and Reliable, Part 7: Disabling Animations
Java
iOS and Android
All Devices
Last updated on Jul 19, 2018
Animations in mobile apps are part and parcel of the beautiful app experience we've all come to expect. They are, however, completely useless for testing. In this edition of the 'Fast and Reliable' series, we look at how to turn them off completely, or otherwise reduce them to speed up our tests and improve test stability.
24
Making Your Appium Tests Fast and Reliable, Part 6: Tuning Your Capabilities
Java
iOS and Android
All Devices
Last updated on Jul 4, 2018
You don't have to settle for 'default Appium'. If you find yourself in a place where you're experiencing issues, or want to try a different operational mode, there are a ton of desired capabilities you can check out that modulate the way Appium works under the hood. You might find that the problem you're experiencing has a well-known workaround in the form of a desired capability you can simply plug into your driver initialization.
23
Making Your Appium Tests Fast and Reliable, Part 5: Setting Up App State
Java
iOS and Android
All Devices
Last updated on Jun 27, 2018
Functional tests are kind of slow. It's sad, but it's a fact of life and something we don't need to get too concerned about if we remember that, just as in the Matrix, 'there is no spoon'! We can use a variety of techniques to set up app state directly, without having to automate the UI, so that our UI tests can test only the steps which we actually care about for a particular scenario.
22
Making Your Appium Tests Fast and Reliable, Part 4: Dealing With Unfindable Elements
Java
iOS and Android
All Devices
Last updated on Jun 20, 2018
Sometimes, for whatever reason, we need to interact with elements that Appium can't find as elements. What can we do when there's no element to call 'click()' on? Hacky things, that's what we do. But we do the hacky things as reliably as we can.
21
Making Your Appium Tests Fast and Reliable, Part 3: Waiting for App States
Java
iOS and Android
All Devices
Last updated on Jun 20, 2018
In this edition of the miniseries on speed and reliability of tests, we examine a very important aspect of writing any functional test: making sure that the app is in the state you expect before you attempt to interact with it. Here we learn how to ensure your assumptions about said state are correct.
20
Making Your Appium Tests Fast and Reliable, Part 2: Finding Elements
Java
iOS and Android
All Devices
Last updated on Jun 13, 2018
Continuing a larger Appium Pro series on making tests more robust, in this episode we examine the various locator strategies available within Appium, when to use which, and other approaches and practices to making sure your elements are found and not lost.
19
Making Your Appium Tests Fast and Reliable, Part 1: Test Flakiness
Java
iOS and Android
All Devices
Last updated on Jun 6, 2018
In this article we start a series that takes a look at a collection of tips and best practices that all contribute to greater speed and reliability of your Appium tests. First off, we discuss the dreaded concept of test 'flakiness', and how we should approach this concept within the world of Appium.
18
Using Espresso With Appium
Java
Android
All Devices
Last updated on May 23, 2018
Espresso and Appium?! That's right, you can access the power and reliability of Google's flagship Android automation technology from within Appium, retaining the ability to write WebDriver-compatible scripts in any programming language.
17
Automating Cross-Platform Hybrid Apps
Java
iOS and Android
All Devices
Last updated on May 16, 2018
Hybrid apps contain both native and web components, melded together in some ratio to provide a single unified app experience for the user. With Appium and the various Context commands, it's possible to successfully automate both halves of hybrid apps across both iOS and Android.
16
Automating the Clipboard on iOS and Android
Java
iOS and Android
All Devices
Last updated on May 9, 2018
Both iOS and Android allow copying and pasting of text and other types of content. Apps can hook into this native clipboard and provide custom experiences based on clipboard content. Appium gives you special commands to automate the clipboard across both platforms.
15
Testing iOS Push Notifications
Java
iOS
Real Devices
Last updated on May 2, 2018
Push notifications are an essential part of many apps. How can you test that the appropriate messages are sent? Apple doesn't make it easy, but with Appium there's a way to solve the challenge by automating the notifications shade.
14
How to Automate a Pop Rock Band
JS
All Platforms
All Devices
Last updated on Apr 25, 2018
Sometimes you need a mobile software robot like Appium for something other than your day job. In this article I break down my AppiumConf 2018 demo, giving a behind-the-scenes tour of how I managed to coax Appium to act as the director of a software band which accompanied my performance of the original song 'Ghost in the Machine'.
13
Switching Between iOS Apps During a Test
Java
iOS
All Devices
Last updated on Apr 18, 2018
Sometimes being able to automate your app-under-test (AUT) is not enough. People don't have just one app on their phone, and oftentimes your app depends on actions taken in another app. How do you test multi-app flows like this? With Appium, of course!
12
Capturing Performance Data for Native iOS Apps
Java
iOS
All Devices
Last updated on Apr 11, 2018
App usability is about more than functionality: if the user experience isn't snappy enough, it can be a big problem. Performance testing and analysis is an important phase of testing. Thankfully, Appium can gather performance data during the course of your iOS tests.
11
Simulating SMS Messages on Android
Java
Android
Emulators
Last updated on Mar 28, 2018
Mobile apps have the possibility of integrating with the core communications functions of mobile devices. For example, they can send or respond to SMS messages. When testing with Appium it's possible to generate SMS messages that show up on Android Emulators, that can be used as part of an app verification flow.
10
Anatomy of Logging in Appium
All Languages
All Platforms
All Devices
Last updated on Mar 21, 2018
Running into problems with Appium can be a frustrating experience. Sometimes you just get a cryptic, unhelpful message as part of an error thrown in your client code. Where do you go next? The Appium logs! This is a guest post from Isaac Murchie on how to take advantage of reading the Appium logs to help understand what's going on and potentially resolve issues.
9
Testing Android App Upgrades
Java
Android
All Devices
Last updated on Mar 14, 2018
It's important to test that user data and user experiences are not broken due to changes between app version upgrades. Appium comes with some built-in app management commands that make it possible to test how your app behaves across versions, all within the context of one Appium session.
8
How to Find Elements in iOS (Not) By XPath
Java
iOS
All Devices
Last updated on Mar 7, 2018
If you've used Appium for any length of time, you've probably encountered the sad fact that, sometimes, xpath element queries are slow. In this newsletter, we explore why that is the case for iOS, and explore the various alternatives to XPath available to us, especially the little-known 'class chain' locator strategy.
7
Speeding Up Tests With Deep Links
Java
iOS and Android
All Devices
Last updated on Feb 23, 2018
Appium tests are full-UI functional tests. They can take a long time to run. It's a good idea to look for shortcuts so that your tests don't have to spend a ton of time setting up state, and can instead focus on just the bare minimum they need to validate. With a little work, you can accomplish this using deep links in both iOS and Android.
6
Testing iOS App Upgrades
Java
iOS
All Devices
Last updated on Feb 21, 2018
It's important to test that user data and user experiences are not broken due to changes between app version upgrades. Appium provides some helpful commands to test iOS app upgrades all within the context of one Appium session.
5
Performance Testing of Android Apps
Java
Android
All Devices
Last updated on Feb 14, 2018
Functional testing is not the only kind of testing that Appium supports. As a pure automation library, Appium can also be used in the service of performance testing. In this edition we take a look at an example of performance testing on Android, namely how to track memory usage over time and make assertions about it.
4
Using Appium for Testing Mobile Web Apps
Java
iOS and Android
All Devices
Last updated on Feb 7, 2018
Appium is not just for native apps. One of the great things about Appium is being able to test multiple app modes. You can even use Appium to run tests against regular old web applications on mobile devices.
3
Running arbitrary ADB commands via Appium
Java
Android
All Devices
Last updated on Jan 30, 2018
For a long time, it was not possible to run arbitrary ADB commands with Appium. Now it is! Here's how to remove the bumpers and get dangerous with ADB.
2
Seeding an Android device with test photos
Java
Android
All Devices
Last updated on Jan 24, 2018
In this edition we explore the Android equivalent to our previous tip: how to add your own photos to the device so they can be available to media apps.
1
Seeding the iOS simulator with test photos
Java
iOS
Simulator
Last updated on Apr 4, 2018
It's often necessary to automate the photo library of a device as part of testing a mobile app. But how do you ensure that photos you know about get there? In this edition, we walk through the methods required for doing this as part of your iOS app testing.