 
     waitFunction(locator, waitTime)
 
-  # methods that wait until elements are available before running
+  ###
+  Waits until element is visible before trying to return the Selenium.Promise of the matching Selenium.WebElement
+  This will only wait until waitMs (default `60000`).
+
+  @param {Any} args... Any number of parameters for `locator` to use if `locator` is a function dependent on parameters
+  @param {Number} waitMs The last parameter, if provided and is a number.
+  @returns {Selenium.Promise}
+  ###
   get: (args...) =>
     @aliasWait(@test.utils.wait.for, args...)
 
+  ###
+  Waits until an element is visible before trying to return the Selenium.Promise of Array of matching Selenium.WebElements
+  This will only wait until waitMs (default `60000`).
+
+  @param {Any} args... Any number of parameters for `locator` to use if `locator` is a function dependent on parameters
+  @param {Number} waitMs The last parameter, if provided and is a number.
+  @returns {Selenium.Promise}
+  ###
   getAll: (args...) =>
     @aliasWait(@test.utils.wait.forMultiple, args...)
 
-  # Helper for the common case of `wait.for(...).click()`.
-  # Plus, it allows a place to add logging since this is one of the most
-  # common places for Selenium to time out (trying to click on an element)
+  ###
+  Helper for the common case of `wait.for(...).click()`.
+
+  Plus, it allows a place to add logging since this is one of the most common places for Selenium to time out (trying to click on an element)
+
+  This will only wait until waitMs (default `60000`).
+
+  @param {Any} args... Any number of parameters for `locator` to use if `locator` is a function dependent on parameters
+  @param {Number} waitMs The last parameter, if provided and is a number.
+  @returns {Selenium.Promise}
+  ###
   waitClick: (args...) =>
     @aliasWait(@test.utils.wait.click, args...)
 
-  # methods that will try to run as soon as you call them
+  ###
+  Tries to find and return Selenium.Promise of Selenium.WebElement immediately
+
+  @param {Any} args... Any number of parameters for `locator` to use if `locator` is a function dependent on parameters
+  @returns {Selenium.Promise}
+  ###
   findElement: (args...) =>
     locator = @getLocator(args...)
     @test.driver.findElement(locator)
 
+  ###
+  Tries to find and return Selenium.Promise of array of matching Selenium.WebElement immediately
+
+  @param {Any} args... Any number of parameters for `locator` to use if `locator` is a function dependent on parameters
+  @returns {Selenium.Promise}
+  ###
   findElements: (args...) =>
     locator = @getLocator(args...)
     @test.driver.findElements(locator)
 
-  # Helper for the common case of `findElement(...).click()`.
+  ###
+  Tries to find and click immediately
+
+  @param {Any} args... Any number of parameters for `locator` to use if `locator` is a function dependent on parameters
+  @returns {Selenium.Promise}
+  ###
   click: (args...) =>
     @findElement(args...).click()
 
+  ###
+  Checks if element matching locator is immediately present, returns Selenium.Promise that resolves to a boolean
+
+  @param {Any} args... Any number of parameters for `locator` to use if `locator` is a function dependent on parameters
+  @param {Function} forEachFunction The last parameter, if provided and is a function, will be run on each WebElement
+  @param {Function} forEachFunction2 optional, If an additional function is available, this will run once before.
+  ###
   forEach: (args..., forEachFunction, forEachFunction2) =>
     locator = @getLocator(args...)
     @test.utils.forEach(locator, forEachFunction, forEachFunction2)
 
+  ###
+  Checks if element matching locator is currently present, returns Selenium.Promise that resolves to a boolean
+
+  @param {Any} args... Any number of parameters for `locator` to use if `locator` is a function dependent on parameters
+  @returns {Selenium.Promise}
+  ###
   isPresent: (args...) =>
     locator = @getLocator(args...)
     @test.driver.isElementPresent(locator)
 
+  ###
+  Checks if element matching locator is currently displayed, returns Selenium.Promise that resolves to a boolean
+
+  @param {Any} args... Any number of parameters for `locator` to use if `locator` is a function dependent on parameters
+  @returns {Selenium.Promise}
+  ###
   isDisplayed: (args...) =>
     @isPresent(args...).then (isPresent) =>
       if isPresent


    @

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

    else
      @locator

  ###
  Helps pass through custom wait time to `get`, `getAll`, and `waitClick` if provided.
  *Intended for internal use*, but exposed for extensibility if need.

  @param {Function} waitFunction The wait function to wrap
  @param {Any} args... Any number of parameters for `locator` to use if `locator` is a function dependent on parameters
  @param {Number} waitMs The last parameter, if provided and is a number.
  @returns {Function}
  ###
  aliasWait: (waitFunction, args...) =>
    locator = @getLocator(args...)

