The application name Ironaevzag is combined with words Iron and Aevzag - Ossetian and Language in Ossetian. That application is an online Russian to Ossetian dictionary built to conduct experiments with UI controls in the field of usability.
On the main page there are:
- The filter inpurt
- The filtered words list
- The selected word translation
When user types in the filter input (1.), AJAX request gets the filtered words list and displays them beneath the filter in the vertical list (2.).
Pressing ArrowUP/Down keys a user can select any word from the filtered words list. When selected word changed in the right area the selected word translation appears (3.). Some delay after the selected word is changed implemented before AJAX request triggered.
The focus stays on the filter even when Arrow keys used. That allows the user to change the filter value anytime he wants do that with no need of selection the filter input control.
There are two wildcards available: _ underscore and % percent characters. The underscore character substitutes any single character, e.g. search for а_ returns two character words, which start with а. The percent character substitutes a group of any characters, e.g. search for рос% returns the filtered words list:
- роса
- роскошный
- роскошь
- рослый
- роспуск
- россия
- россыпь
- рост
- ростовщик
- росток
The search could be performed in Russian words or in Ossetian translations. To swith the search mode the user should either press F7 or to click on the language indicator in the right upper corner of the filter. When it has the value рус the search performs in Russian words, otherwise it has the value ос, and the search performs in Osettian translations.
E.g. If the language indicator has the value ос and the user types in the filter the value æзæг the filtered words list contains the words, which translations contain æзæг group of characters. The wildcards are ignored in that mode.
When the key [~`] pressed, the character 'æ' is been typed in and the search mode switches to seacrh in translations, because the character 'æ' there is in Ossetian, but not in Russian.
Ruby On Rails 3 The app is deployed with capistrano to VDS, 4 Nginx workers serve static assets and pass requests for dynamic content to 4 Thin worker processes.
JavaScript
- jquery
- jquery.ui
- jquery.jgrowl
- hand made jquery plugin autocomplist
I develop this application with BDD approach using cucumber framework. That means that I first write a new scenario for a featire to be implemented, I mark it with @wip tag and run it with cucumber, then I develop the feature to pass the scenartio.
Cucumber with capibara and WebDriver are suitable to test even JavaScript powered features of the application.
Before deploying a release version to production server I run all scenarios and fix errors if any. When all tests pass I deploy the application and feel myself peace and calm.
You can see all the scenarios I use to test that application in features directory
I recorded a short screencast which shows what does testing with cucumber looks like. See it here. You hardly see what happens in a browser if not watch this screencast in HD.
P.S.
Inspired by S. Tabolov's dictionary powered by A. Zatvornitsky's utility