Version Support Hell

October 8th, 2015 by Ashley Hunsberger

Facebook. It’s a love-hate relationship. I love seeing my friends and family from afar, what they are up to, how their children are growing. I hate how ingrained it is in everyday life. How on earth did we manage when I was growing up? (Snail mail, actually sending photos that you had to have developed; heaven forbid you pick up a phone and talk to someone). The most amusing aspect to me is how much complaining I see in my news feed every time facebook pushes a change: “No, I do not want to be added to a group without my permission, thank you very much,” or “Why is my grandmother allowed to tag random people I don’t know on my photos now?” (That might be a question I asked. She may need to take a few lessons in what tagging is actually for; I might need to redo all my privacy settings).

In my experience, nobody likes change. It takes us out of our comfort zone. Take it or leave it though — Facebook is on to something. They don’t have to deal with running several versions of their product! They deploy a change, people moan and groan about it, and then get used to it.

In my world, it’s not so simple — a world where we have self-hosted clients (who can determine what version, to an extent, they want to be on) and clients in the cloud (the latest release). We have to test everything. I long for the day where all clients are on one version, and I no longer have to worry about supported upgrade paths, or testing a bug across three releases. (more…)

Recap: Selenium 2015 Conference

October 4th, 2015 by Greg Sypolt

Portland, Oregon is surrounded by green forests. It’s a bike-friendly city, with an abundance of craft beer, and despite the rain it’s where everyone wants to be. The Selenium Conference Committee wisely picked beautiful Portland for this year’s conference.

Image Source: Test the Web Forward

Image source: Test the Web Forward

Going to conferences always energizes me. It rejuvenates my focus and determination. Why? I discover new concepts from some of the best in the industry, while networking with conference attendees.

One of the best ways to build automation knowledge is to attend the Selenium conference. The attendees this year were extremely technical, and everyone was willing to have conversations about their Selenium journeys.

Pre-Conference Workshops

The pre-workshop Selenium lineup this year was rock solid. The all-day session ranged from beginner to seasoned, and some of the topics covered included: (more…)

Advanced Locator Strategies

September 28th, 2015 by Isaac Murchie

Appium is built to implement the Selenium WebDriver JSON Wire Protocol specification, extended to enable the automation of mobile devices. By and large, the extensions to the WebDriver spec are encoded within the draft Mobile JSON Wire Protocol spec.

In order to find elements in a mobile environment, Appium implements a number of locator strategies that are specific to, or adaptations for, the particulars of a mobile device. Three are available for both Android and iOS:

class name

The class name strategy is a string representing a UI element on the current view.

  • For iOS it is the full name of a UIAutomation class, and will begin with UIA-, such as UIATextField for a text field. A full reference can be found here.
  • For Android it is the fully qualified name of a UI Automator class, such android.widget.EditText for a text field. A full reference can be found here.

The client libraries for Appium support getting a single element, or multiple elements, based on the class name. This functionality is in the Selenium clients (e.g., Python).

[code language=”python”]
# python
driver.find_element_by_class_name(‘android.widget.DatePicker’)
[/code]

(more…)

Automated Mobile Testing with Real Devices

September 8th, 2015 by Ken Drachnik

Mobile testing has long been a manual process – limited by the devices you have close at hand or at best, a painfully slow process in the cloud.  Sauce has long had emulators and simulators to let you speed your tests by automating them in the cloud. Sometimes, however, emulators are not enough and you need to test on real devices.  We are happy to announce the public beta of our Real Device Cloud. That’s right, we’ve put hundreds of Android and iOS devices up in our cloud so you can automate your tests across emulators and real devices with massive parallelism. That means you can now test fast – just break your tests up into manageable bits and run them in parallel. There’s no waiting, there’s no reservation system – they are available and ready to test whenever you are.

We anticipate opening The Real Device Cloud by the end of the month so you can start testing all your mobile apps.  Download the datasheet.

The Real Device Cloud

  • Instant Availability – Get access to the most popular* iOS or Android devices with no waiting
  • Over 80 mobile emulators and simulators
  • Massive Concurrency – Run your tests in parallel to reduce your total test time
  • Integrate with your CI tool of choice – automate all your tests using the top CI tools like Jenkins, Bamboo, Travis, Team City or Circle CI
  • Test Native, Mobile Web and Hybrid apps
  • Access back end databases – that’s right, you can test your app in our cloud and have secure access to your backend data and websites for a true end-to-end test.
  • Full reporting – instant access to videos, screenshots and all the data for your tests so you can analyse your results quickly
  • Enterprise features – account and team management lets you provision test resources as needed and SSO integration means you don’t have to go to IT to add another tester to your account
  • Professional Services and Training – we have people and partners to help you get started with Appium or if you’re already proficient, our experts can help your team become super users

* The Real Device Cloud will open with Apple iPhone 6 and Samsung Galaxy S4 and S5 phones.  We will be adding more device types in the near future.

Appium + Sauce Labs Bootcamp: Chapter 4, Advanced Desired Capabilities

August 18th, 2015 by Jonathan Lipps

This is the fourth in a series of posts that discuss using Appium with Sauce Labs. Chapter 1 covered Language Bindings; Chapter 2 discusses Touch Actions; Chapter 3 reviews Testing Hybrid Apps & Mobile Web; and this installment is about Advanced Desired Capabilities.

Appium, by and large, supports the desired capabilities you’re familiar with from Selenium. However, given that it also exposes mobile-specific functionality, we have some mobile-specific desired capabilities. We even have capabilities that are specific to one mobile platform: iOS or Android. For the full list of capabilities Appium supports, please see the capabilities doc.

Environment-specifying Capabilities

The main differences you’ll recognize will have to do with selecting which type of mobile environment you want to automate. Appium has adopted the “Selenium 4″ style of session capabilities, which means that, instead of capabilities like this, for example:

[code language=”javascript”]
{
browserName: ‘safari’,
version: ‘6.0’
}
[/code]

You would specify the following, for Mobile Safari on iOS 7.1:

[code language=”javascript”]
{
platformName: ‘iOS’,
platformVersion: ‘7.1’,
deviceName: ‘iPhone Simulator’,
browserName: ‘safari’
}
[/code]

The new capabilities platformName, platformVersion, and deviceName are _required_ for every session. Valid platforms are iOS and Android.

To automate a native or hybrid app instead of a mobile browser, you omit the browserName capability and include the app capability, which is a fully-resolved local path or URL to your application (.app, .ipa, or .apk). For example:

[code language=”javascript”]
{
platformName: ‘Android’,
platformVersion: ‘5.0’,
deviceName: ‘Android Emulator’,
app: ‘/path/to/my/android_app.apk’
}
[/code]

Sometimes we might want to run an Android test on an older device, and so we need to use Appium’s built-in Selendroid support for older devices. To specify that you want to use the Selendroid backend, keep everything else the same, but specify the automationName capability, as follows:

[code language=”javascript”]
{
automationName: ‘Selendroid’,
platformName: ‘Android’,
platformVersion: ‘5.0’,
deviceName: ‘Android Emulator’,
app: ‘/path/to/my/android_app.apk’
}
[/code]

And of course, if you’re running any tests on Sauce Labs, make sure to specify the version of Appium you’d like to use with the appiumVersion capability:

[code language=”javascript”]
{
platformName: ‘Android’,
platformVersion: ‘5.0’,
deviceName: ‘Android Emulator’,
browserName: ‘Browser’,
appiumVersion: ‘1.3.4’
}
[/code]

(more…)

[Webinar] Managing Continuous Delivery of Mobile Apps – for the Enterprise

July 23rd, 2015 by Bill McGee

Today, almost all organizations have mobile apps and for some, the mobile app is their only way of interacting with customers. With this increasing emphasis on mobile, the pressure to routinely update mobile apps means embracing Continuous Integration (CI) and Continuous Delivery (CD) methodologies.

Enabling CI / CD in your mobile development process means understanding the different solutions, overcoming unique challenges and ensuring the right ownership of the processes. In this webinar, join Harshal Vora from InfoStretch and Abhijit Pendyal from Sauce Labs to learn the steps required to enable Continuous Delivery of Mobile Application Platforms.

This webinar will cover:

  • Value of CI/CD in Mobile Development
  • CI/CD Architecture for Mobile Application Platforms
  • CI/CD Case Study – Requirements, Challenges and End Results
  • Demo – Jenkins / Code Update / Build Mobile App / Run automated tests using Sauce Labs

Join us for this presentation next Wednesday, July 29 at 11am PDT/2pm EDT. There will be a Q&A with Harshal and Abhijit afterwards.

Click HERE to register today.

Want to learn more about making Continuous Integration (CI) a part of your mobile development process? Download this free white paper, “Why Continuous Integration Should be Part of Your Mobile Development Process“.

Recap: Getting Started with Mobile Test Automation & Appium [Webinar]

May 18th, 2015 by Bill McGee

Thanks to everyone who joined us for our last webinar, Getting Started with Mobile Test Automation &  Appium, featuring Siva Anna from InfoStretch and Abhijit Pendyal from Sauce Labs. The webinar covered best practices in implementing Appium to quickly automate mobile application testing. Topics covered included:

  • Mobile Automation Tools and Landscape
  • Setting  Up an Appium Environment & Object Inspectors
  • Writing a Basic Automation Script for Android and iOS platforms
  • Running an Analysis Execution in Appium and Sauce Labs

Missed the presentation, want to hear it again, or share with a colleague?

Listen to the recording HERE and view the slides below.

Interested in learning more about Appium and how to get started? Download our free Getting Started with Appium guide.

Recap: Best Practices in Mobile CI [Webinar]

April 29th, 2015 by Bill McGee

Thanks to those of you who joined us for our last webinar, Best Practices in Mobile Continuous Integration, with Kevin Rohling. The webinar covered topics like:

  • What makes mobile CI so different
  • Best ways to use emulators and simulators in testing
  • Suggestions for CI tools and mobile testing frameworks

Missed the presentation, want to hear it again, or share with a colleague?

Listen to the recording HERE and view the slides below.

(more…)

Translating Web App Functional Testing To Mobile

April 27th, 2015 by Greg Sypolt

Technological advancements and the explosion of devices across multiple platforms means hardware and software developers have a much more difficult job. They have to keep up with the demand to develop and roll out new products. One of the most significant issues is accounting for the differences in system response, when responding to mobile traffic rather than to internet traffic. (more…)

Best Practices in Mobile CI [WEBINAR]

April 22nd, 2015 by Bill McGee

Modern organizations today feel immense pressure to deliver better software faster, and this is no different in the mobile space. The best practice of Continuous Integration for web dev has been embraced for years as it is a proven mechanism that accelerates production cycles. However,mobile developers have been slow to adopt CI, despite needing a quick go-to-market plan.

In large part, this is because mobile brings with it a set of unique challenges that make implementation tough. Nevertheless, tools have evolved and mobile development teams now have many options to choose from to implement a solid mobile CI system.

In our next webinar, Kevin Rohling (Emberlight, Ship.io) and Kristian Meier (Sauce Labs) will cover best practices in implementing a mobile CI system and demonstrate how you can easily build, test, and deploy mobile apps.

This webinar will cover: (more…)