Register
Submit a solution
The challenge is finished.

Challenge Overview

���Target environment: iOS Devices
���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:  
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.

ELIGIBLE EVENTS:

Topcoder Open 2019

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30084805