happybara-0.0.1: Acceptance test framework for web applications

Stabilityexperimental
MaintainerCharles Strahan <charles.c.strahan@gmail.com>
Safe HaskellNone

Happybara.Query

Contents

Description

 

Synopsis

Query Interface

class (Driver sess, MonadIO m, MonadBase IO m, MonadBaseControl IO m) => Query q sess m whereSource

This class is the backbone of Happybara's DOM querying DSL. While Happybara includes support for a number of common queries, you're more than welcome to implement your own Query instances, thus extending the DSL.

Queries are scoped to the current node as given by getCurrentNode, and a new scope can be specified via within.

Note that the behavior of a query is dependent on the current Exactness setting:

  • Exact - Find elements that match exactly.
  • PreferExact - First try to find exact matches; if that fails, fall back to inexact matches.
  • Inexact - Find all elements that partially match - e.g. the given string is infix of (but not necessarily equal to) whatever property (id, attribute, etc) is being queried over.

When locating a single item, the failure mode depends on the current SingleMatchStrategy setting:

To set the current Exactness, use setExactness. To set the current SingleMatchStrategy, use setSingleMatchStrategy.

Methods

find :: q sess m -> HappybaraT sess m (Maybe (Node sess))Source

findOrFail :: q sess m -> HappybaraT sess m (Node sess)Source

findAll :: q sess m -> HappybaraT sess m [Node sess]Source

Instances

Scoping

within :: (Query q sess m, Driver sess, Functor m, Monad m) => q sess m -> HappybaraT sess m a -> HappybaraT sess m aSource

Set the current element scope to the element given by the query.

withinAll :: (Query q sess m, Driver sess, Functor m, Monad m) => q sess m -> HappybaraT sess m a -> HappybaraT sess m [a]Source

For each element given by the query, set the current scope accordingly and invoke the monadic action, yielding each result.

Basic Queries

Happybara includes a number of queries for common cases where you want to find an element by value, title, id, alt-text, etc. These queries can be further filtered by the predicates listed below.

For example, this query will return all enabled buttons matching "Submit Application":

findAll $ button "Submit Application" [ disabled False ]

link :: Driver sess => Text -> [Node sess -> HappybaraT sess m Bool] -> SimpleQuery sess mSource

button :: Driver sess => Text -> [Node sess -> HappybaraT sess m Bool] -> SimpleQuery sess mSource

linkOrButton :: Driver sess => Text -> [Node sess -> HappybaraT sess m Bool] -> SimpleQuery sess mSource

fieldset :: Driver sess => Text -> [Node sess -> HappybaraT sess m Bool] -> SimpleQuery sess mSource

field :: Driver sess => Text -> [Node sess -> HappybaraT sess m Bool] -> SimpleQuery sess mSource

fillableField :: Driver sess => Text -> [Node sess -> HappybaraT sess m Bool] -> SimpleQuery sess mSource

select :: Driver sess => Text -> [Node sess -> HappybaraT sess m Bool] -> SimpleQuery sess mSource

checkbox :: Driver sess => Text -> [Node sess -> HappybaraT sess m Bool] -> SimpleQuery sess mSource

radioButton :: Driver sess => Text -> [Node sess -> HappybaraT sess m Bool] -> SimpleQuery sess mSource

fileField :: Driver sess => Text -> [Node sess -> HappybaraT sess m Bool] -> SimpleQuery sess mSource

optgroup :: Driver sess => Text -> [Node sess -> HappybaraT sess m Bool] -> SimpleQuery sess mSource

option :: Driver sess => Text -> [Node sess -> HappybaraT sess m Bool] -> SimpleQuery sess mSource

table :: Driver sess => Text -> [Node sess -> HappybaraT sess m Bool] -> SimpleQuery sess mSource

definitionDescription :: Driver sess => Text -> [Node sess -> HappybaraT sess m Bool] -> SimpleQuery sess mSource

Predicates

href :: (Driver sess, MonadBase IO m) => Text -> Node sess -> HappybaraT sess m BoolSource

checked :: (Driver sess, MonadBase IO m) => Bool -> Node sess -> HappybaraT sess m BoolSource

unchecked :: (Driver sess, MonadBase IO m) => Bool -> Node sess -> HappybaraT sess m BoolSource

disabled :: (Driver sess, MonadBase IO m) => Bool -> Node sess -> HappybaraT sess m BoolSource

selected :: (Driver sess, MonadBase IO m) => NodeValue -> Node sess -> HappybaraT sess m BoolSource

options :: (Driver sess, MonadBase IO m) => [Text] -> Node sess -> HappybaraT sess m BoolSource

elemType :: (Driver sess, MonadBase IO m) => Text -> Node sess -> HappybaraT sess m BoolSource

Types

data SimpleQuery sess m Source

Constructors

SimpleQuery 

Fields

sqXPath :: Bool -> Text
 
sqPredicates :: [Node sess -> HappybaraT sess m Bool]
 
sqDescription :: Text
 

Instances