SimpliTest 0.0.4 → 0.0.5

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 (56) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +21 -21
  3. data/SimpliTest.gemspec +42 -42
  4. data/bin/SimpliTest +22 -22
  5. data/lib/SimpliTest.rb +2 -2
  6. data/lib/SimpliTest/cli/main.rb +333 -333
  7. data/lib/SimpliTest/config/configuration.rb +107 -107
  8. data/lib/SimpliTest/config/directory_paths.rb +36 -36
  9. data/lib/SimpliTest/config/environment.rb +67 -67
  10. data/lib/SimpliTest/config/local_environment.rb +20 -20
  11. data/lib/SimpliTest/config/profiles/chrome.rb +18 -18
  12. data/lib/SimpliTest/config/profiles/firefox.rb +14 -14
  13. data/lib/SimpliTest/config/profiles/internet_explorer.rb +11 -11
  14. data/lib/SimpliTest/config/profiles/phantom.rb +9 -9
  15. data/lib/SimpliTest/config/profiles/phantom_debug.rb +12 -12
  16. data/lib/SimpliTest/config/profiles/selenium.rb +13 -13
  17. data/lib/SimpliTest/config/screen_size.rb +25 -25
  18. data/lib/SimpliTest/config/steps.rb +8 -8
  19. data/lib/SimpliTest/helpers/data_validation.rb +60 -60
  20. data/lib/SimpliTest/helpers/file.rb +38 -38
  21. data/lib/SimpliTest/helpers/project_setup.rb +186 -186
  22. data/lib/SimpliTest/helpers/step_helpers/custom_chrome_helpers.rb +14 -14
  23. data/lib/SimpliTest/helpers/step_helpers/custom_date_helpers.rb +64 -64
  24. data/lib/SimpliTest/helpers/step_helpers/custom_form_helpers.rb +66 -66
  25. data/lib/SimpliTest/helpers/step_helpers/custom_phantomjs_helpers.rb +49 -49
  26. data/lib/SimpliTest/helpers/step_helpers/custom_selenium_helpers.rb +41 -41
  27. data/lib/SimpliTest/helpers/step_helpers/html_selectors_helpers.rb +154 -154
  28. data/lib/SimpliTest/helpers/step_helpers/navigation_helpers.rb +206 -206
  29. data/lib/SimpliTest/helpers/step_helpers/tolerance_for_sync_issues.rb +38 -38
  30. data/lib/SimpliTest/helpers/step_helpers/within_helpers.rb +6 -6
  31. data/lib/SimpliTest/helpers/windows_ui.rb +51 -51
  32. data/lib/SimpliTest/steps/debugging_steps.rb +19 -19
  33. data/lib/SimpliTest/steps/form_steps.rb +348 -352
  34. data/lib/SimpliTest/steps/form_verification_steps.rb +189 -189
  35. data/lib/SimpliTest/steps/navigation_steps.rb +58 -47
  36. data/lib/SimpliTest/steps/scoper.rb +42 -42
  37. data/lib/SimpliTest/steps/verification_steps.rb +306 -306
  38. data/lib/SimpliTest/tasks/document.rb +169 -169
  39. data/lib/SimpliTest/tasks/examples.rb +18 -18
  40. data/lib/SimpliTest/tasks/testinstall.rb +5 -5
  41. data/lib/SimpliTest/templates/NewSimpliTestProject/Readme.txt +4 -4
  42. data/lib/SimpliTest/templates/NewSimpliTestProject/cucumber.yml +26 -26
  43. data/lib/SimpliTest/templates/NewSimpliTestProject/documentation/step_definitions.html +88 -87
  44. data/lib/SimpliTest/templates/NewSimpliTestProject/features/specifications/RegressionTests/HelloWorld.feature +3 -3
  45. data/lib/SimpliTest/templates/NewSimpliTestProject/features/specifications/SmokeTest/HelloWorld.feature +3 -3
  46. data/lib/SimpliTest/templates/NewSimpliTestProject/features/specifications/accessibilityTests/HelloWorld.feature +3 -3
  47. data/lib/SimpliTest/templates/NewSimpliTestProject/features/support/config/environments.yml +10 -10
  48. data/lib/SimpliTest/templates/NewSimpliTestProject/features/support/config/pages.yml +26 -26
  49. data/lib/SimpliTest/templates/NewSimpliTestProject/features/support/config/selectors.yml +44 -44
  50. data/lib/SimpliTest/templates/NewSimpliTestProject/features/support/config/settings.yml +26 -26
  51. data/lib/SimpliTest/templates/NewSimpliTestProject/features/support/env.rb +33 -33
  52. data/lib/SimpliTest/templates/NewSimpliTestProject/license.txt +29 -29
  53. data/lib/SimpliTest/templates/document/css/style.css +28 -28
  54. data/lib/SimpliTest/templates/document/index.html +60 -60
  55. data/lib/version.rb +3 -3
  56. metadata +4 -4
