dhemery / victor

A Java driver for iOS applications
MIT License
11 stars 4 forks source link

Help on startup #17

Open saluttim opened 11 years ago

saluttim commented 11 years ago

Hi Dhemery,

I have few questions before i startup with Victor.

  1. Can i run these from a remote windows machine?
  2. On my OS X i have already configured Frank and had written some test cases by Frankifying the app and launching simulator, how do i migrate to Victor from there on.
  3. How do i run my tests after step 2? through command line or through any junit tests? Or this could be only acihived through IDE's like eclipse?
  4. I saw a test project https://github.com/dhemery/vigor and it looks like its not an Eclipse project which i can directly import and test. Which is the entry point to run those tests?
  5. Looks like Frank supports real devices, when it is expected in Victor?
  6. Does Frank or Victor supports webview i.e. apps with embedded browser.

Looking forward for your response at the earliest.

dhemery commented 11 years ago
  1. There is currently no way to run tests on a remote machine. I had intended to create a mechanism to run the tests on one machine and the app/simulator on another, but I have not completed that feature.
  2. All that's left is to write your tests in Java, using Victor to interact with the app. My documentation of how to configure Victor is out of date. I'll fix that over the next week or so.
  3. If you write your tests using JUnit, you can run them the same way you run any JUnit tests.
  4. It is a Maven project. If you have the m2e plugin, you can open the pom.xml file as a Maven project, and Eclipse will set up the project for you. Those tests are just JUnit tests. You can run them using Eclipse or Maven.
  5. I've run the Vigor project on my iPhone. Alas, I don't remember all of the steps. There's a recent thread on the Frank mailing list about how to run tests on a real device. Those same steps should work with Victor. You'll have to configure Victor to use the device's IP address, and you'll have to tell Victor not to launch the simulator. (I'll put instructions on the configuration wiki page.)
  6. Yes, but it's awkward. The UIWebView class has a -stringByEvaluatingJavaScriptFromString method. You can use Victor's send any JavaScript you like to that method (using IosDevice's sendMessage method), and the web view will execute it.
saluttim commented 11 years ago

Hi Dhemery, Thanks for the quick response. In my Mac OSX i have installed Eclipse with plugins M2E, Junit and imported the 'tests' project https://github.com/dhemery/vigor/tree/master/tests. I gave Maven clean, maven build and maven install commands. But still in the problem console i see "Cannot read lifecycle mapping metadata for artifact org.apache.maven.plugins:maven-jar-plugin:maven-plugin:2.3.2:runtime Cause: error in opening zip file /vigor"

I even created my own lifecycle mapping xml and referenced in Preferences-Maven. Is this negligible error?

All these test cases are not in build path already? when i run Maven test it displays "my.property" file not found.

  1. Which Junit test case( which java class) should i run as sample?
  2. Before running the tests should i frankify the xcode proj given in https://github.com/dhemery/vigor/tree/master/vigor??
  3. How do i proceed to writing the tests for my app from here? Can you please provide a startup to just launch the app and click on some elements on the screen. It will be highly helpful.
saluttim commented 11 years ago

Hi Dhemery, I did manualy created my.properties and gave bundle path to the sample xcode project of victor. The Vigor tests has reference to hartley 2.0 version's jar file but what you had in pom xml is 1.0 's reference.

Looked like in 2.0 there were changes with respect to the structure of classes in this jar. Resolved them and i ran RotationTest.java, but still i receive error JsonSyntax exception. Not sure where i am still wrong. Is is possible to get some instant help from you on any messenger ?

dhemery commented 11 years ago

I'm sorry about the hartley version confusion. It sounds as if you were able to sort that out.

For the JsonSyntax error, my first guess is that your victor.application.bundle.path property is not pointing to the application bundle. The proper value will be the path to a directory that contains the executable file. The directory will also contain the Info.plist file for your application.

A good way to find the right path for Vigor.app is to build it in Xcode. Then in Xcode's Project Navigator (on the left side of Xcode), open the Products folder. You should see Vigor.app in there. Click on that. Then in the Utilities area (on the right side of Xcode), in the Identity and Type section you will see the full path to Vigor.app. That entire absolute path is the right value for the victor.application.bundle.path property.

What happens is that Victor tries to convert the Info.plist file to JSON, then parses the JSON string to learn things about the app (such as the app's executable file and the target SDK version number). But the file doesn't exist at the location where Victor is looking, so the resulting string is either an empty string or some error message instead of a valid JSON string. Then when Victor tries to parse JSON string, it throws that exception. I should figure out how to give a more useful error message in the exception.

About your earlier message from five days ago:

  1. I think any of the unit tests in Vigor will launch the app and interact with it in some way. The tests are not very useful as tests. They're mainly designed to demo Victor's features.
  2. The Xcode project for Vigor.app is configured to Frankify the app. So if you use Xcode to build it, I don't think you have to do anything else.
  3. I think you're getting close to launching the app. You have your my.properties file now. I think they only value you must supply is for the victor.application.bundle.path property. (If you need any other properties, you'll see an exception message telling you about the missing property.)

You can look for me on Skype (dalehemery). If I'm available, I'll try to help. It's late here now, so I won't be available for at least the next 8 hours.

saluttim commented 11 years ago

Apologies for posting such a long thread.

Thanks Dhemery, but unfortunately before your response i could reach to the place where you are talking about.

I am wondering why this simple setup making complex. Once it shown me JSON error i went to grepcode website to see what is written on ConfigurationException class. From there i understood it is looking for plist file. Then i went right to my Xcode project and did find out the path to the executable via the same mechanism as you explained. The path it shown me in xcode was,

/Users/XX/Library/Developer/Xcode/DerivedData/vigor-zpnigzblpbpftanmykzmzzipoxr/Build/Products/Debug-iphoneos/Vigor.app

where as i could not find such path in my harddrive. But alternatively i could see some similar path like

/Users/XX/Library/Developer/Xcode/DerivedData/vigor-zpnigzblpbpftanmykzmzzipoxr/Build/Products/Debug-iphonesimulator/Vigor.app

But at XCode why it shown path as "Debug-iphoneos" instead of "Debug-iphonesimulator", am not sure.

And other thing is that, in the path where exe was there, i couldnot find plist file on the same path. I see it directly under "/Users/XX/Library/Developer/Xcode/DerivedData/vigor-zpnigzblpbpftanmykzmzzipoxr" folder, where as exe is in "Build/Products/Debug.." folder.

Again, what i did was in the properties file, i gave path to plist file. and in the plist file {CFBundleExecutable} i gave /Build/Products/Debug. Now i ran my tests.

17:04:24.694 INFO - Plist Reader --> plutil [-convert, json, -o, -, --, /Users/kabilan-mac/Library/Developer/Xcode/DerivedData/vigor-ezpnigzblpbpftanmykzmzzipoxr/Info.plist] 17:04:24.724 INFO - Plist Reader <-- {"CFBundleName":"${PRODUCT_NAME}","CFBundleIdentifier":"com.dhemery.${PRODUCT_NAME:rfc1034identifier}","CFBundleInfoDictionaryVersion":"6.0","UIMainStoryboardFile~ipad":"MainStoryboard_iPad","CFBundleVersion":"1.0","UIRequiredDeviceCapabilities":["armv7"],"CFBundleExecutable":"Build\/Products\/Debug-iphonesimulator","LSRequiresIPhoneOS":true,"UIMainStoryboardFile":"MainStoryboard_iPhone","UISupportedInterfaceOrientations":["UIInterfaceOrientationPortrait","UIInterfaceOrientationLandscapeLeft","UIInterfaceOrientationLandscapeRight"],"CFBundleDisplayName":"${PRODUCT_NAME}","CFBundleSignature":"????","CFBundlePackageType":"APPL","CFBundleDevelopmentRegion":"en","UISupportedInterfaceOrientations~ipad":["UIInterfaceOrientationPortrait","UIInterfaceOrientationPortraitUpsideDown","UIInterfaceOrientationLandscapeLeft","UIInterfaceOrientationLandscapeRight"],"CFBundleShortVersionString":"1.0"} 17:04:24.759 INFO - SDK Inspector --> xcodebuild [-sdk, null, -version, Path] 17:04:25.306 INFO - SDK Inspector <-- null 17:04:25.307 INFO - SDK Inspector --> xcodebuild [-sdk, iphonesimulator, -version, Path] 17:04:25.597 INFO - SDK Inspector <-- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk 17:04:25.597 INFO - SDK Inspector --> xcodebuild [-sdk, iphonesimulator, -version, PlatformPath] 17:04:25.871 INFO - SDK Inspector <-- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform 17:04:25.874 INFO - Start Simulator --> /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app/Contents/MacOS/iPhone Simulator [-currentSDKRoot, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk, -SimulateDevice, iPhone, -SimulateApplication, /Users/kabilan-mac/Library/Developer/Xcode/DerivedData/vigor-ezpnigzblpbpftanmykzmzzipoxr/Build/Products/Debug-iphonesimulator] 17:04:25.947 INFO - Stop Simulator --> killall [iPhone Simulator] 17:04:25.975 INFO - Stop Simulated Application --> killall [Debug-iphonesimulator]

java.lang.NullPointerException at com.dhemery.polling.TickingPoller$1.actOn(TickingPoller.java:18) at com.dhemery.polling.TickingPoller$1.actOn(TickingPoller.java:15) at com.dhemery.polling.ParameterizedPoller.poll(ParameterizedPoller.java:26) at com.dhemery.expressing.Expressive.poll(Expressive.java:311) at com.dhemery.expressing.Expressive.waitUntil(Expressive.java:185) at com.dhemery.expressing.Expressive.waitUntil(Expressive.java:208) at com.dhemery.expressing.Expressive.waitUntil(Expressive.java:238) at com.dhemery.expressing.Expressive.waitUntil(Expressive.java:231) at com.dhemery.victor.examples.runner.OnVigorApp.startDevice(OnVigorApp.java:38) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Let me know if followed steps are incorrect.

PS. I am just running RotationTest.java at the moment

Coming back to the compilation issue of Hartley version, i modified many of the files in test project. In VigorApp.java and MasterPage.java i removed constructor, since it gave me compilation issue protected OnVigorApp() { super(thePoller(), theTicker()); }

and added @Override public Ticker createDefaultTicker() { // TODO Auto-generated method stub return null; } Changed theConfiguration() call to MapBackedConfiguration

Removed this method

    PollEvaluator simpleEvaluator = new SimplePollEvaluator();
    PollEvaluator publishingEvaluator = new PublishingPollEvaluator(CHANNEL.get(), simpleEvaluator);
    return new EvaluatingPoller(publishingEvaluator);
}

In Page.java changes below,

public Page(IosApplication application, Poller poller, Ticker ticker) { super(poller, ticker); this.application = application; }

Hope this doesnt impact my test run. If yes, then please share the updated test project which you have.

dhemery commented 11 years ago

My apologies for making such a long thread necessary.

Application Bundle Path

I believe I have misguided you. The real product of an Xcode iOS project is an app ready to install on a phone. That's what the Utilities area shows, and not (as I incorrectly stated) the version of the app that can run in the simulator.

On my computer the full path to the application bundle is:

/Users/XX/Library/Developer/Xcode/DerivedData/vigor-cmmkrmgawvklxjawwklnncgjxwge/Build/Products/Debug-iphonesimulator/Vigor.app

So my my.properties file looks like this:

victor.application.bundle.path: /Users/Dale/Library/Developer/Xcode/DerivedData/vigor-cmmkrmgawvklxjawwklnncgjxwge/Build/Products/Debug-iphonesimulator/Vigor.app

I don't know a way to discover the appropriate path more easily. I don't know how Xcode determines that long, ugly string of letters in the middle.

Updated Vigor to Use Victor 3.0 and Hartley 2.0

I've updated the Vigor test project (the Java project) to use the latest releases of Victor and Hartley. I think you'll find the setup code (in the OnVigorApp and OnMasterPage test base classes) somewhat easier to follow now.

Null Pointer Exception

The NPE is because your createDefaultTicker method returned null. The tests need a real ticker in order to poll.

In my update, I changed the way polling is configured. It now uses something called a PollingAssistant to create the required ticker, and to publish the poll events.

Eventually I will move AssistedExpressive and PollingAssistant into the Hartley library, but for now they exist only in the Vigor project.

The Tests Run, but Some Tests Fail

You can run all of the tests in the tests folder now. Some of the tests fail, but you can at least run them.

saluttim commented 11 years ago

Thanks for the response.

As i said in the earlier post if i configure

victor.application.bundle.path: /Users/Dale/Library/Developer/Xcode/DerivedData/vigor-cmmkrmgawvklxjawwklnncgjxwge/Build/Products/Debug-iphonesimulator/Vigor.app

it will lead me to JSON exception since it will look for plist file.

Hence what i did was, i gave bundle path as below victor.application.bundle.path: /Users/Dale/Library/Developer/Xcode/DerivedData/vigor-cmmkrmgawvklxjawwklnncgjxwge

and in the plist file EXECUTABLE NAME i gave path of /Build/Products/Debug-iphonesimulator.

Only in that case my tests starts running.

Please let me know if the above approach is inappropriate.

Having said all these, i ran your updated tests project. Now atlast i could see simulator getting launched. But unfortunately no response. It keeps running indefinitely with the following message in console. Also please refer the attached screenshot of the current screen state. Screen Shot 2013-04-03 at 6 34 45 PM

18:28:17.882 INFO - Plist Reader --> plutil [-convert, json, -o, -, --, /Users/XX/Library/Developer/Xcode/DerivedData/vigor-ezpnigzblpbpftanmykzmzzipoxr/Info.plist] 18:28:17.903 INFO - Plist Reader <-- {"CFBundleName":"${PRODUCT_NAME}","CFBundleIdentifier":"com.dhemery.${PRODUCT_NAME:rfc1034identifier}","CFBundleInfoDictionaryVersion":"6.0","UIMainStoryboardFile~ipad":"MainStoryboard_iPad","CFBundleVersion":"1.0","UIRequiredDeviceCapabilities":["armv7"],"CFBundleExecutable":"Build\/Products\/Debug-iphonesimulator","LSRequiresIPhoneOS":true,"UIMainStoryboardFile":"MainStoryboard_iPhone","UISupportedInterfaceOrientations":["UIInterfaceOrientationPortrait","UIInterfaceOrientationLandscapeLeft","UIInterfaceOrientationLandscapeRight"],"CFBundleDisplayName":"${PRODUCT_NAME}","CFBundleSignature":"????","CFBundlePackageType":"APPL","CFBundleDevelopmentRegion":"en","UISupportedInterfaceOrientations~ipad":["UIInterfaceOrientationPortrait","UIInterfaceOrientationPortraitUpsideDown","UIInterfaceOrientationLandscapeLeft","UIInterfaceOrientationLandscapeRight"],"CFBundleShortVersionString":"1.0"} 18:28:17.945 INFO - SDK Inspector --> xcodebuild [-sdk, null, -version, Path] 18:28:18.248 INFO - SDK Inspector <-- null 18:28:18.249 INFO - SDK Inspector --> xcodebuild [-sdk, iphonesimulator, -version, Path] 18:28:18.521 INFO - SDK Inspector <-- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk 18:28:18.521 INFO - SDK Inspector --> xcodebuild [-sdk, iphonesimulator, -version, PlatformPath] 18:28:18.795 INFO - SDK Inspector <-- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform 18:28:18.824 INFO - Start Simulator --> /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app/Contents/MacOS/iPhone Simulator [-currentSDKRoot, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk, -SimulateDevice, iPhone, -SimulateApplication, /Users/XX/Library/Developer/Xcode/DerivedData/vigor-ezpnigzblpbpftanmykzmzzipoxr/Build/Products/Debug-iphonesimulator] 18:28:18.837 INFO - Frank accessibility check --> 18:28:18.847 INFO - Http GET --> http://localhost:37265/accessibility_check 18:28:18.859 INFO - Waiting (1) until <Frank at com.dhemery.network.CodecEndpoint@341049d3> is running 18:28:19.838 INFO - Frank accessibility check --> 18:28:38.838 INFO - Http GET --> http://localhost:37265/accessibility_check 18:28:38.839 INFO - Waiting (21) until <Frank at com.dhemery.network.CodecEndpoint@341049d3> is running 18:28:38.840 INFO - Stop Simulator --> killall [iPhone Simulator] 18:28:38.848 INFO - Stop Simulated Application --> killall [Debug-iphonesimulator]

Also please find the stage of simulator in the attached screenshot. Screen Shot 2013-04-03 at 6 34 45 PM

dhemery commented 11 years ago

I'm puzzled. When I build Vigor, the Vigor.app bundle (directory) has an Info.plist file inside it. Not so for you? Can you give me a listing of what's in that directory?

I don't know what's in the info.plist file in the blahblah/DerivedData/vigor-longuglystring directory, but that file doesn't give Victor the information it needs. And your info.plist at that location seems to have very different information than does mine. When I dump the contents using plutil -convert -o - -- info.plist the result is:

{"WorkspacePath":"\/Users\/Dale\/Dropbox\/Programming\/vigor\/vigor\/vigor.xcodeproj"}

One idea is to delete that vigor-longuglystring folder (and any similarly named folder) and build again. Then see what's in the directory, and in the Info.plist file.

A key piece of information to watch for is the line that includes "Start Simulator":

18:28:18.824 INFO - Start Simulator --> /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app/Contents/MacOS/iPhone Simulator [-currentSDKRoot, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk, -SimulateDevice, iPhone, -SimulateApplication, /Users/XX/Library/Developer/Xcode/DerivedData/vigor-ezpnigzblpbpftanmykzmzzipoxr/Build/Products/Debug-iphonesimulator]

The last value should be the path to the executable file inside your Vigor.app directory. If the value points somewhere else, then either you're pointing at the wrong bundle path, or the bundle is somehow different than mine.

saluttim commented 11 years ago

Sorry to bother you so much on this. But not sure what i am missing. Any pre-requisites that i need to?

As i mentioned in my earlier thread i have info.plist file., but that is directly under the directory /Users/Dale/Library/Developer/Xcode/DerivedData/vigor-cmmkrmgawvklxjawwklnncgjxwge

whereas vigor.app file (Hope it is not a directory) is in

/Users/Dale/Library/Developer/Xcode/DerivedData/vigor-cmmkrmgawvklxjawwklnncgjxwge/Build/Products/Debug-iphonesimulator

Along with this .app file, i see only vigor.app.dSYM file.

In the plist file, as like you, i too have only the WorkspacePath which points to xcodeproj.

If i have only the above setup and run the vigor tests, i get error

com.dhemery.configuring.ConfigurationException: Application binary is not executable: /Users/XXLibrary/Developer/Xcode/DerivedData/Victor-dabdnjgywztyqphhcmmmzswjhhpa/null at com.dhemery.victor.Victor$10.build(Victor.java:317) at com.dhemery.victor.Victor$10.build(Victor.java:309) at com.dhemery.core.Lazily$1.get(Lazily.java:29) at com.dhemery.core.SuppliedLazy.get(SuppliedLazy.java:24) at com.dhemery.victor.Victor$4.build(Victor.java:204) at com.dhemery.victor.Victor$4.build(Victor.java:200) at com.dhemery.core.Lazily$1.get(Lazily.java:29) at com.dhemery.core.SuppliedLazy.get(SuppliedLazy.java:24) at com.dhemery.victor.Victor.device(Victor.java:150) at com.dhemery.victor.examples.runner.OnVigorApp.startDevice(OnVigorApp.java:32)

Not sure why it shows "null" in the path.

So to overcome this error i modified my plist file again, to have

CFBundleExecutable Build/Products/Debug-iphonesimulator/Vigor.app

Only then my Simulator launched.

But with that above screenshot.

CFBundleIdentifier com.dhemery.${PRODUCT_NAME:rfc1034identifier} CFBundleDevelopmentRegion ``` en CFBundleExecutable Build/Products/Debug-iphonesimulator/Vigor.app CFBundleInfoDictionaryVersion 6.0 UIMainStoryboardFile~ipad MainStoryboard_iPad CFBundleName ${PRODUCT_NAME} CFBundlePackageType APPL CFBundleSignature ???? CFBundleDisplayName ${PRODUCT_NAME} CFBundleVersion 1.0 CFBundleShortVersionString 1.0 LSRequiresIPhoneOS UIRequiredDeviceCapabilities armv7 UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIMainStoryboardFile MainStoryboard_iPhone ```
dhemery commented 11 years ago

whereas vigor.app file (Hope it is not a directory) ...

The Vigor.app file is indeed a directory. In a terminal you can cd into it. In Finder you can right click on it and select Show Package Contents.

So I would like you to do this:

  1. Close Xcode
  2. Open Vigor.app in Finder (using Show Package Contents)
  3. Tell me the list of files you see.
  4. If there is an Info.plist inside, double-click on that. It will open in Xcode. Send me a screenshot of that.

From that information, I can guess what to do next.

saluttim commented 11 years ago

Hi Dhemery, Appreciate you patience in replying me and thanks for it.

I could see plist file inside .app directory. But when i give the full path of the .app file in my.properties, it leads to error saying "Application binary not found so and so.. and the path it says is /Users/../Derived.../Build/products/XX/Debug-iphonesimulator/XX.app/null. Not sure why it appends null in that path. This is the case when i have only "WorkspacePath" entry key inside plist file.

Let us say in my.properties file i give only path tilll that long ugly project name and in my plist file if i add EXECUTABLE_NAME (pointing to Build/Products/..) along with WorkspacePath , everything works fine.

I have attached you the Original plist file and the modified plist in which it is working now for me. The corresponding Xcode project view and the .app folder structure. All these screens are w.r.to my app not vigor app.

XcodeProjectInfoPage APPFolderStructure ModifiedPlist OriginalPlist

saluttim commented 11 years ago

Hi Dhemery, Any updates on this?

dhemery commented 11 years ago

I don't know what is happening with your application. I'm puzzled by the value of the "Executable file" property in the plist. The value "${EXECUTABLE_FILE}" looks to me like some kind of placeholder. Those are usually filled in with actual values during the build process. I don't know why yours is not filled in with the name of a file.

Unfortunately, we have arrived at a problem I don't know how to solve. Something in your environment differs from mine. I don't have enough understanding of the Xcode build process to give further guidance, and I don't have time right now to investigate further.

saluttim commented 11 years ago

Fine. So let me just continue haveing the key "CFBundlePath" in my plist file.

I have couple of other things also to confirm with you.

  1. I could run RotationTest.java only when i do "frank launch" from command line and then run this test. Which means localhost:.../accesibility_check is working only when i do it from command line. What is the dffference between doing a frank launch from commandline with that of the launch from Victor?
  2. I couldnt run Igor as selector engine. Eventhough When i add Igor in my linked libraries it says "Igor is not registered as my selector engine." . I even added igor flag in frank xcconfig file. Still issue persists. So i started goign ahead with Shelley. So let me know if you could resolve my Igor issue or let me know if i can go ahead with Shelley itself. If yes, then please let me know the differences between shelley and igor. Not only with the usage, i am trying to understand if there are features which are supported by igor, but not shelley.

Also if possible, and if you get time, please provide your inputs on my other new thread.

dhemery commented 11 years ago
  1. I never run Frank launch. In fact, I never use the Frank gem at all. I always built the Frank and Shelley libraries from scratch, and link them into my project. So I'm afraid I can't help with that.
  2. "Igor is not registered as a selector engine" almost certainly means that the Igor library is not linked into your application. I never use the Frank gem to build apps, so I don't know how it works. I don't know how to use the Frank xcconfig file

As for differences between Shelley and Igor, I never used Shelley. I found the syntax confusing, so I created Igor. Here are a few differences I'm aware of:

But for most things, the two query languages are equivalent. See how to express common selections here: