{"id":19308073,"url":"https://github.com/pgssoft/automate","last_synced_at":"2025-04-05T14:08:11.520Z","repository":{"id":10220010,"uuid":"64753966","full_name":"PGSSoft/AutoMate","owner":"PGSSoft","description":"Swift framework containing a set of helpful XCTest extensions for writing UI automation tests","archived":false,"fork":false,"pushed_at":"2023-11-22T09:03:31.000Z","size":10746,"stargazers_count":285,"open_issues_count":2,"forks_count":32,"subscribers_count":20,"default_branch":"master","last_synced_at":"2024-04-24T14:15:45.664Z","etag":null,"topics":["automation","ios","swift-framework","uiautomation","xctest","xcuitest"],"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/PGSSoft.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,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2016-08-02T12:14:11.000Z","updated_at":"2024-04-12T09:12:13.000Z","dependencies_parsed_at":"2024-04-24T09:59:06.156Z","dependency_job_id":"df76c0c7-7b64-4058-8082-9216ad70defc","html_url":"https://github.com/PGSSoft/AutoMate","commit_stats":{"total_commits":344,"total_committers":14,"mean_commits":"24.571428571428573","dds":0.4273255813953488,"last_synced_commit":"0f82c1fffdfb7f79b7daa93c491f657a3e0d825b"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PGSSoft%2FAutoMate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PGSSoft%2FAutoMate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PGSSoft%2FAutoMate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PGSSoft%2FAutoMate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PGSSoft","download_url":"https://codeload.github.com/PGSSoft/AutoMate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247345854,"owners_count":20924102,"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":["automation","ios","swift-framework","uiautomation","xctest","xcuitest"],"created_at":"2024-11-10T00:13:35.375Z","updated_at":"2025-04-05T14:08:11.502Z","avatar_url":"https://github.com/PGSSoft.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"assets/logo.png\" alt=\"AutoMate, made by PGS Software\" /\u003e\n    \u003cbr /\u003e\n    \u003cimg src=\"assets/made-with-love-by-PGS.png\" /\u003e\n    \u003cp\u003e\n      \u003cb\u003eAutoMate\u003c/b\u003e \u0026bull;\n      \u003ca href=\"https://github.com/PGSSoft/AutoMate-AppBuddy\"\u003eAppBuddy\u003c/a\u003e \u0026bull;\n      \u003ca href=\"https://github.com/PGSSoft/AutoMate-Templates\"\u003eTemplates\u003c/a\u003e \u0026bull;\n      \u003ca href=\"https://github.com/PGSSoft/AutoMate-ModelGenie\"\u003eModelGenie\u003c/a\u003e\n    \u003c/p\u003e\n\u003c/div\u003e\n\n# AutoMate\n\n`AutoMate` is a Swift framework containing a set of helpful `XCTest` extensions for writing UI automation tests.\nIt provides strongly typed, extensible wrapper around launch arguments and environment variables, which can be used for language, locale and keyboard type configuration on the device.\nWith the [`AutoMate-AppBuddy`](https://github.com/PGSSoft/AutoMate-AppBuddy) it can also disable animations in the application and manage events, reminders and contacts.\n\n[![Swift 5](https://img.shields.io/badge/Swift-5-orange.svg?style=flat)](https://swift.org)\n[![Travis](https://img.shields.io/travis/PGSSoft/AutoMate.svg)](https://travis-ci.org/PGSSoft/AutoMate)\n[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/AutoMate.svg)](https://cocoapods.org/pods/AutoMate)\n[![Documentation](https://img.shields.io/badge/docs-100%25-D15B45.svg?style=flat)](https://pgssoft.github.io/AutoMate/)\n[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)\n[![SwiftPM Compatible](https://img.shields.io/badge/SwiftPM-compatible-4BC51D.svg?style=flat)](https://github.com/apple/swift-package-manager)\n[![Platform](https://img.shields.io/cocoapods/p/AutoMate.svg)](https://cocoapods.org/pods/AutoMate)\n[![License](https://img.shields.io/github/license/PGSSoft/AutoMate.svg)](https://github.com/PGSSoft/AutoMate/blob/master/LICENSE)\n\n![AutoMate](assets/AutoMate.gif)\n\n## Installation\n\nThere are three convinient ways to install AutoMate:\n\n* using [CocoaPods](https://cocoapods.org) with Podfile:\n\n\t```ruby\n\tpod 'AutoMate'\n\t```\n\n* using [Carthage](https://github.com/Carthage/Carthage) and add a line to `Cartfile.private`:\n\t\n\t```\n\tgithub \"PGSSoft/AutoMate\"\n\t```\n\n\t`Cartfile.private` should be used because AutoMate framework will be used by UI Tests target only not by the tested application.\n\n* using Swift Package Manager, either via [Xcode](https://developer.apple.com/documentation/xcode/adding_package_dependencies_to_your_app) or in `Package.swift`: \n\t\n\t```swift\n\t.package(url: \"https://github.com/PGSSoft/AutoMate\", from: \"1.8.0\"),\n\t```\n\n## Usage\n\nFull documentation is available at [https://pgssoft.github.io/AutoMate/](https://pgssoft.github.io/AutoMate/).\n\n1. Create a new UI test case class.\n2. Import `AutoMate` framework to UI tests files:\n\n    ```swift\n    import AutoMate\n    ```\n\n3. Use `TestLauncher` in the `setup()` method to configure application settings and launch the application:\n\n    ```swift\n    let app = XCUIApplication()\n    TestLauncher(options: [\n        SystemLanguages([.English, .German]),\n        SystemLocale(language: .English, country: .Canada),\n        SoftwareKeyboards([.EnglishCanada, .GermanGermany])\n    ]).configure(app).launch()\n    ```\n\n4. Use AutoMate's extensions in your tests. For example:\n\n    ```swift\n    func testSomething() {\n        let app = XCUIApplication()\n        let button = app.button.element\n\n        // helper for waiting until element is visible\n        waitForVisibleElement(button, timeout: 20)\n        button.tap()\n\n        // isVisible - helper to check that element both exists and is hittable\n        XCTAssertFalse(button.isVisible)\n    }\n    ```\n\n## Features (or ToDo)\n\n- [x] Set keyboards\n- [x] Set locale\n- [x] Set languages\n- [x] Custom arguments\n- [x] Custom keyboards, locales and languages\n- [x] `XCTest` extensions\n- [x] Added CoreData launch arguments\n- [x] Disable UIView animations (with `AutoMate-AppBuddy`)\n- [x] Strong-typed helpers: locators, page object templates (with `AutoMate-Templates`)\n- [x] Base XCTestCase template (with `AutoMate-Templates`)\n- [x] Most permissions alerts (like: `LocationWhenInUseAlert`, `CalendarAlert`, `PhotosAlert`) (with `AutoMate-ModelGenie`)\n- [x] Managing events, reminders and contacts (with `AutoMate-AppBuddy`)\n- [x] Companion library for the application (`AutoMate-AppBuddy`)\n- [x] Improve launch options type safety\n- [x] Smart coordinates\n- [x] Check if application is running in UI test environment (with `AutoMate-AppBuddy`)\n- [ ] Stubbing network requests\n- [ ] Stubbing contacts, events and reminders\n- [ ] Taking screenshots\n- [ ] Clearing application data\n- [ ] Stubbing notifications\n\n## Example application\n\nRepository contains example application under `AutoMateExample` directory.\nStructure of the application is simple, but the project contains extensive suite of UI tests to showcase capabilities of the library.\n\n## Development\n\nFull documentation is available at [https://pgssoft.github.io/AutoMate/](https://pgssoft.github.io/AutoMate/).\n\nIf you want to provide your custom launch argument or launch environment you have to implement `LaunchOption` protocol or one of its extensions, such as `LaunchArgumentWithSingleValue`:\n\n```swift\nenum CustomParameter: String, LaunchArgumentWithSingleValue, LaunchArgumentValue {\n    var key: String {\n        return \"AppParameter\"\n    }\n    case value1\n    case value2\n}\n```\n\nThen, you can pass it to the `TestBuilder`:\n\n```swift\nlet launcher = TestLauncher(options: [\n    CustomParameter.value1\n])\n```\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub at [https://github.com/PGSSoft/AutoMate](https://github.com/PGSSoft/AutoMate).\n\n## License\n\nThe project is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).\n\n## About\nThe project maintained by software development agency [PGS Software](https://www.pgs-soft.com).\nSee our other [open-source projects](https://github.com/PGSSoft) or [contact us](https://www.pgs-soft.com/contact-us) to develop your product.\n\n## Follow us\n\n[![Twitter URL](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=https://github.com/PGSSoft/AutoMate)  \n[![Twitter Follow](https://img.shields.io/twitter/follow/pgssoftware.svg?style=social\u0026label=Follow)](https://twitter.com/pgssoftware)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpgssoft%2Fautomate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpgssoft%2Fautomate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpgssoft%2Fautomate/lists"}