Stabilizing the CI By Re-runing Flaky iOS XCUI Tests

Stabilizing the CI By Re-runing Flaky iOS XCUI Tests

Automation, DevOps, iOSDev
Apple has released Xcode UI Testing a.k.a XCUI Test framework at WWDC 2015 which enable UI testing of iOS application straight from Xcode without any third party tools like Appium, Calabash or KIF.  These tools that call themselves mobile testing frameworks but they're actually little more than wrappers to UIAutomation or Instruments.  The release of iOS 10 has broken all these open-source mobile test automation frameworks as Apple stopped supporting Instruments technology. The only options remained was to use XCTest framework from Apple or wait for those tools to build a wrapper around XCUITest.  XCTest is not a new framework but it has evolved quite well with Xcode releases. You can read more about Pros and Cons of using XCTest for iOS app testing here XCUITest + Continuous Integration Problem XCUITest framework is still new and…
Read More
Top 5 reasons for Continuous Integration failure

Top 5 reasons for Continuous Integration failure

Automation, DevOps, iOSDev
Agile software development can't be perfect without effective Continuous Integration process. Continuous Integration a.k.a CI is a process of continuously analyse, build, test and deploy software. Continuous Integration checks an internal quality of the code and tests the business logic of the product before we release it to the production. Ideally, we shouldn't allow software to deploy to product when build is broken. You can read best CI practices here, however Continuous Integration not always works for every agile team. Some agile teams takes CI practices very seriously, some teams do it for sake of doing agile, some teams ignore it completely and some doesn't have CI server setup yet. There are various reasons, CI practices are being ignored within team because business has different priorities, Product Owner doesn't understand importance of internal quality,…
Read More

Pros and Cons of using Xcode Server for iOS Continuous Integration

Automation, DevOps, iOSDev
Continuous Integration a.k.a. CI is an integral part of iOS development process which gives early feedback when something breaks during application development. In an agile application development, producing working app is not only writing good code but also setting up infrastructure to deliver it continuously. The process of Continuous Integration and automating the build can help to achieve continuous delivery.  There are various continuous integration tools available in the market which can be used in the iOS team. The CI server solution can be self hosted or cloud. You can get whole list of CI servers here with recommendations. In the iOS development we have few challenging options while selecting self hosted CI server Xcode Server Jenkins TeamCity If you are looking for cloud solutions then there are some promising services like…
Read More
Fire up BDD inside Docker with Cucumber and BDDfire

Fire up BDD inside Docker with Cucumber and BDDfire

Automation, BDD, DevOps
The key benefits of Behavior-Driven-Development (BDD) practices are communication enhancement and customer satisfaction. You can read more on that by Dan North and Gojko Adzic. Perhaps the biggest practical challenge that stands in the way of reaping those benefits is the burden of provisioning, installation, maintenance of requisite complex and fussy infrastructure and setting up reliable test infrastructure. Cucumber is one of the most popular BDD framework available in the market to achieve the benefits from BDD practices. The problem is software teams seems to spend lot of the time setting up Cucumber and necessary toolkit around it. The management has to decide the tools and engineers have to research all the available tools to support agile practices like CI, code quality, test reporting, parallel execution, devOps integration. The process of getting BDD…
Read More
Continuous Integration with Xcode Server on macOS: Complete Setup Guide

Continuous Integration with Xcode Server on macOS: Complete Setup Guide

Automation, DevOps, iOSDev
Apple has very comprehensive documentation on Xcode Server and Continuous Integration with OSX Server (app) and Xcode Server (Xcode within the server app). You might be wondering what's the point of this post if everything is documented in the guide. However Apple's guide still reads as OSX Server than macOS Server but Apple has released new macOS Server (5.2) with some improvements in the Automated Xcode Builds. Anyway this is small tutorial aims to setup a Mac to run as a macOS Server with Xcode Service and Setup basic Xcode Bots for the macOS Server with Xcode 8 to perform Continuous Integration. We will cover macOS Server basics and setup Configure Xcode to use Xcode Service of macOS Server Setup Development Xcode to use Xcode Server on macOS Server Create a Xcode bot with example of…
Read More
Apple Swift Package Manager : A Deep Dive

Apple Swift Package Manager : A Deep Dive

Automation, DevOps, iOSDev
Apple has released it's own package manager called 'Swift Package Manager' to share and distribute Swift packages. It's good to know that Apple is working on replacement of the current loved and hated package managers in the iOS development world those are CocoaPods and Carthage. In this article, we will cover basics of package management & deep dive into package management in iOS especially Swift Package Manager. Current iOS Package Managers Most modern languages come with an official solution for code distribution e.g RubyGems for Ruby,  Composer for PHP , NPM for NodeJS. In the iOS development world, developers has to rely on third party dependency management tools like CocoaPods and Carthage. The package managers in iOS has a additional job of building the code on top of downloading. Package manager should able to download as…
Read More

Get started with brand new Jenkins 2.0 with Docker

Automation, DevOps
Jenkin 2.0 The new version of the Jenkins a.k.a Jenkins 2.0 will be released very soon. Jenkins 2.0 will be bringing us some new amazing features. Pipeline as Code  Improved User Interface and User Experience  Security & plugin Enhancements  New Jenkins WebSite as one stop for getting started guide The detailed information about the new release can be found out here In this post, let's try out new version of the Jenkins with it's own Docker image. Jenkins inside Docker The fastest way to get started is getting the docker image and run containers. The CloudBees has already created a Docker image jenkinsci/jenkins with tag of '2.0-beta-2'. Assuming that, you have Docker ToolBox or similar setup on your machine, you can get the latest image. You can follow my previous post on practical…
Read More

BDDfire 2.0 with Docker, Gatling and Accessibility support

Automation, BDD, DevOps
BDDfire BDDfire allows us to setup Ruby Cucumber framework within a minute with all related toolkit. It became very popular as it gives us ability to setup Ruby-Cucumber framework without wasting time while setting up test framework for new projects. You don't have to spend months and months setting up your frameworks and research the tools. BDDfire currently has more than  69,000 downloads and glad to know that few companies already started using it. What's new in BDDfire 2.0 Today, I am glad to announce BDDfire 2.0 with Docker, Gatling and Accessibility support. It means with BDDfire you can perform Load testing, Accessibility Tests and execute your scenarios inside the docker containers. You can find all the details on README file on Github. With BDDfire 2.0  you can Setup instant Ruby-Cucumber…
Read More