• SimpleTest 6.x-2.8 - fresh backport

    I maintain a backport of Drupal 7 SimpleTest for use with Drupal 6 as the SimpleTest module 2.x branch. A fair amount of work goes into maintaining the code even though it is a backport.

    Tonight I finished up a fresh backport of Drupal 7 and made a release along with a number of other changes. Please update to SimpleTest 6.x-2.8 and report any issues you find.

    Note to developers

    Since this release includes a fresh backport it also contains an API change that you need to be aware of. All getInfo() methods need to be changed to static before using this release. If you are a module developer or maintain tests internally please make sure you update them.


    function getInfo() {
      return array(
        'name' => t('[name]'),
        'description' => t('[description]'),
        'group' => t('[group]'),


    public static function getInfo() {
      return array(
        'name' => t('[name]'),
        'description' => t('[description]'),
        'group' => t('[group]'),
  • Automated Testing System 2.0 - Final Steps

    During the last several months I put a substantial amount of work into improving the Automated Testing System. Future posts will describe the exciting new features and the benefits to the community. If interested, a brief overview of some of the requirements can be found in the PIFR and PIFT issue queues.

    For additional background, the original thoughts can be found at the following links:

    Final steps

    There a number of steps that need to be completed before the Drupal community can reap the benefits of the new system.

    1. Security review of rewritten Project Issue File Test (PIFT) module that integrates with the project module on drupal.org.
    2. Someone familiar with SQLite, possibly one of the D7 maintainers, needs to write a PIFR DB driver to implement the required methods. MySQL and PostgresSQL have already been completed and can be used as examples. The driver is relatively simple, but will require manually connecting to SQLite since PIFR runs in D6 which does not support SQLite.
    3. Update testing client setup/installation script where necessary.
    4. Deploy current development system to project.drupal.org and the create a parallel testing client network.
    5. Freeze the current test client network and extract the test ID map for use in drupal.org upgrade.
    6. Upgrade and finalize test client network and test server (testing.drupal.org). Possibly move testing.drupal.org under the drupal.org infrastructure.
    7. Confirm upgraded testing network is functional.
    8. Plan for approximately 15 minutes of downtime on drupal.org.
    9. Update PIFT code and run data update using extracted test ID map from #4 on drupal.org during downtime.
    10. Watch deployed system closely and solicit community feedback and bug reports.
    11. Request additional hardware to use as community test clients (to allow for future expansion into testing contributed modules).


    Once the second generation framework is in place and running smoothly I will begin work on finishing the last pieces required to allow for testing of contributed modules (D6 and D7) and Drupal 6 core. I will be writing more on the new features and UX improvements to be looking for in during the upcoming deployment.

  • Summer of Code 2009 - Usability Testing Suite - Accepted

    Google announced the accepted student proposals today, of which my proposal was included. The project will finalize the Usability Testing Suite which was started during Summer of Code 2008. At the conclusion of this year’s Summer of Code I hope to have the project ready for prime time use which will make it easier to conduct a number of different usability studies.

    For a bit more detail on the project I have included the project abstract.

    The Usability Testing Suite that I created during SoC 2008 needs additional work in order to make it ready for use. The existing module provides a powerful API that makes writing data collection plug-ins simple, but the user interface needs refinement and a screen recording plug-in would make the module much more helpful. Through this project I intend to finalize the Usability Testing Suite and make it ready for widespread use.

    On another note, my father was also accepted! As confirmed by Károly “chx” Négyesi we are the first father-son pair to be accepted into Summer of Code.

    I have attached the full project proposal that I submitted.

  • Drupalcon DC - Automated testing - Saving webchick time - the saga

    I will be presenting Saving webchick time - the saga along with Kieran Lal at Drupalcon DC 2009. To quote the session abstract:

    One of the major enhancements made to the Drupal development cycle has been the addition of a fully automated testing bot, built on the testing framework in Drupal 7. This session will focus on automated testing as it relates to Drupal 7: its history and direction, the automated testing bot: what has gone into it and where the future leads, and most importantly what is the end gain to the Drupal community.

    The framework has gone through a rather long and interesting history with a number of road-blocks and challenges that have been overcome. The session will tell the story of the framework and the benefits it provides to the community through the enhanced Drupal 7 development work-flow. Although the session will go into some technical details it will overall tell the story of the framework and where we plan to take it. The presentation should be interesting to most and provide a great time to throw out any comments or concerns.

    After the presentation I will stick around to discuss our recent launch of the Boombatower Testing Service (BTS). If you have any questions, comments, or concerns please drop by.

  • SimpleTest never sleeps

    I am sure by now most, if not all, are aware of the drupal.org upgrade to Drupal 6 and may have noticed some of the changes. After the upgrade was completed I went ahead and posted my updated hook_test() patch to Create hook_test(): move SimpleTest getInfo() out of test cases. Upon posting I noticed that the file was uploaded to:


    instead of


    That may not sounds like much of an issue, but it has a number of trickle effects.

    • Files are not renamed properly. Meaning that files with the same name may exist, but in different directories.
    • Inconsistent data would be sent to testing.drupal.org that would have caused issues.
    • Confusing urls.

    I talked with Chad “hunmonk” Phillips about it in IRC and discovered that is was due to the new File API. Drupal.org was put in maintenance mode, as many of you probably noticed, and Chad dove into the code. After discussing for a while a “fix” was created.

    The moral of the story…yet another bug found due to SimpleTest (the patch I was posting was related to SimpleTest). That of course is not to say it would not have been found soon enough, but SimpleTest indirectly found it first. :)