superbara 0.2.3 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a0188f2dcdc9fb8c3faae941f2d1355296e6f98258eaac597a0881895548f493
4
- data.tar.gz: ba9f0c8526fe54de819b24df2da591c2c6c628198590c388b97ba9dfd751834a
3
+ metadata.gz: a71b7472f0e04259d7a88bf3996ed8dd4da4e99e9205364a9f6e4eaa48f06481
4
+ data.tar.gz: 2977c0895d9b2f0bc8b9d325d333abcb9d2c88abf0f239fa48b7671b5fac8a42
5
5
  SHA512:
6
- metadata.gz: 92b203fbef0dde423095ea2eb1623284dece0f5935e5b29f60983c984ffb77aaaec970c6bb9b56fab0281bc954cbec96770ac69b42165afe184dc1725c955c66
7
- data.tar.gz: d2f71552541a9484f6e0c1511acaced5f7ff010446830fe9f75cea3599c76e33e31ce209649d5c851c822b5b5421a65c4ba5d7c277bd51e7144544fce2a04f7a
6
+ metadata.gz: 85c65b401aa1315c7e81a4cab106651688d0b7d02669149f4a597cddfd7eb9e9332099f9f92ba9370855874197755d456bf742260557a22911e51fc3c52aba7d
7
+ data.tar.gz: 902595d9e177b8cdab6617a29c030f4bc4177b993d821164fdb6bc18d5c13694aab08ee8fed54d265bdbb67f707aca903564b861b0cd869a31e244d995f8d0ef
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- superbara (0.2.3)
4
+ superbara (0.3.0)
5
5
  binding_of_caller (~> 0.8, >= 0.8.0)
6
6
  capybara (~> 3.0, >= 3.0.0)
7
7
  chromedriver-helper (~> 1.2.0, >= 1.2.0)
data/bin/release CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env sh
2
2
  set -e
3
- version=$(ruby -r./lib/superbara -e "puts Superbara::VERSION")
3
+ version=$(exe/superbara version)
4
4
 
5
5
  rake
6
6
  SUPERBARA_FRONTEND=noninteractive exe/superbara run e2e
data/e2e/main.rb CHANGED
@@ -3,5 +3,6 @@ if ENV["CHROME_HOST"]
3
3
  end
4
4
 
5
5
  visit "http://www.example.com"
6
+
6
7
  h1 = find "h1"
7
8
  h1.highlight
@@ -10,4 +10,40 @@ module Capybara
10
10
  end
11
11
  end
12
12
  end
13
+
14
+ class Result
15
+ def click_random(highlight: false, once: true)
16
+ unless self.any?
17
+ Superbara.puts "no elements in collection"
18
+ return false
19
+ end
20
+
21
+ index = if once
22
+ @__superbara_clicked ||= []
23
+ if @__superbara_clicked.size == self.size
24
+ Superbara.puts "no unclicked elements left, not clicking anything"
25
+ return false
26
+ end
27
+
28
+ selected_index = nil
29
+ possible_index = nil
30
+ loop do
31
+ possible_index = rand(self.size)
32
+ next if @__superbara_clicked.include? possible_index
33
+ selected_index = possible_index
34
+ @__superbara_clicked << selected_index
35
+ break
36
+ end
37
+
38
+ selected_index
39
+ else
40
+ rand(self.size)
41
+ end
42
+
43
+ element = self[index]
44
+ element.highlight if highlight
45
+ Superbara.puts "clicking index: #{index} out of #{self.size}"
46
+ element.click
47
+ end
48
+ end
13
49
  end
@@ -0,0 +1,49 @@
1
+ module Superbara; module Chrome
2
+ @@page_load_strategy = "normal"
3
+
4
+ def self.page_load_strategy=(strategy)
5
+ raise "unknown strategy: #{strategy}" unless ["none", "normal"].include? strategy
6
+ @@page_load_strategy = strategy
7
+
8
+ self.register_drivers
9
+ end
10
+
11
+ def self.register_drivers
12
+ options = ::Selenium::WebDriver::Chrome::Options.new
13
+ options.add_argument 'window-size=1680,1024'
14
+ options.add_argument 'disable-infobars'
15
+
16
+ capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
17
+ pageLoadStrategy: @@page_load_strategy
18
+ )
19
+
20
+ Capybara.register_driver :chrome do
21
+ Capybara::Selenium::Driver.new(nil,
22
+ browser: :chrome,
23
+ options: options,
24
+ desired_capabilities: capabilities
25
+ )
26
+ end
27
+
28
+ Capybara.register_driver :chrome_remote do
29
+ Capybara::Selenium::Driver.new(nil,
30
+ browser: :remote,
31
+ desired_capabilities: capabilities,
32
+ url: "http://#{ENV['CHROME_HOST'] || 'chrome'}:#{ENV['CHROME_PORT'] || '4444'}/wd/hub"
33
+ )
34
+ end
35
+
36
+ Capybara.register_driver :chrome_headless do
37
+ options.add_argument 'disable-gpu'
38
+
39
+ Capybara::Selenium::Driver.new(nil,
40
+ browser: :chrome,
41
+ desired_capabilities: capabilities,
42
+ options: options
43
+ )
44
+ end
45
+
46
+ Superbara.puts "registered drivers"
47
+ Superbara.puts capabilities.inspect
48
+ end
49
+ end; end
data/lib/superbara/dsl.rb CHANGED
@@ -3,6 +3,18 @@ module Superbara; module DSL
3
3
  puts "Superbara::DSL included in #{includer.inspect}"
