superbara 0.14.7 → 0.15.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 (36) hide show
  1. checksums.yaml +4 -4
  2. data/.github/main.workflow +15 -0
  3. data/.ruby-version +1 -1
  4. data/Gemfile.lock +40 -41
  5. data/examples/the-internet/abtest.rb +13 -0
  6. data/examples/the-internet/basic_auth.rb +5 -0
  7. data/examples/the-internet/bin/run_all.rb +20 -0
  8. data/examples/the-internet/broken_images.rb +23 -0
  9. data/examples/the-internet/dynamic_content.rb +25 -0
  10. data/examples/the-internet/dynamic_controls.rb +65 -0
  11. data/examples/the-internet/dynamic_loading.rb +43 -0
  12. data/examples/the-internet/exit_intent.rb +11 -0
  13. data/examples/the-internet/file_download.rb +1 -0
  14. data/examples/the-internet/file_upload.rb +13 -0
  15. data/examples/the-internet/floating_menu.rb +15 -0
  16. data/examples/the-internet/forgot_password.rb +14 -0
  17. data/examples/the-internet/form_authentication.rb +17 -0
  18. data/examples/the-internet/frames.rb +41 -0
  19. data/examples/the-internet/geolocation.rb +17 -0
  20. data/examples/the-internet/horizontal_slider.rb +12 -0
  21. data/examples/the-internet/hovers.rb +26 -0
  22. data/examples/the-internet/infinite_scroll.rb +10 -0
  23. data/examples/the-internet/javascript_alerts.rb +21 -0
  24. data/examples/the-internet/javascript_error.rb +6 -0
  25. data/examples/the-internet/jquery_uimenus.rb +14 -0
  26. data/examples/the-internet/key_presses.rb +11 -0
  27. data/examples/the-internet/large.rb +9 -0
  28. data/examples/the-internet/notification_message.rb +17 -0
  29. data/examples/the-internet/redirector.rb +17 -0
  30. data/examples/the-internet/slow.rb +5 -0
  31. data/examples/the-internet/windows.rb +18 -0
  32. data/examples/the-internet/wysiwyg_editor.rb +11 -0
  33. data/lib/superbara/chrome.rb +3 -2
  34. data/lib/superbara/version.rb +1 -1
  35. data/superbara.gemspec +2 -2
  36. metadata +74 -54
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0b0a28cd4900b9e070895f7123308a242823fc2cb8f441785c770024b5a4dd7e
4
- data.tar.gz: feee8742d9d5ca63ce082e594189c90353f356f9080c17e755ded8db34ebc54a
3
+ metadata.gz: 5f87a239e88abd6c887f73fbc03ef48acb80a375a8c754b22e7d0a3f92650f27
4
+ data.tar.gz: dec1a145a7ebc62a74f4b5b157e0e92743aa5c95ac9200e8b83faba5fb58406b
5
5
  SHA512:
6
- metadata.gz: 471799eb01e1d643a861b7a24a9cfd04657b1dcd5710c2a098135fd97983c8bccd2372423b16816dc42283c59d5de13cbe0e89166af43d06cb110a51dad5fab1
7
- data.tar.gz: df9f81ffa88a08c40ab4231fb5f5f65b49d459ad7de27f5fb7c888f99edbaa464ecf25d4e47bbfae2e9758ad8f4637c75638aef2468a586be427d6f9cb68cd3c
6
+ metadata.gz: 6e6849e20004611cc1425cef037d026658547d7af97db182ff5bf1eff5eb50a2a2ca64fc0a7509ccbf78bf5a9929564e71bc160e7d3b81085874cc0e20fbb728
7
+ data.tar.gz: e86095eba1e257c0712c69ecf22f4a5de041ef1f338ee7b37e03147e23e055ab4877d8c0480e9137eb592971e04cbe4d1e77bfec9489a327fe3239da85632cfe
@@ -0,0 +1,15 @@
1
+ workflow "Main" {
2
+ on = "push"
3
+ resolves = ["Test"]
4
+ }
5
+
6
+ action "Install" {
7
+ uses = "docker://culturehq/actions-bundler:latest"
8
+ args = "install"
9
+ }
10
+
11
+ action "Test" {
12
+ needs = "Install"
13
+ uses = "docker://culturehq/actions-bundler:latest"
14
+ args = "exec rake"
15
+ }
@@ -1 +1 @@
1
- 2.5.1
1
+ 2.6.3
@@ -1,10 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- superbara (0.14.6)
4
+ superbara (0.15.0)
5
5
  astrolabe (~> 1.3, >= 1.3.1)
6
6
  binding_of_caller (~> 0.8, >= 0.8.0)
