taf 0.5.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/lib/taf.rb +1 -5
  3. data/lib/taf/browser.rb +19 -17
  4. data/lib/taf/screenshot.rb +1 -1
  5. data/lib/taf/test_steps.rb +1 -1
  6. data/lib/taf/test_steps/handlers/base.rb +7 -35
  7. data/lib/taf/test_steps/handlers/base/browser_back.rb +1 -1
  8. data/lib/taf/test_steps/handlers/base/browser_forward.rb +1 -1
  9. data/lib/taf/test_steps/handlers/base/browser_refresh.rb +1 -1
  10. data/lib/taf/test_steps/handlers/base/capture_alert.rb +2 -2
  11. data/lib/taf/test_steps/handlers/base/check_browser_title.rb +1 -1
  12. data/lib/taf/test_steps/handlers/base/check_logs.rb +2 -2
  13. data/lib/taf/test_steps/handlers/base/check_screendata.rb +1 -3
  14. data/lib/taf/test_steps/handlers/base/check_url.rb +1 -1
  15. data/lib/taf/test_steps/handlers/base/click_button.rb +11 -15
  16. data/lib/taf/test_steps/handlers/base/execute_system_command.rb +2 -2
  17. data/lib/taf/test_steps/handlers/base/generate_token.rb +2 -2
  18. data/lib/taf/test_steps/handlers/base/handle_browser_window.rb +10 -8
  19. data/lib/taf/test_steps/handlers/base/leave_iframe.rb +22 -0
  20. data/lib/taf/test_steps/handlers/base/login.rb +35 -29
  21. data/lib/taf/test_steps/handlers/base/open_url.rb +1 -1
  22. data/lib/taf/test_steps/handlers/base/radio_or_checkbox_button.rb +22 -0
  23. data/lib/taf/test_steps/handlers/base/select_dropdown.rb +3 -3
  24. data/lib/taf/test_steps/handlers/base/send_special_keys.rb +1 -1
  25. data/lib/taf/test_steps/handlers/base/switch_to_iframe.rb +21 -0
  26. data/lib/taf/test_steps/handlers/base/switch_to_original_tab_or_window.rb +23 -0
  27. data/lib/taf/test_steps/handlers/base/write_box_data.rb +2 -18
  28. data/lib/taf/version.rb +1 -1
  29. metadata +6 -20
  30. data/lib/taf/test_steps/handlers/base/check_box.rb +0 -22
  31. data/lib/taf/test_steps/handlers/base/check_boxdata.rb +0 -46
  32. data/lib/taf/test_steps/handlers/base/list_all_dropdowns_values.rb +0 -23
  33. data/lib/taf/test_steps/handlers/base/radio_button.rb +0 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 31c202a157c5f26907dacb3a08df58921f03cea0a5eb9bcc75523cdd7b44c148
4
- data.tar.gz: 22aefc58b15a5b6ea4c0396c82528ff335d9cd1ca05e7dfae6978c44b7d902a2
3
+ metadata.gz: 3b23df94f306d0f67dc7c0c5baf2c707aabcde4a286b8dd811b33f123dfb329b
4
+ data.tar.gz: 433d583f64e1bf46b77f4e2954e78e11d13584e162d60ad539e12b9c79b57338
5
5
  SHA512:
6
- metadata.gz: db6b224929133960d7adebe1a6069773f97bb170a0a7a620d9320a04d74e4736be1dfe4c53f56ffb67e94d343e1c839aad043ba9acc790a3c14915826259f893
7
- data.tar.gz: 95ee60dfb7b653b4110d8c8652e84c8eb4bce57b2cb4a7432901fe40308dc6d12e61561532ae1c52eb7eb5e24adc39ea94604cf6701bd1e1742c4c99e180b7f3
6
+ metadata.gz: dfe2d1437c34f7239047be0ba88435c72c6b62b8ac2c986d4943db8a1bdf994ff04b25ab88cce17e7667fed49b5f5b0c1318f55f49aaba6053d03778286db19b
7
+ data.tar.gz: c4bfaf18143ca30df636cff7787a4d74de344a2991cc805736ad67d617a13bacca7fce8716814d3c6a829641e398931675bacb01b9212b4c57105227a3f4f6fc
data/lib/taf.rb CHANGED
@@ -19,7 +19,6 @@ module Taf
19
19
  require 'securerandom'
