taf 0.5.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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