Challenge Overview
���Target environment: iOS Devices
���Basic Requirements: Explore a way to control iOS devices remotely.
STF (or Smartphone Test Farm) is a web application for debugging smartphones, smartwatches, and other gadgets remotely, from the comfort of your browser.
OpenSTF is a popular open-sourced STF application, its source code is hosted on https://github.com/openstf/stf
Currently, OpenSTF only supports Android device testing, our client wants to extend it to support iOS Device.
-Swift
-Objective-C
-NodeJS
-Angular
In the previous challenge, we have explored a way to control iOS devices remotely via WebDriverAgent. We also implement a way based on video stream to make the control smoother.
In this challenge, we need to integrate the iOS remote control into the OpenSTF source code.
I have set up a GitLab repo to aggregate all external open source projects (via submodules) and our own developed video stream uploader into a single project. So we can work here.
The code base is https://gitlab.com/ios-smartphone-test-farm/openstf-ios-extended
Where:
You can grant yourself access via Topcoder-X, the Topcoder-X link will be provided in the forum.
In this challenge, we mainly focus on the iOS Remote Control Integration and some UI tweaks, additional features of OpenSTF are not in scope.
Concretely, the requirements are
When connecting the iOS device with your Mac machine, OpenSTF should identify it automatically and display the device in the Devices list. Same as what Android devices show in STF.
If the device connection is lost (like unplug the cable), the device icon should be turned gray and unclickable.
If the device is in use, you should show a Stop Using button, then the user can stop using it via clicking on the button.
We can operate on the screen to control the device, the remote control of iOS device has already been implemented in the previous challenge. We need to integrate it here.
Here is a demo video of how to control the Android device in STF.
Note you only need to integrate the iOS remote control, all the panel on the right like Dashboard, Screenshots, Automation, Advanced, File Explorer, Info are not in scope in this challenge, we will address these features in the subsequent challenges.
But for the iOS device, we only need one Home button in the toolbar.
So you need to tweak the STF to
1. The git patch against https://gitlab.com/ios-smartphone-test-farm/openstf-ios-extended.git master branch, the latest commit. For the submodules, you can provide separate patches.
2. A demo video to demonstrate the remote control worked on your side.
3. A README about how to apply your patches.
���Basic Requirements: Explore a way to control iOS devices remotely.
Project Background
STF (or Smartphone Test Farm) is a web application for debugging smartphones, smartwatches, and other gadgets remotely, from the comfort of your browser.
OpenSTF is a popular open-sourced STF application, its source code is hosted on https://github.com/openstf/stf
Currently, OpenSTF only supports Android device testing, our client wants to extend it to support iOS Device.
Technology Stack
-iOS-Swift
-Objective-C
-NodeJS
-Angular
Individual requirements
In the previous challenge, we have explored a way to control iOS devices remotely via WebDriverAgent. We also implement a way based on video stream to make the control smoother.
In this challenge, we need to integrate the iOS remote control into the OpenSTF source code.
I have set up a GitLab repo to aggregate all external open source projects (via submodules) and our own developed video stream uploader into a single project. So we can work here.
The code base is https://gitlab.com/ios-smartphone-test-farm/openstf-ios-extended
Where:
- Node-Media-Server: Submodule, linked to my fork repo https://github.com/billsedison/Node-Media-Server.git, switch to stf-video-support branch
- WebDriverAgent: Submodule, linked to my fork repo https://github.com/billsedison/WebDriverAgent.git, switch to video-stream-control branch
- stf: Submodule, linked to my fork repo https://github.com/billsedison/stf.git, switch to ios-support branch
- StreamUploader: A Broadcast Upload Extension with the flv ouput and broadcast support
You can grant yourself access via Topcoder-X, the Topcoder-X link will be provided in the forum.
In this challenge, we mainly focus on the iOS Remote Control Integration and some UI tweaks, additional features of OpenSTF are not in scope.
Concretely, the requirements are
1. Device list support
When connecting the iOS device with your Mac machine, OpenSTF should identify it automatically and display the device in the Devices list. Same as what Android devices show in STF.
If the device connection is lost (like unplug the cable), the device icon should be turned gray and unclickable.
If the device is in use, you should show a Stop Using button, then the user can stop using it via clicking on the button.
2. iOS Remote Control Integration
When clicking on the device icon, then it should switch to the Control panel, and the device screen should show on the left.We can operate on the screen to control the device, the remote control of iOS device has already been implemented in the previous challenge. We need to integrate it here.
Here is a demo video of how to control the Android device in STF.
Note you only need to integrate the iOS remote control, all the panel on the right like Dashboard, Screenshots, Automation, Advanced, File Explorer, Info are not in scope in this challenge, we will address these features in the subsequent challenges.
3. Bottom toolbar tweaks
You see, for the Android device, there are 4 buttons in the bottom toolbar.
But for the iOS device, we only need one Home button in the toolbar.
So you need to tweak the STF to
- If the device is an Android device, use the original toolbar as is.
- If the device is an iOS device, use the toolbar with only one Home button.
Notes
Once the iOS remote control is integrated, please ensure- All the Android device testing features should not be broken.
- OpenSTF should support to identify and connect both iOS and Android devices simultaneously.
- The operation on the iOS device should be based on the video stream support, the operation should be as smooth as the existing code.
- The OpenSTF web UI is implemented by Angular/AngularJS.
- Please ensure to update the existing Documentations.
Final Submission Guidelines
Please zip all the following content in a zip archive.1. The git patch against https://gitlab.com/ios-smartphone-test-farm/openstf-ios-extended.git master branch, the latest commit. For the submodules, you can provide separate patches.
2. A demo video to demonstrate the remote control worked on your side.
3. A README about how to apply your patches.