Ifd_Automation 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/Ifd_Automation +30 -0
- data/bin/generate.rb +20 -0
- data/bin/helper.rb +51 -0
- data/features/TestData/testdata.yml +4 -0
- data/features/TestSuite/Login/login.feature +6 -0
- data/features/step_definitions/lib_steps/login_steps.rb +3 -0
- data/features/step_definitions/repositories/ob_login.rb +3 -0
- data/features/support/env.rb +102 -0
- data/features/support/hooks.rb +57 -0
- data/features/support/project_env.rb +51 -0
- data/lib/Ifd_Automation/assertion_steps.rb +96 -0
- data/lib/Ifd_Automation/email_steps.rb +91 -0
- data/lib/Ifd_Automation/javascript_handling_steps.rb +34 -0
- data/lib/Ifd_Automation/lib_file_steps.rb +45 -0
- data/lib/Ifd_Automation/lib_schema_data_steps.rb +110 -0
- data/lib/Ifd_Automation/lib_web_steps.rb +184 -0
- data/lib/Ifd_Automation/lib_webservice_steps.rb +44 -0
- data/lib/Ifd_Automation/methods/IFD_Assertion_methods.rb +206 -0
- data/lib/Ifd_Automation/methods/IFD_Connection.rb +28 -0
- data/lib/Ifd_Automation/methods/IFD_email_methods.rb +16 -0
- data/lib/Ifd_Automation/methods/IFD_webservice.rb +17 -0
- data/lib/Ifd_Automation/methods/core.rb +342 -0
- data/lib/Ifd_Automation/methods/database_methods.rb +25 -0
- data/lib/Ifd_Automation/methods/db_utils.rb +37 -0
- data/lib/Ifd_Automation/methods/error_handling_methods.rb +87 -0
- data/lib/Ifd_Automation/methods/javascript_handling_methods.rb +46 -0
- data/lib/Ifd_Automation/methods/lib_var.rb +59 -0
- data/lib/Ifd_Automation/methods/misc_methods.rb +33 -0
- data/lib/Ifd_Automation/methods/required_files.rb +33 -0
- data/lib/Ifd_Automation/methods/util.rb +168 -0
- data/lib/Ifd_Automation/methods/web_methods.rb +291 -0
- data/lib/Ifd_Automation/methods/web_service_methods.rb +63 -0
- data/lib/Ifd_Automation/version.rb +5 -0
- data/lib/Ifd_Automation.rb +1 -0
- metadata +439 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4b2a5b2e44888d5988db54e57fd2e47e28831ef8
|
4
|
+
data.tar.gz: 3ac4e763c5160caa5136702575a94bcaac119a0f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: bff8f02df7c5fb68b185f700f9a4140ea25704bf05eeef200954e5ed396772a6f131eb1415b1eff459d074fd185615fdeb09214e9896d508d25d064ca6d9e1da
|
7
|
+
data.tar.gz: 24d6859007c1fac14342d172fc9b495263985122500477ced292e1f151900ebdab4318b6f0ed8547bf3f913ece66e6a9be0665a86eecbe1b98d0c8c1e720393b
|
data/bin/Ifd_Automation
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require_relative 'helper.rb'
|
4
|
+
require_relative 'generate.rb'
|
5
|
+
require 'Ifd_Automation/version'
|
6
|
+
|
7
|
+
@features_dir = File.join(FileUtils.pwd, "features")
|
8
|
+
@support_dir = File.join(@features_dir, "support")
|
9
|
+
@support_dir = File.join(@features_dir, "expected_images")
|
10
|
+
@support_dir = File.join(@features_dir, "actual_images")
|
11
|
+
@support_dir = File.join(@features_dir, "image_difference")
|
12
|
+
@support_dir = File.join(@features_dir, "screenshots")
|
13
|
+
@source_dir = File.join(File.dirname(__FILE__), '..', 'features')
|
14
|
+
|
15
|
+
if (ARGV.length == 0)
|
16
|
+
print_usage
|
17
|
+
else
|
18
|
+
cmd = ARGV.shift
|
19
|
+
|
20
|
+
if cmd == "help"
|
21
|
+
print_help
|
22
|
+
elsif cmd == "gen"
|
23
|
+
ifd_automation_scaffold
|
24
|
+
elsif cmd == "version"
|
25
|
+
puts Ifd::Automation::VERSION
|
26
|
+
else
|
27
|
+
print_usage
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
data/bin/generate.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
def ifd_automation_scaffold
|
3
|
+
if File.exists?(@features_dir)
|
4
|
+
puts "A features directory already exists. Stopping..."
|
5
|
+
exit 1
|
6
|
+
end
|
7
|
+
msg("Question") do
|
8
|
+
puts "I'm about to create a subdirectory called features."
|
9
|
+
puts "features will contain all your project tests."
|
10
|
+
puts "Please hit return to confirm that's what you want."
|
11
|
+
end
|
12
|
+
exit 2 unless STDIN.gets.chomp == ''
|
13
|
+
|
14
|
+
FileUtils.cp_r(@source_dir, @features_dir)
|
15
|
+
|
16
|
+
msg("Info") do
|
17
|
+
puts "features subdirectory created. \n"
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
data/bin/helper.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'tempfile'
|
2
|
+
require 'json'
|
3
|
+
require "rubygems"
|
4
|
+
|
5
|
+
def msg(title, &block)
|
6
|
+
puts "\n" + "-"*10 + title + "-"*10
|
7
|
+
block.call
|
8
|
+
puts "-"*10 + "-------" + "-"*10 + "\n"
|
9
|
+
end
|
10
|
+
|
11
|
+
def print_usage
|
12
|
+
puts <<EOF
|
13
|
+
|
14
|
+
Usage: Ifd_Automation <command-name> [parameters] [options]
|
15
|
+
|
16
|
+
<command-name> can be one of
|
17
|
+
help
|
18
|
+
prints more detailed help information.
|
19
|
+
gen
|
20
|
+
generate a features folder structure.
|
21
|
+
version
|
22
|
+
prints the gem version
|
23
|
+
|
24
|
+
<options> can be
|
25
|
+
-v, --verbose Turns on verbose logging
|
26
|
+
EOF
|
27
|
+
end
|
28
|
+
|
29
|
+
def print_help
|
30
|
+
puts <<EOF
|
31
|
+
|
32
|
+
Usage: Ifd_Automation <command-name> [parameters] [options]
|
33
|
+
|
34
|
+
<command-name> can be one of
|
35
|
+
help
|
36
|
+
gen
|
37
|
+
version
|
38
|
+
|
39
|
+
Commands:
|
40
|
+
help : prints more detailed help information.
|
41
|
+
|
42
|
+
gen : creates a skeleton features dir. This is usually used once when
|
43
|
+
setting up ifd-automation to ensure that the features folder contains
|
44
|
+
the right step definitions and environment to run with cucumber.
|
45
|
+
|
46
|
+
version : prints the gem version
|
47
|
+
|
48
|
+
<Options>
|
49
|
+
-v, --verbose Turns on verbose logging
|
50
|
+
EOF
|
51
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# Define global variables
|
2
|
+
$current_dir = File.expand_path(File.dirname(__FILE__))
|
3
|
+
$base_dir = File.expand_path(File.dirname(__FILE__) + '/../..')
|
4
|
+
|
5
|
+
require "#{$current_dir}/project_env.rb"
|
6
|
+
require 'mail'
|
7
|
+
require 'capybara'
|
8
|
+
require 'capybara/cucumber'
|
9
|
+
require 'test/unit'
|
10
|
+
require 'test/unit/assertions'
|
11
|
+
require 'action_mailer'
|
12
|
+
require 'rubygems'
|
13
|
+
require 'Ifd_Automation'
|
14
|
+
Mail.defaults do
|
15
|
+
delivery_method :smtp, {
|
16
|
+
:enable_starttls_auto => true,
|
17
|
+
:address => $SEND_EMAIL_ADDRESS,
|
18
|
+
:port => $SEND_EMAIL_PORT,
|
19
|
+
:domain => $SEND_EMAIL_DOMAIN,
|
20
|
+
:authentication => :plain,
|
21
|
+
:user_name => $SEND_EMAIL_USERNAME,
|
22
|
+
:password => $SEND_EMAIL_PASSWORD
|
23
|
+
}
|
24
|
+
retriever_method :pop3, {
|
25
|
+
:address => $RECEIVE_EMAIL_ADDRESS,
|
26
|
+
:port => $RECEIVE_EMAIL_PORT,
|
27
|
+
:user_name => $RECEIVE_EMAIL_USERNAME,
|
28
|
+
:password => $RECEIVE_EMAIL_PASSWORD,
|
29
|
+
:enable_ssl => true
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
if ENV["SELENIUM"] == 'remote'
|
34
|
+
Capybara.app_host = $_CFWEB['Page Address']
|
35
|
+
Capybara.default_wait_time = $_CFWEB['Wait Time']
|
36
|
+
Capybara.default_driver = :selenium
|
37
|
+
Capybara.register_driver :selenium do |app|
|
38
|
+
if $_CFWEB['Default Browser'] == :firefox
|
39
|
+
profile = Selenium::WebDriver::Firefox::Profile.new
|
40
|
+
profile['browser.download.dir'] = $_CFWEB['Download Dir']
|
41
|
+
profile['browser.download.folderList'] = 2
|
42
|
+
profile['browser.helperApps.neverAsk.saveToDisk'] = "text/csv,application/pdf"
|
43
|
+
capabilities = Selenium::WebDriver::Remote::Capabilities.firefox(:firefox_profile => profile)
|
44
|
+
Capybara::Selenium::Driver.new(app,
|
45
|
+
:browser => :remote,
|
46
|
+
:url => $selenium_grid_url,
|
47
|
+
:desired_capabilities => capabilities)
|
48
|
+
elsif $_CFWEB['Default Browser'] == :internet_explorer
|
49
|
+
capabilities = Selenium::WebDriver::Remote::Capabilities.internet_explorer
|
50
|
+
Capybara::Selenium::Driver.new(app,
|
51
|
+
:browser => :remote,
|
52
|
+
:url => $selenium_grid_url,
|
53
|
+
:desired_capabilities => capabilities)
|
54
|
+
elsif $_CFWEB['Default Browser'] == :chrome
|
55
|
+
prefs = {:download => {:prompt_for_download => false, :default_directory => $_CFWEB['Download Dir']}}
|
56
|
+
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome
|
57
|
+
capabilities['chromeOptions'] = {'prefs' => prefs}
|
58
|
+
Capybara::Selenium::Driver.new(app, :browser => :remote,
|
59
|
+
:url => $selenium_grid_url,
|
60
|
+
:desired_capabilities => capabilities)
|
61
|
+
else
|
62
|
+
puts("Not support browser...")
|
63
|
+
end
|
64
|
+
end
|
65
|
+
else
|
66
|
+
ENV["SELENIUM"] == 'local'
|
67
|
+
Capybara.configure do |config|
|
68
|
+
config.app_host = $_CFWEB['Page Address']
|
69
|
+
config.default_wait_time = $_CFWEB['Wait Time']
|
70
|
+
config.run_server = false
|
71
|
+
config.default_driver = :selenium
|
72
|
+
config.default_selector = :css
|
73
|
+
config.ignore_hidden_elements = true
|
74
|
+
#config.visible_text_only = true
|
75
|
+
end
|
76
|
+
Capybara.register_driver :selenium do |app|
|
77
|
+
if $_CFWEB['Default Browser'] == :firefox
|
78
|
+
profile = Selenium::WebDriver::Firefox::Profile.new
|
79
|
+
profile['browser.download.folderList'] = 2
|
80
|
+
profile['browser.download.dir'] = $_CFWEB['Download Dir']
|
81
|
+
profile['browser.helperApps.neverAsk.saveToDisk'] = "text/csv,application/pdf,application/x-pdf,application/octet-stream"
|
82
|
+
profile["pdfjs.disabled"] = true
|
83
|
+
Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => profile)
|
84
|
+
elsif $_CFWEB['Default Browser'] == :internet_explorer
|
85
|
+
Capybara::Selenium::Driver.new(app, :browser => :internet_explorer)
|
86
|
+
elsif $_CFWEB['Default Browser'] == :chrome
|
87
|
+
prefs = {:download => {
|
88
|
+
:prompt_for_download => false,
|
89
|
+
:default_directory => $_CFWEB['Download Dir']
|
90
|
+
}}
|
91
|
+
args = []
|
92
|
+
args << "--test-type" #to fix the error of chrome "you are using an unsupported command-line flag ignore-certificate-errors"
|
93
|
+
|
94
|
+
Capybara::Selenium::Driver.new(app, :browser => :chrome, :prefs => prefs, :args => args)
|
95
|
+
else
|
96
|
+
puts("Not support browser...")
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
CI_REPORTS = 'features/reports'
|
101
|
+
World(Test::Unit::Assertions)
|
102
|
+
|
@@ -0,0 +1,57 @@
|
|
1
|
+
#Only run IE browser
|
2
|
+
Before('@IE') do
|
3
|
+
$_Old_Default_Browser = $_CFWEB['Default Browser']
|
4
|
+
$_CFWEB['Default Browser'] = 'IE'
|
5
|
+
end
|
6
|
+
After('@IE') do
|
7
|
+
$_CFWEB['Default Browser'] = $_Old_Default_Browser
|
8
|
+
end
|
9
|
+
|
10
|
+
#Only run Chrome browser
|
11
|
+
Before('@CH') do
|
12
|
+
$_Old_Default_Browser = $_CFWEB['Default Browser']
|
13
|
+
$_CFWEB['Default Browser'] = 'CH'
|
14
|
+
end
|
15
|
+
After('@CH') do
|
16
|
+
$_CFWEB['Default Browser'] = $_Old_Default_Browser
|
17
|
+
end
|
18
|
+
|
19
|
+
#Only run Firefox browser
|
20
|
+
Before('@FF') do
|
21
|
+
$_Old_Default_Browser = $_CFWEB['Default Browser']
|
22
|
+
$_CFWEB['Default Browser'] = 'FF'
|
23
|
+
end
|
24
|
+
After('@FF') do
|
25
|
+
$_CFWEB['Default Browser'] = $_Old_Default_Browser
|
26
|
+
end
|
27
|
+
|
28
|
+
Before do
|
29
|
+
begin
|
30
|
+
browser = Capybara.current_session.driver.browser
|
31
|
+
browser.manage.delete_all_cookies
|
32
|
+
rescue StandardError => myStandardError
|
33
|
+
put_log "\n>>> Error: #{myStandardError}"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
After do |scenario|
|
38
|
+
begin
|
39
|
+
Capybara.page.driver.quit
|
40
|
+
Capybara.send(:session_pool).delete_if { |key, value| key =~ /selenium/i }
|
41
|
+
rescue StandardError => myStandardError
|
42
|
+
put_log "\n>>> Error: #{myStandardError}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
at_exit do
|
47
|
+
end
|
48
|
+
|
49
|
+
AfterConfiguration do |config|
|
50
|
+
end
|
51
|
+
|
52
|
+
Around do |scenario, block|
|
53
|
+
block.call
|
54
|
+
end
|
55
|
+
|
56
|
+
AfterStep do |scenario|
|
57
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
$_CFWEB = Hash.new
|
2
|
+
###################################################################
|
3
|
+
# BROWSER CONFIGURATION #
|
4
|
+
###################################################################
|
5
|
+
#---------------------------
|
6
|
+
# :firefox=> "FireFox"
|
7
|
+
# :internet_explorer => "Internet Explorer"
|
8
|
+
# :chrome => "Chrome"
|
9
|
+
#---------------------------
|
10
|
+
$_CFWEB['Print Log'] = true
|
11
|
+
$_CFWEB['Default Browser'] = :firefox
|
12
|
+
$_CFWEB['Wait Time'] = 30
|
13
|
+
$_CFWEB['Maximize Browser'] = true
|
14
|
+
STDOUT.sync = true
|
15
|
+
###################################################################
|
16
|
+
# EDITABLE CONFIGURATION #
|
17
|
+
###################################################################
|
18
|
+
$_CFWEB['Download Dir'] = "#{$test_data_dir}DownloadFolder/"
|
19
|
+
$_CFWEB['Expected Data Dir'] = "#{$test_data_dir}/ExpectedDataFile/"
|
20
|
+
$test_data_dir = $base_dir + '/features/TestData'
|
21
|
+
$sql_dir = $base_dir + '/features/TestData/SqlScript/'
|
22
|
+
$testdata = YAML.load_file("#{$test_data_dir}/testdata.yml")
|
23
|
+
$_CFWEB['Page Address'] = 'http://google.com/'
|
24
|
+
$selenium_grid_url='http://10.5.1.202:5555/wd/hub'
|
25
|
+
###################################################################
|
26
|
+
# DATABASE CONFIGURATION #
|
27
|
+
###################################################################
|
28
|
+
#-----------------------------------------------------------------
|
29
|
+
# $db_type=> "sql_server" || "mysql"
|
30
|
+
#-----------------------------------------------------------------
|
31
|
+
$data_source_username = ''
|
32
|
+
$data_source_password = ''
|
33
|
+
$data_source_url = ''
|
34
|
+
$db_type='sql_server'
|
35
|
+
###################################################################
|
36
|
+
# WEBSERVICE CONFIGURATION #
|
37
|
+
###################################################################
|
38
|
+
$WS_URL = 'http://...'
|
39
|
+
###################################################################
|
40
|
+
# EMAIL CONFIGURATION #
|
41
|
+
###################################################################
|
42
|
+
$SEND_EMAIL_USERNAME=''
|
43
|
+
$SEND_EMAIL_PASSWORD=''
|
44
|
+
$SEND_EMAIL_DOMAIN='gmail.com'
|
45
|
+
$SEND_EMAIL_ADDRESS='smtp.gmail.com'
|
46
|
+
$SEND_EMAIL_PORT= 25
|
47
|
+
#------------------------------------------------------------------
|
48
|
+
$RECEIVE_EMAIL_USERNAME=''
|
49
|
+
$RECEIVE_EMAIL_PASSWORD=''
|
50
|
+
$RECEIVE_EMAIL_ADDRESS='pop.gmail.com'
|
51
|
+
$RECEIVE_EMAIL_PORT=995
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# require_relative 'methods/web_methods'
|
2
|
+
require_relative 'methods/required_files'
|
3
|
+
# page title checking
|
4
|
+
Then(/^I should\s*((?:not)?)\s+see page title as "(.*?)"$/) do |present, title|
|
5
|
+
check_title(title, present.empty?)
|
6
|
+
end
|
7
|
+
|
8
|
+
Then(/^I should\s*((?:not)?)\s+see page title having partial text as "(.*?)"$/) do |present, partial_text_title|
|
9
|
+
check_partial_title(partial_text_title, present.empty?)
|
10
|
+
end
|
11
|
+
|
12
|
+
# check property for object
|
13
|
+
Then /^I check property "(.*?)" with "(.*?)" has( | not)? value "(.*?)"$/ do |object, property, negate, value|
|
14
|
+
value = var_collect(value)
|
15
|
+
execute_checkproperty(object, property, negate, value)
|
16
|
+
end
|
17
|
+
|
18
|
+
Then /^the following multiline step should (fail|succeed):$/ do |expectation, multiline_step|
|
19
|
+
multiline_step = multiline_step.gsub(%{'''}, %{"""})
|
20
|
+
if expectation == 'fail'
|
21
|
+
expect { steps(multiline_step) }.to raise_error(RSPEC_EXPECTATION_NOT_MET_ERROR)
|
22
|
+
else # succeed
|
23
|
+
steps(multiline_step)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
Then /^the following steps? should (fail|succeed):$/ do |expectation, steps_table|
|
28
|
+
steps = steps_table.raw.flatten
|
29
|
+
|
30
|
+
steps.each do |step|
|
31
|
+
if expectation == 'fail'
|
32
|
+
expect { step(step) }.to raise_error(RSPEC_EXPECTATION_NOT_MET_ERROR)
|
33
|
+
else # succeed
|
34
|
+
step(step)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
Then /^I should see a form with the following values:$/ do |table|
|
40
|
+
expectations = table.raw
|
41
|
+
expectations.each do |label, expected_value|
|
42
|
+
step %(I check property "#{label}" with "text" has value "#{expected_value}")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
Then /^Status of "([^\"]*)" should be "(disabled|enabled)"$/ do |element, status|
|
47
|
+
puts "status: #{status} => status =='disabled': #{status =='disabled'}"
|
48
|
+
foundElement = if(status =='disabled')
|
49
|
+
find_object(element + "{'disabled':'true'}")
|
50
|
+
elsif (status =='enabled')
|
51
|
+
find_object(element + "{'disabled':''}")
|
52
|
+
else
|
53
|
+
puts "Error >> '#{status }' status is not support."
|
54
|
+
exit
|
55
|
+
end
|
56
|
+
|
57
|
+
if foundElement == nil
|
58
|
+
puts "Error >> Not found object..."
|
59
|
+
exit
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
And /^I check( not)? exists element is "(.*?)"$/ do |negate, object|
|
64
|
+
#negate = negate.strip if negate != nil
|
65
|
+
execute_checkexists(negate, object,2)
|
66
|
+
end
|
67
|
+
|
68
|
+
# step to assert checkbox is checked or unchecked
|
69
|
+
Then(/^checkbox "(.*?)" should be (checked|unchecked)$/) do |element, state|
|
70
|
+
flag = state == 'checked'
|
71
|
+
is_checkbox_checked(element, flag)
|
72
|
+
end
|
73
|
+
|
74
|
+
# steps to assert radio button checked or unchecked
|
75
|
+
Then(/^radio button "(.*?)" should be (selected|unselected)$/) do |element, state|
|
76
|
+
flag = state == 'selected'
|
77
|
+
is_radio_button_selected(element, flag)
|
78
|
+
end
|
79
|
+
|
80
|
+
# step to assert javascript pop-up alert text
|
81
|
+
Then(/^I should see alert text as "(.*?)"$/) do |actual_value|
|
82
|
+
check_alert_text(actual_value)
|
83
|
+
end
|
84
|
+
|
85
|
+
# step to assert difference in images
|
86
|
+
Then(/^actual image having (.+) "(.*?)" and expected image having (.+) "(.*?)" should be similar$/) do |actual_img_access_type, actual_img_access_name, excp_img_access_type, excp_img_access_name|
|
87
|
+
IFD_Assertion.does_images_similar?(actual_img_access_type, actual_img_access_name, excp_img_access_type, excp_img_access_name)
|
88
|
+
end
|
89
|
+
|
90
|
+
# step to check element enabled or not
|
91
|
+
Then(/^element "([^\"]*)" should\s*((?:not)?)\s+be (enabled|disabled)$/) do |element, present, state|
|
92
|
+
flag = state == 'enabled'
|
93
|
+
flag = !flag unless present.empty?
|
94
|
+
check_element_enable(element, flag)
|
95
|
+
end
|
96
|
+
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'mail'
|
2
|
+
require_relative 'methods/required_files'
|
3
|
+
# Before do
|
4
|
+
# ActionMailer::Base.deliveries.clear
|
5
|
+
# end
|
6
|
+
|
7
|
+
Then /^I send the email to "(.*)" with subject is "(.*)" and email body in "(.*)" file$/ do |to_address, subject, file|
|
8
|
+
data_file = File.read($test_data_dir + file)
|
9
|
+
filepath = ($test_data_dir + file)
|
10
|
+
body_email = data_file.force_encoding('UTF-8').encode('UTF-16', :invalid => :replace, :replace => "'").encode('UTF-8')
|
11
|
+
if File.exist?(filepath)
|
12
|
+
IFD_Email.send_email(to_address, subject, body_email)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
Then /^I send the email to "(.*)" with subject is "(.*)" and email body "(.*)"$/ do |to_address, subject, email_body|
|
16
|
+
email_body = email_body.force_encoding('UTF-8').encode('UTF-16', :invalid => :replace, :replace => "'").encode('UTF-8')
|
17
|
+
IFD_Email.send_email(to_address, subject, email_body)
|
18
|
+
end
|
19
|
+
|
20
|
+
Then /^I should receive the email from "(.*)" with subject "(.*)"$/ do |email_from, email_subject|
|
21
|
+
sleep 5
|
22
|
+
emails = Mail.find(:what => :last, :count => 1)
|
23
|
+
if emails.instance_of? Mail::Message
|
24
|
+
# puts emails.from[0].to_s
|
25
|
+
IFD_Assertion.assert_string_equal(email_from, emails.from[0].to_s)
|
26
|
+
IFD_Assertion.assert_string_equal(email_subject, emails.subject)
|
27
|
+
else
|
28
|
+
raise "WARNING: *** No new Email is found"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
Then /^I should receive the mail from "(.*)" with Email content has following value:$/ do |email_from, email_content|
|
33
|
+
sleep 5
|
34
|
+
emails = Mail.find(:what => :last, :count => 1)
|
35
|
+
if emails.instance_of? Mail::Message
|
36
|
+
IFD_Assertion.assert_string_equal(email_from, emails.from[0].to_s)
|
37
|
+
email_content.raw[0].each do |line|
|
38
|
+
assert(true) if emails.body.should include(line.strip)
|
39
|
+
end
|
40
|
+
else
|
41
|
+
raise "WARNING: *** No new Email is found"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
Then /^I should receive the mail from "(.*)" with subject "(.*)" amd Email content has following value:$/ do |email_from,email_subject, email_content|
|
46
|
+
sleep 5
|
47
|
+
emails = Mail.find(:what => :last, :count => 1)
|
48
|
+
if emails.instance_of? Mail::Message
|
49
|
+
IFD_Assertion.assert_string_equal(email_from, emails.from[0].to_s)
|
50
|
+
IFD_Assertion.assert_string_equal(email_subject, emails.subject)
|
51
|
+
email_content.raw[0].each do |line|
|
52
|
+
assert(true) if emails.body.should include(line.strip)
|
53
|
+
end
|
54
|
+
else
|
55
|
+
raise "WARNING: *** No new Email is found"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
Then /^I send the email to "(.*)" with subject is "(.*)" and email body template in "(.*)" file and following conditions:$/ do |to_address, subject, file, data_table|
|
60
|
+
data_file = File.read($test_data_dir + file)
|
61
|
+
filepath = ($test_data_dir + file)
|
62
|
+
body_email = data_file.force_encoding('UTF-8').encode('UTF-16', :invalid => :replace, :replace => "'").encode('UTF-8')
|
63
|
+
if File.exist?(filepath)
|
64
|
+
raw_data = JSON.parse(JSON.generate(data_table))
|
65
|
+
header = raw_data[0]
|
66
|
+
value = raw_data[1]
|
67
|
+
$test = String.new
|
68
|
+
$i = 0
|
69
|
+
body_email.each_line do |lines|
|
70
|
+
header.zip(value).each do |headers, values|
|
71
|
+
group1, group2, group3= lines.match(/(^.*)(:)(.*)/i).try(:captures)
|
72
|
+
if headers == group1 && group1.size > 0
|
73
|
+
$new_value = lines.gsub(group3, " #{values}")
|
74
|
+
$test += "#{$new_value}"
|
75
|
+
$i = 1
|
76
|
+
break
|
77
|
+
elsif headers == "taaknummer"
|
78
|
+
$new_value = lines.gsub("[TASKID]", " #{values}")
|
79
|
+
$test += "#{$new_value}"
|
80
|
+
$i = 1
|
81
|
+
else
|
82
|
+
$i = 0
|
83
|
+
end
|
84
|
+
end
|
85
|
+
if $i == 0
|
86
|
+
$test += "#{lines}"
|
87
|
+
end
|
88
|
+
end
|
89
|
+
IFD_Email.send_email(to_address, subject, $test)
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# require_relative 'methods/javascript_handling_methods'
|
2
|
+
require_relative 'methods/required_files'
|
3
|
+
|
4
|
+
Then(/^I accept pop-up alert$/) do
|
5
|
+
handle_alert('accept')
|
6
|
+
end
|
7
|
+
|
8
|
+
Then(/^I dismiss pop-up alert$/) do
|
9
|
+
handle_alert('dismiss')
|
10
|
+
end
|
11
|
+
|
12
|
+
And /^I focus in new open page$/ do
|
13
|
+
switch_to_windows(last)
|
14
|
+
end
|
15
|
+
|
16
|
+
And /^I focus in previous page$/ do
|
17
|
+
switch_to_windows(first)
|
18
|
+
end
|
19
|
+
|
20
|
+
And /^I close current windows$/ do
|
21
|
+
close_windows
|
22
|
+
end
|
23
|
+
|
24
|
+
Given /^I go back to the previous page$/ do
|
25
|
+
get_browser_back
|
26
|
+
end
|
27
|
+
|
28
|
+
When /^I refresh this page$/ do
|
29
|
+
refresh_page
|
30
|
+
end
|
31
|
+
|
32
|
+
And /^I open new browser windows$/ do
|
33
|
+
open_new_windows_browser
|
34
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require_relative 'methods/required_files'
|
2
|
+
Then /^All records in download file "(.*)" must be included in expected file "(.*)"$/ do |dl_file, expected_file|
|
3
|
+
# Read downloaded file and expected file
|
4
|
+
actual_file_path = ($_CFWEB['Download Dir'] + dl_file)
|
5
|
+
expected_file_path= ($_CFWEB['Expected Data Dir'] + expected_file)
|
6
|
+
if File.exist?(actual_file_path) && File.exist?(expected_file_path)
|
7
|
+
actual_lines = CSV.read($_CFWEB['Download Dir'] + dl_file)
|
8
|
+
expected_lines = CSV.read($_CFWEB['Expected Data Dir'] + expected_file)
|
9
|
+
# Assert 2 CSV files
|
10
|
+
IFD_Assertion.do_assertion_csv_tab_non_order(expected_lines, actual_lines)
|
11
|
+
else
|
12
|
+
raise "*** ERROR: Please check #{expected_file} or #{expected_file_path} exists."
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
Then /^I run exe file "(.*)" on windows$/ do |filename|
|
18
|
+
if File.exist?(filename)
|
19
|
+
system("'"+filename+"'")
|
20
|
+
else
|
21
|
+
raise "*** ERROR: Please check Actual File or Expected file exists."
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Delete downloaded file
|
26
|
+
Then /^I delete previous downloaded (tab|csv) files of "(.*)"$/ do |extension, file_prefix|
|
27
|
+
#Check file whose name include file_prefix in downloaded folder
|
28
|
+
Dir.open($_CFWEB['Download Dir']).each do |filename|
|
29
|
+
#Delete if file exists
|
30
|
+
if filename.include? file_prefix then
|
31
|
+
File.delete($_CFWEB['Download Dir']+filename)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
#Delete file from $test_data_dir folder
|
37
|
+
Then /^I delete file "(.*)" on Data folder/ do |file_name|
|
38
|
+
file = ($test_data_dir + file_name)
|
39
|
+
if File.exists?(file)
|
40
|
+
File.delete(file)
|
41
|
+
puts "#{file_name} is deleted successfully"
|
42
|
+
else
|
43
|
+
puts "#{file_name} does not exists"
|
44
|
+
end
|
45
|
+
end
|