{"id":32325976,"url":"https://github.com/boxblinkracer/xcode-testrail","last_synced_at":"2026-02-20T09:32:32.407Z","repository":{"id":61007573,"uuid":"546868207","full_name":"boxblinkracer/xcode-testrail","owner":"boxblinkracer","description":"A decoupled TestRail integration for your Xcode project to easily send results to TestRail.","archived":false,"fork":false,"pushed_at":"2022-10-11T21:14:44.000Z","size":236,"stargazers_count":5,"open_issues_count":3,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-31T23:59:41.932Z","etag":null,"topics":["testautomation","testrail","xcode"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/boxblinkracer.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-10-06T19:30:29.000Z","updated_at":"2025-09-07T11:25:53.000Z","dependencies_parsed_at":"2022-10-08T08:15:47.024Z","dependency_job_id":null,"html_url":"https://github.com/boxblinkracer/xcode-testrail","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/boxblinkracer/xcode-testrail","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boxblinkracer%2Fxcode-testrail","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boxblinkracer%2Fxcode-testrail/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boxblinkracer%2Fxcode-testrail/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boxblinkracer%2Fxcode-testrail/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/boxblinkracer","download_url":"https://codeload.github.com/boxblinkracer/xcode-testrail/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boxblinkracer%2Fxcode-testrail/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29647723,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T09:27:29.698Z","status":"ssl_error","status_checked_at":"2026-02-20T09:26:12.373Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["testautomation","testrail","xcode"],"created_at":"2025-10-23T13:26:16.686Z","updated_at":"2026-02-20T09:32:32.401Z","avatar_url":"https://github.com/boxblinkracer.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n   \u003cimg width=\"200px\" src=\"/assets/xcode.png\"\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003e(Super Easy) Xcode TestRail Integration\u003c/h1\u003e\n\n\n![Build Status](https://github.com/boxblinkracer/xcode-testrail/actions/workflows/ci_pipe.yml/badge.svg)\n[![Version](https://img.shields.io/cocoapods/v/XcodeTestrail.svg?style=flat)](https://cocoapods.org/pods/xcode-testrail)\n[![License](https://img.shields.io/cocoapods/l/XcodeTestrail.svg?style=flat)](https://cocoapods.org/pods/xcode-testrail)\n[![Platform](https://img.shields.io/cocoapods/p/XcodeTestrail.svg?style=flat)](https://cocoapods.org/pods/xcode-testrail)\n\nThis integration helps you to automatically send test results to TestRail. And yes, super easy and simple!\n\nAdd your TestRail credentials in Xcode, decide which test results should be sent to TestRail and you're done!\n\n\n### 1. Installation\n\nThis integration is available through [CocoaPods](https://cocoapods.org). To install\nit, simply add the following line to your Podfile:\n\nYou usually only need to install the integration for your `test targets`.\nOpen your podfile and add this to your test target.\n\n```bash \ntarget 'MyTestTarget' do\n    pod 'XcodeTestrail'\nend\n```\n\nThen just install your pods.\n\n```bash \npod install\n```\n\n\n\n### 2. Setup TestRail credentials\n\nNow configure your credentials for the TestRail API.\nJust add this snippet in a `testrail.conf` file in the root directory of your project.\n\n```ini \nTESTRAIL_DOMAIN=xxx.testrail.io\nTESTRAIL_USER=xxx\nTESTRAIL_PWD=xxxx\n```\n\n\n### 3. Setup Mode\n\n#### 3.1 Send result to specific Run in TestRail\n\nJust assign the Run ID of TestRail in your `testrail.conf` and all results will be sent to this run.\n\nResults will only be saved, if the sent TestCaseID is also existing in that run inside TestRail.\n\n```ini \nTESTRAIL_RUN_ID=161\n```\n\n\n#### 3.2 Create new Run in TestRail for every Xcode run\n\nSometimes you want to create test runs dynamically inside TestRail.\nFor this, just assign the ProjectID and the optional MilestoneID of TestRail in your `testrail.conf`.\n\nThe integration will then start a new run in TestRail and send the results to this one.\nIt is also possible to provide a custom (or dynamically created) name for the new test run.\n\n```ini \nTESTRAIL_PROJECT_ID=14                      // required project id\nTESTRAIL_MILESTONE_ID=5                     // optional, a milestone if yo have one\nTESTRAIL_RUN_NAME=XCODE RUN iPhone 14       // the name you want to use for this test run\nTESTRAIL_CLOSE_RUN=true                     // optional, if you want to close a run automatically. default is FALSE\n```\n\n\n### 4. Register Plugin\n\nJust register the TestRail integration in the setup of your test files.\nAlso make sure to import the module with the `@testable` keyword, otherwise TestRail will not be found!\n\nThere's nothing more that is required to register the TestRail reporter.\n\n```javascript \n@testable import XcodeTestrail\n\noverride func setUpWithError() throws\n{\n    try super.setUpWithError()\n\n    TestRail().register();\n}\n```\n\n\n### 5. Map Test Cases\n\nWe're almost done.\nYou can now map TestRail test cases to your Xcode tests.\nPlease use the TestRail case ID as a suffix inside the Xcode test title.\nThe plugin will automatically extract it, and send the results to your test run in TestRail.\nThe case ID needs to be at the end and separated with an `_` from the rest of the title.\n\n```javascript \npublic func testMyFeature_C6437()\n{\n    // ...\n}\n```\n\n## That's it!\n\nYou can now start Xcode, and all your results should be sent to TestRail as soon as your mapped tests pass or fail!\n\n\n\n# CI/CD Pipelines\n\nIt's also possible to run the integration within a CI/CD pipeline.\nIn most cases you probably want to create separate test runs for different devices.\n\nI would recommend creating a `Test Plan` in TestRail.\nThis plan can then contain different test runs for every device.\n\n\u003cp align=\"center\"\u003e\n   \u003cimg width=\"100%\" src=\"/assets/testrail_plan.png\"\u003e\n\u003c/p\u003e\n\nIn your pipeline, just create a `testrail.conf` file and fill it with the RunID for the specific device test.\nYou can either create the full file dynamically, or maybe create a template that comes without a run id.\nIn that case we simply copy the template before we start the test, and then add our specific run id.\n\n```yaml  \n# template.conf\nTESTRAIL_DOMAIN=xxx.testrail.io\nTESTRAIL_USER=xxx\nTESTRAIL_PWD=xxxx\n```\n\n```bash  \n# copy template before a new device test\ncp ./template.conf src/testrail.conf\n\n# assign our iPhone 14 Pro (iOS 16.0) Run ID for our Release Plan in TestRail (R166)\necho \"TESTRAIL_RUN_ID=166\" \u003e\u003e src/testrail.conf\n\n# start our Xcode tests for iPhone 14 Pro, iOS 16.0\nxcodebuild test -workspace xxx -scheme xxx -testPlan UITestsPlan -destination 'platform=iOS Simulator,name=iPhone 14 Pro,OS=16.0'\n```\n\n\n## License\n\nXcodeTestrail is available under the MIT license. See the LICENSE file for more info.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboxblinkracer%2Fxcode-testrail","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fboxblinkracer%2Fxcode-testrail","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboxblinkracer%2Fxcode-testrail/lists"}