7
- capybara (~> 3.1, >= 3.1.0)
7
+ capybara (= 3.29.0, = 3.29)
8
8
  colorize (~> 0.8, >= 0.8.1)
9
9
  faker (~> 1.8, >= 1.8.7)
10
10
  kommando (~> 0.1, >= 0.1.2)
@@ -14,94 +14,93 @@ PATH
14
14
  pry-stack_explorer
15
15
  rb-readline (~> 0.5, >= 0.5.5)
16
16
  rspec (~> 3.7, >= 3.7.0)
17
- selenium-webdriver (~> 3.12, >= 3.12.0)
17
+ selenium-webdriver (= 4.0.0.alpha3)
18
18
  sinatra (~> 2.0, >= 2.0.1)
19
19
 
20
20
  GEM
21
21
  remote: https://rubygems.org/
22
22
  specs:
23
- addressable (2.5.2)
24
- public_suffix (>= 2.0.2, < 4.0)
23
+ addressable (2.7.0)
24
+ public_suffix (>= 2.0.2, < 5.0)
25
25
  ast (2.4.0)
26
26
  astrolabe (1.3.1)
27
27
  parser (~> 2.2)
28
28
  binding_of_caller (0.8.0)
29
29
  debug_inspector (>= 0.0.1)
30
- byebug (10.0.2)
31
- capybara (3.10.0)
30
+ byebug (11.0.1)
31
+ capybara (3.29.0)
32
32
  addressable
33
33
  mini_mime (>= 0.1.3)
34
34
  nokogiri (~> 1.8)
35
35
  rack (>= 1.6.0)
36
36
  rack-test (>= 0.6.3)
37
- regexp_parser (~> 1.2)
37
+ regexp_parser (~> 1.5)
38
38
  xpath (~> 3.2)
39
- childprocess (0.9.0)
40
- ffi (~> 1.0, >= 1.0.11)
39
+ childprocess (1.0.1)
40
+ rake (< 13.0)
41
41
  coderay (1.1.2)
42
42
  colorize (0.8.1)
43
- concurrent-ruby (1.0.5)
43
+ concurrent-ruby (1.1.5)
44
44
  debug_inspector (0.0.3)
45
45
  diff-lcs (1.3)
46
- faker (1.9.1)
46
+ faker (1.9.6)
47
47
  i18n (>= 0.7)
48
- ffi (1.9.25)
49
- i18n (1.1.1)
48
+ i18n (1.6.0)
50
49
  concurrent-ruby (~> 1.0)
51
50
  interception (0.5)
52
51
  kommando (0.1.2)
53
- method_source (0.9.0)
54
- mini_mime (1.0.1)
55
- mini_portile2 (2.3.0)
52
+ method_source (0.9.2)
53
+ mini_mime (1.0.2)
54
+ mini_portile2 (2.4.0)
56
55
  mustermann (1.0.3)
57
- nokogiri (1.8.5)
58
- mini_portile2 (~> 2.3.0)
59
- parser (2.5.3.0)
56
+ nokogiri (1.10.4)
57
+ mini_portile2 (~> 2.4.0)
58
+ parser (2.6.4.1)
60
59
  ast (~> 2.4.0)
61
- pry (0.11.3)
60
+ pry (0.12.2)
62
61
  coderay (~> 1.1.0)
63
62
  method_source (~> 0.9.0)
64
- pry-byebug (3.6.0)
65
- byebug (~> 10.0)
63
+ pry-byebug (3.7.0)
64
+ byebug (~> 11.0)
66
65
  pry (~> 0.10)
67
- pry-rescue (1.4.5)
66
+ pry-rescue (1.5.0)
68
67
  interception (>= 0.5)
69
- pry
70
- pry-stack_explorer (0.4.9.2)
68
+ pry (>= 0.12.0)
69
+ pry-stack_explorer (0.4.9.3)
71
70
  binding_of_caller (>= 0.7)
72
71
  pry (>= 0.9.11)
73
- public_suffix (3.0.3)
74
- rack (2.0.5)
75
- rack-protection (2.0.4)
72
+ public_suffix (4.0.1)
73
+ rack (2.0.7)
74
+ rack-protection (2.0.7)
76
75
  rack
77
76
  rack-test (1.1.0)
78
77
  rack (>= 1.0, < 3)
79
78
  rake (12.3.0)
80
79
  rb-readline (0.5.5)
81
- regexp_parser (1.2.0)
80
+ regexp_parser (1.6.0)
82
81
  rspec (3.8.0)
83
82
  rspec-core (~> 3.8.0)
84
83
  rspec-expectations (~> 3.8.0)
85
84
  rspec-mocks (~> 3.8.0)
86
- rspec-core (3.8.0)
85
+ rspec-core (3.8.2)
87
86
  rspec-support (~> 3.8.0)