@@ -1,14 +1,14 @@
1
- #The chrome profile loads Selenium Helpers as well. These methods
2
- #override the methods available in Selenium Helpers
3
- module CustomChromeHelpers
4
- def maximize_window
5
- page.driver.browser.manage.window.resize_to(MAX_WIDTH,MAX_HEIGHT)
6
- end
7
- def keydown_on(element)
8
- element.native.send_key(:arrow_down)
9
- end
10
-
11
- def capture_screenshot(filename)
12
- page.driver.browser.save_screenshot(filename)
13
- end
14
- end
1
+ #The chrome profile loads Selenium Helpers as well. These methods
2
+ #override the methods available in Selenium Helpers
3
+ module CustomChromeHelpers
4
+ def maximize_window
5
+ page.driver.browser.manage.window.resize_to(MAX_WIDTH,MAX_HEIGHT)
6
+ end
7
+ def keydown_on(element)
8
+ element.native.send_key(:arrow_down)
9
+ end
10
+
11
+ def capture_screenshot(filename)
12
+ page.driver.browser.save_screenshot(filename)
13
+ end
14
+ end
@@ -1,64 +1,64 @@
1
- module CustomDateHelpers
2
- def calculated_date_from(date_rule)
3
- # Takes strings like "Today's Date", "4 days ago", "5 days since" etc. and
4
- # returns a calculated date in the default_date_format
5
- potential_date_formats = /[0-9]+\/[0-9]+\/[0-9]+/x
6
- first_and_last_regex = /the (nearest|first|last) (.*)/
7
- date = case date_rule
8
- when potential_date_formats
9
- date_rule
10
- when /Today's Date/i
11
- Date.today
12
- when /(\d+) days (ago|since)/i
13
- number_of_days = $1.to_i rescue nil
14
- time_travel_method = $2.downcase.to_sym
15
- raise "Invalid number of days. Please enter a valid number" if number_of_days.nil?
16
- number_of_days.send(:days).send(time_travel_method)
17
- when first_and_last_regex
18
- first_and_last_date_rule(rule)
19
- end
20
- date.respond_to?(:strftime) ? date.strftime(default_date_format) : date
21
- end
22
-
23
- def first_and_last_date_rule(phrase)
24
- # Takes a phrase like "the first day of the month" or "last day of the
25
- # previous month" and returns a calculated date in the default_date_format
26
- case phrase
27
- when /the (first|last) day of the month/i
28
- Date.today.send(beginning_or_end($1))
29
- when /the (first|last) day of next month/i
30
- 1.month.since.send(beginning_or_end($1))
31
- when /the (first|last) day of previous month/i
32
- 1.month.ago.send(beginning_or_end($1))
33
- when /the (first|last) day of (.*)/i
34
- date_from_phrase($1, $2)
35
- when /the nearest (first|last) day of month/i
36
- rule = Date.today.day >= 15 ? "the #{$1} day of next month" : "the #{$1} day of the month"
37
- calculated_date_from(rule)
38
- end
39
- end
40
-
41
- def beginning_or_end(first_or_last)
42
- first_or_last == 'first' ? :beginning_of_month : :end_of_month
43
- end
44
-
45
- def default_date_format
46
- format_for_strftime SimpliTest.config_settings['DEFAULT_DATE_FORMAT']
47
- end
48
-
49
- def date_from_phrase(first_or_last, month)
50
- month_name = month.downcase.camelize
51
- month = Date::MONTHNAMES.index(month_name)
52
- if month.nil?
53
- raise "Oops you provided an invalid month name. Please use a valid month name from January to December"
54
- end
55
- date = Date.parse("#{month}/1") #mm/dd in current year
56
- date = date.send(:end_of_month) if first_or_last == 'last'
57
- end
58
-
59
- def format_for_strftime(string)
60
- string.gsub('mm', '%m').gsub('dd', '%d').gsub('yyyy', '%Y').gsub('yy', '%y')
61
- end
62
- end
63
-
64
- World(CustomDateHelpers)
1
+ module CustomDateHelpers
2
+ def calculated_date_from(date_rule)
3
+ # Takes strings like "Today's Date", "4 days ago", "5 days since" etc. and
4
+ # returns a calculated date in the default_date_format
5
+ potential_date_formats = /[0-9]+\/[0-9]+\/[0-9]+/x
6
+ first_and_last_regex = /the (nearest|first|last) (.*)/
7
+ date = case date_rule
8
+ when potential_date_formats
9
+ date_rule
10
+ when /Today's Date/i
11
+ Date.today
12
+ when /(\d+) days (ago|since)/i
13
+ number_of_days = $1.to_i rescue nil
14
+ time_travel_method = $2.downcase.to_sym
15
+ raise "Invalid number of days. Please enter a valid number" if number_of_days.nil?
16
+ number_of_days.send(:days).send(time_travel_method)
17
+ when first_and_last_regex
18
+ first_and_last_date_rule(rule)
19
+ end
20
+ date.respond_to?(:strftime) ? date.strftime(default_date_format) : date
21
+ end
22
+
23
+ def first_and_last_date_rule(phrase)
24
+ # Takes a phrase like "the first day of the month" or "last day of the
25
+ # previous month" and returns a calculated date in the default_date_format
26
+ case phrase
27
+ when /the (first|last) day of the month/i
28
+ Date.today.send(beginning_or_end($1))
29
+ when /the (first|last) day of next month/i
30
+ 1.month.since.send(beginning_or_end($1))
31
+ when /the (first|last) day of previous month/i
32
+ 1.month.ago.send(beginning_or_end($1))
33
+ when /the (first|last) day of (.*)/i
34
+ date_from_phrase($1, $2)
35
+ when /the nearest (first|last) day of month/i
36
+ rule = Date.today.day >= 15 ? "the #{$1} day of next month" : "the #{$1} day of the month"
37
+ calculated_date_from(rule)
38
+ end
39
+ end
40
+
41
+ def beginning_or_end(first_or_last)
42
+ first_or_last == 'first' ? :beginning_of_month : :end_of_month
43
+ end
44
+
45
+ def default_date_format
46
+ format_for_strftime SimpliTest.config_settings['DEFAULT_DATE_FORMAT']
47
+ end
48
+
49
+ def date_from_phrase(first_or_last, month)
50
+ month_name = month.downcase.camelize
51
+ month = Date::MONTHNAMES.index(month_name)
52
+ if month.nil?
53
+ raise "Oops you provided an invalid month name. Please use a valid month name from January to December"
54
+ end
55
+ date = Date.parse("#{month}/1") #mm/dd in current year
56
+ date = date.send(:end_of_month) if first_or_last == 'last'
57
+ end
58
+
59
+ def format_for_strftime(string)
60
+ string.gsub('mm', '%m').gsub('dd', '%d').gsub('yyyy', '%Y').gsub('yy', '%y')
61
+ end
62
+ end
63
+
64
+ World(CustomDateHelpers)
@@ -1,66 +1,66 @@
1
- module CustomFormHelpers
2
-
3
- def numerize(number_name)
4
- case number_name
5
- when 'first'; 0
6
- when 'last'; -1
7
- else number_name.match(/[0-9]/)[1].to_i + 1 rescue 0 #take the first one if you cant figure it out
8
- end
9
- end
10
-
11
- def blur(selector_and_xpath)
12
- css_selector, xpath = selector_and_xpath
13
- selector = xpath ? xpath : css_selector
14
- if xpath
15
- return
16
- else
17
- #TODO: Hate how this done...need to come back to this
18
- execute_script_for_driver(SimpliTest.config_driver, %Q{ $('#{selector}').blur(); })
19
- end
20
- end
21
-
22
- def fill_in_masked_field(css_selector, value)
23
- STDOUT.puts "Entering #{value} in Masked Field #{css_selector} now" #TODO: Delete this debugging statement
24
- execute_script_for_driver(SimpliTest.config_driver, %Q{ $("#{css_selector}").val("#{value}"); })
25
- STDOUT.puts "Blurring the field now" #TODO: Delete this debugging statement
26
- execute_script_for_driver(SimpliTest.config_driver, %Q{ $("#{css_selector}").blur(); })
27
- #page.driver.debug
28
- end
29
-
30
-
31
- def press_key(key)
32
- keycode = keycode_for[key.downcase.gsub(' ','_')]
33
- keypress_script = "var e = $.Event('keydown', { keyCode: #{keycode} }); $('body').trigger(e);"
34
- execute_js(keypress_script)
35
- end
36
-
37
- def tab_on(element)
38
- element.native.send_key(:tab)
39
- end
40
-
41
- def keypress_on(elem, key, charCode = 0)
42
- keyCode = keycode_for[key]
43
- elem.base.invoke('keypress', false, false, false, false, keyCode, charCode);
44
- end
45
-
46
- def keycode_for
47
- {
48
- :tab => 9,
49
- :enter => 13,
50
- :up_arrow => 38,
51
- :down_arrow => 40,
52
- :left_arrow => 37,
53
- :right_arrow => 39,
54
- :escape => 27,
55
- :spacebar => 32,
56
- :ctrl => 17,
57
- :alt => 18,
58
- :shift => 16,
59
- :caps_lock => 20,
60
- :backspace => 8,
61
- :delete => 46
62
- }
63
- end
64
- end
65
- World(CustomFormHelpers)
66
-
1
+ module CustomFormHelpers
2
+
3
+ def numerize(number_name)
4
+ case number_name
5
+ when 'first'; 0
6
+ when 'last'; -1
7
+ else number_name.match(/[0-9]/)[1].to_i + 1 rescue 0 #take the first one if you cant figure it out
8
+ end
9
+ end
10
+
11
+ def blur(selector_and_xpath)
12
+ css_selector, xpath = selector_and_xpath
13
+ selector = xpath ? xpath : css_selector
14
+ if xpath
15
+ return
16
+ else
17
+ #TODO: Hate how this done...need to come back to this
18
+ execute_script_for_driver(SimpliTest.config_driver, %Q{ $('#{selector}').blur(); })
19
+ end
20
+ end
21
+
22
+ def fill_in_masked_field(css_selector, value)
23
+ STDOUT.puts "Entering #{value} in Masked Field #{css_selector} now" #TODO: Delete this debugging statement
24
+ execute_script_for_driver(SimpliTest.config_driver, %Q{ $("#{css_selector}").val("#{value}"); })
25
+ STDOUT.puts "Blurring the field now" #TODO: Delete this debugging statement
26
+ execute_script_for_driver(SimpliTest.config_driver, %Q{ $("#{css_selector}").blur(); })
27
+ #page.driver.debug
28
+ end
29
+
30
+
31
+ def press_key(key)
32
+ keycode = keycode_for[key.downcase.gsub(' ','_')]
33
+ keypress_script = "var e = $.Event('keydown', { keyCode: #{keycode} }); $('body').trigger(e);"
34
+ execute_js(keypress_script)
35
+ end
36
+
37
+ def tab_on(element)
38
+ element.native.send_key(:tab)
39
+ end
40
+
41
+ def keypress_on(elem, key, charCode = 0)
42
+ keyCode = keycode_for[key]
43
+ elem.base.invoke('keypress', false, false, false, false, keyCode, charCode);
44
+ end
45
+
46
+ def keycode_for
47
+ {
48
+ :tab => 9,
49
+ :enter => 13,
50
+ :up_arrow => 38,
51
+ :down_arrow => 40,
52
+ :left_arrow => 37,
53
+ :right_arrow => 39,
54
+ :escape => 27,
55
+ :spacebar => 32,
56
+ :ctrl => 17,
57
+ :alt => 18,
58
+ :shift => 16,
59
+ :caps_lock => 20,
60
+ :backspace => 8,
61
+ :delete => 46
62
+ }
63
+ end
64
+ end
65
+ World(CustomFormHelpers)
66
+
@@ -1,49 +1,49 @@
1
- module CustomPhantomjsHelpers
2
- def maximize_window
3
- page.driver.resize_window(MAX_WIDTH,MAX_HEIGHT)
4
- end
5
-
6
- def tab_on(element)
7
- element.native.send_key(:Tab)
8
- end
9
-
10
- def accept_confirmation
11
- #TODO: accept confirmation
12
- raise "NotImplementedError"
13
- end
14
-
15
- def execute_js(script)
16
- page.execute_script(script)
17
- end
18
-
19
- def get_text_from(element)
20
- element.native.all_text
21
- end
22
-
23
- def click_element(element)
24
- begin
25
- element.click
26
- rescue Capybara::Poltergeist::MouseEventFailed
27
- element.trigger('click')
28
- end
29
- end
30
-
31
- def key_in(character, element)
32
- element.native.send_key(character)
33
- end
34
-
35
- def keydown_on(element)
36
- key_in('Down', element)
37
- end
38
-
39
- def capture_screenshot(filename)
40
- page.save_screenshot(filename)
41
- end
42
-
43
- def change_window(first_or_last)
44
- raise "Invalid window name #{first_or_last}. You can only use 'first' or 'last'" unless first_or_last =~ /first|last/
45
- window_handle = page.driver.browser.window_handles.send(first_or_last.to_sym)
46
- page.driver.browser.switch_to_window(window_handle)
47
- wait_for(page.driver.browser.window_handles.size, 1)
48
- end
49
- end
1
+ module CustomPhantomjsHelpers
2
+ def maximize_window
3
+ page.driver.resize_window(MAX_WIDTH,MAX_HEIGHT)
4
+ end
5
+
6
+ def tab_on(element)
7
+ element.native.send_key(:Tab)
8
+ end
9
+
10
+ def accept_confirmation
11
+ #TODO: accept confirmation
12
+ raise "NotImplementedError"
13
+ end
14
+
15
+ def execute_js(script)
16
+ page.execute_script(script)
17
+ end
18
+
19
+ def get_text_from(element)
20
+ element.native.all_text
21
+ end
22
+
23
+ def click_element(element)
24
+ begin
25
+ element.click
26
+ rescue Capybara::Poltergeist::MouseEventFailed
27
+ element.trigger('click')
28
+ end
29
+ end
30
+
31
+ def key_in(character, element)
32
+ element.native.send_key(character)
33
+ end
34
+
35
+ def keydown_on(element)
36
+ key_in('Down', element)
37
+ end
38
+
39
+ def capture_screenshot(filename)
40
+ page.save_screenshot(filename)
41
+ end
42
+
43
+ def change_window(first_or_last)
44
+ raise "Invalid window name #{first_or_last}. You can only use 'first' or 'last'" unless first_or_last =~ /first|last/
45
+ window_handle = page.driver.browser.window_handles.send(first_or_last.to_sym)
46
+ page.driver.browser.switch_to_window(window_handle)
47
+ wait_for(page.driver.browser.window_handles.size, 1)
48
+ end
49
+ end
@@ -1,41 +1,41 @@
1
- module CustomSeleniumHelpers
2
- def maximize_window
3
- page.driver.browser.manage.window.resize_to(MAX_WIDTH, MAX_HEIGHT)
4
- end
5
-
6
- def capture_screenshot(filename)
7
- page.driver.browser.save_screenshot(filename)
8
- end
9
-
10
- def accept_confirmation
11
- page.driver.browser.switch_to.alert.accept
12
- end
13
-
14
- def execute_js(script)
15
- page.driver.browser.execute_script(script)
16
- end
17
-
18
- def get_text_from(element)
19
- element.text
20
- end
21
-
22
- def click_element(element)
23
- element.click
24
- end
25
-
26
- def key_in(character, element)
27
- element.native.send_key(character)
28
- end
29
-
30
- def keydown_on(element)
31
- key_in(:arrow_down, element)
32
- end
33
-
34
- def change_window(first_or_last)
35
- raise "Invalid window name #{first_or_last}. You can only use 'first' or 'last'" unless first_or_last =~ /first|last/
36
- window_handle = page.driver.browser.window_handles.send(first_or_last.to_sym)
37
- page.driver.browser.switch_to.window(window_handle)
38
- wait_for(page.driver.browser.window_handles.size, 1)
39
- end
40
- end
41
-
1
+ module CustomSeleniumHelpers
2
+ def maximize_window
3
+ page.driver.browser.manage.window.resize_to(MAX_WIDTH, MAX_HEIGHT)
4
+ end
5
+
6
+ def capture_screenshot(filename)
7
+ page.driver.browser.save_screenshot(filename)
8
+ end
9
+
10
+ def accept_confirmation
11
+ page.driver.browser.switch_to.alert.accept
12
+ end
13
+
14
+ def execute_js(script)
15
+ page.driver.browser.execute_script(script)
16
+ end
17
+
18
+ def get_text_from(element)
19
+ element.text
20
+ end
21
+
22
+ def click_element(element)
23
+ element.click
24
+ end
25
+
26
+ def key_in(character, element)
27
+ element.native.send_key(character)
28
+ end
29
+
30
+ def keydown_on(element)
31
+ key_in(:arrow_down, element)
32
+ end
33
+
34
+ def change_window(first_or_last)
35
+ raise "Invalid window name #{first_or_last}. You can only use 'first' or 'last'" unless first_or_last =~ /first|last/
36
+ window_handle = page.driver.browser.window_handles.send(first_or_last.to_sym)
37
+ page.driver.browser.switch_to.window(window_handle)
38
+ wait_for(page.driver.browser.window_handles.size, 1)
39
+ end
40
+ end
41
+