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

Swift Dependency Management for iOS

iOSDev
Dependency/Package Manager Most modern languages come with an official solution for code distribution. In today's world of modern mobile development, it is essential to re-use the code already written by developers. Code reuse can be achieved by creating and distributing the packages from central repository. A package manager is a tool that simplifies the process of working with code from multiple sources. Typical Package Manager should have ability to do following things Centralised hosting of packages and source code with public server with access to developers or contributors Download the source code at the run time, so that we don't need to include it in the repository. Link the source code to our working repository by including source files. Allow packages to be versioned The examples of popular package managers are RubyGems for Ruby , Composer for…
Read More
Beginers Guide to iOS Continuous Integration with Xcode Server

Beginers Guide to iOS Continuous Integration with Xcode Server

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 XCFit Swift Package on Github Run Bot Integrations and Analyse Results Requirements…
Read More

What’s New in Xcode 8.3 for XCTest and Xcode Server

iOSDev
Apple has just released Xcode 8.3 beta for the developers. Xcode 8.3 release notes has handful of the features for the developers. Some of the key features of Xcode 8.3 are Autocompletion in the breakpoint navigator text fields. XCTest has couple of  new classes to support asynchronous testing. New user Interface of managing and signing certificate and provisioning profiles. Deprecated Swift 2.3 and UI Automation completely. Command line interface for Simulator [crayon-58ac4a7b7e16e826957410-i/] has two new options for logging Changes in [crayon-58ac4a7b7e17c573357222-i/] doesn't need Xcode restart. Various bug fixes for [crayon-58ac4a7b7e184944812454-i/] and Swift Package Manager. There are few enhancements on Swift Package Manager like running the XCTests in parallel but they seems to have some issues. In this post, we will see what is new in the Xcode 8.3 for XCTest and other developer tools.…
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