Supercharging Selenium and Appium with TestProject

Paul Grossman
Nov 5 · 13 min read

What is TestProject?

TestProject is a fully-featured Test Automation Platform that leverages both Selenium and Appium development and execution on multiple operating systems. It provides new test automation engineers an easy steppingstone to starting a full test automation project with test creation, reporting, a CI/CD pipeline, historical graphs and more in just a few hours.

Free. Forever.

But to fully understand how TestProject supercharges automation projects, we need to look at the humble beginning of Selenium and Appium and the challenges TestProject resolves.

A Brief History of Selenium…

Over the last fifteen years Selenium based automation testing has become the most widely used test automation method for web-based applications. But what is Selenium and how did it become the de-facto standard for testing today? While Selenium and Appium have too many contributors to list in detail, these are the major players involved.

It starts with the inception of the name “Selenium” with a tongue-in-cheek poke at its biggest competitor.

Jason Huggins

The story goes that in 2004, Jason Huggins was working at ThoughtWorks on a project named JavaScriptTestRunner when he cracked a joke about Selenium being the antidote for Mercury poisoning. This referred to their lead competitor at the time, Mercury Interactive and their Quick Test Professional tool, known today as UFT One from Micro Focus and HP. Jason’s team like the term and adopted the name Selenium Core for their fledgling competing automation framework project.

But Selenium had a problem called the Same Origin Policy. This meant access to the elements of one domain could not be reached by JavaScript code launched from another domain. The workaround, having a lot of duplicate installations of Selenium, was problematic.

Paul Hammant

Paul Hammant of ThoughtWorks came up with the solution that led the creation of Selenium RC (Remote Control) a server that worked as an HTTP proxy. This resolved the Same Origin Policy problem allowing developers to write automated web application UI tests in multiple programming languages against any HTTP website using any mainstream JavaScript-enabled browser. But all the tests had to be run in a linear fashion which was inefficient.

Patrick Lightbody

Patrick Lightbody then introduced Selenium Grid. This allowed Selenium to run tests concurrently on different machines against multiple browsers on multiple operating systems. This greatly optimized the execution time as more machines could be leveraged to run tests.

In late 2004 Selenium was open-sourced. But it was mostly limited to experienced software developers.

Shinya Kasatani

In 2006 Shinya Kasatani developed the Selenium IDE written as a XPCOM Add-on for Firefox. This was a Record and Playback tool, it allowed novice Selenium developers to quickly learn the coding syntax by automatically building the recorded object interactions and descriptions into basic tests. These tests could then be exported into code.

However, it took more than eight years for Selenium IDE to have a Chrome extension making it cross-browser compatible. And by then the Selenium IDE was nearly dead.

Simon Stewart

In 2006 Simon Stewart at ThoughtWorks worked on the Selenium WebDriver project that used a client for each browser to do the work at a ‘higher level’ API than Selenium-RC. Stewart presented his WebDriver at Google’s 2007 GTAC conference. This also provided the support libraries to expand the programming language bindings beyond JavaScript to Python, Perl and PHP.

In 2008 Selenium 2 was released that merged WebDriver and Selenium-RC as a new client API.

In April 2011 the first Selenium Conference in SanFrancisco continued to showcased Selenium 2. It was now available for the Java, C# and Ruby languages. Since then SeConf, as it is called, has been hosted in major cities around the world including Boston, London, Bangalore, Chicago, Berlin and Tokyo.

In 2013 Simon Stewart confidently announced at the Boston SeConf that Selenium 3 would be released by Christmas, but it actually occurred two years later. At the 2018 SeConf “State of the Union” session, as Simon Stewart recounted his ambitious goal of a Christmas release of Selenium 2, Jim Evans quipped “Notice he never said which year”.

Selenium 3 adds support for Java 8 and Mozilla’s Gecko driver and moved closer to code-less testing.


A brief history of Appium…

Johnathan Lipps

Johnathan Lipps joined SauceLabs in 2012 and oversaw the team kicking off the Appium project. Appium was primarily Selenium for Mobile automating in native iOS and Android apps as well as hybrid apps with a WebDriver interface. In recent years Appium has moved on to automating Windows and Mac thick client desktop applications as well as moving into the Internet of Things arena. Johnathan has since gone on to be a founding principal at CloudGrey.io which is an Appium-focused consultancy.

Dan Cuellar

The Appium project started when Dan Cuellar began development of a Mobile device testing version of Selenium that would become Appium. It was a way to take advantage of the UIAutomation framework for Apple iOS to run tests against native mobile applications.

