Set up continuous build server to include acceptance tests using Watir
Acceptance tests integrated into the continuous build server provides team members constant feedback, its benefits is quite obvious. Here I show you how to include web acceptance tests (using Watir) in CruiseControl server for a typical Java/J2EE project.
Prerequisite:
- CruiseControl installed and configured properly.
- Ruby and Watir/rWebUnit installed, easiest way is to install PRoR.
1. Create a Rakefile in your acceptance test folder (in our example, test/acceptance)
    require 'rubygems'
gem 'ci_reporter'
gem 'rspec'
require "rexml/document"
require "spec/rake/spectask"
require 'ci/reporter/rake/rspec' # use this if you're using RSpec
 
task :default => ["test:acceptance"]
Spec::Rake::SpecTask.new("quick") do |t|
    t.spec_files = FileList[
       "login_spec.rb",
       "payment_spec.rb",
    ]
    t.warning = false
end
task "test:acceptance" => "ci:setup:rspec" do
  Rake::Task["quick"].invoke
end
  
  2. Test it out by running tests from command line
C:\wenji>rake test:acceptance   
  (in C:/wenji) 
  rm -rf spec/reports   
  .   
  .  
  .    
  Finished in 98.547 seconds
  3. Add the acceptance test target in your Ant build.xml
    <property name="test.acceptance.dir" value="test/acceptance"/>
 
 <!-- Run acceptance tests from Ant script -->
 <target name="test.acceptance">
     <exec executable="cmd" dir="${test.acceptance.dir}" resultproperty="test.acceptance.result">
         <arg value="/c"/>
         <arg value="rake"/>
         <arg value="test:acceptance"/>
     </exec>
     <echo message="acceptance result: ${test.acceptance.result}"/>
     <antcall target="test.acceptance.report"/>     
     <fail message="rWebUnit tests failed" unless="test.acceptance.result"/>
 </target>
  <!-- The html report are under test/acceptance/spec/reports_html -->
  <target name="test.acceptance.report">
        <delete dir="${test.acceptance.dir}/spec/reports_html"/>
        <mkdir dir="${test.acceptance.dir}/spec/reports_html"/>
        <mkdir dir="${test.acceptance.dir}/spec/reports"/>
        <junitreport todir="${test.acceptance.dir}/spec/reports_html">
            <fileset dir="${test.acceptance.dir}/spec/reports">
                <include name="SPEC-*.xml"/>
            </fileset>
            <report format="frames" todir="${test.acceptance.dir}/spec/reports_html"/>
        </junitreport>
  </target>
  
  Test it out
    ant -f build.xml test.acceptance
  
  4. Add this new acceptance target to main build target triggered by CC
    <target name="go" depends="compile, coverage.instrument, test.unit, deploy, test.acceptance" 
  description="Quick build as triggered by CruiseControl Server - build, deploy, and test" > </target>
  
  5. You will see acceptance tests running for next CruiseControl build, to view acceptance test report (called Artifact in CC), edit CC project file under publishers
    <artifactspublisher 
  subdirectory="acceptance_test_report" 
  dir="${trunk}/test/acceptance/spec/reports_html" 
  dest="artifacts/${project.name}">
</artifactspublisher>
  
  
     
  