20
20
  require 'selenium-webdriver'
21
21
  require 'time_difference'
22
- require 'watir'
23
22
 
24
23
  require 'taf/browser'
25
24
  require 'taf/cmd_line'
@@ -42,10 +41,7 @@ module Taf
42
41
 
43
42
  # Load all handlers.
44
43
  Dir[File.expand_path('taf/test_steps/handlers/base/*.rb', __dir__)]
45
- .each do |f|
44
+ .sort.each do |f|
46
45
  require f
47
46
  end
48
-
49
- # Watir config. set wait:
50
- Watir.default_timeout = 60
51
47
  end
@@ -31,16 +31,17 @@ module Taf
31
31
  def self.chrome
32
32
  case @browser_name
33
33
  when @chrome_name
34
- chrome_values = %w[
35
- --acceptInsecureCerts-true --start-maximized --window-size=1920,1080
36
- ]
34
+ options = Selenium::WebDriver::Chrome::Options.new
35
+ options.add_argument('--ignore-certificate-errors')
36
+ options.add_argument('--window-size=1920,1080')
37
37
  when @chrome_headless_name
38
- chrome_values = %w[
39
- --start-maximized --disable-gpu --headless --acceptInsecureCerts-true
40
- --no-sandbox --window-size=1920,1080
41
- ]
38
+ options = Selenium::WebDriver::Chrome::Options.new
39
+ options.add_argument('--headless')
40
+ options.add_argument('--ignore-certificate-errors')
41
+ options.add_argument('--window-size=1920,1080')
42
42
  end
43
- @browser = Watir::Browser.new :chrome, switches: chrome_values
43
+ @browser = Selenium::WebDriver.for :chrome, options: options
44
+ @browser.manage.timeouts.implicit_wait = 120
44
45
  end
45
46
 
46
47
  # firefox browser details
@@ -49,14 +50,14 @@ module Taf
49
50
  caps['acceptInsecureCerts'] = true
50
51
  case @browser_name
51
52
  when @firefox_name
52
- driver = Selenium::WebDriver.for(:firefox, desired_capabilities: caps)
53
+ @browser = Selenium::WebDriver.for(:firefox, desired_capabilities: caps)
53
54
  when @firefox_headless_name
54
55
  options = Selenium::WebDriver::Firefox::Options.new(args: ['-headless'])
55
- driver = Selenium::WebDriver.for(:firefox, options: options,
56
- desired_capabilities: caps)
56
+ @browser = Selenium::WebDriver.for(:firefox, options: options,
57
+ desired_capabilities: caps)
57
58
  end
58
- @browser = Watir::Browser.new(driver)
59
- @browser.driver.manage.window.maximize
59
+ @browser.manage.window.maximize
60
+ @browser.manage.timeouts.implicit_wait = 120
60
61
  end
61
62
 
62
63
  # define browser value
@@ -68,7 +69,7 @@ module Taf
68
69
  def self.browser_version
69
70
  case @browser_name
70
71
  when @chrome_name, @chrome_headless_name
71
- @browser.driver.capabilities[:version]
72
+ @browser.capabilities[:version]
72
73
  when @firefox_name, @firefox_headless_name
73
74
  @browser.execute_script('return navigator.userAgent;').split('/')[-1]
74
75
  else
@@ -78,12 +79,13 @@ module Taf
78
79
 
79
80
  # Check platform
80
81
  def self.browser_platform
82
+ ptf = @browser.execute_script('return navigator.userAgent;').split(';')[1]
83
+
81
84
  case @browser_name
82
85
  when @chrome_name, @chrome_headless_name
83
- @browser.execute_script('return navigator.userAgent;')
84
- .split(';')[1].split(')')[0]
86
+ ptf.split(')')[0]
85
87
  when @firefox_name, @firefox_headless_name