Dan demonstrated his early efforts at the Selenium 2012 lightening talks and asked for help from others take the project to fruition. Encourage by Jason Huggins, Dan released the initial C# and Python open source version of Appium to GitHub in August. Appium 1.0 was released in 2014.

Dan recently spoke at the Selenium Conference 2016 showing off further Appium advancements including element identification with image recognition running concurrently on multiple iOS and Android mobile devices.


The Fall and Rise of Selenium IDE…

Adam Goucher

Selenium IDE was maintained by Adam Goucher and others for many years. But in 2015 Mozilla replaced the XPCOM technology in their Firefox browser with the standardized WebExtensions API. This sealed the fate of the Selenium IDE project.

Worse, seasoned developers considered record and playback tools as a detriment to good software coding practices. So there was little incentive to continue development of Selenium IDE.

Moshe Milman, COO Applitools

In 2017, Applitools saw the advantages of a Selenium record/playback tool, particularly with helping get novice automation developers into the field and wanted to contribute to the community by keeping this important open source project active.

After speaking with Simon Stewart and the Selenium team, they started rebuilding the Selenium IDE project with a collaborative team of developers. The new Selenium IDE was built based on a modern technology stack that aligns with the leading commercial tools in that space and covers important capabilities like smart detection of elements (AKA Self Healing), CI integration, Visual Testing support and more.

Tomer Steinfeld

At the SeConf Chicago 2018 Tomer Steinfeld from Applitools introduced the new Selenium IDE (SIDE) with a SIDE Runner. Its cross-browser capability expanded to all browsers. The code export now included Java, JavaScript and Python using the Junit, Mocha and Pytest frameworks respectively. It now could record multiple different locators for browser elements to reduce maintenance and eliminate test flakiness. This also helped new Selenium developers learn better techniques in object identification in a shorter amount of time.


Selenium 4 Alpha was released in 2019 and provided new features such as Docker support and element level screen shots. It also added support for Chrome Headless replacing PhantomJS and dropped support for Opera entirely. An official release is expected by 2020.

After 15 years of development Selenium and Appium are still considered tools only available to seasoned developers. One problem that many DevOps teams have learned is dividing their time between an application development and maintaining an automation framework is often inefficient.

While turning automated testing over a traditional QA department would be optimal, it is rare to find a developer among the manual testers with the skill level to build an automation solution around Selenium and Appium.

Few, if any, thought an automation platform could be built around Selenium and Appium that would be easy enough for a novice to implement, much less be affordable.

But TestProject.io changed all that.

TestProject delivers Selenium and Appium test automation from Dev to the QA masses…

Mark Kardashov

Mark Kardashov founded TestProject back in 2015 as a way to solve a nagging issue with Selenium and Appium test automation development. He saw there was a large selection of solutions available, but none of them allowed less technical users to easily move from manual testing into the test automation role.

A manual tester had to become developer first to understand the complex configurations and code development that was needed to set up a test environment. That switch would not take place overnight.

Mark saw a need for simple all in one DevOps turnkey solution that:

  • Had a setup process that took a few minutes on multiple operating systems
  • Supported multiple browsers as well as maintained the drivers
  • Operated under both Selenium and Appium while hiding complexity for novice users
  • Allowed novices to create code-less tests with a Smart Recorder
  • Provided a data-driven approach to allow an increasing width of testing scenarios
  • Leveraged modular design for reduced maintenance while increasing scalability for intermediate users
  • Would export code that expert SDETs could extend and provide novice SDETs the opportunity to learn the coding syntax and become experts quicker
  • Generated reports and historical graphs from a continuous integration pipeline for stakeholders
  • Allowed a community to add additional functionality to be shared

Mark set about creating an affordable and easy to use automation solution to resolve these and many other challenges.

On March 27, 2018 Mark announced the culmination of years of development by introducing the TestProject Automation Platform built on top of both Selenium and Appium. His goal was to simplify several issues that were still a challenge to novice Selenium and Appium SDETs while maintaining a robust automation test suite.

The first challenge was to simplify the installation and configuration process faced by most novice Selenium automation engineers. TestProject leverages a two-part solution: The TestProject Agent and the TestProject Cloud Repository.

The TestProject Agent contains the latest LTS Selenium and Appium support files and five browser drivers in a self-contained download for Windows, Linux and Mac. When new versions of Selenium and Appium are released TestProject releases a new Agent containing the updated stable versions. The updates typically take less than two minutes to complete. This brought installation down to a matter of minutes.

