Skip to end of metadata
Go to start of metadata

Deprecated Documentation

Icon

This documentation is deprecated. It contains only information relevant up to v0.9.9 / v1.0.0 of WebTester. For the current development visit our GitHub page or the Project Homepage.

 

0.9.9 to 1.0.0 (Open Source Version)

  • Removed all API which was declared deprecated and set to be removed with v1.0.0.
  • Reformatted code base using the new IntelliJ and Eclipse compatible formatting schema.
  • Moved Examples / Example App projects to separate repository
  • Published code to GitHub under Apache Commons License 2.0

0.9.8 to 0.9.9

  • Finalized Conditions API for generic Waits.waitUntil(...) methods and new Ad-Hoc page object creation system.
  • Extended PageObject and Browser to allow for the Ad-Hoc creation of page object instances without having to use the page object pattern.
  • Added missing attribute assertions to Hamcrest and AssertJ modules.
  • Added support for Selenium's @FindBy and @FindBys annotation to be used.
  • Optimized logging and Exception handling in several areas:
    • PageObjectFactory
    • Browser
    • PageObject
    • Utility classes
  • Added option do disable / enable caching of WebElements inside PageObjects on a global and local (@IdentifyUsing) level. Disabling the cache will cost some performance but will stabilize tests when the application under test is relying heavily on AJAX.
  • Fixed some naming issues and deprecated some API's to be removed / replaced with v1.0.0 / 1.1.0.
  • Added support for Java's @PostConstruct annotation. This annotation will work like the current custom @AfterInitialization annotation.
  • Deprecated @AfterInitialization annotation to be removed in v1.1.0

0.9.7 to 0.9.8

  • Removed commons-configuration as a dependency.
  • Removed PhantomJS support module.
  • Added support module webtester-support-assertj. This module provides assertions for all kinds of PageObject implementations which are included as part of webtester-core.
  • Added generic waitUntil(...) method to the Waits utility class. Experimental conditions are also provided but will most certainly change until their final definition in v0.9.9.
  • Extended the function of @Visible by adding a value that indicates how many element must be visible in case the annotation is applied to a List of PageObject.

0.9.6 to 0.9.7

Icon

This upgrade includes major changes to WebTester's configuration mechanisms.

  • Extended NumberField class with get/set value methods which take integers instead of strings as input.
  • Utility classes like Asserts, Waits etc. now include the firing of events in case of exceptions.
  • Fixed a bug where the label of a Button was not always read correctly. (not every kind of button behaves the same)
  • Added support module webtester-support-hamcrest. This module provides matchers for all kinds of PageObject implementations which are included as part of webtester-core.
  • Added support module webtester-support-spring4. This module includes ConfigurationAdapter implementations for utilizing the Spring context as a configuration source. Also includes some FactoyBean base implementations which can be used to initialize a Configuration as a bean.
  • Removed WebTesterConfiguration in favor of a Browser centric configuration service system which can be extended by providing ConfigurationAdapter and ConfigurationExporter instances to a ConfigurationBuilder.

Important changes because of the removal of a static WebTesterConfiguration:

  • Global Changes
    • Default EventListers can no longer be declared as part of the configuration. You have to add them programmatically during test setup.
    • Default ProxyConfiguration can no longer be declared as part of the configuration. You can add them programmatically when initializing a BrowserFactory.
    • Default BrowserFactory can no longer be declared as part of the configuration.
    • Configuration properties are no longer automatically exposed as System properties. This can now be done manually by adding the SystemPropertiesConfigurationExporter when building your configuration.
  • JUnit Support Module
    • Order of operations of the WebTesterJUnitRunner was changed to initialize browsers first and then inject configuration values.
    • In case multiple browsers are used in conjunction with the WebTesterJUnitRunner @Primary has to be used to identify the browser who's configuration should be used to inject configuration values.
    • You have to declare the browser factory by declaring the @CreateUsing annotation when creating a managed browser with WebTesterJUnitRunner.

0.9.6 to 0.9.6.1 (Hotfix)

  • Utility classes like Asserts, Waits etc. now include the firing of events in case of exceptions.

0.9.5 to 0.9.6

Icon