88
- rspec-expectations (3.8.2)
87
+ rspec-expectations (3.8.4)
89
88
  diff-lcs (>= 1.2.0, < 2.0)
90
89
  rspec-support (~> 3.8.0)
91
- rspec-mocks (3.8.0)
90
+ rspec-mocks (3.8.1)
92
91
  diff-lcs (>= 1.2.0, < 2.0)
93
92
  rspec-support (~> 3.8.0)
94
- rspec-support (3.8.0)
95
- rubyzip (1.2.2)
96
- selenium-webdriver (3.14.1)
97
- childprocess (~> 0.5)
93
+ rspec-support (3.8.2)
94
+ rubyzip (1.2.4)
95
+ selenium-webdriver (4.0.0.alpha3)
96
+ childprocess (>= 0.5, < 2.0)
98
97
  rubyzip (~> 1.2, >= 1.2.2)
99
- sinatra (2.0.4)
98
+ sinatra (2.0.7)
100
99
  mustermann (~> 1.0)
101
100
  rack (~> 2.0)
102
- rack-protection (= 2.0.4)
101
+ rack-protection (= 2.0.7)
103
102
  tilt (~> 2.0)
104
- tilt (2.0.8)
103
+ tilt (2.0.9)
105
104
  xpath (3.2.0)
106
105
  nokogiri (~> 1.8)
107
106
 
@@ -114,4 +113,4 @@ DEPENDENCIES
114
113
  superbara!
115
114
 
116
115
  BUNDLED WITH