4
4
  end
5
5
 
6
+ def atleast(range)
7
+ min = range.to_a.first
8
+ add = rand(range.to_a.last)
9
+ min+add
10
+ end
11
+ def think(range)
12
+ duration = atleast(range)
13
+
14
+ Superbara.puts "thinking #{duration}s"
15
+ sleep duration
16
+ end
17
+
6
18
  def wait(seconds, &block)
7
19
  def wait_formatted_output(status, took_delta)
8
20
  word, color = if status
@@ -1,3 +1,3 @@
1
1
  module Superbara
2
- VERSION = "0.2.3"
2
+ VERSION = "0.3.0"
3
3
  end
data/lib/superbara.rb CHANGED
@@ -8,12 +8,17 @@ require "selenium-webdriver"
8
8
  require_relative "capybara_monkey"
9
9
  require_relative "pry_monkey"
10
10
 
11
+ module Superbara
12
+ def self.puts(str)
13
+ return unless ENV["SUPERBARA_DEBUG"]
14
+ Kernel.puts "Superbara #{caller[0][/`.*'/][1..-2]}: #{str}"
15
+ end
16
+ end
17
+
11
18
  require_relative "superbara/version"
12
19
  require_relative "superbara/helpers"
13
20
 
14
- require_relative "superbara/drivers/chrome"
15
- require_relative "superbara/drivers/chrome_headless"
16
- require_relative "superbara/drivers/chrome_remote"
21
+ require_relative "superbara/chrome"
17
22
 
18
23
  trap "SIGINT" do
19
24
  puts "
@@ -29,6 +34,8 @@ control+c pressed, closing the browser..."
29
34
  exit 99
30
35
  end
31
36
 
37
+ Superbara::Chrome.register_drivers
38
+
32
39
  require "chromedriver/helper"
33
40
  Chromedriver.set_version "2.37"
34
41
 
data/lib/supershell CHANGED
@@ -69,7 +69,7 @@ Error () {
69
69
  }
70
70
 
71
71
  case $1 in
72
- ""|"init")
72
+ ""|"init"|"version")
73
73
  ;;
74
74
  *)
75
75
  if [ -f $2 ]; then
@@ -116,6 +116,10 @@ start testing with:
116
116
  shift
117
117
  mode=single
118
118
  ;;
119
+ "version")
120
+ ruby -r$DIR/superbara -e "puts Superbara::VERSION"
121
+ exit 0
122
+ ;;
119
123
  *)
120
124
  Usage
121
125
  ;;
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: superbara
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matti Paksula
@@ -220,9 +220,7 @@ files:
220
220
  - lib/capybara_monkey.rb
221
221
  - lib/pry_monkey.rb
222
222
  - lib/superbara.rb
223
- - lib/superbara/drivers/chrome.rb
224
- - lib/superbara/drivers/chrome_headless.rb
225
- - lib/superbara/drivers/chrome_remote.rb
223
+ - lib/superbara/chrome.rb
226
224
  - lib/superbara/dsl.rb
227
225
  - lib/superbara/helpers.rb
228
226
  - lib/superbara/rspec.rb
@@ -1,10 +0,0 @@
1
- Capybara.register_driver :chrome do
2
- options = ::Selenium::WebDriver::Chrome::Options.new
3
- options.add_argument 'window-size=1680,1024'
4
- options.add_argument 'disable-infobars'
5
-
6
- Capybara::Selenium::Driver.new(nil,
7
- browser: :chrome,
8
- options: options
9
- )
10
- end
@@ -1,11 +0,0 @@
1
- Capybara.register_driver :chrome_headless do
2
- options = ::Selenium::WebDriver::Chrome::Options.new
3
- options.add_argument 'headless'
4
- options.add_argument 'disable-gpu'
5
- options.add_argument 'window-size=1680,1024'
6
-
7
- Capybara::Selenium::Driver.new(nil,
8
- browser: :chrome,
9
- options: options
10
- )
11
- end
@@ -1,7 +0,0 @@
1
- Capybara.register_driver :chrome_remote do
2
- Capybara::Selenium::Driver.new(nil,
3
- browser: :remote,
4
- desired_capabilities: :chrome,
5
- url: "http://#{ENV['CHROME_HOST'] || 'chrome'}:#{ENV['CHROME_PORT'] || '4444'}/wd/hub"
6
- )
7
- end