86
- @browser.execute_script('return navigator.userAgent;').split(';')[1]
88
+ ptf
87
89
  else
88
90
  'No Platform found'
89
91
  end
@@ -18,7 +18,7 @@ module Taf
18
18
  "_Test_step-#{test_step_idx}_Failed_#{time}.png"
19
19
 
20
20
  # Screenshot capture for websites
21
- Taf::Browser.b.screenshot.save sc_file_name
21
+ Taf::Browser.b.save_screenshot sc_file_name
22
22
  Taf::MyLog.log.info("Screenshot saved to: #{sc_file_name} \n")
23
23
  sc_file_name
24
24
  rescue StandardError => e
@@ -34,7 +34,7 @@ module Taf
34
34
  metrics
35
35
  )
36
36
  Taf::Report.check_failure_threshold(test_file_name)
37
- return true
37
+ true
38
38
  else
39
39
  Taf::MyLog.log.warn "\nUnable to match function: #{step_function}"
40
40
  raise Taf::UnknownTestStep, "Unknown test step: #{step_function}"
@@ -21,11 +21,11 @@ module Taf
21
21
  end
22
22
 
23
23
  def login_process(b_title, user_elm, pass_elm, user, pass)
24
- if Taf::Browser.b.title.eql?(b_title)
25
- Taf::Browser.b.text_field(id: user_elm).wait_until(&:exists?)
26
- .set user
27
- Taf::Browser.b.text_field(id: pass_elm).set pass
28
- Taf::Browser.b.button(value: 'Sign in').wait_until(&:exists?).click
24
+ if Taf::Browser.b.title.eql? b_title
25
+ Taf::Browser.b.find_element(id: user_elm).displayed?
26
+ Taf::Browser.b.find_element(id: user_elm).send_keys user
27
+ Taf::Browser.b.find_element(id: pass_elm).send_keys pass
28
+ Taf::Browser.b.find_element(name: 'commit').click
29
29
  sleep 1
30
30
  else
31
31
  Taf::MyLog.log.warn("User: #{user} has failed to log in.")
@@ -33,7 +33,7 @@ module Taf
33
33
  end
34
34
 
35
35
  def url_check(url)
36
- if Taf::Browser.b.url == url
36
+ if Taf::Browser.b.current_url == url
37
37
  Taf::MyLog.log.info("URL: #{url} is correct.")
38
38
  true
39
39
  else
@@ -43,7 +43,7 @@ module Taf
43
43
  end
44
44
 
45
45
  def login_check(b_title_success, user)
46
- if Taf::Browser.b.title.eql?(b_title_success)
46
+ if Taf::Browser.b.title.eql? b_title_success
47
47
  Taf::MyLog.log.info("User: #{user} has logged in successful.")
48
48
  true
49
49
  else
@@ -51,34 +51,6 @@ module Taf
51
51
  false
52
52
  end
53
53
  end
54
-
55
- def portal_mem_word(user, b_title_success)
56
- password = ENV['PORTAL_MEM']
57
- nums = (1..256).to_a
58
- found_mem_nums = nums.each_with_object([]) do |num_val, mem_word|
59
- elm_id = "user_memorable_parts_#{num_val}"
60
- mem_word.push(num_val) if Taf::Browser.b.select(id: elm_id).exist?
61
- end.compact
62
-
63
- array_password = password.split('')
64
- array_password.map!(&:upcase)
65
-
66
- found_mem_nums.each do |mem_num|
67
- char = array_password[(mem_num - 1)]
68
- elm_id = "user_memorable_parts_#{mem_num}"
69
- Taf::Browser.b.select_list(id: elm_id).option(value: char.to_s)
70
- .select
71
- end
72
-
73
- Taf::Browser.b.button(value: 'Sign in').wait_until(&:exists?).click
74
- if Taf::Browser.b.title.eql?(b_title_success)
75
- Taf::MyLog.log.info("User: #{user} has logged in successful.")
76
- return true
77
- else
78
- Taf::MyLog.log.warn("User: #{user} has failed to log in.")
79
- return false
80
- end
81
- end
82
54
  end
