       else
         false
 
+  ###
+  Tries to find the immediate parent of the element matching the locator, returns Selenium.Promise of Selenium.WebElement
+
+  @param {Any} args... Any number of parameters for `locator` to use if `locator` is a function dependent on parameters
+  @returns {Selenium.Promise}
+  ###
   getParent: (args...) =>
     locator = @getLocator(args...)
     @test.utils.dom.getParent(locator)
 
-
+###
+A collection of convenience methods for a test component.  Usually extended with additional helper methods before instantiation.
+
+@property {Object} el Exposes instances of `TestItemHelper` of common test elements on this component.
+###
 class TestHelper
+  ###
+  @param {Object} test The full context of the test element is being instantiated in
+  @param {Object|Function|String} testElementLocator Selenium locator object, or a function that returns a locator object based on parameters. If a string is provided, the locator is assumed to be a css locator.
+  @param {Object} commonElements An Object where the `name` of `locator`s are the keys, and the locators are the values.
+  @param {Object} options Extra options, `defaultWaitTime` can be set.
+  ###
   constructor: (test, testElementLocator, commonElements, options) ->
     commonElements ||= _.result(@, 'elementRefs', {})
     commonElements = _.extend({}, DEFAULT_ELEMENTS, commonElements)
 
     defaultOptions =
       defaultWaitTime: 40 * 1000 # TODO: Letting tests define their own wait time is dangerous. tutor-dev takes > 10sec to delete a task-plan
-      # defaultWaitTime: 20 * 1000 # 20sec seems to be enough for deployed code but not local
 
     @test = test
     @_options = _.assign {}, defaultOptions, options


    @

  getLocator: (args...) =>
    locator = if _.isFunction(@locator)
      @locator(args...)

  loadingState:
    css: '.is-loading'

###
Wraps the locator of an element item accessible by specs and exposes convenient functions on the matching element(s)
###
class TestItemHelper
  ###
  @param {Object} test The full context of the test element is being instantiated in
  @param {Object|Function|String} testElementLocator Selenium locator object, or a function that returns a locator object based on parameters. If a string is provided, the locator is assumed to be a css locator.
  @param {Object} options Extra options, `onBeforeMethodCall` can be set.
  ###
  constructor: (test, testElementLocator, options = {}) ->
    throw new Error('BUG: Missing the current test!') unless test
    throw new Error('BUG: Missing locator') unless testElementLocator