TestProject Cloud stores all the artifacts of an automation project: tests, element repositories, data sources, results and historical graphs. It allows in-house teams to collaborate with remote teams around the globe to create and execute automated test cases.

The next challenge was to create a way to build new test cases in a code-less fashion without losing the code altogether. Mark’s team added a Smart Recorder to the TestProject Agent. This allows users to record or manually build all the web action functionality into a code-less test, while adding elements in a shared project repository reducing redundancy and maintenance time.

The Smart Recorder allows the validation of text and displays all relevant element properties by “freezing” an element and displaying the information on screen. Lastly it allows users to select from a collection of selenium properties methods to execute.

TestProject also resolves the issue of hard coded data as test cases can be data driven from .csv files from a Project Parameter like a URL. It also supports Test Parameter which can capture and reuse dynamic data. For example, capturing a system generated order number that can be used in a cleanup phase to cancel the order.

The Smart recorder can also create reusable Test modules. This eliminates redundant development and maintenance in a large suite of test cases.

Setting up a CI/CD pipeline could be a major challenge for someone on their first day. Consider the time used to acquire the compute resources, configure and troubleshoot a Jenkins server and nodes to execute test cases on a scheduled timeline. Mark thought there should be an easy way to get a CI/CD Job pipeline up and running long before scaling to a full Jenkins solution.

TestProject has a CI/CD Pipeline called Jobs. Test cases added to Jobs execute automatically. Jobs execute test on the team’s network of registered agents, or on physical or virtual mobile devices from day one. And when the project is ready to scale up, TestProject has a dedicated plugin for Jenkins to execute with more advanced CI/CD pipeline configurations.

Once the jobs have executed TestProject provides detailed reports, historical graphs and can even export PDF files to keep stakeholders informed of the project progress.

Lastly Mark made TestProject a community driven platform. There are blogs, articles and support forums provided by the users in the community who support the project.

Mark also knew that there would be many more features and functionality that his team could never imagine that would be needed by the community.

TestProject included the capability of creating custom add-ons to support more functionality in the Smart Recorder. This extensibility is referenced by the Smart Recorder allowing users to create custom test cases from a drop down list that is built based on the properties and methods used by the elements.

Mark also wanted to level out the learning curve for novice developers to write code for automated test cases. TestProject allows developers to extract tests into either Java or C# with TestNG support and edit in IDEs such as IntelliJ or Visual Studio. A fully coded framework can be realized within a few days of providing stakeholders a proof of concept. TestProject also support a component approach providing a modular design to keep tests robust with reduced maintenance.

Since TestProject provides support for both Selenium and Appium tests can easily be ported between both platforms.

The last feature about TestProject is that any user can start a project without a credit card by creating a Free Forever account. This allows unlimited Agent use, unlimited Jobs and all the features of TestProject with 2 Gig of drive space for your test artifacts.


Past is Prologue: TestProject Community Addons

The final feature Mark wanted was to allow members of the Community to supercharge TestProject by building extensible new features. He included the ability for advanced developers to create custom Addons to share with the entire TestProject community.

Which brings us up to SeConf 2018

Paul Grossman

Paul Grossman, Twitter’s “Dark Arts Wizard” spoke at the 2018 Chicago Selenium Conference Lightning Talks. He stated his plan to port several techniques into the Selenium world called Class Switching and Dynamic Object Identification. These were concepts he had developed during his nineteen years as a QTP/UFT test automation engineer in VBScript. He was curious if other platforms, like Selenium Java, could do the same.

In 2019 Paul developed a Natural Language Process Engine Addon for TestProject. This could translate loose English phrases such as “Click the ‘Add to Cart’ button” directly into executable code.

His use of the Magic Object Model technique allowed elements to be dynamically identified by a combination of verbs, element classes and text to reduce coded page objects and facade coded elements. It also employed Class Switching: in the event a new build changed an element’s class, say from a link to a button, the test cases would be less likely to need any maintenance to identify the new element.

TestProject, an All-In-One Solution for all levels of Test Automation Developers

Conclusion

TestProject takes the next big leap in making test automation easy. From setup to test creation, from reporting to automated CI/CD test execution.

TestProject gives novice Selenium developers a head start with its code export in both Java and C#. New features and functionality are just around the corner as the community continues to expand, evolve and provide creative solutions.

And it’s free.

For those wanting to make the lead from Manual Tester to Software Developer Engineer in Test it’s worth their to take look at TestProject.


Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade