{"id":18430986,"url":"https://github.com/me-io/appium-driver-codeception","last_synced_at":"2025-08-17T18:38:09.186Z","repository":{"id":13788277,"uuid":"74005382","full_name":"me-io/appium-driver-codeception","owner":"me-io","description":"Appium Driver for codeception","archived":false,"fork":false,"pushed_at":"2022-12-09T08:26:17.000Z","size":2313,"stargazers_count":19,"open_issues_count":6,"forks_count":18,"subscribers_count":36,"default_branch":"master","last_synced_at":"2024-04-14T12:30:17.251Z","etag":null,"topics":["appium","appium-driver","automation-test","codeception","codeception-appium-driver","codeception-driver","php-appium"],"latest_commit_sha":null,"homepage":"","language":"PHP","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/me-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-11-17T08:19:33.000Z","updated_at":"2022-12-09T08:26:11.000Z","dependencies_parsed_at":"2023-01-13T17:37:26.524Z","dependency_job_id":null,"html_url":"https://github.com/me-io/appium-driver-codeception","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/me-io%2Fappium-driver-codeception","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/me-io%2Fappium-driver-codeception/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/me-io%2Fappium-driver-codeception/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/me-io%2Fappium-driver-codeception/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/me-io","download_url":"https://codeload.github.com/me-io/appium-driver-codeception/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247707357,"owners_count":20982769,"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":["appium","appium-driver","automation-test","codeception","codeception-appium-driver","codeception-driver","php-appium"],"created_at":"2024-11-06T05:23:00.881Z","updated_at":"2025-04-07T18:32:16.030Z","avatar_url":"https://github.com/me-io.png","language":"PHP","funding_links":["https://www.paypal.me/meabed"],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\r\n  Appium Driver for Codeception \r\n\u003c/h1\u003e\r\n\u003cp align=\"center\" style=\"font-size: 1.2rem;\"\u003eAppium driver for codeception for writing mobile tests.\u003c/p\u003e\r\n\r\n\u003chr /\u003e\r\n\r\n[![Build Status][build-badge]][build]\r\n[![downloads][downloads-badge]][downloads]\r\n[![MIT License][license-badge]][license]\r\n[![Donate][donate-badge]][donate]\r\n\r\n[![All Contributors](https://img.shields.io/badge/all_contributors-2-orange.svg?style=flat-square)](#contributors)\r\n[![PRs Welcome][prs-badge]][prs]\r\n[![Code of Conduct][coc-badge]][coc]\r\n[![Watch on GitHub][github-watch-badge]][github-watch]\r\n[![Star on GitHub][github-star-badge]][github-star]\r\n[![Tweet][twitter-badge]][twitter]\r\n\r\n## Requirement\r\n\r\n1. PHP \u003e= 7.0\r\n2. [Appium](http://appium.io/)\r\n3. [Inspect App with Appium Desktop](https://medium.com/@eliasnogueira/inspect-an-app-with-the-new-appium-desktop-8ce4dc9aa95c)\r\n4. Devices:\r\n   * **Android**\r\n      * [Setup Android SDK on Mac](https://gist.github.com/agrcrobles/165ac477a9ee51198f4a870c723cd441)\r\n   * **iOS**\r\n      * Install Xcode from the following [link](https://developer.apple.com/xcode/) or run the following command\r\n        inside your terminal:\r\n        ```bash\r\n        xcode-select --install\r\n        ```\r\n      * Install the Carthage dependency manager:\r\n        ```bash\r\n        brew install carthage\r\n        ```\r\n\r\n## Table of Contents\r\n\r\n* [Install](#install)\r\n* [Tests](#tests)\r\n  * [Writing tests for Android](#writing-tests-for-android)\r\n  * [Writing tests for iOS](#writing-tests-for-ios)\r\n  * [Generating Actor classes](#generating-actor-classes)\r\n  * [Your First Android Test](#your-first-android-test)\r\n  * [Your First iOS Test](#your-first-ios-test)\r\n  * [Running tests](#running-tests)\r\n\r\n## Install\r\n\r\nJust add `me-io/appium-driver-codeception` to your project's composer.json file:\r\n\r\n```json\r\n{\r\n    \"require\": {\r\n        \"me-io/appium-driver-codeception\": \"~1\"\r\n    }\r\n}\r\n```\r\n\r\nand then run `composer install`. This will install codeception appium driver and all it's dependencies. Or run the following command\r\n\r\n```bash\r\ncomposer require me-io/appium-driver-codeception\r\n```\r\n\r\n## Tests\r\n\r\nNow lets run the following command at the root directory of your project:\r\n\r\n```bash\r\ncodecept bootstrap\r\n```\r\n\r\nThis command will creates a configuration file for codeception and tests directory and default test suites.\r\n\r\n### Writing tests for Android\r\n\r\nNow, lets create a new configuration file `android.suite.yml` inside tests directory and put the following contents inside of it.\r\n\r\n```yml\r\nclass_name: AndroidGuy\r\nmodules:\r\n  enabled:\r\n    # Enable appium driver\r\n    - \\Appium\\AppiumDriver \r\n    -  Asserts\r\n  config:\r\n    # Configuration for appium driver\r\n    \\Appium\\AppiumDriver:\r\n      host: 0.0.0.0\r\n      port: 4723\r\n      dummyRemote: false\r\n      resetAfterSuite: true\r\n      resetAfterCest: false\r\n      resetAfterTest: false\r\n      resetAfterStep: false\r\n      capabilities:\r\n        platformName: 'Android'\r\n        deviceName: 'Android device'\r\n        automationName: 'Appium'\r\n        appPackage: io.selendroid.testapp\r\n        fullReset: false\r\n        noReset: false\r\n        newCommandTimeout: 7200\r\n        nativeInstrumentsLib: true\r\n        connection_timeout: 500\r\n        request_timeout: 500\r\n        autoAcceptAlerts: true\r\n        appActivity: io.selendroid.testapp.HomeScreenActivity\r\n        skipUnlock: true\r\n```\r\n\r\n\u003e **Note**: `deviceName` should be set as `Android device` only for real device. For Android Emulator use the name of the virtual device.\r\n\r\n\r\n### Writing tests for iOS\r\n\r\nNow, lets create a new configuration file `ios.suite.yml` inside tests directory and put the following contents inside of it.\r\n\r\n```yml\r\nclass_name: IosGuy\r\nmodules:\r\n  enabled:\r\n    # Enable appium driver\r\n    - \\Appium\\AppiumDriver\r\n    -  Asserts\r\n  config:\r\n    # Configuration for appium driver\r\n    \\Appium\\AppiumDriver:\r\n      host: 0.0.0.0\r\n      port: 4723\r\n      dummyRemote: false\r\n      resetAfterSuite: true\r\n      resetAfterCest: false\r\n      resetAfterTest: false\r\n      resetAfterStep: false\r\n      capabilities:\r\n        # PATH OF YOUR APP (something like  /Users/username/Documents/ios.app)\r\n        app: ''\r\n        # xcideOrgId is Apple developer team identifier string.\r\n        xcodeOrgId: ''\r\n        # xcodeSigningId is a string representing a signing certificate. iPhone Developer by default.\r\n        xcodeSigningId: 'iPhone Developer'\r\n        platformName: 'iOS'\r\n        platformVersion: '11.2'\r\n        deviceName: 'iPhone8'\r\n        # Your device udid\r\n        udid: ''\r\n        useNewWDA: false\r\n        newCommandTimeout: 7200\r\n        automationName: 'XCUITest'\r\n        autoAcceptAlerts: true\r\n        fullReset: false\r\n        noReset: true\r\n        nativeInstrumentsLib: true\r\n        connection_timeout: 500\r\n        request_timeout: 500\r\n        skipUnlock: true\r\n        clearSystemFiles: true\r\n        showIOSLog: true\r\n```\r\n\r\n### Generating Actor classes\r\n\r\nNow we need to generate actor class for the  `AndroidGuy`/`IosGuy` that we defined in `android.suite.yml`/`ios.suite.yml`. To generate the actor class for `AndroidGuy`/`IosGuy` run the following command inside your terminal:\r\n\r\n```bash\r\ncodecept build\r\n```\r\n\r\n### Your First Android Test\r\n\r\nTo create your first android test create a new directory `android` inside `tests` folder. After creating the `android` folder create a new file `FirstAndroidCest.php` and put the following contents inside of it:\r\n\r\n```php\r\nclass FirstAndroidCest\r\n{\r\n    public function changeLanguage(AndroidGuy $I)\r\n    {\r\n        $I-\u003eimplicitWait([\r\n            'ms' =\u003e 3500,\r\n        ]);\r\n        $text = $I-\u003ebyId('id_of_button')-\u003egetText();\r\n        $I-\u003eassertEquals('Hello, World!', $text);\r\n    }\r\n}\r\n```\r\n\r\n### Your First iOS Test\r\n\r\nTo create your first iOS test create a new directory `ios` inside `tests` folder. After creating the `ios` directory create a new file `FirstIosCest.php` and put the following contents inside of it:\r\n\r\n```php\r\nclass FirstIosCest\r\n{\r\n    public function lockPhone(Ios $I)\r\n    {\r\n        $I-\u003eimplicitWait([\r\n            'ms' =\u003e 10000,\r\n        ]);\r\n        $I-\u003eassertEquals('Hello, World!', 'Hello, World!');\r\n        $I-\u003eamGoingTo(\"lock phone\");\r\n        $I-\u003elock([null]);\r\n    }\r\n}\r\n```\r\n\r\n### Running tests\r\n\r\nRun the appium server by running the following command:\r\n\r\n```bash\r\nappium\r\n```\r\n\u003e **NOTE:** If you want to change IP/Port run the appium command like this:\r\n```\r\nappium -a \u003cIP Address\u003e -p \u003cPort\u003e\r\n```\r\n\r\nAfter running the appium server now you need to start android emulator and install the application that you want to test. If you don't know how to start the emulator you can follow the following guide [Setup Genymotion Android Emulators on Mac OS\r\n](https://shankargarg.wordpress.com/2016/02/25/setup-genymotion-android-emulators-on-mac-os/)\r\n\r\nNow run the following command inside your terminal to run the tests:\r\n\r\n```bash\r\n# For Android\r\ncodecept run android FirstAndroidCest.php --steps\r\n\r\n# For iOS\r\ncodecept run ios FirstIosCest.php --steps\r\n```\r\n\r\n\u003e **Note**: While following the steps that are mentioned here if you get `codecept command not found` error try to run `codecept` command like this `./vendor/bin/codecept`.\r\n\r\n## Contributors\r\n\r\nA huge thanks to all of our contributors:\r\n\r\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore --\u003e\n| [\u003cimg src=\"https://avatars0.githubusercontent.com/u/45731?v=3\" width=\"100px;\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMohamed Meabed\u003c/b\u003e\u003c/sub\u003e](https://github.com/Meabed)\u003cbr /\u003e[💻](https://github.com/me-io/appium-driver-codeception/commits?author=Meabed \"Code\") [📢](#talk-Meabed \"Talks\") | [\u003cimg src=\"https://avatars2.githubusercontent.com/u/16267321?v=3\" width=\"100px;\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eZeeshan Ahmad\u003c/b\u003e\u003c/sub\u003e](https://github.com/ziishaned)\u003cbr /\u003e[💻](https://github.com/me-io/appium-driver-codeception/commits?author=ziishaned \"Code\") [🐛](https://github.com/me-io/appium-driver-codeception/issues?q=author%3Aziishaned \"Bug reports\") [⚠️](https://github.com/me-io/appium-driver-codeception/commits?author=ziishaned \"Tests\") [📖](https://github.com/me-io/appium-driver-codeception/commits?author=ziishaned \"Documentation\") |\n| :---: | :---: |\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\r\n\r\n\r\n## License\r\n\r\nThe code is available under the [MIT license](LICENSE.md).\r\n\r\n[build-badge]: https://img.shields.io/travis/me-io/appium-driver-codeception.svg?style=flat-square\r\n[build]: https://travis-ci.org/me-io/appium-driver-codeception\r\n[downloads-badge]: https://img.shields.io/packagist/dm/me-io/appium-driver-codeception.svg?style=flat-square\r\n[downloads]: https://packagist.org/packages/me-io/appium-driver-codeception/stats\r\n[license-badge]: https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square\r\n[license]: https://github.com/me-io/appium-driver-codeception/blob/master/LICENSE.md\r\n[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\r\n[prs]: http://makeapullrequest.com\r\n[coc-badge]: https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\r\n[coc]: https://github.com/me-io/appium-driver-codeception/blob/master/CODE_OF_CONDUCT.md\r\n[github-watch-badge]: https://img.shields.io/github/watchers/me-io/appium-driver-codeception.svg?style=social\r\n[github-watch]: https://github.com/me-io/appium-driver-codeception/watchers\r\n[github-star-badge]: https://img.shields.io/github/stars/me-io/appium-driver-codeception.svg?style=social\r\n[github-star]: https://github.com/me-io/appium-driver-codeception/stargazers\r\n[twitter]: https://twitter.com/intent/tweet?text=Check%20out%20appium-driver-codeception!%20https://github.com/me-io/appium-driver-codeception%20%F0%9F%91%8D\r\n[twitter-badge]: https://img.shields.io/twitter/url/https/github.com/me-io/appium-driver-codeception.svg?style=social\r\n[donate-badge]: https://img.shields.io/badge/paypal-donate-179BD7.svg?style=flat-squares \r\n[donate]: https://www.paypal.me/meabed\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fme-io%2Fappium-driver-codeception","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fme-io%2Fappium-driver-codeception","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fme-io%2Fappium-driver-codeception/lists"}