cloud_test 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,71 @@
1
+ require_relative 'core'
2
+ module CloudTest
3
+ class CrossBrowserTesting < Core
4
+
5
+ SERVER = "hub.crossbrowsertesting.com/wd/hub"
6
+ DASHBOARD_LINK = "https://app.crossbrowsertesting.com/selenium/results"
7
+ REST_STATUS_SERVER = "https://crossbrowsertesting.com/api/v3/selenium/"
8
+
9
+ def self.init(config=nil)
10
+ @config = config || load_config('CBT_USERNAME', 'CBT_ACCESS_KEY')
11
+
12
+ puts '> Running features on crossbrowsertesting.com'
13
+ @caps = Core.get_default_caps
14
+
15
+ @caps['record_video'] = true
16
+ @caps['record_network'] = true
17
+ @caps["javascriptEnabled"] = true
18
+ @caps["webStorageEnabled"] = true
19
+ @caps["acceptSslCerts"] = true
20
+
21
+ @caps = merge_caps(@caps, @config, 'crossbrowsertesting')
22
+ if !config.nil?
23
+ start()
24
+ end
25
+ end
26
+ def self.start
27
+ Capybara.app_host = "http://local:5555"
28
+ Capybara.server_port = 5555
29
+ register_driver(@caps, @config['user'], @config['key'], SERVER)
30
+ end
31
+
32
+ # update status
33
+ # https://help.crossbrowsertesting.com/selenium-testing/tutorials/updating-selenium-tests-pass-fail/
34
+
35
+
36
+ def self.list_caps # defaults
37
+ Core.list_caps
38
+ puts "CrossBrowserTesting specific defaults:"
39
+ puts "\trecord_video: true"
40
+ puts "\trecord_network: true"
41
+ puts "\tjavascriptEnabled: true"
42
+ puts "\twebStorageEnabled: true"
43
+ puts "\tacceptSslCerts: true"
44
+ puts 'You can find all available caps https://help.crossbrowsertesting.com/selenium-testing/tutorials/crossbrowsertesting-automation-capabilities/'
45
+ end
46
+
47
+ def self.get_all_caps # dry run
48
+ @caps.kind_of?(Hash) || init()
49
+ puts "Capabilities: "
50
+ list_these_caps(@caps)
51
+ end
52
+
53
+ def self.get_status_msg(success, reason)
54
+ {
55
+ "action" => "set_score",
56
+ "score" => success ? "pass" : "fail",
57
+ "description" => reason
58
+ }
59
+ end
60
+
61
+ def self.check_session_id(session_id)
62
+ unless session_id =~ Regexp.new('^([0-9a-z]{32})|([0-9a-z]|-){36}$')
63
+ puts session_id, session_id.length
64
+ raise "session_id is invalid!"
65
+ end
66
+ end
67
+
68
+ end
69
+ end
70
+
71
+
@@ -0,0 +1,21 @@
1
+ require 'thor/group'
2
+ module CloudTest
3
+ module Generators
4
+ class Support < Thor::Group
5
+ include Thor::Actions
6
+ def self.source_root
7
+ File.dirname(__FILE__) + "/configs"
8
+ end
9
+
10
+ def create_group
11
+ if !Dir.exist?('features/support')
12
+ empty_directory('features/support')
13
+ end
14
+ end
15
+ def copy_config
16
+ template("sample.cloud_test.rb", "features/support/cloud_test.rb")
17
+ end
18
+ end
19
+ end
20
+ end
21
+
@@ -0,0 +1,21 @@
1
+ require 'thor/group'
2
+ module CloudTest
3
+ module Generators
4
+ class Config < Thor::Group
5
+ include Thor::Actions
6
+ argument :provider, :default => "browserstack"
7
+ def self.source_root
8
+ File.dirname(__FILE__) + "/configs"
9
+ end
10
+
11
+ def create_group
12
+ if !Dir.exist?('config')
13
+ empty_directory('config')
14
+ end
15
+ end
16
+ def copy_config
17
+ template("sample.cloud_test.#{provider}.yml", "config/cloud_test.yml")
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ provider: "browserstack"
2
+ user: "username" # these may not be the login credentials
3
+ key: "password"
4
+ cloud_test_debug: false
5
+ common_caps:
6
+ "acceptSslCerts": true # allow self signed certificates
7
+ browserstack: #optional block
8
+ "browserstack.local": true
9
+ "browserstack.debug": true # Visual log
10
+ browsers:
11
+ IE:
12
+ "browser": "IE"
13
+ "browser_version": "11.0"
14
+ "os": "Windows"
15
+ "os_version": "7"
16
+ CHROME:
17
+ "browser": "chrome"
18
+ "browser_version": "75.0"
19
+ "os": "Windows"
20
+ cucumber_tag: "@cloud_test"
@@ -0,0 +1,31 @@
1
+ provider: 'crossbrowsertesting'
2
+ user: "username" # these may not be the login credentials
3
+ key: "password"
4
+ cloud_test_debug: false
5
+ common_caps:
6
+ "acceptSslCerts": true # allow self signed certificates
7
+ crossbrowsertesting:
8
+ 'max_duration' : 1200
9
+ browsers:
10
+ chrome_android:
11
+ browserName: "Chrome"
12
+ deviceName: "Galaxy S8"
13
+ platformVersion: "8.0"
14
+ platformName: "Android"
15
+ chrome:
16
+ browserName: 'Chrome'
17
+ version: '74x64' # there may be problems with version 75
18
+ platform: 'Windows 10'
19
+ chromeOptions:
20
+ w3c: false
21
+ safari_mobile:
22
+ browserName : 'Safari'
23
+ deviceName : 'iPhone XR Simulator'
24
+ platformVersion : '12.0'
25
+ platformName : 'iOS'
26
+ deviceOrientation : 'portrait'
27
+ safari:
28
+ browserName : 'Safari'
29
+ version : '12'
30
+ platform : 'Mac OSX 10.14'
31
+ cucumber_tag: "@cloud_test"
@@ -0,0 +1,22 @@
1
+ provider: "lambdatest"
2
+ user: "username" # these may not be the login credentials
3
+ key: "password"
4
+ cloud_test_debug: false
5
+ common_caps:
6
+ "acceptSslCerts": true # allow self signed certificates
7
+ lambdatest:
8
+ tunnel : true
9
+ console : true
10
+ network : true
11
+ visual : true
12
+ browsers:
13
+ IE11:
14
+ platform : "Windows 7"
15
+ browserName : "Internet Explorer"
16
+ version : "11.0"
17
+ ie.compatibility : 11001
18
+ SAFARI:
19
+ platform : "macOS Mojave"
20
+ browserName : "Safari"
21
+ version : "12.0"
22
+ cucumber_tag: "@cloud_test"
@@ -0,0 +1,16 @@
1
+ require 'cloud_test'
2
+
3
+ if CloudTest.enabled?
4
+ Before do
5
+ Capybara.current_driver = :cloud_test
6
+ end
7
+
8
+ After do |scenario|
9
+ if scenario.failed?
10
+ # this may overwrite itself with multiple fails
11
+ CloudTest.upload_status_to_provider success: false, session_id: page.driver.browser.session_id, reason: scenario.exception
12
+ end
13
+ # everything that is not failed is success
14
+ # CloudTest.upload_status_to_provider success: true, session_id: page.driver.browser.session_id
15
+ end
16
+ end
@@ -0,0 +1,14 @@
1
+ provider: "saucelabs"
2
+ user: "username" # these may not be the login credentials
3
+ key: "password"
4
+ cloud_test_debug: false
5
+ common_caps:
6
+ "acceptSslCerts": true # allow self signed certificates
7
+ browsers:
8
+ IE:
9
+ platform : 'Windows 7'
10
+ version : '11.0'
11
+ CHROME:
12
+ platform : 'Windows 10'
13
+ version : '75.0'
14
+ cucumber_tag: "@cloud_test"
@@ -0,0 +1,62 @@
1
+ require_relative 'core'
2
+
3
+ module CloudTest
4
+ class Lambdatest < Core
5
+ SERVER = 'hub.lambdatest.com/wd/hub'
6
+ DASHBOARD_LINK = "https://automation.lambdatest.com/"
7
+ def self.init(config=nil)
8
+ @config = config || load_config('LT_USERNAME', 'LT_ACCESS_KEY')
9
+ @caps = Core.get_default_caps
10
+ @caps['tunnel'] = true
11
+ @caps['visual'] = true
12
+ @caps['javascriptEnabled'] = true
13
+ @caps['webStorageEnabled'] = true
14
+ @caps['acceptSslCerts'] = true
15
+ @caps['acceptInsecureCerts'] = true
16
+ @caps['network'] = true
17
+
18
+
19
+ @caps['os'] = '10'
20
+ @caps['platform'] = 'WINDOWS'
21
+ @caps['browserName'] = 'CHROME'
22
+ @caps['version'] = '72'
23
+
24
+
25
+ @caps = merge_caps(@caps, @config, 'lambdatest')
26
+ if !config.nil?
27
+ start()
28
+ end
29
+ end
30
+ def self.start
31
+ puts '> Running features on lambdatest.com'
32
+
33
+ register_driver(@caps, @config['user'], @config['key'], SERVER)
34
+ Capybara.app_host = 'https://localhost.lambdatest.com:4504'
35
+ Capybara.server_port = 4504
36
+ puts 'Capybara.app_host = "https://localhost.lambdatest.com:4504"'
37
+
38
+ end
39
+
40
+
41
+ def self.list_caps
42
+ Core.list_caps
43
+ puts "Lambdatest specific defaults:"
44
+ puts "\ttunnel: true"
45
+ puts "\tvisual: true"
46
+ puts "\tjavascriptEnabled: true"
47
+ puts "\twebStorageEnabled: true"
48
+ puts "\tacceptSslCerts: true"
49
+ puts "\tacceptInsecureCerts: true"
50
+ puts "\tnetwork: true"
51
+ puts 'You can find a caps generator here: https://www.lambdatest.com/capabilities-generator/'
52
+ end
53
+
54
+ def self.get_all_caps
55
+ !@caps.nil? && @caps.keys > 0 || init()
56
+ puts "Capabilities: "
57
+ list_these_caps @caps
58
+ end
59
+ end
60
+ end
61
+
62
+
@@ -0,0 +1,58 @@
1
+ require_relative 'core'
2
+ module CloudTest
3
+ class Saucelabs < Core
4
+ SERVER = 'ondemand.saucelabs.com:443/wd/hub'
5
+ DASHBOARD_LINK = "https://app.saucelabs.com/dashboard/builds"
6
+ def self.init(config=nil)
7
+ @config = config || load_config('SL_USERNAME', 'SL_ACCESS_KEY')
8
+
9
+ @caps = Core.get_default_caps
10
+ @caps['record_video'] = true
11
+ @caps['record_network'] = true
12
+ @caps['javascriptEnabled'] = true
13
+ @caps['acceptSslCerts'] = true
14
+ @caps['webStorageEnabled'] = true
15
+ @caps['cssSelectorsEnabled'] = true
16
+ @caps['takesScreenshot'] = true
17
+
18
+
19
+ @caps['platform'] = 'WINDOWS 10'
20
+ @caps['browserName'] = 'CHROME'
21
+
22
+ Capybara.app_host = "http://0.0.0.0:4594"
23
+ Capybara.server_port = 4594
24
+
25
+ @caps = merge_caps(@caps, @config, 'saucelabs')
26
+ if !config.nil?
27
+ start()
28
+ end
29
+ end
30
+ def self.start
31
+ puts '> Running features on saucelabs.com'
32
+ #puts 'starting saucelabs tunnel..'
33
+ # inpsire solution by browserstack for starting the tunnel `bin/saucelabs_tunnel -u 7kQU -k 9eee597f-4615-4d10-b9a8-706fb7e75974`
34
+ register_driver(@caps, @config['user'], @config['key'], SERVER)
35
+ end
36
+
37
+ def self.list_caps
38
+ Core.list_caps
39
+ puts "Saucelabs specific defaults:"
40
+ puts "\trecord_video: true"
41
+ puts "\trecord_network: true"
42
+ puts "\tjavascriptEnabled: true"
43
+ puts "\tacceptSslCerts: true"
44
+ puts "\twebStorageEnabled: true"
45
+ puts "\tcssSelectorsEnabled: true"
46
+ puts "\ttakesScreenshot: true"
47
+ puts 'You can find a caps generator here: https://wiki.saucelabs.com/display/DOCS/Platform+Configurator#/'
48
+ end
49
+
50
+ def self.get_all_caps
51
+ @caps.kind_of?(Hash) || init()
52
+ puts "Capabilities: "
53
+ list_these_caps @caps
54
+ end
55
+ end
56
+ end
57
+
58
+
@@ -0,0 +1,3 @@
1
+ module CloudTest
2
+ VERSION = "1.0.7"
3
+ end
metadata ADDED
@@ -0,0 +1,191 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cloud_test
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.7
5
+ platform: ruby
6
+ authors:
7
+ - Philipp Häusele
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-07-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: aruba
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: thor
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: capybara
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: cucumber
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: selenium-webdriver
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: Enables cross-browser-testing with by the integration of the following
126
+ providers Browserstack, Crossbrowsertesting, Saucelabs and lambdatest. Based on
127
+ cucumber and capybara
128
+ email:
129
+ - philipp.haeusele@makandra.de
130
+ executables:
131
+ - cloud_test
132
+ extensions: []
133
+ extra_rdoc_files: []
134
+ files:
135
+ - ".gitignore"
136
+ - ".ruby-version"
137
+ - ".travis.yml"
138
+ - CHANGELOG.md
139
+ - CODE_OF_CONDUCT.md
140
+ - Gemfile
141
+ - Gemfile.lock
142
+ - LICENSE.txt
143
+ - README.md
144
+ - Rakefile
145
+ - bin/console
146
+ - bin/setup
147
+ - cloud_test.gemspec
148
+ - config/cloudtest.config.bak.yml
149
+ - exe/cloud_test
150
+ - lib/cloud_test.rb
151
+ - lib/cloud_test/browserstack.rb
152
+ - lib/cloud_test/cli.rb
153
+ - lib/cloud_test/core.rb
154
+ - lib/cloud_test/cross_browser_testing.rb
155
+ - lib/cloud_test/generators/cloud_test_env.rb
156
+ - lib/cloud_test/generators/config.rb
157
+ - lib/cloud_test/generators/configs/sample.cloud_test.browserstack.yml
158
+ - lib/cloud_test/generators/configs/sample.cloud_test.crossbrowsertesting.yml
159
+ - lib/cloud_test/generators/configs/sample.cloud_test.lambdatest.yml
160
+ - lib/cloud_test/generators/configs/sample.cloud_test.rb
161
+ - lib/cloud_test/generators/configs/sample.cloud_test.saucelabs.yml
162
+ - lib/cloud_test/lambdatest.rb
163
+ - lib/cloud_test/saucelabs.rb
164
+ - lib/cloud_test/version.rb
165
+ homepage: https://github.com/makandra/cloud_test
166
+ licenses:
167
+ - MIT
168
+ metadata:
169
+ homepage_uri: https://github.com/makandra/cloud_test
170
+ source_code_uri: https://github.com/makandra/cloud_test
171
+ changelog_uri: https://github.com/makandra/cloud_test/CHANGELOG.md
172
+ post_install_message:
173
+ rdoc_options: []
174
+ require_paths:
175
+ - lib
176
+ required_ruby_version: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ required_rubygems_version: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ requirements: []
187
+ rubygems_version: 3.0.4
188
+ signing_key:
189
+ specification_version: 4
190
+ summary: Enables automated Cloud-Testing with various providers.
191
+ test_files: []