All notable changes to this project will be documented in this file.
- Field.value_equals() and Field.value_contains() return an object that evaluates to a bool, instead of a bool.
- Area.text_to_dict() and Repeating.text_to_dict() methods.
- Type hints are now exposed by the package.
- Fields can now register and emit events.
- Fields emit 'before' and 'after' events when performer methods are called.
- Splinter Input Field now has a highlight() method.
- If XHRSpy.add() is called multiple times on the same page, the active and total counters are no longer reset.
- If XHRSpy.add() is called multiple times on the same page, the hook is only added once.
- Network spies to assist with navigating async web apps.
- Repeating.has_children() now takes argument for minimum number of children that should exist.
- Support for shadow DOM in the form of the ShadowRoot Field.
- Nesting Repeating, Area, and RepeatingArea now correctly assigns root.
- Bumped minimum version of py-moneyed to 1.0.
- 'items' as a keyword is now allowed in Area and RepeatingArea.
- Missing root keyword in RepeatingArea now throws TypeError instead of ValueError.
- Area with no root inside a RepeatingArea should now work correctly.
- Area with no root inside a Repeating should now work correctly.
- Repeating and RepeatingArea can now be placed inside an Area.
- Stere.retry_time is used when searching for an attribute inside an element.
- Nicer error message is thrown when an element is not found while doing an attribute lookup.
- is_visible / is_not_visible methods try to handle stale element exceptions by retrying search.
- Button and Link Fields wait for visible/clickable status before clicking.
- Fields inside an Area with a root now pass wait_time to the root Field.
- Field.value_contains and Field.value_equals use Stere.retry_time as a default value.
- Splinter Dropdown.select() retries if value is not found.
- Speed up is_not_ methods. Requires splinter >=0.13.0.
- Repeating.has_children no longer fails if no children found.
- Repeating.has_children no longer builds a list of children containers, just checks roots.
- Field.is_ and Field.is_not_ methods now use Stere.retry_time if not specified.
- Stere.retry_time can be set through the stere.ini file.
- Repeating and RepeatingArea now have the has_children() method.
- FindByDataStarAttribute renamed to FindByAttribute.
- Field.is_present() and Field.is_not_present() now work correctly with FindByAttribute.
- Field.is_present() and Field.is_not_present() now work with Fields inside a RepeatingArea.
- Page.page_url now built from Stere.base_url and Page.url_suffix.
- An Area can now be placed inside a RepeatingArea.
- Areas.containing now accepts nested values.
- Areas.contain now accepts nested values.
- .is_clickable() and .is_not_clickable() are now available for splinter Fields.
- Added Money Field in Splinter integration. py-moneyed is used to provide functionality.
- Splinter and Appium Input Fields can now take a default_value parameter.
- Stere.url_navigator has a default value when Splinter is used.
- If an invalid locator strategy is used, the error message now reports valid strategies.
- Base Field, Root, and Text now use @stere_performer instead of a custom perform method.
- Implicit Field calls now work with all Fields.
- Field can take the keyword argument "returns". The object given will be returned after Field.perform() is called.
- Field now executes Field.perform() when called.
- Stere decorators can now be used by importing Field.decorators.
- Add Field.value_equals() and Field.value_contains() methods.
- Add Areas.containing().
- Add Repeating class to handle ridiculously nested collections.
- Deprecated RepeatingArea.area_with().
- Areas container only accepts Area objects inside it.
- FindByDataStarAttribute inherits from SplinterBase.
- Added RepeatingArea.areas.contain() method.
- RepeatingArea.areas now returns a list-like object instead of a list.
- Page.navigate() returns the Page instance.
- If a Field is found multiple times, ensure an error is thrown when Field.find() is used.
- Appium compatibility started.
- RepeatingArea can now use any Field as a root.
- Root Field no longer overrides Field.find().
- Preserve class name on Fields that implement a performer.
- Fix implementation of is_visible and is_not_visible when using Splinter.
- python 3.7 now supported.
- stere.ini config file can be used to specify automation library.
- Field implements the _repr_ method.
- RepeatingArea implements the _len_ method.
- Splinter specific implementation refactored in Field.find().
- Area.perform() can now take keyword arguments.
- Page class is now a Context Manager.
- Added is_visible and is_not_visible methods to Field.
- Added CHANGELOG file.