117
- 1.17.1
116
+ 1.17.3
@@ -0,0 +1,13 @@
1
+ visit 'the-internet.herokuapp.com/abtest'
2
+
3
+ wait 5 do
4
+ has_text? 'A/B Test'
5
+ end
6
+
7
+ print 'got: '
8
+ if has_text? 'A/B Test Control'
9
+ puts 'control'
10
+ elsif has_text? 'A/B Test Variation 1'
11
+ puts 'var 1'
12
+ end
13
+
@@ -0,0 +1,5 @@
1
+ visit "admin:admin@the-internet.herokuapp.com/basic_auth"
2
+
3
+ wait 5 do
4
+ has_text? "Congratulations"
5
+ end
@@ -0,0 +1,20 @@
1
+ require "kommando"
2
+
3
+ files = Dir.glob("*.rb")
4
+ files = files - ["slow.rb"]
5
+ files.shuffle!
6
+
7
+ for file in files
8
+ k = Kommando.new "superbara run #{file}", output: true
9
+ done = false
10
+ k.out.once /🏁/ do
11
+ done = true
12
+ k.in.writeln "q"
13
+ end
14
+
15
+ k.run_async
16
+ loop do
17
+ break if done
18
+ sleep 0.1
19
+ end
20
+ end
@@ -0,0 +1,23 @@
1
+ visit 'the-internet.herokuapp.com/broken_images'
2
+
3
+ wait 5 do
4
+ has_text? 'Broken Images'
5
+ end
6
+
7
+ broken_img = (all 'div.example img').first
8
+ visit broken_img[:src]
9
+ wait 5 do
10
+ has_text? 'Not Found'
11
+ end
12
+
13
+ back
14
+
15
+ wait 5 do
16
+ has_text? 'Broken Images'
17
+ end
18
+
19
+ normal_img = (all 'div.example img').last
20
+ visit normal_img[:src]
21
+ wait 5 do
22
+ has_no_text? 'Not Found'
23
+ end
@@ -0,0 +1,25 @@
1
+ visit "the-internet.herokuapp.com/dynamic_content"
2
+
3
+ wait 5 do
4
+ has_text? "Dynamic Content"
5
+ end
6
+
7
+ click_on "click here"
8
+
9
+ wait 5 do
10
+ has_text? "Dynamic Content"
11
+ end
12
+
13
+ old_text = find("#content > div:nth-child(7) > div.large-10.columns").text
14
+
15
+ reload
16
+
17
+ wait 5 do
18
+ has_text? "Dynamic Content"
19
+ end
20
+
21
+ new_text = find("#content > div:nth-child(7) > div.large-10.columns").text
22
+
23
+ wait 5 do
24
+ old_text != new_text
25
+ end
@@ -0,0 +1,65 @@
1
+ visit 'the-internet.herokuapp.com/dynamic_controls'
2
+
3
+ wait 5 do
4
+ has_text? 'Dynamic Controls'
5
+ end
6
+
7
+ within '#checkbox-example' do
8
+ wait 5 do
9
+ has_selector? '#checkbox > input[type="checkbox"]'
10
+ end
11
+
12
+ click "#checkbox-example > button"
13
+
14
+ wait 5 do
15
+ has_no_selector? '#loading'
16
+ end
17
+
18
+ wait 5 do
19
+ has_no_selector? '#checkbox > input[type="checkbox"]'
20
+ end
21
+
22
+ click '#checkbox-example > button'
23
+
24
+ wait 5 do
25
+ has_no_selector? '#loading'
26
+ end
27
+
28
+ wait 5 do
29
+ has_selector? 'div > #checkbox'
30
+ end
31
+
32
+ end
33
+
34
+ within '#input-example' do
35
+ wait 5 do
36
+ textbox = find 'input[type="text"]'
37
+ textbox[:disabled]
38
+ end
39
+
40
+ click "button"
41
+
42
+ wait 8 do
43
+ has_selector? "#message"
44
+ end
45
+
46
+ textbox = find 'input[type="text"]'
47
+
48
+ wait 5 do
49
+ textbox[:disabled] == nil
50
+ end
51
+
52
+ textbox.type "asdasd"
53
+
54
+ click "button"
55
+
56
+ wait 8 do
57
+ has_selector? "#message"
58
+ end
59
+
60
+ wait 5 do
61
+ textbox = find 'input[type="text"]'
62
+ textbox[:disabled]
63
+ end
64
+
65
+ end
@@ -0,0 +1,43 @@
1
+ visit "the-internet.herokuapp.com/dynamic_loading"
2
+
3
+ wait 5 do
4
+ has_text? "Dynamically Loaded Page Elements"
5
+ end
6
+
7
+ click_link "Example 1"
8
+
9
+ wait 5 do
10
+ has_text? "Example 1"
11
+ end
12
+
13
+ click "#start > button"
14
+
15
+ wait 5 do
16
+ has_no_selector? "#loading"
17
+ end
18
+
19
+ wait 5 do
20
+ has_text? "Hello World"
21
+ end
22
+
23
+ back
24
+
25
+ wait 5 do
26
+ has_text? "Dynamically Loaded Page Elements"
27
+ end
28
+
29
+ click_link "Example 2"
30
+
31
+ wait 5 do
32
+ has_text? "Example 2"
33
+ end
34
+
35
+ click "#start > button"
36
+
37
+ wait 5 do
38
+ has_no_selector? "#loading"
39
+ end
40
+
41
+ wait 5 do
42
+ has_text? "Hello World"
43
+ end
@@ -0,0 +1,11 @@
1
+ visit "the-internet.herokuapp.com/exit_intent"
2
+
3
+ wait 5 do
4
+ has_text? "Exit Intent"
5
+ end
6
+
7
+ puts "TODO: ??"
8
+
9
+ # wait 5 do
10
+ # has_selector? "#ouibounce-modal > div.modal"
11
+ # end
@@ -0,0 +1 @@
1
+ puts "TODO"
@@ -0,0 +1,13 @@
1
+ visit 'the-internet.herokuapp.com/upload'
2
+
3
+ wait 5 do
4
+ has_text? 'File Uploader'
5
+ end
6
+
7
+ attach_file 'file', __FILE__
8
+
9
+ click '#file-submit'
10
+
11
+ wait 5 do
12
+ has_text = 'File Uploaded!'
13
+ end
@@ -0,0 +1,15 @@
1
+ visit 'the-internet.herokuapp.com/floating_menu'
2
+
3
+ wait 5 do
4
+ has_text? 'Floating Menu'
5
+ end
6
+
7
+ menu = find '#menu'
8
+
9
+ within menu do
10
+ click_link 'Home'
11
+ end
12
+
13
+ wait 5 do
14
+ current_url.include? 'home'
15
+ end
@@ -0,0 +1,14 @@
1
+ visit 'the-internet.herokuapp.com/forgot_password'
2
+
3
+ wait 5 do
4
+ has_text? 'Forgot Password'
5
+ end
6
+
7
+ email_input = find '#email'
8
+ email_input.type 'ngonsdofigjnsdfg@nfdojgndfog.com'
9
+
10
+ click '#form_submit'
11
+
12
+ wait 5 do
13
+ has_text? "Your e-mail's been sent!"
14
+ end
@@ -0,0 +1,17 @@
1
+ visit 'the-internet.herokuapp.com/login'
2
+
3
+ wait 5 do
4
+ has_text? 'Login Page'
5
+ end
6
+
7
+ find('#username').type 'tomsmith'
8
+ find('#password').type 'SuperSecretPassword!'
9
+
10
+ click 'button'
11
+
12
+ wait 5 do
13
+ has_text? 'Welcome to the Secure Area.'
14
+ end
15
+ sleep 1
16
+
17
+ click 'a.button'
@@ -0,0 +1,41 @@
1
+ visit 'the-internet.herokuapp.com/frames'
2
+
3
+ wait 5 do
4
+ has_text? 'Frames'
5
+ end
6
+
7
+ click_link 'Nested Frames'
8
+
9
+ wait 5 do
10
+ has_selector? 'html > frameset'
11
+ end
12
+
13
+ top_frame = find 'html > frameset > frame:nth-child(1)'
14
+ switch_to_frame top_frame
15
+
16
+ left_frame = find 'html > frameset > frame:nth-child(1)'
17
+ switch_to_frame left_frame
18
+
19
+ wait 10 do
20
+ has_text? 'LEFT'
21
+ end
22
+
23
+ back
24
+
25
+ wait 5 do
26
+ has_text? 'Frames'
27
+ end
28
+
29
+ click_link 'iFrame'
30
+
31
+ wait 10 do
32
+ has_text? 'An iFrame containing the TinyMCE WYSIWYG Editor'
33
+ end
34
+
35
+ iframe = find '#mce_0_ifr'
36
+ within_frame iframe do
37
+ text = find('#tinymce').text
38
+ wait 5 do
39
+ text == 'Your content goes here.'
40
+ end
41
+ end
@@ -0,0 +1,17 @@
1
+ visit 'the-internet.herokuapp.com/geolocation'
2
+
3
+ wait 5 do
4
+ has_text? 'Geolocation'
5
+ end
6
+
7
+ click '#content > div > button'
8
+
9
+ page.execute_script """
10
+ navigator.geolocation.getCurrentPosition = function(success) { console.log(success) }
11
+ """
12
+
13
+ puts "TODO: api deprecated?"
14
+
15
+ # wait 5 do
16
+ # has_text? 'Latitude'
17
+ # end
@@ -0,0 +1,12 @@
1
+ visit 'the-internet.herokuapp.com/horizontal_slider'
2
+
3
+ wait 5 do
4
+ has_text? 'Horizontal Slider'
5
+ end
6
+
7
+ slider = find '#content > div > div > input[type="range"]'
8
+ slider.type :right, :right, :right
9
+
10
+ wait 5 do
11
+ (find '#range').text == "4"
12
+ end
@@ -0,0 +1,26 @@
1
+ visit 'the-internet.herokuapp.com/hovers'
2
+
3
+ wait 5 do
4
+ has_text? 'Hovers'
5
+ end
6
+
7
+ find('#content > div > div:nth-child(3) > img').hover
8
+
9
+ wait 0.1 do
10
+ has_text? 'user1'
11
+ end
12
+
13
+ find('#content > div > div:nth-child(4) > img').hover
14
+
15
+ wait 0.1 do
16
+ has_text? 'user2'
17
+ end
18
+
19
+ find('#content > div > div:nth-child(5) > img').hover
20
+
21
+ wait 0.1 do
22
+ has_text? 'user3'
23
+ end
24
+
25
+ find("h3", text: "Hovers").hover
26
+
@@ -0,0 +1,10 @@
1
+ visit 'the-internet.herokuapp.com/infinite_scroll'
2
+
3
+ wait 5 do
4
+ has_text? 'Infinite Scroll'
5
+ end
6
+
7
+ 10.times do
8
+ scroll 20
9
+ sleep 0.1
10
+ end
@@ -0,0 +1,21 @@
1
+ visit 'the-internet.herokuapp.com/javascript_alerts'
2
+
3
+ wait 5 do
4
+ has_text? 'JavaScript Alerts'
5
+ end
6
+
7
+ accept_alert do
8
+ click '#content > div > ul > li:nth-child(1) > button'
9
+ end
10
+
11
+ accept_confirm do
12
+ click '#content > div > ul > li:nth-child(2) > button'
13
+ end
14
+
15
+ accept_prompt do
16
+ click '#content > div > ul > li:nth-child(3) > button'
17
+ end
18
+
19
+ wait 0.1 do
20
+ has_text? "You entered:"
21
+ end
@@ -0,0 +1,6 @@
1
+ visit 'the-internet.herokuapp.com/javascript_error'
2
+
3
+ wait 5 do
4
+ has_text? 'This page has a JavaScript error in the onload event.'
5
+ end
6
+
@@ -0,0 +1,14 @@
1
+ visit 'the-internet.herokuapp.com/jqueryui/menu'
2
+
3
+ wait 5 do
4
+ has_text? 'JQueryUI - Menu'
5
+ end
6
+
7
+ find('a', text: 'Enabled').hover
8
+ sleep 0.5
9
+ find('a', text: 'Downloads').hover
10
+ sleep 0.5
11
+
12
+ wait 0.1 do
13
+ has_text? "CSV"
14
+ end
@@ -0,0 +1,11 @@
1
+ visit 'the-internet.herokuapp.com/key_presses'
2
+
3
+ wait 5 do
4
+ has_text? 'Key Presses'
5
+ end
6
+
7
+ find('#content').type 'a'
8
+
9
+ wait 0.1 do
10
+ has_text? 'You entered: A'
11
+ end
@@ -0,0 +1,9 @@
1
+ visit 'the-internet.herokuapp.com/large'
2
+
3
+ wait 5 do
4
+ has_text? 'Large & Deep DOM'
5
+ end
6
+
7
+ wait 5 do
8
+ find '#large-table > tbody > tr.row-17 > td.column-12'
9
+ end
@@ -0,0 +1,17 @@
1
+ visit 'the-internet.herokuapp.com/notification_message_rendered'
2
+
3
+ wait 5 do
4
+ has_text? 'Notification Message'
5
+ end
6
+
7
+ reload
8
+
9
+ wait 1 do
10
+ has_text? 'Notification Message'
11
+ end
12
+
13
+ click_link 'Click here'
14
+
15
+ wait 1 do
16
+ has_text? 'Action successful'
17
+ end
@@ -0,0 +1,17 @@
1
+ visit 'the-internet.herokuapp.com/redirector'
2
+
3
+ wait 5 do
4
+ has_text? 'Redirection'
5
+ end
6
+
7
+ click_link 'here'
8
+
9
+ wait 5 do
10
+ has_text? 'Status Codes'
11
+ end
12
+
13
+ click_link '200'
14
+
15
+ wait 5 do
16
+ has_text? 'This page returned a 200 status code'
17
+ end
@@ -0,0 +1,5 @@
1
+ visit 'the-internet.herokuapp.com/slow'
2
+
3
+ wait 31 do
4
+ has_text? 'Slow Resources'
5
+ end
@@ -0,0 +1,18 @@
1
+ visit 'the-internet.herokuapp.com/windows'
2
+
3
+ wait 5 do
4
+ has_text? 'Opening a new window'
5
+ end
6
+
7
+ click_link 'Click Here'
8
+ switch_to_window windows.last
9
+
10
+ wait 5 do
11
+ has_text? 'New Window'
12
+ end
13
+
14
+ switch_to_window windows.first
15
+
16
+ wait 5 do
17
+ has_text? 'Opening a new window'
18
+ end
@@ -0,0 +1,11 @@
1
+ visit 'the-internet.herokuapp.com/tinymce'
2
+
3
+ wait 5 do
4
+ has_text? 'An iFrame'
5
+ end
6
+
7
+ iframe = find '#mce_0_ifr'
8
+ within_frame iframe do
9
+ input = find '#tinymce'
10
+ input.type 'asdasdasdasd'
11
+ end
@@ -10,7 +10,7 @@ module Superbara; module Chrome
10
10
 
