Providing abstraction for xpath / css selectors for common areas of application, to operate easily on:
- parts of page
- top|left|bottom|right
- main menu, footer
- table sectors
- a row that contains sth
**a default area (i.e without menus, columns and footer)
- a row that contains sth
Distinct what user see from what browser see in the source. This includes:
- see sth that is visible for user
- visible object is a text ( regex, string )
- visible object is a value in field { hash of pairs field (id|name), value }
- elements in proper order
- send in email (emails should be attached per user – mailbox)
- see sth in the source code (in debug mode)
- clicking
- visiting
- drag and drop
- fill_in forms
- including rich text (‘textarea’, ‘ckeditor’, ’’)
- all type of inputs (‘text’, ‘password’, ‘email’, ‘checkbox’, ‘radio’, ‘file’, ‘select’, ‘multi-select’)
- handling tricky testing parts in better manner
- popups
- frames / windows
- native windows (like confirmations)
- support for common ui components
- jquery ui
- calendars
- sliders
- …
- colorbox // other modalboxes
**
- jquery ui
- all browser simulation handlers
- … go back etc
- all mouse and keyboard simulation
- hover over
- using javascript (might be as debug mode)
- to trigger events that are hard to imitate
- testing visibility of element (debug mode)
- support for mobile applications – touching around the specified html element.
- is a ruby object containing info about
- session
- user in system he represents(including not encrypted password)
- can perform many actions in will { … } block
- can login/logout
- customization (specific classes for specific types of users)
- roles
- methods for setup certain state of account (must to work well with factories and support bulk update to speed up things)
- by default share the same sessions
- exclusive session support ( when testing multiuser interactions)
- pagination
- sorting
- …
using keys other than labels
long class names, constants etc
print debug.send(:scopes).last.native
- ordered => [:asc, :column => ‘Title’]
- within :multiple need to be rewritten – is very ugly so far
- implement better keyboard support
- Make kameleon agnostic from devise, easier integrating other authentication solutions
- Add support for nice frame/window switching
- Support for interaction with mobile websites – sometimes you have to ‘touch’ an element, pull a slider, etc. To do so, you have to click around the specified text. And example:
I18n.locale = :en translation = I18n.t(arg1) element = page.find(:xpath, "//span[contains(.,'#{arg1}') or contains(.,'#{translation}')]").find(:xpath, ".//..").find(:xpath, ".//..") element.click