{"id":29190659,"url":"https://github.com/owncloud/ios-scenario-testing","last_synced_at":"2025-07-02T00:10:45.541Z","repository":{"id":60861469,"uuid":"373837979","full_name":"owncloud/ios-scenario-testing","owner":"owncloud","description":":iphone: :gear: iOS scenario testing using feature files. Gherkin language, Cucumber as tool and Appium interaction with devices/emulators","archived":false,"fork":false,"pushed_at":"2025-05-30T12:57:26.000Z","size":492633,"stargazers_count":3,"open_issues_count":0,"forks_count":2,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-06-28T18:13:13.640Z","etag":null,"topics":["appium","automated-testing","cucumber","cucumber-reports","gherkin","ios","java","test","test-automation","testing"],"latest_commit_sha":null,"homepage":"","language":"Java","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/owncloud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2021-06-04T12:40:54.000Z","updated_at":"2025-05-30T12:57:31.000Z","dependencies_parsed_at":"2025-04-16T09:09:50.587Z","dependency_job_id":null,"html_url":"https://github.com/owncloud/ios-scenario-testing","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/owncloud/ios-scenario-testing","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/owncloud%2Fios-scenario-testing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/owncloud%2Fios-scenario-testing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/owncloud%2Fios-scenario-testing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/owncloud%2Fios-scenario-testing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/owncloud","download_url":"https://codeload.github.com/owncloud/ios-scenario-testing/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/owncloud%2Fios-scenario-testing/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263052430,"owners_count":23406106,"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","automated-testing","cucumber","cucumber-reports","gherkin","ios","java","test","test-automation","testing"],"created_at":"2025-07-02T00:10:44.956Z","updated_at":"2025-07-02T00:10:45.512Z","avatar_url":"https://github.com/owncloud.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\nScenarios contained in feature files written in Gherkin language.\nAvailable scenarios can be found\n[here](ios-scenario-testing/src/test/resources/io/cucumber).\n\nDefined for the [ownCloud iOS app](https://github.com/owncloud/ios)\n\n\n## Global overview\n\n- Scenarios are defined with [Gherkin\nSyntax](https://cucumber.io/docs/gherkin/).\n\n- Steps are interpreted by [Cucumber](https://cucumber.io/).\n\n- Step implementation language:\n[Java](https://docs.oracle.com/javase/7/docs/)\n\n- Device interaction with [Appium](http://appium.io/)\n\n- Reports generated with [Cucumber Reports](https://reports.cucumber.io/)\n\n![](architecture.png)\n\n## Get the code\n\n- With git:\n\n`git clone https://github.com/owncloud/ios-scenario-testing.git`\n\n- Download a [zip\nfile](https://github.com/owncloud/ios-scenario-testing/archive/master.zip)\n\n\n## Requirements\n\nDifferent requirements:\n\n* `Appium` instance running and reachable. \n\n* At least, one iOS simulator attached and reachable.\n\n* The following libraries and dependencies to be installed:\n\n\t* `authorize-ios`: A little utility that pre-authorizes Instruments to run UIAutomation scripts against iOS devices\n\t* `ios-deploy` : Allows install and debug iOS apps from the command line\n\t* `ideviceinstaller`: A command-line application to manage apps on iOS devices\n\t* `ios-webkit-debug-proxy`: Allows to send commands to MobileSafari and UIWebViews\n\t* `ios-sim` : Simulator manager (start, launch...)\n\n## How to test\n\n### 1. Build app\n\nFirst, build the [app](https://github.com/owncloud/ios-app) from the expected branch/commit to get the test object, by using the [buildapp](https://github.com/owncloud/ios-scenario-testing/blob/master/buildapp/buildapp.sh) script in the current repository.\n\nThe [buildapp](https://github.com/owncloud/ios-scenario-testing/blob/master/buildapp/buildapp.sh) script:\n\n- will disable welcome wizard\n- will disable the release notes\n- will set basic auth as forced authentication method, required to execute the test suites\n- will move the final artifact to the correct place (`/src/test/resources` folder in the current structure)\n\nCheck the script's variables for the proper setup in your own environment or CI system.\n\nIn the current repository there will be always an `owncloud.app` file located in `/src/test/resources`, as example or fallback.\n\n\n### 2. Execute tests\n\nThe script `executeTests` will launch the tests. The following environment variables must be set in advance\n\n\t\t$OC_SERVER_URL (mandatory): URL of ownCloud server to test against\n\t\t$UDID_DEVICE (optional): UDID of the device to execute the tests against.\n\t\t\tTo get the UDID of available simulators, use the  command `xcrun simctl list`\n\t\t$APPIUM_URL (optional): Appium server URL.\n\t\t\tIf Appium Server is not specified, will be used \"localhost:4723/wd/hub\"\n\nThe script needs some parameters. Check help `executeTests -h`\n\nTo execute all tests but the ignored ones (or any other tagged ones):\n\n\t\texport UDID_DEVICE=F10FFCD4-CE92-4F40-B246-9709A4D4086A\n\t\texport OC_SERVER_URL=https://my.owncloud.server\n\t\texport APPIUM_URL=localhost:4723\n\t\t./executeTests -t \"not @ignore\"\n\nThe execution will display step by step how the scenario is being executed.\n\nMore info in [Cucumber reference](https://cucumber.io/docs/cucumber/api/)\n\n**NOTE**: Since there are two kinds of backends available (oC10, oCIS), not all tests are suitable to be executed over both. Those tests have been tagged with:\n\n- `nooc10`: tests to be executed only over oCIS, not suitable for oC10.\n- `noocis`: tests to be executed only over oC10, not suitable for oCIS.\n\nIt's important to execute the tests with the mentioned tags to avoid wrong positives. Example commands:\n\n`./executeTests -t \"not @ignore and not @noocis\"`\u003cbr\u003e\nThis command will execute tests that are not ignored and suitable for oCIS. If this command is run over an oC10 instance, some tests will fail.\n\n`./executeTests -t \"not @ignore and not @nooc10\"`\u003cbr\u003e\nThis command will execute tests that are not ignored and suitable for oC10. If this command is run over an oCIS instance, some tests will fail.\n\n\n## Results\n\nIn the folder `target`, you will find a report with the execution results in html and json formats.\n\nBesides of that, by setting the `cucumber.properties` file allow to integrate reports with [Cucumber reports](https://cucumber.io/docs/cucumber/reporting/?lang=java). An account in such platform (integrated with GitHub) is enough to use it. A new env variable must be set in advance in order to send reports to the platform. Token is provided in the Cucumber Reports account for every collection:\n\n\texport CUCUMBER_PUBLISH_TOKEN=d97...\n\nAlso, in `cucumber.properties` file with the following values (disabled by default):\n\n\tcucumber.publish.quiet=false\n\tcucumber.publish.enabled=true\n\n**Note**: This repository was forked from [Cucumber-java\nskeleton](https://github.com/cucumber/cucumber-java-skeleton)\nrepository, which contains the base skeleton to start working.\n\n## Versioning\n\nUp to date: 07/May/2025\n\n||        |\n|:-- |:------:|\n| [Cucumber version](https://cucumber.io/docs/installation/java/) | 7.21.1 |\n| [Appium version](https://github.com/appium/appium/releases)| 2.18.0 |\n| [Appium xcuitest driver version](https://github.com/appium/appium-xcuitest-driver/releases)| 7.26.4 |\n| [Java client version](https://github.com/appium/java-client/releases) | 9.4.0  |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fowncloud%2Fios-scenario-testing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fowncloud%2Fios-scenario-testing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fowncloud%2Fios-scenario-testing/lists"}