Search code examples
swiftxcodexctestxcode-ui-testingxcode-cloud

Xcode UI test plans : show attachment previews in test results


In the Apple overview page of Xcode Cloud, I can see this image of the result of a test executed with Xcode Cloud:

Xcode cloud with full attachements preview

The attachements of the test are displayed as a full image. But on my side, the attachements are displayed inline and not as a full image preview. I can still QuickLook them but they are always collapsed.

My Xcode with inline attachements

I created an extensions of XCTestCase to easily generate screenshot attachements for my UI tests:

extension XCTestCase {
    /// Take a screenshot of a given app and add it to the test attachements.
    /// - Parameters:
    ///   - app: The app to take a screenshot of.
    ///   - name: The name of the screenshot.
    func takeScreenshot(of app: XCUIApplication, named name: String) {
        let screenshot = app.windows.firstMatch.screenshot()
        let attachment = XCTAttachment(screenshot: screenshot)
        #if os(iOS)
        attachment.name = "Screenshot-\(name)-\(UIDevice.current.name).png"
        #else
        attachment.name = "Screenshot-\(name)-macOS.png"
        #endif
        attachment.lifetime = .keepAlways
        add(attachment)
    }
}

And use it like so on my UI Test:

final class LocalizationTests: XCTestCase {
    override class var runsForEachTargetApplicationUIConfiguration: Bool {
        true
    }

    func testLaunchScreen() throws {
        let app = XCUIApplication()
        app.launch()

        takeScreenshot(of: app, named: "Launch")
    }
}

Here is also my test plan configuration:

My test plan configuration

There are a lot of WWDC sessions about Xcode Cloud and unit testing, but I couldn't find one of them that talks about this feature. Maybe I'm missing something really obvious, but this feature would be a super nice addition to my workflow. I'm using Xcode 14.1 (14B47b) and macOS Ventura 13.0.1 (22A400).

Does anyone know if it is possible to replicate the behavior showed on the Apple website? Thanks in advance for your help.


Solution

  • This seems to be describing a kind-of-hidden feature of the Xcode test results viewer called Gallery mode.

    From the Assistant dropdown, you can navigate to Gallery mode if you are looking at a test result inside Xcode.

    It's in the top right of the center panel, and the menu item is "Show Gallery"