Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[New Feature] Support .xctestproducts and Test Plan for XCTest #583

Open
DavidAsulin1 opened this issue Aug 23, 2023 · 1 comment
Open

Comments

@DavidAsulin1
Copy link
Contributor

DavidAsulin1 commented Aug 23, 2023

Hello,

I would like to suggest adding support for the .xctestproducts file in XCTest, which includes all the products necessary to execute the test. The .xctestproducts file has been added since Xcode 13.3. The main advantages of using .xctestproducts are:

  • It is very suitable for executing XCTest in a pipeline.
  • It supports choosing which Test Plan to execute (currently, HydraLab relies on the supplied .xctestrun file specific to one test plan).

The suggested changes are:

  • Adding support for .xctestproducts.
  • Adding a new option in the UI that enables the selection of a Test Plan.

These changes should enhance the usability and flexibility of XCTest.

I would love to contribute by working on the backend implementation ☺️

@hydraxman
Copy link
Member

@DavidAsulin1 Thank you and glad that you would like to join us as a contributor, @lifesaver0129 is the previous contributor for XCTest, you can work together to make this happen. This looks like a promising area, please let us know if you have any questions during the implementation.

zhou9584 pushed a commit that referenced this issue Nov 16, 2023
<!-- Please provide brief information about the PR, what it contains &
its purpose, new behaviors after the change. And let us know here if you
need any help: https://github.com/microsoft/HydraLab/issues/new -->

## Description
In this PR, I suggest adding support for the `.xctestproducts` package
in XCTest. As I described in issue #583, using `xctestproducts` is more
suitable for CI and also supports the Test Plan feature.

Currently, in order to export the test products, one needs to package
the Derived Data and the `.xctestrun` file. After this change, the user
can choose to upload the `xctestproducts` package, and we will detect it
internally.

One additional change on the UI side is regarding the Test Plan name. In
case the test type is XCTest, the user can enter the test plan name,
which we will use if the test package is of type `xctestproducts`.

If we decide to proceed with this change, the [Wiki
page](https://github.com/microsoft/HydraLab/wiki/Create-test-build-and-run-XCTest)
will need to be updated.

### Linked GitHub issue ID: #583 

## Pull Request Checklist
<!-- Put an x in the boxes that apply. This is simply a reminder of what
we are going to look for before merging your code. -->

- [x] Tests for the changes have been added (for bug fixes / features)
- [x] Code compiles correctly with all tests are passed.
- [x] I've read the [contributing
guide](https://github.com/microsoft/HydraLab/blob/main/CONTRIBUTING.md#making-changes-to-the-code)
and followed the recommended practices.
- [ ] [Wikis](https://github.com/microsoft/HydraLab/wiki) or
[README](https://github.com/microsoft/HydraLab/blob/main/README.md) have
been reviewed and added / updated if needed (for bug fixes / features)

### Does this introduce a breaking change?
*If this introduces a breaking change for Hydra Lab users, please
describe the impact and migration path.*

- [ ] Yes
- [x] No

## How you tested it
I test the change locally by uploading `xctestproducts` package and by
choosing different test plans to execute


Please check the type of change your PR introduces:
- [ ] Bugfix
- [x] Feature
- [ ] Technical design
- [ ] Build related changes
- [ ] Refactoring (no functional changes, no api changes)
- [ ] Code style update (formatting, renaming) or Documentation content
changes
- [ ] Other (please describe):
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants