This is a proposed checklist for Fluid components. Be warned that this is in a very early state and may change completely.
The Reorderer currently has two working examples in the repository.
Lightbox.html contains a working Reorderer presented in the context of an image ordering component. It works as a stand alone example of the Reorderer and contains tests that prove basic working functionality.
unordered-list.html contains a more abstract example of the Reorderer, this time using a different layout handler. Notice the documentation at the top of the file explaining the contract between a template and the Reorderer. This file also contains automated unit tests ensuring that changes in code do not effect the expected functionality of the component.
These examples should be linked to from the wiki component page allowing a designer or developer to easily look at and play with components when selecting components for their page.
Unit tests have many uses and benefits including providing documentation, regression testing, making refactoring easier to do and encouraging a more loosely coupled code design. We likely do not have the resources required to create unit tests that provide full verification of a component. However, some investment in unit tests will benefit the Fluid framework and libraries. Here is a suggested strategy for unit tests:
Functional tests cannot take the place of testing with real users. However, there are some benefits to having functional tests.
Use Selenium (or another tool) to write common work-flow tests for components.
I've started by trying to write some simple accessibility tests for dojo using Selenium. The basic tests have proven to be easy to write, however there are some issues to be ironed out. Cross platform compatibility for certain keyboard actions has been an issue. For example bringing up the context menu in windows is done with shift-f10 but on the Mac with ctrl-space. The choice is to test at a lower level or write something that checks the platform and performs to correct keystrokes. Keyboard handling in general does not seem complete probably because most people are testing mouse interactions.
I intend to look into Windmill by writing similar tests to determine which tool is better suited to the work that we are doing.
Any other tools that people have used and recommend?
Is this worth doing?