I am implementing Cucumber features for my iOS app using iCuke (and possibly Frank) and I would like to have better support in AppCode for this utility and the Ruby language it is based on. Is there a way to add support for Cucumber or at lest for Ruby in AppCode?
I remember a Ruby plugin for intelliJ, but I cannot find it in the AppCode plugins. I have also been using the Cucumber support in RubyMine. Is it possible to bring these to AppCode?
I am not familliar with plugin development, but could I copy the plugin(s) from intelliJ or RubyMine into AppCode or do something similar? I recognize that these are not supported plugins for AppCode, so there could be issues with using them under AppCode, where they have not been tested.
Background: iCuke and Frank are Ruby gems that build on the Cucumber gem in Ruby to enable Cucumber features to interact with the application under test in the iOS simulator or an iOS device. The approach is similar to the way that Cucumber integrates with Selenium (via the webrat gem) for specifying/testing web applications in that it provides a default set of actions (steps) that let the feature interact with the application. For example you can include a line in the feature to simuate tapping the Add button (When I tap "Add"), entering text in a text field (When I type "something" in "some-field"), and several other common UI interactions.
There are many discussions on the web about how the approach to acceptance testing of putting UI specific details in features makes them brittle, because as the UI changes, all the features that rely on specific UI elements need to be changed to adapt to the new UI. My preferred approach to reduce this brittleness is to define custom steps for Cucumber that focus on the user's goal, that is the feature describes what the user wants to do (like adding a user) insteaad of how the user would do it in the current UI (like tap the Add button, enter the user's name and tap the Done button). These custom steps encapsulate the UI interactions and can be reused by multiple features. This reduces the number of places that need to be changed to adapt to UI changes. Since custom steps are written in Ruby, I want support for Ruby in AppCode (including syntax highlighting, error analysis, code navigation, Ruby script or Cucumber feature execution (with RVM support), etc.).
Also, being able to run the Cucumber features from within AppCode, like we can run (SenTest) unit tests, and then see and interact with the results would make development a lot easier using Cucumber. At this point I don't even see a way to launch Cucumber as a simple shell script/command, so I use a separate Terminal window to run Cucumber, and then switch back and forth between these windows, often using copy/paste and searching to get to where I would be in RubyMine with a simple click.
I would consider writing these plugins, except that it would probably be a lot of work to get something that isn't a tenth as good as the excellent JetBrains plugins and support already available in IntelliJ and RubyMine, and if those plugins or other support were ported to AppCode, it would make my plugins obsolete. This plugin development would also be a distraction from my goal of writing iOS apps.
Thank you for any suggestions.