angular_webdriver 0.0.7 → 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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.gitmodules +3 -0
  4. data/.rspec +2 -0
  5. data/.travis.yml +32 -0
  6. data/Gemfile +2 -0
  7. data/Thorfile +33 -1
  8. data/angular_webdriver.gemspec +10 -3
  9. data/docs/overview.md +101 -0
  10. data/docs/sync.md +53 -0
  11. data/lib/angular_webdriver/protractor/by.rb +331 -0
  12. data/lib/angular_webdriver/protractor/by_repeater_inner.rb +106 -0
  13. data/lib/angular_webdriver/protractor/client_side_scripts.rb +1035 -0
  14. data/lib/angular_webdriver/protractor/protractor.rb +396 -77
  15. data/lib/angular_webdriver/protractor/protractor_element.rb +33 -0
  16. data/lib/angular_webdriver/protractor/rspec_helpers.rb +19 -0
  17. data/lib/angular_webdriver/protractor/watir_patch.rb +209 -0
  18. data/lib/angular_webdriver/protractor/webdriver_patch.rb +246 -0
  19. data/lib/angular_webdriver/version.rb +2 -2
  20. data/lib/angular_webdriver.rb +14 -1
  21. data/{LICENSE → license/angular_webdriver/LICENSE.txt} +0 -0
  22. data/{lib/angular_webdriver → license}/protractor/LICENSE.txt +0 -0
  23. data/{lib/angular_webdriver/protractor/get_url_trace.rb → notes/bootstrap_notes.md} +13 -0
  24. data/notes/element_by_id/element_by_id_sync_off.txt +12 -0
  25. data/notes/element_by_id/element_by_id_sync_on.txt +74 -0
  26. data/notes/element_chaining_debug.txt +94 -0
  27. data/notes/evaluate/js_evaluate_sync_on.txt +60 -0
  28. data/notes/evaluate/ruby_evaluate_sync_on.txt +35 -0
  29. data/notes/get_title/browser_get_title_sync_off.txt +11 -0
  30. data/notes/get_title/browser_get_title_sync_on.txt +54 -0
  31. data/notes/phantomjs.md +23 -0
  32. data/notes/protractor_cli_bugs.txt +39 -0
  33. data/notes/protractor_get/protractor_get.rb +102 -0
  34. data/notes/protractor_get/protractor_get_website_sync_off.txt +11 -0
  35. data/notes/protractor_get/protractor_get_website_sync_on.txt +86 -0
  36. data/notes/repeater/findAllRepeaterRows_annotated.txt +150 -0
  37. data/notes/repeater/findAllRepeaterRows_raw.txt +145 -0
  38. data/notes/repeater/findRepeaterColumn_annotated.txt +317 -0
  39. data/notes/repeater/findRepeaterColumn_raw.txt +310 -0
  40. data/notes/repeater/findRepeaterElement_annotated.txt +152 -0
  41. data/notes/repeater/findRepeaterElement_raw.txt +146 -0
  42. data/notes/repeater/findRepeaterRows_annotated.txt +156 -0
  43. data/notes/repeater/findRepeaterRows_raw.txt +152 -0
  44. data/notes/sync_after.md +46 -0
  45. data/notes/sync_notes.md +137 -0
  46. data/notes/synchronize_spec/status_gettext.txt +121 -0
  47. data/notes/synchronize_spec/status_gettext_x3.txt +451 -0
  48. data/notes/synchronize_spec/synchronize_spec.js.txt +74 -0
  49. data/notes/synchronize_spec/watir_gettext.txt +73 -0
  50. data/readme.md +52 -12
  51. data/release_notes.md +127 -0
  52. data/selenium_server/lib/logs.rb +50 -0
  53. data/selenium_server/lib/selenium_server.rb +21 -0
  54. data/selenium_server/readme.md +3 -0
  55. data/selenium_server/spec/logs_spec.rb +18 -0
  56. data/selenium_server/spec/nodejs_sync_spec_waithttp_annotated.txt +54 -0
  57. data/selenium_server/spec/nodejs_sync_spec_waithttp_raw.txt +367 -0
  58. data/selenium_server/spec/nodejs_sync_spec_waithttp_raw_processed.txt +43 -0
  59. data/selenium_server/spec/ruby_sync_spec_waithttp_annotated.txt +59 -0
  60. data/selenium_server/spec/ruby_sync_spec_waithttp_raw.txt +267 -0
  61. data/selenium_server/spec/ruby_sync_spec_waithttp_raw_processed.txt +39 -0
  62. data/selenium_server/spec/spec_helper.rb +6 -0
  63. data/selenium_server/spec/status_gettext_x3.txt +429 -0
  64. data/selenium_server/spec/status_gettext_x3_annotated.txt +86 -0
  65. metadata +91 -18
  66. data/lib/angular_webdriver/protractor/clientSideScripts.json +0 -19
  67. data/lib/angular_webdriver/protractor/clientsidescripts.js +0 -671
  68. data/lib/angular_webdriver/protractor/scripts.rb +0 -7
  69. data/lib/angular_webdriver/protractor/scripts_to_json.js +0 -11
  70. data/spec/protractor_spec.rb +0 -40
  71. data/spec/spec_helper.rb +0 -5
