XCFit 4 released : Swift 3.1, Carthage and Pre-defined BDD Steps Support

Automation, BDD, iOSDev
XCFit is full stack iOS BDD framework in Xcode. XCFit setup Xcode templates with skeleton code and directory structures which helps us to get started with BDD and XCFit Swift Framework provides lots of predefined BDD Style steps to automated BDD with less code. You can read details of XCFit on Github. XCFit 4.0 is jus released with lots of features, the brief release notes are available on GitHub here.  Let''s see what's new in the XCFit 4 in details  in this post. XCFit 4.0 XCFit 4.0 is a major release with lot of improvements on Swift Frameworks. The XCFit 4 .0 has following major changes. Support for Swift 3.1 and Xcode 8.3 Added Carthage Support for the XCFit Framework with Integrated Cucumberish library. Added lots of Predefined steps for the XCFit…
Read More

Controlling Siri from XCTest using XCUISiriService

Automation, iOSDev
Apple has released new Xcode 8.3 beta 2 with new Swift 3.1 snapshot which is available to download from Apple developer account. There are lot of new things in Xcode 8.3 beta 2, you can read release note if you have Apple developer account. There is a handy class added to the XCTest framework to enable interaction with Siri with XCUI Test which is XCUISiriService. In this post how to enable interaction with Siri. Xcode 8.3 beta 2 Newly added class XCUISiriService is available in Xcode 8.3 beta 2 which is currently available for the download if you have Apple Developer Account. You can get it from the Downloads section of the developer account. Xcode 8.3 needs macOS version 10.12 and above. You can download compressed XIP file which is around 4.52 GB.  If you already have previous version…
Read More

Asynchronous iOS Testing in Swift with XCWaiter

Automation, iOSDev
Apple recently announced Swift 3.1 development snapshot  and XCode 8.3 for the developers. There are couple of handy classes added to the XCTest framework to enable Asynchronous Testing for iOS and macOS applications. In this post, we will see how we can perform asynchronous testing using XCWaiter. Swift 3.1-Dev Newly added classes are available in Xcode 8.3 which is currently available for the download if you have Apple Developer Account. You can get it from the Downloads section of the developer account. Xcode 8.3 needs macOS version 10.12 and above. You can download compressed XIP file which is around 4.52 GB.  If you already have previous version of the Xcode then remove it or you can keep it but you have to switch between Xcode DEVLOPER_DIR. Once downloaded you can extract the file to install…
Read More
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
Adding Homebrew Support to XCFit Framework

Adding Homebrew Support to XCFit Framework

Automation, BDD, iOSDev
Glad to announce that XCFit is available to download from Homebrew package manager. XCFit  a.k.a (XCUI, Cucumberish and Fitnesse Integrations Tests) is a full stack Xcode BDD framework for Swift iOS apps. XCFit creates automated Xcode templates which helps us to setup BDD style tests within Xcode. You can read more about XCFit on my previous post or articles published on DZone here . Homebrew Just in case, if you have not heard of Homebrew, it's package manager fro macOS. We can install almost everything using Homebrew including macOS free apps. Homebrew can be installed on any macOS using a command. [crayon-58a98646d41ed327970926/] Now that, we are ready to use Homebrew. We can install package as core Homebrew or using HomeBrew caskroom like this [crayon-58a98646d41fb014846530/] e.g We can install 'Google Chrome" using following command. [crayon-58a98646d4203342975809/] Now , we will see how to…
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