11
11
  def self.register_drivers
12
12
  options = ::Selenium::WebDriver::Chrome::Options.new
13
- options.add_argument 'window-size=1680,1024'
13
+ options.add_argument 'window-size=1300,800'
14
14
  options.add_argument 'disable-infobars'
15
15
 
16
16
  capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
@@ -31,12 +31,13 @@ module Superbara; module Chrome
31
31
  end
32
32
 
33
33
  Capybara.register_driver :chrome_remote do
34
- chrome_url = ENV['CHROME_URL'] || "http://chrome:4444/wd/hub"
34
+ chrome_url = ENV['CHROME_URL']
35
35
 
36
36
  Capybara::Selenium::Driver.new(nil,
37
37
  browser: :remote,
38
38
  http_client: client,
39
39
  desired_capabilities: capabilities,
40
+ options: options,
40
41
  url: chrome_url
41
42
  )
42
43
  end
@@ -1,3 +1,3 @@
1
1
  module Superbara
2
- VERSION = "0.14.7"
2
+ VERSION = "0.15.0"
3
3
  end
@@ -29,8 +29,8 @@ Gem::Specification.new do |spec|
29
29
 
30
30
  spec.add_dependency 'pry-byebug', '~> 3.6', '>= 3.6.0'
31
31
  spec.add_dependency 'binding_of_caller', '~> 0.8', '>=0.8.0'
