browsery 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,21 @@
1
+ require 'selenium-webdriver'
2
+
3
+ module Selenium
4
+ module WebDriver
5
+
6
+ class Element
7
+
8
+ # Click in a way that is reliable for IE and works for other browsers as well
9
+ def browser_safe_click
10
+ bridge.browser == :internet_explorer ? send_keys(:enter) : click
11
+ end
12
+
13
+ # Click in a way that is reliable for IE and Firefox and works for other browsers as well
14
+ def browser_safe_checkbox_click
15
+ (bridge.browser == :internet_explorer || bridge.browser == :firefox) ? send_keys(:space) : click
16
+ end
17
+
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,94 @@
1
+ class FancyTapReporter < Tapout::Reporters::Abstract
2
+
3
+ #
4
+ def start_suite(entry)
5
+ @start = Time.now
6
+ @i = 0
7
+ #n = 0
8
+ #suite.concerns.each{ |f| f.concerns.each { |s| n += s.ok.size } }
9
+ puts "1..#{entry['count']}"
10
+ end
11
+
12
+ #
13
+ def start_case(entry)
14
+ #$stdout.puts concern.label.ansi(:bold)
15
+ end
16
+
17
+ #
18
+ def pass(entry)
19
+ super(entry)
20
+
21
+ @i += 1
22
+ #desc = entry['message'] #+ " #{ok.arguments.inspect}"
23
+
24
+ puts "ok".ansi(*config.pass) + highlight(" #{@i} - #{entry['label']}")
25
+ end
26
+
27
+ #
28
+ def fail(entry)
29
+ super(entry)
30
+
31
+ @i += 1
32
+ x = entry['exception']
33
+
34
+ #desc = #ok.concern.label + " #{ok.arguments.inspect}"
35
+
36
+ body = []
37
+ body << "FAIL #{x['file']}:#{x['line']}" #clean_backtrace(exception.backtrace)[0]
38
+ body << "#{x['message']}"
39
+ body << x['snippet']
40
+ body << x['backtrace']
41
+ body << entry['stdout']
42
+ body = body.join("\n").gsub(/^/, ' # ')
43
+
44
+ puts "not ok".ansi(*config.fail) + highlight(" #{@i} - #{entry['label']}")
45
+ puts body
46
+ end
47
+
48
+ #
49
+ def error(entry)
50
+ super(entry)
51
+
52
+ @i += 1
53
+ x = entry['exception']
54
+
55
+ #desc = ok.concern.label + " #{ok.arguments.inspect}"
56
+
57
+ body = []
58
+ body << "ERROR #{x['file']}:#{x['line']}" #clean_backtrace(exception.backtrace)[0..2].join(" \n")
59
+ body << "#{x['class']}: #{x['message']}"
60
+ body << ""
61
+ body << x['backtrace']
62
+ body << entry['stdout']
63
+ body = body.join("\n").gsub(/^/, ' # ')
64
+
65
+ puts "not ok".ansi(*config.error) + highlight(" #{@i} - #{entry['label']}")
66
+ puts body
67
+ end
68
+
69
+ def todo(entry)
70
+ super(entry)
71
+ @i += 1
72
+ puts 'ok'.ansi(*config.pass) + highlight(" #{@i} - #{entry['label']} # skip #{entry['exception']['message']}")
73
+ puts " # #{entry['exception']['message']}"
74
+ end
75
+
76
+ def highlight(anything)
77
+ anything.ansi(*config.highlight)
78
+ end
79
+
80
+ # to print out formatted time and rates
81
+ def finish_suite(entry)
82
+ time, rate, avg = time_tally(entry)
83
+ delta = duration(time)
84
+
85
+ ending = []
86
+ ending << ""
87
+ ending << tally_message(entry)
88
+ ending << "[%s %.2ft/s %.4fs/t] " % [delta, rate, avg] + "Finished at: #{Time.now}"
89
+ ending = ending.join("\n").gsub(/^/, ' # ')
90
+
91
+ puts ending
92
+ end
93
+
94
+ end
@@ -0,0 +1,61 @@
1
+
2
+ module YARD
3
+
4
+ # Intercept all tagged test case definitions in order to document test case
5
+ # taggings automatically.
6
+ class TaggedTestCaseHandler < YARD::Handlers::Ruby::Base
7
+ # Register ourselves to handle method calls to `test`. Limit our interactions
8
+ # to the current namespace only.
9
+ handles method_call(:test)
10
+ namespace_only
11
+
12
+ # Process the method call to `test do ... end` as a dynamic method definition.
13
+ def process
14
+ # Retrieve the currently-active statement and its parameters
15
+ stmt = self.statement
16
+ params = stmt.parameters
17
+
18
+ # Move the AST pointer to the first parameter that is either a string or
19
+ # an identifier (e.g., inner symbol)
20
+ name = params.first.jump(:tstring_content, :ident).source
21
+
22
+ # Create a new method object in the namespace with the correct name
23
+ object = YARD::CodeObjects::MethodObject.new(self.namespace, "test_#{name}")
24
+
25
+ # Parse the block between the `test do` and `end` and attribute it to the
26
+ # method object above
27
+ self.parse_block(stmt.last.last, owner: object)
28
+
29
+ # Annotate it as a dynamic object with custom attributes
30
+ object.dynamic = true
31
+
32
+ # The options s-exp looks like:
33
+ #
34
+ # s(s(:assoc, s(:label, 'Key1'), s(...)),
35
+ # s(:assoc, s(:label, 'Key2'), s(...))
36
+ # )
37
+ #
38
+ # if one exists (nil otherwise)
39
+ if opts_sexp = params[1]
40
+ object['test_case_attrs'] = opts_sexp.inject(Hash.new) do |hsh, kv|
41
+ key_sexp, value_sexp = kv.jump(:assoc)
42
+
43
+ if (string_sexp = value_sexp.jump(:tstring_content)) && (string_sexp.type == :tstring_content)
44
+ hsh[key_sexp.first] = string_sexp.first
45
+ elsif (array_sexp = value_sexp.jump(:array)) && (array_sexp.type == :array)
46
+ hsh[key_sexp.first] = array_sexp.first.map { |sexp| sexp.jump(:tstring_content, :ident).first }
47
+ else
48
+ raise ArgumentError, "Cannot parse and render: #{kv.inspect}"
49
+ end
50
+
51
+ hsh
52
+ end
53
+ end
54
+
55
+ # Register the object
56
+ self.register(object)
57
+ end
58
+
59
+ end
60
+
61
+ end
metadata CHANGED
@@ -1,15 +1,113 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: browsery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peijie Hu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-11 00:00:00.000000000 Z
11
+ date: 2016-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faker
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.4'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.4'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitap
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.5.3
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.5.3
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.10'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.10'
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 5.4.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 5.4.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: selenium-webdriver
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.46'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.46'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rest-client
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.8'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.8'
13
111
  - !ruby/object:Gem::Dependency
