The Archive Update Hiatus Due to a Severe Bug in Xcode 11

This announcement is a very difficult one: I cannot work on The Archive for the next week or two, maybe, more. That’s because with Xcode 11 and Swift 5.1, UI Tests stopped to work. Like, at all. I have created a Feedback ticket (FB7338237) and now also have a Technical Support incident open, awaiting a reply by Apple engineers to help with this.

All this puts me into a conundrum: Without functional UI tests, I cannot guarantee that complex interaction patterns with the app don’t break with the next update. I could write a simple wrapper that replicates the UI tests’s functionality but uses the Accessibility API directly to remote-control the app – but this will probably take a week, and that doesn’t seem worth it since I sincerely hope the Apple engineers have something helpful to say, rather sooner than later.

So instead of spending time to get the development environment back up to 100% again, I will spend the time on different projects. Like, new functionality for the WordCounter.

The Xcode bug that I am struggling with puts the following into the Xcode console:

error: module importing failed: invalid pathname
dyld: Library not loaded: @rpath/CoreSymbolicationDT.framework/Versions/A/CoreSymbolicationDT
  Referenced from: ~/Library/Developer/Xcode/DerivedData/TheArchive-bdfzgzxhmswchfaskemobshbdnic/Build/Products/Debug/TheArchiveUITests-Runner.app/Contents/Frameworks/XCTest.framework/Versions/A/XCTest
  Reason: image not found

It looks like the UI testing process doesn’t embed some testing frameworks into either the app or the test runner.

I can replicate this exact error message in a vanilla project: I just have to embed and link to all RxSwift frameworks in the app target, including RxSwift, RxText, RxBlocking, RxCocoa. Then the UI tests of that project will fail for the same reasons. (It doesn’t matter if I build dependencies via Carthage, CocoaPods, or on my own.)

The thing is: I removed all code from The Archive, and all framework dependencies, and the error still doesn’t go away.

This is a weird one. I’m puzzled; I asked around and had people replicate the bug. It’s a real show-stopper.

I learned that you can add the DYLD_PRINT_RPATHS=1 environment variable to the scheme in Xcode and have the path lookups printed to the console. The dyld error is related to the app, not the UI test process, and in the sample app the CoreSymbolicationDT framework is reported to indeed be found and the path resolved. This makes it all even more puzzling.

Now I do hope for a quick resolution. To all fans of The Archive: I’m sorry for the lack of updates in the past weeks due to this problem.

Now I’m looking forward to work on the long-awaited analytics/statistics module for the WordCounter and see where this goes.