Closed nanoscopic closed 3 years ago
Issue-Label Bot is automatically applying the label feature_request
to this issue, with a confidence of 0.93. Please mark this comment with :thumbsup: or :thumbsdown: to give our bot feedback!
Links: app homepage, dashboard and code for this bot.
What do you exactly mean by branch? repo https://github.com/tmobile/stf_ios_support is not a fork of this one.
Code needs to be added to OpenSTF to make IOS support work well. The stf_ios_support repo is two things:
The build portion of it downloads and builds github.com/tmobile/stf That repo is a fork of stf, and the ios-support branch there is a branch. It contains the device-ios unit: https://github.com/tmobile/stf/tree/ios-support/lib/units/device-ios
The device-ios unit specifically can be and is meant to be contributed via pull request to OpenSTF.
It wouldn't make much sense though to have the device-ios unit in the openstf namespace without one of the following:
There are a few reasons I have not already submitted a PR against openstf of the device-ios unit:
Essentially, I'm not clear how to go about getting all the bits contributed into openstf namespace somewhere so that it is clear that the OpenSTF community is welcome to move forward with a path. I additionally don't want to ignore the other possibility ( mrx repo ), if that is desired instead.
The other issue I pointed out above is that I've seen posts that lead me to believe that the OpenSTF project does not want working IOS code integrated. I'm hoping this is a misunderstanding on my part and would like a clear answer on that, such as "no we would like to get collective community work going on IOS support"
Thanks for detailed explanation. I'll play with this solution from you/tmobile and give you some answer shortly. Regarding mrx repo, I've checked it few weeks ago I've finally managed to get it working but it required some manual changes in code I think it is in too early stage to integrate it with official repo.
How do I click on the settings button on a click to open the settings on the iOS screen? And then I broke my whole head)
@nanoscopic I've tried to build stf_ios_support using make
but it is failing for me with the following errors:
cd repos/WebDriverAgent && ./Scripts/bootstrap.sh
Fetching dependencies
Dependencies up-to-date
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C repos/wdaproxy
go get . & exit 0
go get ./... & exit 0
go build .
installer.go:7:2: cannot find package "github.com/DHowett/go-plist" in any of:
/usr/local/Cellar/go/1.13.5/libexec/src/github.com/DHowett/go-plist (from $GOROOT)
/Users/openatx/go/src/github.com/DHowett/go-plist (from $GOPATH)
main.go:18:2: cannot find package "github.com/facebookgo/freeport" in any of:
/usr/local/Cellar/go/1.13.5/libexec/src/github.com/facebookgo/freeport (from $GOROOT)
/Users/openatx/go/src/github.com/facebookgo/freeport (from $GOPATH)
main.go:23:2: cannot find package "github.com/gobuild/log" in any of:
/usr/local/Cellar/go/1.13.5/libexec/src/github.com/gobuild/log (from $GOROOT)
/Users/openatx/go/src/github.com/gobuild/log (from $GOPATH)
main.go:19:2: cannot find package "github.com/gorilla/mux" in any of:
/usr/local/Cellar/go/1.13.5/libexec/src/github.com/gorilla/mux (from $GOROOT)
/Users/openatx/go/src/github.com/gorilla/mux (from $GOPATH)
provider.go:16:2: cannot find package "github.com/gorilla/websocket" in any of:
/usr/local/Cellar/go/1.13.5/libexec/src/github.com/gorilla/websocket (from $GOROOT)
/Users/openatx/go/src/github.com/gorilla/websocket (from $GOPATH)
httplog.go:8:2: cannot find package "github.com/mash/go-accesslog" in any of:
/usr/local/Cellar/go/1.13.5/libexec/src/github.com/mash/go-accesslog (from $GOROOT)
/Users/openatx/go/src/github.com/mash/go-accesslog (from $GOPATH)
main.go:21:2: cannot find package "github.com/ogier/pflag" in any of:
/usr/local/Cellar/go/1.13.5/libexec/src/github.com/ogier/pflag (from $GOROOT)
/Users/openatx/go/src/github.com/ogier/pflag (from $GOPATH)
provider.go:17:2: cannot find package "github.com/openatx/wdaproxy/connector" in any of:
/usr/local/Cellar/go/1.13.5/libexec/src/github.com/openatx/wdaproxy/connector (from $GOROOT)
/Users/openatx/go/src/github.com/openatx/wdaproxy/connector (from $GOPATH)
main.go:22:2: cannot find package "github.com/openatx/wdaproxy/web" in any of:
/usr/local/Cellar/go/1.13.5/libexec/src/github.com/openatx/wdaproxy/web (from $GOROOT)
/Users/openatx/go/src/github.com/openatx/wdaproxy/web (from $GOPATH)
main.go:24:2: cannot find package "github.com/shurcooL/vfsgen" in any of:
/usr/local/Cellar/go/1.13.5/libexec/src/github.com/shurcooL/vfsgen (from $GOROOT)
/Users/openatx/go/src/github.com/shurcooL/vfsgen (from $GOPATH)
revproxy.go:18:2: cannot find package "github.com/sirupsen/logrus" in any of:
/usr/local/Cellar/go/1.13.5/libexec/src/github.com/sirupsen/logrus (from $GOROOT)
/Users/openatx/go/src/github.com/sirupsen/logrus (from $GOPATH)
make[1]: *** [wdaproxy] Error 1
make: *** [repos/wdaproxy/wdaproxy] Error 2
Mac-mini-openatx:stf_ios_support openatx$ # cd /Users/openatx/go/src/github.com/DHowett/go-plist; git pull --ff-only
From https://github.com/DHowett/go-plist
* branch HEAD -> FETCH_HEAD
error: The following untracked working tree files would be overwritten by merge:
.gitlab-ci.yml
LICENSE
README.md
bplist.go
bplist_generator.go
bplist_parser.go
bplist_test.go
cmd/experimental/plait/plait.go
cmd/experimental/plait/web/index.html
cmd/experimental/plait/web/ply.js
cmd/experimental/plait/web/ply_exec.js
cmd/ply/README.md
cmd/ply/ply.go
cmd/ply/prettyprint.go
common_data_for_test.go
decode.go
decode_test.go
doc.go
encode.go
encode_test.go
example_custom_marshaler_test.go
fuzz.go
go.mod
go16_test.go
go17_test.go
invalid_bplist_test.go
invalid_text_test.go
marshal.go
marshal_test.go
must.go
plist.go
plist_types.go
testdata/xml_unusual_cases/s01.plist
testdata/xml_unusual_cases/s02.plist
testdata/xml_unusual_cases/s03.plist
testdata/xml_unusual_cases/s04.plist
testdata/xml_unusual_cases/s05.plist
testdata/xml_unusual_cases/s06.plist
testdata/xml_unusual_cases/s07.plist
testdata/xml_unusual_cases/s08.plist
testdata/xml_unusual_cases/s09.plist
testdata/xml_unusual_cases/s10.plist
testdata/xml_unusual_cases/s11.plist
text_generator.go
text_parser.go
text_tables.go
text_test.go
typeinfo.go
unmarshal.go
unmarshal_test.go
util.go
xml_generator.go
xml_parser.go
xml_test.go
zerocopy.go
zerocopy_appengine.go
Please move or remove them before you merge.
Aborting
package github.com/DHowett/go-plist: exit status 1
# cd /Users/openatx/go/src/github.com/facebookgo/freeport; git pull --ff-only
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> master
package github.com/facebookgo/freeport: exit status 1
# cd /Users/openatx/go/src/github.com/gobuild/log; git pull --ff-only
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> master
package github.com/gobuild/log: exit status 1
# cd /Users/openatx/go/src/github.com/gorilla/mux; git pull --ff-only
From https://github.com/gorilla/mux
* branch HEAD -> FETCH_HEAD
error: The following untracked working tree files would be overwritten by merge:
.circleci/config.yml
And there are more The following untracked working tree files would be overwritten by merge
errors below.
Any idea how to fix that?
go version go1.13.5 darwin/amd64
These two lines in the Makefile for wdaproxy are supposed to fetch the dependencies stated as missing:
go get . & exit 0
go get ./... & exit 0
These lines are forced to not die, because if they are run multiple times after already fetching dependencies they error out and would break the make process. As a result though, the errors from them are hidden. It is likely that you did not have internet access / connection when running make.
You can simply rerun make
when you have internet access to fetch the golang dependencies of wdaproxy. Alternatively you can switch to the repos/wdaproxy folder and go get .
and go get ./...
yourself as see what the errors are if any and then rerun make
at the root after that.
As for the weird merge errors you are getting; that would be due to the Makefile attempting to pull when it already pulled partially, got modified, and cannot merge cleanly. It appears that is coming out of a breaking change in a downstream golang dependency of wdaproxy. Hopefully simply erasing the repos/wdaproxy folder entirely and trying again should resolve that nonsense. rm -rf repos/wdaproxy
I haven't pulled and rebuilt wdaproxy anytime soon; ( in several weeks ) so it is possible downstream dependencies have broken during that time. I'll erase my own folder and see if it breaks now.
Thanks, I removed entire ~/go
directory and clean build succeeded. Now I'm getting the following error from stf-api:
2020-01-05T01:00:43.818Z INF/provider 1 [*] Receiving input from "tcp://stf.<stripped>:7250"
<stripped> - - [05/Jan/2020:01:00:52 +0000] "GET / HTTP/1.1" 304 0 "https://stf.<stripped>/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 >
<stripped> - - [05/Jan/2020:01:00:52 +0000] "GET /socket.io/?uip=<stripped>&EIO=3&transport=websocket HTTP/1.1" 101 173 "-" "Mozilla/5.0 (X11; Linux x86_>
<stripped> - - [05/Jan/2020:01:00:52 +0000] "GET /app/api/v1/state.js HTTP/1.1" 304 0 "https://stf.<stripped>/" "Mozilla/5.0 (X11; Linux x86_64) >
<stripped> - - [05/Jan/2020:01:00:52 +0000] "GET /static/app/build/entry/commons.entry.js HTTP/1.1" 304 0 "https://stf.<stripped>/" "Mozilla/5.0 >
<stripped> - - [05/Jan/2020:01:00:52 +0000] "GET /static/app/build/entry/app.entry.js HTTP/1.1" 304 0 "https://stf.<stripped>/" "Mozilla/5.0 (X11>
2020-01-05T01:00:52.916Z ERR/api:controllers:devices 1 [*] Failed to load device list: TypeError: Cannot read property 'indexOf' of undefined
at /app/lib/units/api/controllers/devices.js:41:32
at Array.forEach (<anonymous>)
at /app/lib/units/api/controllers/devices.js:39:16
From previous event:
at /app/lib/units/api/controllers/devices.js:36:10
at bound (domain.js:301:14)
at runBound (domain.js:314:12)
at runCallback (timers.js:810:20)
at tryOnImmediate (timers.js:768:5)
at processImmediate [as _immediateCallback] (timers.js:745:5)
From previous event:
at getDevices (/app/lib/units/api/controllers/devices.js:34:6)
at swagger_router (/app/node_modules/swagger-node-runner/fittings/swagger_router.js:104:13)
at Runner.<anonymous> (/app/node_modules/bagpipes/lib/bagpipes.js:171:7)
at bound (domain.js:301:14)
at Runner.runBound (domain.js:314:12)
at Runner.pipeline (/app/node_modules/pipeworks/pipeworks.js:72:17)
at Runner.flow (/app/node_modules/pipeworks/pipeworks.js:223:19)
at Pipeworks.flow (/app/node_modules/pipeworks/pipeworks.js:135:17)
at Pipeworks.siphon (/app/node_modules/pipeworks/pipeworks.js:186:19)
at Runner.<anonymous> (/app/node_modules/bagpipes/lib/bagpipes.js:98:22)
at bound (domain.js:301:14)
at Runner.runBound (domain.js:314:12)
at Runner.<anonymous> (/app/node_modules/pipeworks/pipeworks.js:72:17)
at postFlight (/app/node_modules/bagpipes/lib/bagpipes.js:220:3)
at /app/node_modules/bagpipes/lib/bagpipes.js:174:9
at expressCompatibility (/app/node_modules/swagger-node-runner/fittings/express_compatibility.js:44:3)
at express_compatibility (/app/node_modules/swagger-node-runner/fittings/express_compatibility.js:12:5)
From previous event:
at accessTokenAuth (/app/lib/units/api/helpers/securityHandlers.js:81:8)
at andCheck (/app/node_modules/swagger-node-runner/fittings/swagger_security.js:54:22)
at /app/node_modules/swagger-node-runner/node_modules/async/lib/async.js:356:13
at async.forEachOf.async.eachOf (/app/node_modules/swagger-node-runner/node_modules/async/lib/async.js:233:13)
at _asyncMap (/app/node_modules/swagger-node-runner/node_modules/async/lib/async.js:355:9)
at Object.map (/app/node_modules/swagger-node-runner/node_modules/async/lib/async.js:337:20)
at orCheck (/app/node_modules/swagger-node-runner/fittings/swagger_security.js:40:15)
at /app/node_modules/swagger-node-runner/node_modules/async/lib/async.js:356:13
at async.forEachOf.async.eachOf (/app/node_modules/swagger-node-runner/node_modules/async/lib/async.js:233:13)
at _asyncMap (/app/node_modules/swagger-node-runner/node_modules/async/lib/async.js:355:9)
at Object.map (/app/node_modules/swagger-node-runner/node_modules/async/lib/async.js:337:20)
at swagger_security (/app/node_modules/swagger-node-runner/fittings/swagger_security.js:36:11)
at Runner.<anonymous> (/app/node_modules/bagpipes/lib/bagpipes.js:171:7)
at bound (domain.js:301:14)
at Runner.runBound (domain.js:314:12)
at Runner.<anonymous> (/app/node_modules/pipeworks/pipeworks.js:72:17)
at postFlight (/app/node_modules/bagpipes/lib/bagpipes.js:220:3)
at /app/node_modules/bagpipes/lib/bagpipes.js:174:9
at /app/node_modules/swagger-node-runner/fittings/swagger_params_parser.js:43:7
When / which process is the error coming from? Is it coming from the stf-provider
run by the coordinator, or is that coming from the server side?
If it is coming from the server side; you can use a standard STF server with no changes; you no longer need to use the custom STF server that is built by the Makefile.
The server differences that matter are the changes to nginx configuration to allow a video path back to the provider going through the STF server hostname, and loosely the updated Dockerfile build. The Dockerfile updates are just to make it quicker to repeatedly rebuild the server side though; they aren't required.
They are coming from server side (not from provider). Thanks, with standard upstream STF server I can see connected iphones. I'll continue playing with it. Looks very good for me now :)
Great to hear. The latest changes pushed today move to using a reduced set of STF files for the provider ( this repo: https://github.com/nanoscopic/stf-ios-provider ) This makes it much easier to build the required pieces since the entirety of STF does not need to be built at the same time. This IOS provider could be more readily accepted into the openstf namespace since it won't need to be merged into the main STF project.
The latest changes also make it possible to control phones via jailbroken phones with VNC, with which clicking is immediate instead of delayed as it is when clicking goes through XCUITest.
Lots of other stability fixes and tweaks have been done as well, so it should be much more stable starting up and working properly compared to previously. Be aware that if you pull stf_ios_support you'll need to pull the independent repos under 'stf_ios_support/repos' manually because they won't be pulled automatically.
By Settings button on browser page doesn't open device settings screen. How to forward a call from a client to a device?
@YauheniRusinchuk Take a look at the diagram for the provider at the bottom of the wiki here: https://github.com/tmobile/stf_ios_support/wiki
When you click in a browser on the video screen the following happen:
If you use a jailbroken device, install Veency, and then enable vnc control in the config:
In the jailbroken setup, Veency is made accessible via a iproxy port forward.
Assuming you are using non-jailbroken, and clicking is not working, I'd recommend you look at the WDA log ./view_log -proc wda
and see if you see any errors there.
it seems awesome boost for stf looking forward for it
@YauheniRusinchuk The very first click sometimes will get ignored due to a glitch with WDA sessions. This problem will be resolved soon by working around the glitch within stf-ios-provider ( https://github.com/nanoscopic/stf-ios-provider )
Also, if WDA itself is not starting up when you run the coordinator, then click will not work as WDA is needed to click on things shown in the video.
At the end of a full coordinator startup, you should see a log message like the following:
INFO[0010] WDA Running coro=zmqpull proc=wdaproxy type=wda_started uuid=[uuid]
If you do not see that message, you can check the logs of wdaproxy and/or wda. ./view_log -proc wdaproxy
and ./view_log -proc wda
@koral-- Any update on this work from the perspective of the OpenSTF project itself and maintainers ( yourself / others ) ? Is it possible for this to begin to be the recommended way to support IOS for OpenSTF?
Sorry for lack of any response. As you can see recently a lot of PRs were merged in STF repos after few months of inactivity. I need to first sort out the release of version supporting Android 10 and will get back to topic of iOS ASAP.
@koral-- That makes sense. We ourselves encountered the Android 10 issue and are in progress of utilizing the new work. Thanks for all the hard work in that regard and agreeably that is crucial right now.
Thanks for the update. No rush on getting to IOS; was simply curious what is going on.
@nanoscopic , @jupe, I pursue #1162 discussion here because it concerns IOS support in STF.
I think there is a misunderstanding on what a device provider is made for in STF. Of course, I can be wrong but in my mind, the role of a device provider in STF is to give the remote control in a secure way to the devices it manages, that's all, and not to be directly concerned by specific application requirements as Appium one wether for Android or IOS.
For instance, the Android provider has mainly to be able to:
So, concerning IOS provider, there is only need to develop special code to interface correctly with STF and client applications, and libimobiledevice
seems to me sufficient to implement required basic access functions to IOS devices. For instance, the HP solution named HP Mobile Center may have their IOS providers as Linux machines including the libimobiledevice
, and their central server interact with them through their proprietary protocol, it works without jailbreaked devices, I tested it as a trial two years ago.
I talk about USB/IP to enable remote access to the devices controlled by the IOS provider from the client MacOS machine in which would run Appium or any other tools, it is a way of making the remote devices locally attached on the client machine. Obviously, that requires ideally a special development at both client & provider sides.
Such architecture separating device logic from application logic by the network layer (e.g. using USB/IP), as it is made in Android using ADB interface, has some main benefits:
Did you also evaluate the impact of IOS integration on the rest of STF code which is pretty Android oriented (i.e. sceens, API, ...) in order to keep a full featured solution ?
In any case, your proposal is very interesting so congratulation for this great work!
First of all thank you so much for your dedication and work on this project, i hope to contribute in the near feature,
I am having some issues connecting IOS devices, it always displays as disconnected, do you have any idea what am I doing wrong?
Note, it seems the wda is not being installed in the device
regards Rafael
hi Got it working,
I realised in order to build the wdaproxy i needed to set the following env variables: export GOPATH=~/go export GOBIN=$GOPATH/bin
then ideviceinfo was not working properly in my system so i had to reinstalled
536 brew uninstall --ignore-dependencies libimobiledevice 537 brew uninstall --ignore-dependencies ideviceinstaller 538 brew uninstall --ignore-dependencies usbmuxd 539 sudo rm /var/db/lockdown/* 540 brew install --HEAD usbmuxd 541 brew unlink usbmuxd 542 brew link usbmuxd 543 brew install --HEAD libimobiledevice 544 brew install --HEAD ideviceinstaller
hope this help someone else
@rafcasto
As shown; idevice* can get messed up and require the uninstall / reinstall. This is done automatically though be ./init.sh
in stf_ios_support repo. I haven't ever seen a need to set the path to go in order to get things working; but glad that you found a fix that works for you and shared it.
At some point the dependency on idevice is going to be dropped; because it is ridiculous that the stable version doesn't function and the head version must be installed. There is a partially complete golang port of idevice, that will be possible to use once the issues with it are ironed out.
@denis99999 The term "stf provider" refers to a very specific thing in relation to the OpenSTF project. It refers to the stf provider unit in the NodeJS project. This: https://github.com/openstf/stf/tree/master/lib/units/provider
The term "device unit" refers to another very specific thing. This: https://github.com/openstf/stf/tree/master/lib/units/device
There is no such thing as a "device provider" as it conflates these two things.
The thing you are thinking of when you say "android device provider" is not one thing but a collection of things. The primary bit is the "device provider", which in turn uses idevice* and WDA in order to work. WDA in turn uses Xcode and XCUitest to automate the IOS device. Bits of WDA are installed as an app on the device, but most of the functionality you think of, such as clicking, swiping, etc is done by XCUitest, not by the app on the device. XCUitest is a closed source portion of Xcode that uses propietary lockdown protocol
to communicate over USB to the IOS device.
USB/ip doesn't help as I've stated already, and your post is simply wishful thinking.
I've already done significant research into the long term path for supporting IOS support in OpenSTF more cheaply and without the dependency on Mac OS. It requires reverse engineering lockdown protocol
. That can and will be done but it's labor intensive, and is not something actively being worked on right now.
The other option is having Apple themselves provide information on how how to use lockdown protocol directly to initiate touch actions on the device. Word on the grapevine is that they've done this for the closed source projects providing IOS devices. Sadly this information has not been shared publicly. ( presumably because the closed sourced projects paid Apple for the information and agreed not to tell anyone how )
@nanoscopic thanks for your reply, i am experimenting with VNC and i have couple of questions,
Heyo, btw I have decided to open source the DTX messaging framework, which is responsible for launching and killing apps, running xcuitests and getting cpu and memory stats from devices. Here is a tool to dump raw XCUITests DTX messages: https://github.com/danielpaulus/ios_simulator_dtx_dump and here is the codec library: https://github.com/danielpaulus/dtx_codec Eventually I'll add it to https://github.com/danielpaulus/go-ios so you can do all the things stated above
@rafcasto The purpose of using openvpn is so that "stf server" can be run in the cloud / in a different network than the providers themselves. The providers then VPN in so that they are on the same network and can connect and work with "stf server".
The "inspector" is a piece of the WDA. If you get this error it generally means that the WDA is already running somehow/way. Just based on that I have no way to know why you are getting that error.
The following information would be needed to attempt it:
./view_log -proc [various subprocesses]
logs?Considering your message is now nearly 2 months old, I would also suggest simply checking out and using the latest stf_ios_support. You will likely have a much better experience now after the many updates.
i am able to run docker stf server as given instruction but dont know how to access the dashboard ? whats the url?
@gkrananth The server/docker-compose within stf_ios_support repo makes STF server interface available on https port 443 if used as-is. You can either setup a domain name to point to the IP of your machine running the docker-compose, or you can use it directly by IP address.
See https://github.com/tmobile/stf_ios_support/blob/master/server/cert/server.conf
The default pre-generated cert for https that is provided is using the hardcoded IP address of 192.168.56.108 ; that is a default IP address for NAT of Virtualbox. If you were running a Linux VM on Virtualbox; that IP address could be used to access STF. You'll see there also the default cert domain is stf.test
( .test being a private TLD used for testing ) You can setup within your own DNS or /etc/hosts that domain pointed to the IP address of your machine. ( or update the server.conf file with your IP, rerun gencert.sh
; and restart everything )
Your options:
Access by IP
1A. Pick an IP address your machine running docker-compose uses: such as 192.168.1.2 ( if it had that IP )
1B. Update server.conf with that IP address
1C. Rerun gencert.sh
1D. Restart everything
1E. Go to https://192.168.1.2
Access by DNS setup via /etc/hosts
2A. Figure out your IP address ( 192.168.1.2 as example )
2B. Add an /etc/hosts entry 192.168.1.2 stf.test
2C. Restart your browser
2D. Go to http://stf.test
Access by real public DNS
3A. Setup a hostname on public DNS pointing to your machine running docker-compose ( somedomain.com )
3B. Use LetsEncrypt to generate an https cert for your domain
3C. Add your cert files you made via LetsEncrypt in place of the provided self-signed certs made with gencert.sh
Hi Thanks i dont wanted to use https, so i removed the https part in docker compose and as well as wss to ws. Now my problem is how do i access the stf from outside network. Locally its working fine, but am getting error websocket timeout on video streaming. How do achieve the access the stf dashboard from other pc.
This project is superseded by https://github.com/DeviceFarmer/stf. Please continue discussion at https://github.com/DeviceFarmer/stf/issues/35.
Is your feature request related to a problem? Please describe. There are a variety of currently existing implementations of IOS support for OpenSTF. One of them is https://github.com/tmobile/stf_ios_support There are others also. None of their code has been accepted into the openstf namespace, with the exception of the https://github.com/openstf/ios-minicap
It seems weird that there is neither a branch nor any code in the OpenSTF namespace to begin working on IOS support with other users/contributors to OpenSTF.
I'm concerned that the commerically running contributors / sponsors are intentionally ignoring IOS support as they want to prevent a free version from working well and being widely available/understood.
If that is not the case, I would like to start getting IOS support upstreamed; at the very least in a branch. If discussions on how to do this need to happen first, lets begin having those discussions.
If it is the case that the core contributors / sponsors refuse to support IOS or allow development to continue in an open collective way on the openstf namespace, then that should be stated clearly so that an effort to do that can be done elsewhere.
Describe the solution you'd like Do one of the following:
Describe alternatives you've considered
Additional context I think what I'm asking for is clear with the above info? If not would be happy to address any questions and/or start conversation about this.
P.S. I and my fellow coworkers love OpenSTF and appreciate it's existence and the work that goes into it. ❤️