Is there a way to get support for Cucumber (with iCuke and Frank) and Ruby in AppCode?

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.
Wesley Anderson
2 comments
Comment actions Permalink

Wesley,

currently we do not have any specific plan to add Ruby support, and without it cucumber support won't be available as well.

Please follow http://youtrack.jetbrains.net/issue/OC-1030 - the more votes it has, the more likely it will materialize.

You can try to find any existing plugin for IntelliJ platform or write a simple Run Configurations plugin yourself, I've found at least one reference on such a plugin: http://code.google.com/p/cucumber-plugin/.

Thanks,

Anton Makeev

0
Comment actions Permalink

This would be fantastic. As an experiment, I installed the "Base Cucumber" plugin in AppCode (it is available from the plugin repository). This did give me cucumber syntax highlighting and it even has an inspection for undefined steps, but it doesn't do anything more than that. When pressing Alt+Enter the only action you can take is to suppress it - i.e. there are no actions for creating the step.

The real problem is that there is no way to run the cucumber tests. Apparently there aren't any run configurations as part of the Base Cucumber plugin. I have no idea how much work this would be, but I'd love to not have to jump between all three IDEs for BDD.

0

Please sign in to leave a comment.