Sauce Labs Donates Appium Copyright to JS Foundation

October 17th, 2016 by Jonathan Lipps

Today, Sauce Labs is proud to be a part of a significant moment in the JavaScript community and ecosystem, with the official launch of the JS Foundation. The JS Foundation exists to foster innovation and collaboration in the world of JavaScript, and aims to be an umbrella for the wide range of projects that are either written in JavaScript or otherwise participate in the JavaScript ecosystem. Sauce Labs has joined the JS Foundation as a founding member in part because we believe that exciting things are happening in the JS world, around testing and beyond, and want to support the growth of this awesome community.

But this is not all—today Sauce Labs is very happy to announce that we have donated Appium, the current standard in mobile automation around the world, to the JS Foundation! Written in Node.js, Appium is a clear example of the breadth of the JS ecosystem and how JS can power an enormous range of projects useful not only to JS developers but to a much wider audience. Appium has always been an open source project (available under the Apache 2 license), and developed with full transparency to its users. The Appium project is extremely proud of its large contributorship, most of which has no relationship with Sauce Labs. At Sauce, we felt it was time to make a legal reality out of what has been a reality for the project since its inception, and we couldn’t be more excited to hand Appium’s copyright over to the JS Foundation for long-term stewardship.

Rest assured, this does not signal a reduction of interest in Appium from Sauce Labs; to the contrary, it’s an acknowledgement that the Appium project belongs to the community, not just Sauce Labs. Our Open Source team will continue to focus on Appium’s development as one of its main priorities. Our hope is that in the coming months, Appium’s move to a non-profit foundation will open up new opportunities for contributors and sponsors to be more involved in Appium’s roadmap and position in the ecosystem.

At Sauce, we care about testing and DevOps practices in all language communities, and that is part of why we built our test cloud around the vision of Selenium and Appium’s language-agnostic design. Stay tuned for how we are continuing to be involved with Python, Ruby, and others. But today we celebrate a wonderful development for the JavaScript community with the introduction of the JS Foundation, and are ecstatic to support it and Appium moving forward.

Happy testing, and happy JavaScripting!

Making Your App Testable

September 16th, 2016 by Dan Cuellar

When writing test automation, one of the most important factors for determining the amount of time and resources you will consume (and ultimately the success or failure of the endeavor) is the testability of your application. By testability, I’m referring to how the app interacts with UI (and other) automation frameworks, the ease by which a test script can setup the scenarios you wish to test, and how you make your tests safe for concurrency.

Making Elements Accessible

Let’s address the matter of controlling your application with automation frameworks first. Given that you are reading this blog, it is likely you are using either Selenium or Appium as your automation framework, so this blog post will only address these frameworks.

Web Content (Selenium)

Let’s start with Selenium. In order for your web app to be easily controlled by Selenium, you need to think ahead as to how you will identify important pieces of the DOM when constructing tests. Selenium provides many means by which you can do this, called “Locator Strategies”. Some are better than others. You should consider which of these you will be using in your tests as you develop the user interface. Ideally, each element would have an ID attribute applied directly to the tag for any element that the test will exercise.

Sometimes, for one reason or another, you may not be able to use an ID. If this is the case, the next recommended technique is to use a CSS selector. If your web app is developed with good principles, such as BEM (Block Element Modifier), it is likely easier to automate as it should have a relatively short globally unique CSS selector. If it does not, I would not recommend adding a CSS class just for automation, as it isn’t the purpose of the styling language to do automation. Rather, I would suggest that you use an HTML  data-* attribute. You can use the CSS selector locator to grab an element by one of these attributes, but the good news is you aren’t adding unnecessary classes to your CSS, and the purpose of the HTML attribute will be much clearer. (more…)

Recap: Selenium and Appium Training Courses from Sauce Labs (Webinar)

August 5th, 2016 by Bill McGee

Thanks to everyone who joined us for our recent webinar, “Selenium and Appium Training Courses from Sauce Labs“, featuring Sauce Labs’ Director of Product Marketing, Ken Drachnik, and Automation Specialist Kevin Berg.

In this webinar, Ken and Kevin announced the availability of our three new technical training programs – Selenium 101, Appium 101, and Sauce Labs Onboarding. They reviewed the course curriculum and class format, and gave a brief demo of the course environment. They also covered classes that are currently in development – Selenium 201, Appium 201 and Sauce Labs for Enterprise.

Interested in learning more about our new training courses? You can find more information on our training website.

Access the recording HERE and view the slides below: 

New – Selenium & Appium Training Courses from Sauce Labs!

August 3rd, 2016 by Ken Drachnik

In our ongoing effort to help developers and QA professionals quickly get up to speed with Selenium and Appium, we’re thrilled to announce the availability of our three new technical training programs – Selenium 101, Appium 101, and Sauce Labs Onboarding. Led by our experts, with in-depth knowledge of Selenium and Appium, class sizes are small and include lectures, demos, and interactive hands-on exercises.