32
- spec.add_dependency 'capybara', '~> 3.1', '>= 3.1.0'
33
- spec.add_dependency 'selenium-webdriver', '~> 3.12', '>= 3.12.0'
32
+ spec.add_dependency 'capybara', '3.29', '3.29.0'
33
+ spec.add_dependency 'selenium-webdriver', '4.0.0.alpha3', '4.0.0.alpha3'
34
34
  spec.add_dependency 'faker', '~> 1.8', '>= 1.8.7'
35
35
  spec.add_dependency 'sinatra', '~> 2.0', '>= 2.0.1'
36
36
  spec.add_dependency 'astrolabe', '~> 1.3', '>= 1.3.1'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: superbara
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.7
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matti Paksula
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-02 00:00:00.000000000 Z
11
+ date: 2019-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -62,82 +62,76 @@ dependencies:
62
62
  name: pry-byebug
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '3.6'
68
65
  - - ">="
69
66
  - !ruby/object:Gem::Version
70
67
  version: 3.6.0
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '3.6'
71
71
  type: :runtime
72
72
  prerelease: false
73
73
  version_requirements: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - "~>"
76
- - !ruby/object:Gem::Version
77
- version: '3.6'
78
75
  - - ">="
79
76
  - !ruby/object:Gem::Version
80
77
  version: 3.6.0
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '3.6'
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: binding_of_caller
83
83
  requirement: !ruby/object:Gem::Requirement
