Question

I have an export and import feature in my webapp and I want to test export to xls and import from xls feature using watir. Please can anyone provide me idea for this?

class TestBasicExport < MiniTest::Unit::TestCase
 def setup
   login_page = @@site.login_page.open # open the page to login
   search_page = login_page.login # login and land on the search page
   @@export_page = search_page.export  # click on the export link to goto export page
 end

 def test_basic_export_works
   export = @@export_page.export # it will click on the exprt button
   assert @@export_page.loaded?, "Export page failed to load"

 rescue Watir::Exception, Watir::Wait::TimeoutError => e
   puts "Some field not found: #{e}"
   assert(false, "Current page is " + @@export_page.browser.url)
 end
end

I am able to click on export button with the above code and after few seconds, it is throwing exceptions which is obvious(because, export is taking some times to complete depending on the volume of data):

Run options: --seed 23218

# Running tests:

E

Finished tests in 75.866195s, 0.0132 tests/s, 0.0000 assertions/s.

 1) Error:
test_basic_export_works(TestBasicExport):
Timeout::Error: Timeout::Error

Please, what can I do to complete this?

Thanks

Was it helpful?

Solution

Solution for my problem is:

class TestBasicExport < MiniTest::Unit::TestCase
  def setup
    login_page = @@site.login_page.open # open the page to login
    search_page = login_page.login # login and land on the search page
    @@export_page = search_page.export
    assert @@export_page.loaded?, "Export page failed to load!"

    # find number of export.xls file before downloading and save it in 
    # some variable
    if @@export_page.count_export_file == 1
      @@export_page.remove_export_file
    end
    # delete export file if already exists and confirm it
    @number_of_files = @@export_page.count_export_file
    assert_equal(0, @number_of_files, "Export file already exists")

    @@site.download_directory_setup

    @@export_page.export
    assert @@export_page.completed?, "Export failed!"
  end

  def test_basic_export_works
    # verify file is downloaded
    assert_equal(1, @@export_page.count_export_file, "Export did not happened")

    # check for downloaded file is having valid rows
    assert_equal(true, @@export_page.verify_headers? , "Downloaded file in invalid")

    assert_equal(true, @@export_page.verify_download?, "Excel file is not having all datas")
  rescue Watir::Exception, Watir::Wait::TimeoutError => e
    puts "Some field not found: #{e}"
    assert(false, "Current page is " + @@export_page.browser.url)
  end
end

count_export_file and remove_export_file looks like:

# this method will count the number of export.xls file in project directory
def count_export_file
  Dir[File.join("#{file_path}/", 'export.xls')].count { |file| File.file?(file) }
end

# method for removing file from project directory
def remove_export_file
   File.delete("#{file_path}/" + 'export.xls')  
end
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top