83
55
  end
84
56
  end
@@ -8,7 +8,7 @@ module Taf
8
8
  register :browser_back
9
9
 
10
10
  def perform
11
- Taf::Browser.b.back
11
+ Taf::Browser.b.navigate.back
12
12
  Taf::MyLog.log.info('Browser navigated back')
13
13
  true
14
14
  rescue StandardError
@@ -8,7 +8,7 @@ module Taf
8
8
  register :browser_forward
9
9
 
10
10
  def perform
11
- Taf::Browser.b.forward
11
+ Taf::Browser.b.navigate.forward
12
12
  Taf::MyLog.log.info('Browser navigated forward')
13
13
  true
14
14
  rescue StandardError
@@ -8,7 +8,7 @@ module Taf
8
8
  register :browser_refresh
9
9
 
10
10
  def perform
11
- Taf::Browser.b.refresh
11
+ Taf::Browser.b.navigate.refresh
12
12
  Taf::MyLog.log.info('The Browser has been refreshed')
13
13
  true
14
14
  rescue StandardError
@@ -8,8 +8,8 @@ module Taf
8
8
  register :capture_alert
9
9
 
10
10
  def perform
11
- Taf::Browser.b.div(class: 'alert').exist?
12
- alertmsg = Taf::Browser.b.div(class: 'alert').text
11
+ Taf::Browser.b.find_element(class: 'alert').displayed?
12
+ alertmsg = Taf::Browser.b.find_element(class: 'alert').text
13
13
  Taf::MyLog.log.info("Alert shown: #{alertmsg}")
14
14
  true
15
15
  rescue StandardError
@@ -8,7 +8,7 @@ module Taf
8
8
  register :check_browser_title
9
9
 
10
10
  def perform
11
- Taf::Browser.b.wait_until { Taf::Browser.b.title.eql? @value }
11
+ Taf::Browser.b.title.eql? @value
12
12
  Taf::MyLog.log.info("Browser title: #{@value}")
13
13
  true
14
14
  rescue StandardError
@@ -12,11 +12,11 @@ module Taf
12
12
  if result == true
13
13
  Taf::MyLog.log.info \
14
14
  "Data has matched: #{@value} in LogFile: #{@value2}"
15
- return true
15
+ true
16
16
  else
17
17
  Taf::MyLog.log.warn \
18
18
  "Problem finding: #{@value} in LogFile: #{@value2}"
19
- return false
19
+ false
20
20
  end
21
21
  end
22
22
  end
@@ -8,9 +8,7 @@ module Taf
8
8
  register :check_screen_data
9
9
 
10
10
  def perform
11
- Taf::Browser.b.wait_until do
12
- Taf::Browser.b.element.text.include? @value
13
- end
11
+ Taf::Browser.b.page_source.include? @value
14
12
  Taf::MyLog.log.info("Text found: #{@value}")
15
13
  true
16
14
  rescue StandardError
@@ -8,7 +8,7 @@ module Taf
8
8
  register :check_url
9
9
 
10
10
  def perform
11
- if Taf::Browser.b.url == @value
11
+ if Taf::Browser.b.current_url == @value
12
12
  Taf::MyLog.log.info("URL: #{@value} is correct")
13
13
  true
14
14
  else
@@ -8,22 +8,18 @@ module Taf
8
8
  register :click_button
9
9
 
10
10
  def perform
11
- # Optimisation: if we can immediately find the target in the DOM
12
- # under a specific tag we should use it.
13
- @tag = %i[button span a div link image h1 h2 h3 h4].find do |e|
14
- Taf::Browser.b.send(e, "#{@locate}": @value).exists?
11
+ if @locate['text']
12
+ butt = Taf::Browser.b.find_element(xpath: "//*[text()='#{@value}']")
13
+ butt.displayed?
14
+ butt.click
15
+ Taf::MyLog.log.info("Button: #{@value} has been selected")
16
+ true
17
+ else
18
+ button = Taf::Browser.b.find_element("#{@locate}": @value)
19
+ button.displayed?
20
+ button.click
21
+ Taf::MyLog.log.info("Button: #{@value} has been selected")
15
22
  end
