{"id":15594405,"url":"https://github.com/orta/cocoapods-xcautotest","last_synced_at":"2025-05-01T04:23:52.444Z","repository":{"id":66646928,"uuid":"62470500","full_name":"orta/cocoapods-xcautotest","owner":"orta","description":"Automatically inject new test classes into your iOS simulator without restarts.","archived":false,"fork":false,"pushed_at":"2016-08-10T14:13:19.000Z","size":27,"stargazers_count":26,"open_issues_count":9,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-30T21:04:19.513Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/orta.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-07-02T21:31:52.000Z","updated_at":"2020-04-17T08:50:42.000Z","dependencies_parsed_at":"2023-02-25T23:00:48.899Z","dependency_job_id":null,"html_url":"https://github.com/orta/cocoapods-xcautotest","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orta%2Fcocoapods-xcautotest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orta%2Fcocoapods-xcautotest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orta%2Fcocoapods-xcautotest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orta%2Fcocoapods-xcautotest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/orta","download_url":"https://codeload.github.com/orta/cocoapods-xcautotest/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251821659,"owners_count":21649355,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-03T00:39:54.634Z","updated_at":"2025-05-01T04:23:52.402Z","avatar_url":"https://github.com/orta.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cocoapods-xcautotest\n\n_note_ - this is a README driven project, this is where I want it to be. A lot of the infrastructure is in place.\n\n**OK, so, here's the problem.**\n\nYou write tests, because you want to ensure a baseline quality. Good on 'ya. You write a lot of tests over time.\n\nEventually this becomes it's own problem. Tests take time to compile, they start to really rack up the minutes to run.\n\nSo you think, OK, I can work around this. You use [Xcode Schemes to run only a few tests](http://artsy.github.io/blog/2016/04/06/Testing-Schemes/) each time. It's a bit of work, but you can deal with it.\n\nThen you do [some work in another language](http://danger.systems/guides/creating_your_first_plugin.html#tests) - with real TDD. You end up being pretty frustrated at waiting tens of seconds for your sim to be running your tests. This isn't how it should be.\n\n---\n\nXCAutoTest is a CocoaPods plugin. It is both a server that runs inside your terminal, and a library that runs inside your project.\n\n### Terminal\n\nThe job of this part of the system is to listen for file system changes from your tests. When a file is saved, it will compile those tests into a bundle, then pass that over to the app to run as a testcase.\n\n### Library\n\nThe library's job is to see if the server is running at the end of an XCTest run. If the server is running, then it will stop the suite from closing, and listen for new test bundles. This will trigger a test-run for just the compiled tests.\n\n## Installation\n\n    $ gem install cocoapods-xcautotest\n\n## Usage\n\nI'm still thinking a bit about how this can be done independent of your entire team. For now, I will be using the CocoaPods plugin infrastructure. If this is a blocker, I'm interested in ways to improve it.\n\nAdd the gem to your `Gemfile`, and add `plugin 'cocoapods-xcautotest'` to your `Podfile`.\n\nStart up the server:\n\n    $ bundle exec pod xcautotest\n\n\n## Hacking on the project\n\nTo understand the principals of this project - you should be familiar with how [Injection for Xcode works](http://artsy.github.io/blog/2016/06/29/code-spelunking-injection/). If you want the history on the project, look at [this issue](https://github.com/artsy/mobile/issues/26).\n\nThen it'd be a good idea to have a brief look over the [VISION.md](VISION.md) to grok the overall plan.\n\nTo get started, clone the repo, install the deps, and run the tests.\n\n```ruby\ngit clone https://github.com/orta/cocoapods-xcautotest.git\ncd cocoapods-xcautotest\nbundle\nbundle exec rake\n```\n\nThis gets you fully set up, however, you're going to want to have this working inside an iOS project to true make changes. So you'll need to use [a Gemfile](https://guides.cocoapods.org/using/a-gemfile.html) on that project. Your Gemfile should look somewhat like:\n\n``` ruby\ngem \"cocoapods\", \"~\u003e 1.0\"\ngem \"cocoapods-xcautotest\", path: \"/path/to/where/this/is/cloned\"\n```\n\nThen include the plugin reference in your `Podfile`:\n\n``` ruby\nplugin \"cocoapods-xcautotest\"\n```\n\nThen whenever you `bundle exec pod install` it will use your development version of xcautotest. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forta%2Fcocoapods-xcautotest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forta%2Fcocoapods-xcautotest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forta%2Fcocoapods-xcautotest/lists"}