Selenium 101 & Appium 101

Both the Selenium and Appium courses are available in several different formats. Instructor-led training is available both online and on-site, and features public curriculum available to all, or you can request a dedicated course that is customized to your specific business requirements.

  • Selenium 101 introduces you to the Selenium automation API for testing web applications on desktop browsers
  • Appium 101 introduces you to the Appium automation API for testing web applications on desktop and mobile browsers, and for testing native and hybrid applications on mobile emulators, simulators, and real devices.

Sauce Labs Onboarding

Sauce Labs Onboarding is a free, one-hour self-paced class designed to introduce you to Sauce Labs features to get you up and running with your tests.

In addition to providing you the nuts and bolts of automated testing, our courses also cover best practices and useful how-to tips, so you can start testing right away, and then develop better tests in a lot less time.

First classes begin August 17th – sign-up here or request more information.

Happy learning!

Appium 1.5.3 Released on Sauce

June 8th, 2016 by Isaac Murchie

We are pleased to announce the release of Appium 1.5.3 through npm and on Sauce Labs!

Appium 1.5.3 is primarily a bug-fix release. However, it also adds functionality to support for iOS WKWebViews and for automating the iOS Calendar app, as well as adding a capability to use abd for screenshots in Android web/hybrid sessions, and providing a list of Android activities to wait for on session startup.

General

  • Fix handling of statuses from proxied drivers (Chrome, Selendroid, etc.).
  • Fix intermittent bug where creating a directory might crash the server.

iOS

  • Add support for WKWebView-based webviews.
  • Add support for automating the built-in Calandar app.
  • Fix bug where scrolling in Safari would crash.
  • Fix handling of Safari in “new window” state.
  • Fix handling of arguments for keys method so that clients that send an array do not fail.
  • Clean up handling of ipa files for real device tests.
  • Make sure processArguments parsing works.

Android

  • Add nativeWebScreenshot capability, to use adb screenshots instead of ChromeDriver if necessary.
  • Add support to auto-select device based on platformVersion rather than using first available device.
  • Allow appWaitActivity to be a list of activities.
  • Fix setting wifi and data state.
  • Implement initAutoWebView capability.
  • Report appPackage, appActivity, and deviceUDID when requesting session details, so tests have more information about running state.
  • Make sure unlock app is closed at the end of a session so that the device works again.
  • Fix handling of unlock to make less flakey.
  • Make sure unicode encoding works correctly when strings are long.
  • Fix handling of disableAndroidWatchers capability.
  • Fix bug where early ChromeDriver failure crashed Appium.

Appium 1.5.2 Released on Sauce

April 26th, 2016 by Isaac Murchie

We are pleased to announce the release of Appium 1.5.2 through npm and on Sauce Labs! This is a bug fix release that deals with many issues with 1.5.1, including a major bug where large Android applications would cause Appium to run out of memory and die.

General

  • deprecated --command-timeout. Use newCommandTimeout desired capability instead
  • ensure implicit wait can be set through timeout method
  • add better logging for EPIPE errors

iOS

  • make sure ipa files are handled correctly for installing on real devices
  • ensure that existing SafariLauncher on device is used instead of rebuilding and reinstalling
  • fix issues with getting webview contexts on real devices
  • add full timeout support through timeout method
  • make sure Xpath searches respect implicit wait timeout
  • make sure bare Instruments process arguments are accepted

Android

  • fix failure when apk file is too large
  • re-implement setting geolocation so it does not use Telnet
  • add support for Chromium browser
  • fix issues with flick
  • fix bug where touch action release would throw an error
  • fix bug in later Android SDK version where noticing a newly started avd would fail
  • implement autoWebviewTimeout

test.allTheThings() – Announcing General Availability of Real Device Cloud

March 31st, 2016 by Ken Drachnik

After months of beta testing with customers, we are announcing general availability for our Real Device Cloud today.  With the ability to test websites, native apps, and hybrid apps on both iOS and Android devices, we enable enterprise customers to easily scale their CI/CD testing needs on the most popular devices. By providing large numbers of each device type, our customers will not have to wait in a queue for their tests to run on a real device, thus speeding up the pace of testing, especially when running concurrent parallelized tests.  In conjunction with our mobile emulators and simulators, we now provide the most comprehensive automated mobile testing platform in the market, covering both web and mobile app testing needs across a variety of device types. After running your tests, view the results on our test details pages, with videos of each test, screen shots, logs and commands so you can resolve issues quickly and iterate on your app more frequently.  

To request a quote for real devices, contact your account executive.

