'trainer' - the simplest way to generate a JUnit report of your iOS tests

If you’re running tests for your iOS code base on some kind of Continuous Integration, you usually have to generate a JUnit file to report the test results, including error information, to your CI system. Until now, the easiest solution was to use the amazing xcpretty, which parses the xcodebuild output and converts it to something more readable, additionally to generating the JUnit report.

Since there were some difficulties with the new Xcode 8, Peter Steinberger and me had the idea to parse the test results the same way Xcode server does it: using the Xcode plist logs

trainer is a simple standalone tool (that also contains a fastlane plugin), which does exactly that: Convert the plist files to JUnit reports.

By using trainer, the Twitter iOS code base now generates JUnit reports 10 times faster.

To start using trainer, just add the following to your Fastfile:

lane :test do
  scan(scheme: "ThemojiUITests", 
       output_types: "", 
       fail_build: false)

  trainer(output_directory: ".")
end

By combining trainer with danger, you can automatically show the failed tests right in your pull request, without having to open the actual output.

For more information about when to use trainer, check out the full blog article on PSPDFKit.

Edit on GitHub

Introducing fastlane device grid, one-click installation, 2FA, more APK management features, and emoji deployment

In May, we focused on making pull requests more powerful and introduced enhanced deployment options. For more details, check out the full blog post on fabric.io/blog.  

fastlane device grid

Tired of locally compiling your app just to test and preview a change? From now on, you can test your app straight on GitHub from the pull request using device grid.

One-click installation via the Fabric Mac app

Want to install fastlane with one quick click? You can do it directly from the Fabric Mac app. 

Two-step verification

Looking to take advantage of two-step verification for stronger security? All fastlane tools now support two factor authentication. 

APK expansion file upload and APK promote to track capability

Last but not least, thanks to awesome contributions from the community, it’s easier than ever to upload APK expansion files and promote existing beta builds to production on Google Play. 

Read the full blog post on fabric.io/blog

Edit on GitHub

Be a 10x Mac user by using custom shortcuts for every application you use

One of the most common activities when using a computer is switching between apps and their windows. Unfortunately macOS is optimised for casual computer users (Mission Control, using the mouse, etc.).

2026 Update: While this post originally described my setup using BetterTouchTool, I’ve since switched to Raycast for managing my application shortcuts. See the update at the bottom for details on my current setup.

Using the dock

This approach requires the mouse and wastes either screen space, or has a slow animation when using auto-hide.

Using CMD + Tab

This approach is keyboard based, however the order of the application is sorted by most recently used, which is only nice to quickly switch between 2 applications.

Additionally this technique doesn’t allow you to launch a new application, but only switch between running ones.

Using Spotlight or Alfred

 

Great to quickly launch any application, however it’s not as fast as other approaches, as it requires you to type in multiple letters.

New: Launch every application using a shortcut

When people watch me use my computer I get asked a lot how I can switch between my applications so quickly.

I’m not kidding, I have a custom keyboard shortcut for every single application I use frequently.

This way I can always switch to any application just using one keyboard shortcut.

I use the excellent tool called BetterTouchTool, which was originally built to use custom gestures for the trackpad and mouse, however I use it mostly for my shortcuts. 

Using BetterTouchTool, it will either switch to a running application or launch it otherwise.

Some tricks:

  • ALT + [letter]: Open a specific application (e.g. ALT + n launches Notes)
  • Alt + 2: Open the screenshots directory (use this for any directory you use often)
  • Ctrl + CMD + Arrow: Move window to next monitor

For even faster switches, change the BTT trigger to use "Trigger on Key Down".

2026 Update: Using Raycast

Nowadays I’m a heavy user of Raycast. I’ve migrated all my custom shortcuts to Raycast directly, which has the added benefit of helping me learn and remember the shortcuts better. Raycast shows the keyboard shortcut right inline with each command.

Raycast showing Activity Monitor with inline shortcut display

I also recently added a shortcut for Ctrl + Alt + Del to open Activity Monitor - easy to use from very old muscle memory.

Edit on GitHub

fastlane has saved over 1 million developer hours

During my internship at 6Wunderkinder ,I was part of a team with three engineers, where we worked for a whole day on just uploading localized screenshots and metadata to iTunes Connect. Our goal was to release an update to our users, but we were blocked by this tedious and long process.. This marked the first time I experience the pain of the release process for mobile apps and started dreaming of a better solution. As I worked for future companies and experienced the same pain over and over again, I decided it was time to build a tool that automated the tedious tasks I found myself constantly repeating. When I saw how much more efficient and faster this made me and my team, I knew I needed to share this tool with the community.

I’m super proud to announce, that within the last 8 months,fastlanehas saved developers around the world over 1,000,000 developer hours. This equals:

  • 41,000 days
  • 1,300 months
  • 114 years

Putting that into perspective,every minute that passes,fastlanecurrently runs for12 hours, which is more than a full work day.

Think about all the things you could do with the extra time:

  • Watch 660,000 soccer games
  • Get 38 different bachelor degrees
  • Circle the globe 15,000 times in an airplane
  • Watch all Star Wars movies 75,000 times
  • Build 10 Berlin Brandenburg airports

As developers, we know it’s incredibly motivating to see how users are using what you create at an exact moment at this exact moment. That’s why we built fasttrack, a simple web-app that visualises fastlane launches in real-time. Every time someone launchesfastlane, a rocket is being launched in the color of the corresponding tool. This is super motivating for me and the Fabric team to continue to deliver value to our users:

Every time I catch myself doing something that doesn’t add any direct value to users, I look at the rockets and regain my focus.

Once fastlane is set up you can do something else while your computer works on the tedious tasks for you. This is huge: You can work on your app, or you can play Super Smash Brothers with some friends (which is what I usually do).

I want to thank all fastlane users and contributors for making fastlane such a proud community success. I’m looking forward to the next 1,000,000 hours and can’t wait for what’s next!

Edit on GitHub