14
112
  name: rake
15
113
  requirement: !ruby/object:Gem::Requirement
@@ -40,17 +138,45 @@ dependencies:
40
138
  version: '0'
41
139
  description: Browsery
42
140
  email:
43
- executables: []
141
+ executables:
142
+ - browsery
44
143
  extensions: []
45
144
  extra_rdoc_files: []
46
145
  files:
47
146
  - ".gitignore"
147
+ - ".ruby-version"
48
148
  - Gemfile
49
- - Gemfile.lock
50
149
  - Rakefile
150
+ - bin/browsery
51
151
  - browsery.gemspec
52
152
  - lib/browsery.rb
153
+ - lib/browsery/connector.rb
154
+ - lib/browsery/console.rb
155
+ - lib/browsery/init.rb
156
+ - lib/browsery/logger.rb
157
+ - lib/browsery/page_objects.rb
158
+ - lib/browsery/page_objects/base.rb
159
+ - lib/browsery/page_objects/element_container.rb
160
+ - lib/browsery/page_objects/overlay/base.rb
161
+ - lib/browsery/page_objects/widgets/base.rb
162
+ - lib/browsery/parallel.rb
163
+ - lib/browsery/runner.rb
164
+ - lib/browsery/settings.rb
165
+ - lib/browsery/test_case.rb
166
+ - lib/browsery/test_cases.rb
167
+ - lib/browsery/utils.rb
168
+ - lib/browsery/utils/assertion_helper.rb
169
+ - lib/browsery/utils/castable.rb
170
+ - lib/browsery/utils/data_generator_helper.rb
171
+ - lib/browsery/utils/loggable.rb
172
+ - lib/browsery/utils/overlay_and_widget_helper.rb
173
+ - lib/browsery/utils/page_object_helper.rb
53
174
  - lib/browsery/version.rb
175
+ - lib/minitap/minitest5_browsery.rb
176
+ - lib/minitest/autobot_settings_plugin.rb
177
+ - lib/selenium/webdriver/common/element_browsery.rb
178
+ - lib/tapout/custom_reporters/fancy_tap_reporter.rb
179
+ - lib/yard/tagged_test_case_handler.rb
54
180
  homepage: https://github.com/peijiehu/browsery
55
181
  licenses:
56
182
  - MIT
@@ -71,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
197
  version: '0'
72
198
  requirements: []
73
199
  rubyforge_project:
74
- rubygems_version: 2.4.8
200
+ rubygems_version: 2.4.5.1
75
201
  signing_key:
76
202
  specification_version: 4
77
203
  summary: Browsery