@@ -0,0 +1,106 @@
1
+ module AngularWebdriver
2
+ class ByRepeaterInner
3
+ attr_reader :exact, :repeat_descriptor, :row_index, :column_binding
4
+
5
+ # Takes args and returns wrapped repeater if the first arg is a repeater
6
+ #
7
+ # @param args [Array] args to wrap
8
+ def self.wrap_repeater args
9
+ if args && args.first.is_a?(self)
10
+ [repeater: args.first.process] # watir requires an array containing a hash
11
+ else
12
+ args
13
+ end
14
+ end
15
+
16
+ # Generate either by.repeater or by.exactRepeater
17
+ # @option opts [Boolean] :exact exact matching
18
+ # @option opts [String] :repeat_descriptor repeat description
19
+ def initialize opts={}
20
+ exact = opts.fetch(:exact)
21
+ raise "#{exact} is not a valid value" unless [true, false].include?(exact)
22
+ repeat_descriptor = opts.fetch(:repeat_descriptor)
23
+ raise "#{repeat_descriptor} is not a valid repeat_descriptor" unless repeat_descriptor.is_a?(String)
24
+
25
+ @exact = exact
26
+ @repeat_descriptor = repeat_descriptor
27
+ self
28
+ end
29
+
30
+ def row row_index
31
+ raise "#{row_index} is not a valid row index" unless row_index.is_a?(Integer)
32
+ @row_index = row_index
33
+ self
34
+ end
35
+
36
+ def column column_binding
37
+ raise "#{column_binding} is not a valid column binding" unless column_binding.is_a?(String)
38
+ @column_binding = column_binding
39
+ self
40
+ end
41
+
42
+ # Return JSON representation of the correct repeater method and args
43
+ def process
44
+ # findRepeaterElement - (repeater, exact, index, binding, using, rootSelector) - by.repeater('baz in days').row(0).column('b') - [baz in days, false, 0, b, null, body]
45
+ # findRepeaterRows - (repeater, exact, index, using) - by.repeater('baz in days').row(0) - [baz in days, false, 0, null, body]
46
+ # findRepeaterColumn - (repeater, exact, binding, using, rootSelector) - by.repeater('baz in days').column('b') - [baz in days, false, b, null, body]
47
+ # findAllRepeaterRows - (repeater, exact, using) - by.repeater('baz in days') - [baz in days, false, null, body]
48
+ #
49
+ #
50
+ # using - parent element
51
+ # rootSelector - selector for finding angular js
52
+ # exact - true if by.exactRepeater false when by.repeater
53
+ #
54
+ #
55
+ # repeater (repeat_descriptor), binding (column_binding), index (row_index)
56
+ #
57
+ # findRepeaterElement - (repeat_descriptor, row_index, column_binding)
58
+ # findRepeaterRows - (repeat_descriptor, row_index)
59
+ # findRepeaterColumn - (repeat_descriptor, column_binding)
60
+ # findAllRepeaterRows - (repeat_descriptor)
61
+
62
+ result = if repeat_descriptor && row_index && column_binding
63
+ {
64
+ script: :findRepeaterElement,
65
+ args: {
66
+ repeat_descriptor: repeat_descriptor,
67
+ exact: exact,
68
+ row_index: row_index,
69
+ column_binding: column_binding,
70
+
71
+ }
72
+ }
73
+ elsif repeat_descriptor && row_index
74
+ {
75
+ script: :findRepeaterRows,
76
+ args: {
77
+ repeat_descriptor: repeat_descriptor,
78
+ exact: exact,
79
+ row_index: row_index
80
+ }
81
+ }
82
+ elsif repeat_descriptor && column_binding
83
+ {
84
+ script: :findRepeaterColumn,
85
+ args: {
86
+ repeat_descriptor: repeat_descriptor,
87
+ exact: exact,
88
+ column_binding: column_binding
89
+ }
90
+ }
91
+ elsif repeat_descriptor
92
+ {
93
+ script: :findAllRepeaterRows,
94
+ args: {
95
+ repeat_descriptor: repeat_descriptor,
96
+ exact: exact
97
+ }
98
+ }
99
+ else
100
+ raise 'Invalid repeater'
101
+ end
102
+
103
+ result.to_json
104
+ end # def process
105
+ end # class ByRepeaterInner
106
+ end # module AngularWebdriver