84
84
  requirements:
85
- - - "~>"
86
- - !ruby/object:Gem::Version
87
- version: '0.8'
88
85
  - - ">="
89
86
  - !ruby/object:Gem::Version
90
87
  version: 0.8.0
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '0.8'
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - "~>"
96
- - !ruby/object:Gem::Version
97
- version: '0.8'
98
95
  - - ">="
99
96
  - !ruby/object:Gem::Version
100
97
  version: 0.8.0
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '0.8'
101
101
  - !ruby/object:Gem::Dependency
102
102
  name: capybara
103
103
  requirement: !ruby/object:Gem::Requirement
104
104
  requirements:
105
- - - "~>"
105
+ - - '='
106
106
  - !ruby/object:Gem::Version
107
- version: '3.1'
108
- - - ">="
107
+ version: '3.29'
108
+ - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: 3.1.0
110
+ version: 3.29.0
111
111
  type: :runtime
112
112
  prerelease: false
113
113
  version_requirements: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - '='
116
116
  - !ruby/object:Gem::Version
117
- version: '3.1'
118
- - - ">="
117
+ version: '3.29'
118
+ - - '='
119
119
  - !ruby/object:Gem::Version
120
- version: 3.1.0
120
+ version: 3.29.0
121
121
  - !ruby/object:Gem::Dependency
122
122
  name: selenium-webdriver
123
123
  requirement: !ruby/object:Gem::Requirement
124
124
  requirements:
125
- - - "~>"
126
- - !ruby/object:Gem::Version
127
- version: '3.12'
128
- - - ">="
125
+ - - '='
129
126
  - !ruby/object:Gem::Version
130
- version: 3.12.0
127
+ version: 4.0.0.alpha3
131
128
  type: :runtime
132
129
  prerelease: false
133
130
  version_requirements: !ruby/object:Gem::Requirement
134
131
  requirements:
135
- - - "~>"
136
- - !ruby/object:Gem::Version
137
- version: '3.12'
138
- - - ">="
132
+ - - '='
139
133
  - !ruby/object:Gem::Version
140
- version: 3.12.0
134
+ version: 4.0.0.alpha3
141
135
  - !ruby/object:Gem::Dependency
142
136
  name: faker
143
137
  requirement: !ruby/object:Gem::Requirement
@@ -202,22 +196,22 @@ dependencies:
202
196
  name: rspec
203
197
  requirement: !ruby/object:Gem::Requirement
204
198
  requirements:
205
- - - "~>"
206
- - !ruby/object:Gem::Version
207
- version: '3.7'
208
199
  - - ">="
209
200
  - !ruby/object:Gem::Version
210
201
  version: 3.7.0
202
+ - - "~>"
203
+ - !ruby/object:Gem::Version
204
+ version: '3.7'
211
205
  type: :runtime
212
206
  prerelease: false
213
207
  version_requirements: !ruby/object:Gem::Requirement
214
208
  requirements:
215
- - - "~>"
216
- - !ruby/object:Gem::Version
217
- version: '3.7'
218
209
  - - ">="
219
210
  - !ruby/object:Gem::Version
220
211
  version: 3.7.0
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '3.7'
221
215
  - !ruby/object:Gem::Dependency
222
216
  name: pry-rescue
223
217
  requirement: !ruby/object:Gem::Requirement
@@ -282,42 +276,42 @@ dependencies:
282
276
  name: bundler
283
277
  requirement: !ruby/object:Gem::Requirement
284
278
  requirements:
285
- - - "~>"
286
- - !ruby/object:Gem::Version
287
- version: '1.15'
288
279
  - - ">="
289
280
  - !ruby/object:Gem::Version
290
281
  version: 1.15.0
282
+ - - "~>"
283
+ - !ruby/object:Gem::Version
284
+ version: '1.15'
291
285
  type: :development
292
286
  prerelease: false