This upgrade includes API changes and will take time.

Many classes were moved to other packages in preparation for v1.0.0. Import issues should be fixable by automatically organizing your imports using your IDE.
The more drastic changes are marked in red and will definitely take manual changes. Most of these should be fairly easy.

  • Log4J is no longer inherited by projects depending on any WebTester module. Only the slf4j-api is defines as a dependency.
  • Removed dependency to commons-lang3 in favor of using commons-lang already provided by Selenium.
  • Improved JavaDoc documentation. Now including version references (@since) for changes to the API.
  • Added DEBUG and TRACE logs for better traceability - even more will be added in future releases.
  • Changed a lot of PageObject (and provided subclasses) methods which previously returned void to return the same object in order to allow for fluent API use.
  • Added new types of exceptions:
    • PageObjectIsInvisibleException - in cases where a state changing action is executed upon an invisible page object.
    • PageObjectIsDisabledException - in cases where a state changing action is executed upon a disabled page object.
  • Extension of BrowserFactory interface with createBrowser(Capabilities capabilities).
  • Implementation of new utility class Mouse which provides methods for hovering over a single or a sequence of page objects and allows clicking using the "real" mouse cursor.
  • Implementation of new utility class Asserts which provides methods for asserting certain facts about page objects like visibility and if they are enabled.
  • PageObjectFactory removed. Recreated as a service class used by the Browser. New PageObject instances should be retrieved via the Browser#create(class) method.
    (PageObject#createPageObject(pageObjectClass) still works but is now deprecated - use PageObject#create(pageObjectClass) instead!)
  • Extraction of utility methods of the PageObject class into utility classes
    • Extraction of PageObject#makeVisible() and PageObject#makeInvisible() methods into new utility class VisibilityChanger.
    • Extraction of all PageObject#waitX() methods into new utility class Waits.
    • Extraction of PageObject#doubleClick() into Mouse utility class and addition of new Mouse#click(pageObject) method.
    • These methods are no longer available as part of the PageObject class!
  • Browser is now an interface. The default implementation is called WebDriverBrowser and can be initialized directly by using either:
    • WebDriverBrowser.create(webDriver).build()
    • new WebDriverBrowserBuilder(webDriver).build()
    • If you were using any of the provided BrowserFactory implementations this is done for you automatically.

0.9.4 to 0.9.5

  • Fixed a bug where PageObject#isVisible() and PageObject#waitUntilInvisible() did not work correctly when the element they were called on was in a stale state.

0.9.3 to 0.9.4

  • Fixed compatibility with Java 6. Removed references to classes which are only available in Java 7 and higher.

0.9.2 to 0.9.3

  • New support module for Chrome: webtester-support-chrome
  • Fixed a bug were certain EvenListeners were active by default.
  • New Annotation @Visible to mark page object fields which should be visible after the page object was initialized.
    This is a shorthand implementation as an alternative to @AfterInitialization annotated methods which check the visibility of certain elements.
  • Added an additional testit-webtester-global.properties file to all for more versatile configuration scenarios:
    Properties are now loaded and merged in the following order:
    (1) testit-webtester-default.properties from the framework
    (2) testit-webtester-global.proeprties from the classpath
    (3) testit-webtester.properties from the classpath
    (4) testit-webtester.properties from the $TESTIT_HOME/config folder
  • Updated identification methods to include: LINK_TEXT and PARTIAL_LINK_TEXT
  • Fixed a bug where in certain cases properties were loaded with an empty key and the framework threw an exception.
  • Updated default Selenium version to 2.46.
  • Added new NumberField type which can handle HTML5 number input fields.
  • Added new support class Invalidator which allows for the invalidation of lists and hierarchically structured page objects.
    In case of a page object, all sub elements / page fragments of the that object are also invalidated.

0.9.1 to 0.9.2

  • Proxy configuration for all browsers is now possible by providing an implementation for the ProxyConfiguration interface and setting it in the properties.
  • Reverted Selenium to v2.44 because of a performance issue in Selenium.
  • Extended screenshot and source code methods with the option to specify filenames.
  • New annotation @CreateUsing to specify which BrowserFactory should be used when creating browsers with the WebTesterJUnitRunner.
  • New support module for PhantomJS: webtester-support-phantomjs

0.9.0 to 0.9.1

  • New support module for JUnit: webtester-support-junit.
    Includes a WebTesterJUnitRunner to streamline UI-Testing with JUnit as test runner:
    • Automatic life cycle handling for class and test level Browser instances.
    • New annotation @EntryPoint to set a default start URL of a Browser to be initialized at the beginning of a test.
    • New annotation @ConfigurationValue to inject configuration properties into the following base classes: String, Integer, Long, Float, Double and Boolean.
  • All properties are automatically published as System Variables.
  • Added sample application and sample test code modules as showcase of WebTester features.
  • New support module for Internet Explorer: webtester-support-ie.
  • New naming convention for browser factories: $BROWSER_NAME + "Factory"
    • FirefoxFactory
    • InternetExplorerFactory
    • etc.

Legacy Version 1.5.2 to New 0.9.0

The WebTester project got new dependency names and version as a preparation for major API changes and the near future release as an open source project.

  • Infrastructur:
    • Changed group ID of dependecies to info.novatec.testit and renamed testit-webtester-framework artifact to webtester-core
    • Moved all Firefox support classes, like FirefoxBrowserFactory to new module webtester-support-firefox
    • Merged commons classes from previous testIT release into webtester-core in order to reduce dependencies of the core project
    • Property keys were changed:
      • screenshot.folder >> folders.screenshot
      • pagesource.folder >> folders.sourcecode
      • htmllog.folder >> folders.log
      • htmllog.timestamp.format >> timestamp.pattern
  • Bugfixes:
    • Changed mechanism to load WebTesterConfiguration - Properties can now be overridded by providing testit-webtester.properties file
  • Improvements:
    • New HtmlLoggingListener implementation
    • New ID_STARTS_WITH and ID_ENDS_WITH identification methods
    • New switch to frame and window methods in Browser
    • Made WebTesterConfiguration more transparent
    • Added switch to frame and window methods to Browser
    • JavaDoc extensions and fixes
    • Opening an URL no longer maximizes the window by default, instead the window can be maximized on demand by calling Browser#maximizeCurrentWindow()
  • API Changes for:
    • WebTesterConfiguration
    • Browser
    • Image
    • IFrame
    • Textfield is now named TextField
    • EventListenerRegistry is now called EventSystem
    • Most names of Event classes were changed in order to follow a common naming pattern

Version 1.5.1 to 1.5.2

  • The Browser constructor is now public to allow for the use of WebDriver instances which were initialized outside of the BrowserFactory API.
  • Removed the action temple call when executing PageObject#getWebElement(). In some cases this call led to exception duplication. Which in turn led to problems when implementing exception handlers using the EventListener API.

  • Fixed concurrency issues in: BroserRegistry and EventListenerRegistry.
  • Changed the way Browser objects are initialized in order to allow for more extension options:
    • BrowserFactory is now an interface in order to allow for custom implementations
    • The default Browser to use can now be defined by providing the name of one of the values of the BrowserFactories enumeration or the fully qualified class name of a BrowserFactory in the WebTester configuration.
    • FirefoxBrowserFactory can be used to initialize default Firefox instances.
    • Example: new FirefoxBrowserFactory().createBrowser();
  • Added Browser#getPageSource() method to allow the easy retrieval of the currently displayed page's source code as a string.
  • Removed dependency and implementation support for Internet Explorer. If Internet Explorer is needed:

    • add the appropriate Selenium dependency
    • implement a BrowserFactory using the new browser creation API
  • Changed logging mechanism to a default slf4j Logger abstraction in order to use which ever implementation is provided by the project.

Version 1.5.0 to 1.5.1

  • Fixed a bug that caused stack overflow exception when markings were active and a page object threw an exception.
  • Added stale reference recovery: If an action is executed on a stale page object the action is retried once, after the page object is reinitialized.
  • Added event listener to take screenshot in case of an exception event
  • Made all events serializable.
  • Removed the "java script executed" event
  • Moved code to change CSS properties of a page object to extra class.
  • Moved code to mark used page objects to extra class.
  • No labels