Mobile Testing on Sauce Labs Includes:

  • Instant Availability – Get access to the most popular iOS or Android devices with no waiting, no queues and no reservations system.
  • Android emulators and iOS simulators covering over 140 device-OS combinations.
  • Massive Concurrency – Run your tests in parallel to dramatically reduce your total test time.
  • Integrate with your CI tool of choice – automate all your tests using the top CI tools like Jenkins, Bamboo, Microsoft VSTS, Travis, Team City or Circle CI.
  • Test native apps, hybrid apps, and mobile web –  all on the same platform.
  • Security – test with Sauce Connect, allowing your codebase to stay behind your firewall while utilizing Sauce’s extensive collection of OS platforms, browsers, and devices.
  • Pinpoint issues quickly with full reporting – instant access to videos, screenshots and all the data for your tests so you can analyse your results quickly.
  • Enterprise management 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 professional consultants and partners to help you get started with Appium and Selenium or if you’re already proficient, our experts can help your team become super users.

 

For more information, visit our Automated Mobile Testing Page

Appium 1.5.1 Released on Sauce

March 29th, 2016 by Isaac Murchie

We are happy to support the newly-released Appium 1.5.1. This release fixes a
number of issues with 1.5.0, including one bug that prevented some frameworks
from correctly polling for status during Safari tests.

General

  • allow `platformName` to be any case
  • Windows process handling is cleaned up
  • Desired capabilities `language` and `locale` added

iOS

  • iOS 9.3 (Xcode 7.3) support
  • Fix handling of return values from `executeScript` in Safari
  • Don’t stop if Instruments doesn’t shut down in a timely manner
  • Escape single quotes in all methods that set the value on an element
  • Allow custom device names
  • Make full use of process arguments to Instruments
  • Pass `launchTimeout` to Instruments when checking devices

Android

  • Make use of `–bootstrap-port` server argument
  • Fix `keystorePassword` capability to allow a string
  • Fix handling of localization in Android 6
  • Use Appium’s unlock logic for Chrome sessions
  • Make sure reset works
  • Make unlock more reliable for later versions of Android
  • Allow Xpath searching from the context of another element
  • Make full use of process arguments to adb
  • Better error messages when ChromeDriver fails to start

Appium 1.5 Released on Sauce Labs

February 26th, 2016 by Jonathan Lipps

Appium 1.5

The Appium team is extremely proud to announce the release of Appium 1.5! Appium 1.5 has been in the works for over half a year, and we would like to share why it’s such an important release for us. Appium 1.5 is primarily a technical rearchitecture. As the project grew from infancy through to 1.0 and beyond, the core team did their best to keep the code organized, to keep it easy for new contributors to come to the project, and to fix bugs and add features in a timely fashion. However, as is the case with many software projects, the time came when despite our best efforts, Appium’s fundamental architecture was working against us, not with us.

Given the relatively stable nature of the project in the 1.4.x series, we felt it was a good time to invest in the future velocity of Appium’s development. When we began work on Appium 1.5 we had the following goals:

  • Take a hard look at the current code organization and reconceptualize the relationships between different subsections of Appium with an eye to making distinctions clearer and concerns more separate.
  • Leverage the NPM ecosystem’s best practices and break Appium up into packages based on responsibility, maintenance, etc…, whenever appropriate.
  • Rewrite the entire codebase from ES5 JavaScript to ES2015 JavaScript with async/await (and in so doing wipe away a huge source of hard-to-trace Appium bugs).
  • Standardize subprocess management. Appium is basically a combination API server and subprocess manager (we manage instruments, uiautomator, chromedriver, selendroid, etc…), and so standardizing subprocess management makes our code cleaner and more readable throughout the project.
  • Abstract common driver behavior: Appium’s IOS support and Android support really derive from the same common interface, so we wanted to factor that interface out to reduce duplication of work and boilerplate across Appium’s different drivers.
  • Clean up our build process so that we are not using a handful of different build tools in different situations. Ensure we’re running CI at the subpackage level to save time when releasing Appium.
  • Create a more friendly architectural environment for new devs to contribute to Appium. Make sure that one type of change needs to happen in one place and that READMEs abound.
  • …and many more very specific technical goals. For more information on how Appium is now put together from a developer perspective, see our developer’s overview.

(more…)

Recap: 10 Things You Didn’t Know About Appium + What’s New in Appium 1.5 [Webinar]

February 17th, 2016 by Bill McGee

Thanks to everyone who joined us for our recent webinar, “10 Things You Didn’t Know About Appium + What’s New in Appium 1.5”, featuring Dan Cuellar, the creator of Appium. In his presentation, Dan shares 10 secrets about Appium that you may have never heard before, and also discusses what’s new in Appium 1.5 and what’s on the road map for the rest of 2016.

The presentation also showed:

  • Tips and tricks for better leveraging Appium for your mobile app testing
  • What’s new in Appium 1.5
  • Appium Roadmap
  • Live demo – how to add visual testing to your Appium tests, leveraging devices on the cloud

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

Access the recording HERE and view the slides below.

Looking to get started with Appium? Download our free Appium Bootcamp by Dave Haeffner.