293
287
  version_requirements: !ruby/object:Gem::Requirement
294
288
  requirements:
295
- - - "~>"
296
- - !ruby/object:Gem::Version
297
- version: '1.15'
298
289
  - - ">="
299
290
  - !ruby/object:Gem::Version
300
291
  version: 1.15.0
292
+ - - "~>"
293
+ - !ruby/object:Gem::Version
294
+ version: '1.15'
301
295
  - !ruby/object:Gem::Dependency
302
296
  name: rake
303
297
  requirement: !ruby/object:Gem::Requirement
304
298
  requirements:
305
- - - "~>"
306
- - !ruby/object:Gem::Version
307
- version: '12.3'
308
299
  - - ">="
309
300
  - !ruby/object:Gem::Version
310
301
  version: 12.3.0
302
+ - - "~>"
303
+ - !ruby/object:Gem::Version
304
+ version: '12.3'
311
305
  type: :development
312
306
  prerelease: false
313
307
  version_requirements: !ruby/object:Gem::Requirement
314
308
  requirements:
315
- - - "~>"
316
- - !ruby/object:Gem::Version
317
- version: '12.3'
318
309
  - - ">="
319
310
  - !ruby/object:Gem::Version
320
311
  version: 12.3.0
312
+ - - "~>"
313
+ - !ruby/object:Gem::Version
314
+ version: '12.3'
321
315
  description: Better way to build Capybara tests
322
316
  email:
323
317
  - matti.paksula@iki.fi
@@ -326,6 +320,7 @@ executables:
326
320
  extensions: []
327
321
  extra_rdoc_files: []
328
322
  files:
323
+ - ".github/main.workflow"
329
324
  - ".gitignore"
330
325
  - ".kung/build/hooks/post-build"
331
326
  - ".kung/build/hooks/pre-build"
@@ -407,6 +402,34 @@ files:
407
402
  - examples/sites/pharos.sh/main.rb
408
403
  - examples/sites/vr.fi/helsinki-tampere/main.rb
409
404
  - examples/spec/minimal_spec.rb
405
+ - examples/the-internet/abtest.rb
406
+ - examples/the-internet/basic_auth.rb
407
+ - examples/the-internet/bin/run_all.rb
408
+ - examples/the-internet/broken_images.rb
409
+ - examples/the-internet/dynamic_content.rb
410
+ - examples/the-internet/dynamic_controls.rb
411
+ - examples/the-internet/dynamic_loading.rb
412
+ - examples/the-internet/exit_intent.rb
413
+ - examples/the-internet/file_download.rb
414
+ - examples/the-internet/file_upload.rb
415
+ - examples/the-internet/floating_menu.rb
416
+ - examples/the-internet/forgot_password.rb
417
+ - examples/the-internet/form_authentication.rb
418
+ - examples/the-internet/frames.rb
419
+ - examples/the-internet/geolocation.rb
420
+ - examples/the-internet/horizontal_slider.rb
421
+ - examples/the-internet/hovers.rb
422
+ - examples/the-internet/infinite_scroll.rb
423
+ - examples/the-internet/javascript_alerts.rb
424
+ - examples/the-internet/javascript_error.rb
425
+ - examples/the-internet/jquery_uimenus.rb
426
+ - examples/the-internet/key_presses.rb
427
+ - examples/the-internet/large.rb
428
+ - examples/the-internet/notification_message.rb
429
+ - examples/the-internet/redirector.rb
430
+ - examples/the-internet/slow.rb
431
+ - examples/the-internet/windows.rb
432
+ - examples/the-internet/wysiwyg_editor.rb
410
433
  - exe/superbara
411
434
  - lib/capybara_monkey.rb
412
435
  - lib/pry_monkey.rb
@@ -464,11 +487,9 @@ files:
464
487
  - tests/tags/notags.rb
465
488
  - tests/tags/simple.rb
466
489
  - vendor/chromedriver/linux64/.gitkeep
467
- - vendor/chromedriver/linux64/chromedriver
468
490
  - vendor/chromedriver/mac64/.gitkeep
469
491
  - vendor/chromedriver/mac64/chromedriver
470
492
  - vendor/chromedriver/win32/.gitkeep
471
- - vendor/chromedriver/win32/chromedriver.exe
472
493
  - vendor/robot/mac64/robot
473
494
  - web/public/1.html
474
495
  - web/public/2.html
@@ -500,8 +521,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
500
521
  - !ruby/object:Gem::Version
501
522
  version: '0'
502
523
  requirements: []
503
- rubyforge_project:
504
- rubygems_version: 2.7.6
524
+ rubygems_version: 3.0.4
505
525
  signing_key:
506
526
  specification_version: 4
507
527
  summary: Super Capybara