GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - ChargePoint/xcparse: Command line tool & Swift framework for parsing Xcode 11+ xcresult

BranchesTags
Open more actions menu

Latest commit

 

History

83 Commits
83 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
.swiftpm/xcode/package.xcworkspace
.swiftpm/xcode/package.xcworkspace
 
 
Docs/Images
Docs/Images
 
 
FormatDescriptions
FormatDescriptions
 
 
Sources
Sources
 
 
Tests
Tests
 
 
xcparse.xcodeproj
xcparse.xcodeproj
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
LICENSE
LICENSE
 
 
Makefile
Makefile
 
 
Package.resolved
Package.resolved
 
 
Package.swift
Package.swift
 
 
README.md
README.md
 
 

Repository files navigation

xcparse

A command line tool to extract code coverage & screenshots from Xcode 11 XCResult files.

To learn more about Xcode 11's xcresult format, read Rishab Sukumar's post on the ChargePoint Engineering blog

Installation

Homebrew

Enter the following command into your terminal:

brew install chargepoint/xcparse/xcparse

This will tap into our xcparse Homebrew tap and install the tool on your local machine.

Mint

To use xcparse via Mint, prefix the normal usage with mint run ChargePoint/xcparse like so:

mint run ChargePoint/xcparse xcparse <command> <options>

To use a specific version of xcparse, add the release tag like so:

mint run ChargePoint/[email protected] xcparse --help

Bitrise

Want to use this in Bitrise? We have an xcparse Bitrise step available in the Bitrise StepLib so you can add xcparse directly from the Bitrise Workflow UI!

See our Bitrise step's README for more information.

Usage

xcparse <command> <options>

Below are a few examples of common commands. For further assistance, use the --help option on any command

Screenshots

xcparse screenshots --os --model --test-plan-config /path/to/Test.xcresult /path/to/outputDirectory

This will cause screenshots to be exported like so:

Screenshots exported into folders

Options can be added & remove to change the folder structure used for export. Using no options will lead to all attachments being exported into the output directory.

Options available include:

Option Description
--model Divide by test target model
--os Divide by test target operating system
--test-plan-config Divide by test run configuration
--language Divide by test language
--region Divide by test region
--test Divide by test

See xcparse screenshots --help for a full-listing

Test Status

The --test-status option can allow for whitelisting only screenshots from tests that have a status that matches at least one of the provided status strings

Examples Description
--test-status Success Passing tests only
--test-status Failure Failing tests only
--test-status Success Failure Passing or failing tests only
--test-status 'Expected Failure' Failure Expected failure or failing tests only
--test-status 'Expected Failure' Expected failure tests only

Test status strings can be found by using verbose mode with the screenshots sub-command.

Activity Type

The --activity-type option allows for whitelisting screenshots whose activity type matches at least one of the provided activity type strings.

Examples Description
--activity-type com.apple.dt.xctest.activity-type.testAssertionFailure Test failure screenshots only
--activity-type attachmentContainer userCreated User created screenshots only

Note that when an activity type string is provided which doesn't have a reverse-DNS style domain, it is assumed to be of com.apple.dt.xctest.activity-type.<activityTypeString> and the domain is automatically added.

Therefore, these two are option calls are equivalent:

--activity-type userCreated attachmentContainer

--activity-type com.apple.dt.xctest.activity-type.userCreated com.apple.dt.xctest.activity-type.attachmentContainer

Activity types can be found in verbose mode. Below are a listing of common ones:

Activity Type Description
com.apple.dt.xctest.activity-type.attachmentContainer Placeholder activity that contains an attachment, may contain user created screenshot
com.apple.dt.xctest.activity-type.deletedAttachment Deleted attachment placeholder activity
com.apple.dt.xctest.activity-type.internal Internal test step, may have automatic screenshot to show test progression
com.apple.dt.xctest.activity-type.testAssertionFailure Step where the test failed in an assertion, may have failure screenshot
com.apple.dt.xctest.activity-type.userCreated User created screenshot/attachment

Attachments

xcparse attachments /path/to/Test.xcresult /path/to/outputDirectory --uti public.plain-text public.image

Export all attachments in the xcresult that conform to either the public.plan-text or the public.image uniform type identifiers (UTI). The screenshots command, for example, is actually just the attachments command operating a whitelist for public.image UTI attachments. Other common types in xcresults are public.plain-text for debug descriptions of test failures.

Read this Apple documentation for a list of publicly documented UTIs.

Code Coverage

xcparse codecov /path/to/Test.xcresult /path/to/exportCodeCoverageFiles

This will export the action.xccovreport & action.xccovarchive into your output directory.

Logs

xcparse logs /path/to/Test.xcresult /path/to/exportLogFiles

This will export logs & diagnostic files into a per-action folder structure similar to Xcode 10's xcresult format.

Logs exported into folders

Convert

xcparse convert /path/to/AppThinningSizeReport.txt /path/to/outputDirectory --flagVariants sizeLimit

This will export a JSON representation of the given App Thinning Size Report to the output directory.

Flag Variants

The --flag-variants option can allow for the generation of an app size violations report with all the app variants that exceed the specified size limit.

Examples Description
--flag-variants 10MB Flags variants that exceed 10MB
--flag-variants 13 Flags variants that exceed 13MB
--flag-variants invalid Flags variants that exceed 10MB

If a size unit is not specified, the default unit is considered to be megabytes. Similarly, invalid arguments cause a default size limit of 10MB to be used for flagging app size violations.

Help

xcparse --help

xcparse screenshots --help

Learn about all the options we didn't mention with --help!

About

Command line tool & Swift framework for parsing Xcode 11+ xcresult

Topics

code-coveragecommand-line-toolframeworkiosscreenshotsswiftxcode11xcresult

Resources

Readme
MIT license

Code of conduct

Code of conduct

Contributing

Contributing
Activity
Custom properties

Stars

426 stars

Watchers

22 watching

Forks

47 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.