16
-
17
- # Otherwise, fallback to locating across the entire DOM.
18
- # This can be necessary for when content rendering is deferred
19
- # (e.g., a loader in a SPA) or if the user wants to use CSS or XPath.
20
- @tag ||= :element
21
-
22
- Taf::Browser.b.send(@tag, "#{@locate}": @value).wait_until(&:exists?)
23
- .click
24
-
25
- Taf::MyLog.log.info("Button: #{@value} has been selected")
26
- true
27
23
  rescue StandardError
28
24
  Taf::MyLog.log.warn("Button: #{@value} does not exist")
29
25
  false
@@ -11,10 +11,10 @@ module Taf
11
11
  b_result = system @value
12
12
  if b_result == true
13
13
  Taf::MyLog.log.info("Cmd has been executed sucessfully #{@value}")
14
- return true
14
+ true
15
15
  else
16
16
  Taf::MyLog.log.warn("Theres a problem executing command #{@value}")
17
- return false
17
+ false
18
18
  end
19
19
  end
20
20
  end
@@ -17,8 +17,8 @@ module Taf
17
17
 
18
18
  raise stderr.gets unless wait_thr.value.success?
19
19
 
20
- Taf::Browser.b.send(:text_field, "#{@locate}": @value)
21
- .wait_until(&:exists?).send_keys stdout.gets
20
+ Taf::Browser.b.find_element("#{@locate}": @value)
21
+ .send_keys stdout.gets
22
22
 
23
23
  stdout.close
24
24
  stderr.close
@@ -8,14 +8,16 @@ module Taf
8
8
  register :handle_browser_window
9
9
 
10
10
  def perform
11
- Taf::Browser.b.window(title: @value.to_s).use
12
- sleep 3
13
- Taf::Browser.b.title.eql?(@value.to_s)
14
- Taf::MyLog.log.info("Window title: #{@value} is correct")
15
- true
16
- rescue StandardError
17
- Taf::MyLog.log.warn("Window not found: #{@value}")
18
- false
11
+ Taf::Browser.b.window_handles.each do |handle|
12
+ Taf::Browser.b.switch_to.window handle
13
+ sleep 3
14
+ Taf::Browser.b.title.eql?(@value.to_s)
15
+ Taf::MyLog.log.info("Window title: #{@value} is correct")
16
+ true
17
+ rescue StandardError
18
+ Taf::MyLog.log.warn("Window not found: #{@value}")
19
+ false
20
+ end
19
21
  end
20
22
  end
21
23
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Taf
4
+ module TestSteps
5
+ module Handlers
6
+ # Handle leave iframe function.
7
+ class LeaveIframe < Base
8
+ register :leave_iframe
9
+
10
+ def perform
11
+ # Return to the top level
12
+ Taf::Browser.b.switch_to.default_content
13
+ Taf::MyLog.log.info('iframe switched to top level successfully')
14
+ true
15
+ rescue StandardError
16
+ Taf::MyLog.log.warn('iframe failed to switched to top level')
17
+ false
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -16,7 +16,9 @@ module Taf
16
16
 
17
17
  def login_user(user)
18
18
  case @value.downcase
19
+ when 'admin_portal_login' then admin_portal_login(user)
19
20
  when 'portal_login' then portal_login(user)
21
+ when 'sint_login' then sint_login(user)
20
22
  when 'sso_login' then sso_login(user)
21
23
  else
22
24
  Taf::MyLog.log.error "unable to find login: #{@value}"
@@ -26,40 +28,32 @@ module Taf
26
28
 
27
29
  private
28
30
 
31
+ def admin_portal_login(user)
32
+ url = ENV['ADMINL_URL']
33
+ pass = ENV['ADMIN_USER_PASS']
34
+ b_title = 'Log in Portal Admin'
35
+ b_title_success = 'Home Admin Portal'
36
+ user_elm = 'admin_username'
37
+ pass_elm = 'admin_password'
38
+
39
+ Taf::Browser.b.navigate.to(url)
40
+ url_check(url)
41
+ login_process(b_title, user_elm, pass_elm, user, pass)
42
+ login_check(b_title_success, user)
43
+ end
44
+
29
45
  def portal_login(user)
30
46
  url = ENV['PORTAL_URL']
31
47
  pass = ENV['PORTAL_USER_PASS']
32
- b_title = 'Log in'
33
- b_title_success = 'Home'
34
- memorable_word_title = 'Memorable word'
48
+ b_title = 'Log in Portal'
49
+ b_title_success = 'Home Portal'
35
50
  user_elm = 'user_email'
36
51
  pass_elm = 'user_password'
37
- max_retry = 2
38
52
 
39
- max_retry.times do
40
- Taf::Browser.b.goto(url)
41
- url_check(url)
42
- login_process(b_title, user_elm, pass_elm, user, pass)
43
-
44
- begin
45
- Taf::Browser.b.wait_until(timeout: 30) do |b|
46
- b.title == b_title_success || b.title == memorable_word_title
47
- end
48
- rescue Watir::Wait::TimeoutError
49
- Taf::MyLog.log.warn('Retrying login process...')
50
- next
51
- end
52
-
53
- success = true
54
-
55
- if Taf::Browser.b.title.eql?(memorable_word_title)
56
- success = portal_mem_word(user, b_title_success)
57
- end
58
-
59
- return success
60
- end
61
-
62
- false
53
+ Taf::Browser.b.navigate.to(url)
54
+ url_check(url)
55
+ login_process(b_title, user_elm, pass_elm, user, pass)
56
+ login_check(b_title_success, user)
63
57
  end
64
58
 
65
59
  def sso_login(user)
@@ -69,7 +63,19 @@ module Taf
69
63
  user_elm = 'username'
70
64
  pass_elm = 'password'
71
65
 
72
- Taf::Browser.b.goto(url)
66
+ login_process(b_title, user_elm, pass_elm, user, pass)
67
+ login_check(b_title_success, user)
68
+ end
69
+
70
+ def sint_login(user)
71
+ url = ENV['SINT_URL']
72
+ pass = ENV['SINT_USER_PASS']
73
+ b_title = 'SINT'
74
+ b_title_success = 'SINT'
75
+ user_elm = 'user_username'
76
+ pass_elm = 'user_password'
77
+
78
+ Taf::Browser.b.navigate.to(url)
73
79
  url_check(url)
74
80
  login_process(b_title, user_elm, pass_elm, user, pass)
75
81
  login_check(b_title_success, user)
@@ -13,7 +13,7 @@ module Taf
13
13
  else
14
14
  @value
15
15
  end
16
- Taf::Browser.b.goto(url)
16
+ Taf::Browser.b.navigate.to(url)
17
17
  true
18
18
  end
19
19
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Taf
4
+ module TestSteps
5
+ module Handlers
6
+ # Radio or Checkbox Button function.
7
+ class RadioCheckboxButton < Base
8
+ register :radio_or_checkbox_button
9
+
10
+ def perform
11
+ Taf::Browser.b.find_element("#{@locate}": @value).click
12
+ Taf::Browser.b.find_element("#{@locate}": @value).selected?
13
+ Taf::MyLog.log.info("Check box / Radio: #{@value} has been selected")
14
+ true
15
+ rescue StandardError
16
+ Taf::MyLog.log.warn("Check box / Radio: #{@value} does not exist")
17
+ false
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -8,9 +8,9 @@ module Taf
8
8
  register :select_dropdown
9
9
 
10
10
  def perform
11
- ele = Taf::Browser.b.select_list("#{@locate}": @value)
12
-
13
- ele.wait_until(&:exists?).select @value2.to_s
11
+ element = Taf::Browser.b.find_element("#{@locate}": @value)
12
+ select = Selenium::WebDriver::Support::Select.new(element)
13
+ select.select_by(:text, @value2)
14
14
  Taf::MyLog.log.info("Dropdown item: #{@value2} has been selected")
15
15
  true
16
16
  rescue StandardError
@@ -8,7 +8,7 @@ module Taf
8
8
  register :send_special_keys
9
9
 
10
10
  def perform
11
- Taf::Browser.b.send_keys :"#{@value}"
11
+ Taf::Browser.b.action.send_keys(:"#{@value}").perform
12
12
  sleep 1
13
13
  Taf::MyLog.log.info("Browser Sent key: :#{@value} successfully")
14
14
  true
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Taf
4
+ module TestSteps
5
+ module Handlers
6
+ # Handle switch to iframe function.
7
+ class SwitchToIframe < Base
8
+ register :switch_to_iframe
9
+
10
+ def perform
11
+ Taf::Browser.b.switch_to.frame @value.to_s
12
+ Taf::MyLog.log.info("Switched to iframe: #{@value} successfully")
13
+ true
14
+ rescue StandardError
15
+ Taf::MyLog.log.warn("Failed to switch to iframe: #{@value}")
16
+ false
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Taf
4
+ module TestSteps
5
+ module Handlers
6
+ # Handle Browser Window function.
7
+ class SwitchToOriginalTabOrWindow < Base
8
+ register :switch_to_original_tab_or_window
9
+
10
+ def perform
11
+ Taf::Browser.b.switch_to.window original_window
12
+ sleep 2
13
+ Taf::Browser.b.title.eql?(@value.to_s)
14
+ Taf::MyLog.log.info("Original Window title: #{@value} is correct")
15
+ true
16
+ rescue StandardError
17
+ Taf::MyLog.log.warn("Original Window not found: #{@value}")
18
+ false
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -7,27 +7,11 @@ module Taf
7
7
  class WriteBoxdata < Base
8
8
  register :write_box_data
9
9
 
10
- def check
11
- @elms = %i[textarea text_field iframe]
12
-
13
- found_box = @elms.map do |elm|
14
- Taf::Browser.b.send(elm, "#{@locate}": @value).exists?
15
- end.compact
16
-
17
- raise 'Multiple matches' if found_box.select { |i| i }.empty?
18
-
19
- index = found_box.index(true)
20
- return unless index
21
-
22
- index
23
- end
24
-
25
10
  def perform
26
11
  txt = @value2
27
12
  txt = ENV[txt.to_s] if ENV[txt.to_s]
28
- index = check
29
- Taf::Browser.b.send(@elms[index], "#{@locate}": @value)
30
- .wait_until(&:exists?).send_keys txt
13
+ Taf::Browser.b.find_element("#{@locate}": @value).displayed?
14
+ Taf::Browser.b.find_element("#{@locate}": @value).send_keys txt
31
15
  Taf::MyLog.log.info("Textbox: #{@value} has correct value: #{txt}")
32
16
  true
33
17
  rescue StandardError
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Taf
4
- VERSION = '0.5.0'
4
+ VERSION = '1.0.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: taf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Perrett
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-03 00:00:00.000000000 Z
11
+ date: 2020-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -150,20 +150,6 @@ dependencies:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0.7'
153
- - !ruby/object:Gem::Dependency
154
- name: watir
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '6.16'
160
- type: :runtime
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '6.16'
167
153
  description: Test Automation Framework (TAF) to allow simple test web automation -
168
154
  external use
169
155
  email:
@@ -194,8 +180,6 @@ files:
194
180
  - lib/taf/test_steps/handlers/base/browser_quit.rb
195
181
  - lib/taf/test_steps/handlers/base/browser_refresh.rb
196
182
  - lib/taf/test_steps/handlers/base/capture_alert.rb
197
- - lib/taf/test_steps/handlers/base/check_box.rb
198
- - lib/taf/test_steps/handlers/base/check_boxdata.rb
199
183
  - lib/taf/test_steps/handlers/base/check_browser_title.rb
200
184
  - lib/taf/test_steps/handlers/base/check_logs.rb
201
185
  - lib/taf/test_steps/handlers/base/check_screendata.rb
@@ -206,12 +190,14 @@ files:
206
190
  - lib/taf/test_steps/handlers/base/handle_browser_window.rb
207
191
  - lib/taf/test_steps/handlers/base/health_check.rb
208
192
  - lib/taf/test_steps/handlers/base/ipause.rb
209
- - lib/taf/test_steps/handlers/base/list_all_dropdowns_values.rb
193
+ - lib/taf/test_steps/handlers/base/leave_iframe.rb
210
194
  - lib/taf/test_steps/handlers/base/login.rb
211
195
  - lib/taf/test_steps/handlers/base/open_url.rb
212
- - lib/taf/test_steps/handlers/base/radio_button.rb
196
+ - lib/taf/test_steps/handlers/base/radio_or_checkbox_button.rb
213
197
  - lib/taf/test_steps/handlers/base/select_dropdown.rb
214
198
  - lib/taf/test_steps/handlers/base/send_special_keys.rb
199
+ - lib/taf/test_steps/handlers/base/switch_to_iframe.rb
200
+ - lib/taf/test_steps/handlers/base/switch_to_original_tab_or_window.rb
215
201
  - lib/taf/test_steps/handlers/base/write_box_data.rb
216
202
  - lib/taf/test_steps/skip_step.rb
217
203
  - lib/taf/test_steps/step.rb
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Taf
4
- module TestSteps
5
- module Handlers
6
- # Check Box function.
7
- class CheckBox < Base
8
- register :check_box
9
-
10
- def perform
11
- Taf::Browser.b.checkbox("#{@locate}": @value).wait_until(&:exists?)
12
- .click
13
- Taf::MyLog.log.info("Check box: #{@value} has been selected")
14
- true
15
- rescue StandardError
16
- Taf::MyLog.log.warn("Check box: #{@value} does not exist")
17
- false
18
- end
19
- end
20
- end
21
- end
22
- end
@@ -1,46 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Taf
4
- module TestSteps
5
- module Handlers
6
- # Check Box Data function.
7
- class CheckBoxdata < Base
8
- register :check_box_data
9
-
10
- def check
11
- @elms = %i[textarea text_field iframe]
12
-
13
- found_box = @elms.map do |elm|
14
- Taf::Browser.b.send(elm, "#{@locate}": @value).exists?
15
- end.compact
16
-
17
- raise 'Multiple matches' if found_box.select { |i| i }.empty?
18
-
19
- index = found_box.index(true)
20
- return unless index
21
-
22
- index
23
- end
24
-
25
- def perform
26
- index = check
27
- ele = Taf::Browser.b.send(@elms[index], "#{@locate}": @value)
28
-
29
- ele.wait_until(&:exists?)
30
-
31
- if ele.value == @value2
32
- Taf::MyLog.log.info(
33
- "Textbox: #{@value} has correct value: #{@value2}"
34
- )
35
- true
36
- else
37
- Taf::MyLog.log.warn(
38
- "Textbox: got #{ele.value}, expected #{@value2}"
39
- )
40
- false
41
- end
42
- end
43
- end
44
- end
45
- end
46
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Taf
4
- module TestSteps
5
- module Handlers
6
- # List all Dropdown Values function.
7
- class ListAllDropdownValues < Base
8
- register :list_all_dropdown_values
9
-
10
- def perform
11
- Taf::Browser.b.element("#{@locate}": @value).wait_until(&:exists?)
12
- Taf::Browser.b.select_list("#{@locate}": @value).options.each do |i|
13
- Taf::MyLog.log.info("List of dropdown for #{@value} are: #{i.text}")
14
- return true
15
- end
16
- rescue StandardError
17
- Taf::MyLog.log.warn("List dropdown: #{@value} does not exist")
18
- false
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Taf
4
- module TestSteps
5
- module Handlers
6
- # Radio Button function.
7
- class RadioButton < Base
8
- register :radio_button
9
-
10
- def perform
11
- Taf::Browser.b.radio("#{@locate}": @value).wait_until(&:exists?).set
12
- Taf::MyLog.log.info("Radio button: #{@value} has been selected")
13
- true
14
- rescue StandardError
15
- Taf::MyLog.log.warn("Radio button: #{@value} does not exist")
16
- false
17
- end
18
- end
19
- end
20
- end
21
- end