acceptance_test2 0.9.0 → 0.10.1
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 +4 -4
- data/.gitignore +1 -0
- data/.ruby-version +1 -1
- data/Dockerfile +42 -0
- data/Gemfile +43 -13
- data/README.md +0 -62
- data/Rakefile +5 -2
- data/Thorfile +19 -0
- data/Vagrantfile +83 -0
- data/acceptance_test2.gemspec +35 -0
- data/lib/acceptance_test/capybara/capybara_helper.rb +71 -71
- data/lib/acceptance_test/rspec/rspec_helper.rb +68 -31
- data/lib/acceptance_test/version.rb +1 -1
- data/package.json +20 -0
- data/protractor.conf.js +47 -0
- data/spec/js/angularSiteSpec.js +20 -0
- data/spec/js/support/env.js +13 -0
- data/spec/js/support/extend.js +48 -0
- data/spec/minitest_helper.rb +2 -0
- data/spec/unit/google_search_test.rb +1 -1
- data/spec/unit/wikipedia_search_spec.rb +48 -2
- data/spec/unit/wikipedia_search_test.rb +1 -3
- data/thor/extra_provision.sh +89 -0
- data/thor/project.conf.json +16 -0
- data/thor/project.thor +61 -0
- data/thor/project_provision.sh +55 -0
- data/thor/ssh.thor +54 -0
- data/thor/system_provision.sh +77 -0
- metadata +53 -49
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7897f04e82d60a587e4b526ff0041807d2330432
|
4
|
+
data.tar.gz: 85d96b26ab159f3afc3ac41a89743cfde7203c28
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c01751f63ff9df04dbfa000951596dce962e61d8a41d8abbc883cb2a887332dba592fe8c680feeed1e1544a0e2f9bba81b81e8f3fe172fa141b5d41bc1dcbe0
|
7
|
+
data.tar.gz: cceaf93ffecdaa997c49c036c6ce17a2de00b3809c0d4f004fcf62e41e79304d101065960c4ed7d7e9c6f82440739a685b7163751fb5e21144622ad81b27c98c
|
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.3.1
|
data/Dockerfile
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
#
|
2
|
+
# Acceptance Dockerfile
|
3
|
+
#
|
4
|
+
|
5
|
+
FROM ubuntu:14.04
|
6
|
+
|
7
|
+
MAINTAINER Alexander Shvets "alexander.shvets@gmail.com"
|
8
|
+
|
9
|
+
# 1. Update system
|
10
|
+
RUN sudo apt-get update
|
11
|
+
RUN sudo locale-gen en_US.UTF-8
|
12
|
+
|
13
|
+
# 2. Install sshd
|
14
|
+
|
15
|
+
RUN sudo apt-get install -y openssh-server
|
16
|
+
RUN mkdir /var/run/sshd
|
17
|
+
RUN echo 'root:root' |chpasswd
|
18
|
+
RUN sed --in-place=.bak 's/without-password/yes/' /etc/ssh/sshd_config
|
19
|
+
|
20
|
+
EXPOSE 22
|
21
|
+
|
22
|
+
CMD /usr/sbin/sshd -D
|
23
|
+
|
24
|
+
# 3. Create vagrant user
|
25
|
+
RUN groupadd vagrant
|
26
|
+
RUN useradd -d /home/vagrant -g vagrant -m -s /bin/bash vagrant
|
27
|
+
RUN sudo sed -i '$a vagrant ALL=(ALL) NOPASSWD: ALL' /etc/sudoers
|
28
|
+
RUN echo vagrant:vagrant | chpasswd
|
29
|
+
RUN sudo chown -R vagrant /home/vagrant
|
30
|
+
|
31
|
+
# 4. Prepare directories for the project
|
32
|
+
|
33
|
+
# Add project dir to docker
|
34
|
+
|
35
|
+
ADD . /home/vagrant/demo
|
36
|
+
WORKDIR /home/vagrant/demo
|
37
|
+
|
38
|
+
EXPOSE 9292
|
39
|
+
|
40
|
+
# Define default command.
|
41
|
+
CMD ["bash"]
|
42
|
+
|
data/Gemfile
CHANGED
@@ -5,27 +5,57 @@ group :development do
|
|
5
5
|
gem "gemcutter"
|
6
6
|
end
|
7
7
|
|
8
|
+
group :default do
|
9
|
+
gem 'thor', "~> 0.19.1"
|
10
|
+
gem "script_executor", "~> 1.7.7"
|
11
|
+
gem "parallel_tests", "~> 2.6.0"
|
12
|
+
|
13
|
+
if Gem::Platform.local.os.to_sym == :linux
|
14
|
+
gem "headless"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
8
18
|
group :minitest, :default do
|
9
|
-
gem "minitest", "~> 5.
|
10
|
-
gem "minitest-capybara", "~> 0.
|
19
|
+
gem "minitest", "~> 5.9.0"
|
20
|
+
gem "minitest-capybara", "~> 0.8.2"
|
11
21
|
gem "minitest-metadata", "~> 0.6.0"
|
12
|
-
gem "minitest-reporters", "~> 1.1.
|
22
|
+
gem "minitest-reporters", "~> 1.1.9"
|
13
23
|
end
|
14
24
|
|
25
|
+
# Note: for capybara-webkit you need to install qt first:
|
26
|
+
#
|
27
|
+
# Mac: brew install qt5 ; ln -s /usr/local/Cellar/qt5/5.6.1/bin/qmake /usr/local/bin/qmake
|
28
|
+
# Ubuntu: sudo apt-get install libqt4-dev libqtwebkit-dev
|
29
|
+
# Debian: sudo apt-get install libqt4-dev
|
30
|
+
# Fedora: yum install qt-webkit-devell
|
31
|
+
|
32
|
+
# for chrome support:
|
33
|
+
# brew install chromedriver
|
34
|
+
|
35
|
+
# Note: for poltergeist you have to install phantomjs first
|
36
|
+
# brew install phantomjs
|
37
|
+
|
15
38
|
group :capybara, :default do
|
16
|
-
gem "capybara", "~> 2.
|
39
|
+
gem "capybara", "~> 2.7.1"
|
17
40
|
gem "capybara-extensions", "~> 0.4.1"
|
18
|
-
gem "selenium-webdriver", "~> 2.
|
19
|
-
gem "capybara-webkit", "~> 1.7.1"
|
41
|
+
gem "selenium-webdriver", "~> 2.53.3"
|
20
42
|
end
|
21
43
|
|
44
|
+
# group :webkit do
|
45
|
+
# gem "capybara-webkit", "~> 1.7.1"
|
46
|
+
# end
|
47
|
+
#
|
48
|
+
# group :poltergeist do
|
49
|
+
# gem "poltergeist", "~> 1.9.0"
|
50
|
+
# end
|
51
|
+
|
22
52
|
group :rspec, :default do
|
23
|
-
gem "rspec", "~> 3.
|
53
|
+
gem "rspec", "~> 3.4.0"
|
24
54
|
end
|
25
55
|
|
26
|
-
group :turnip
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
end
|
56
|
+
# group :turnip do
|
57
|
+
# gem "turnip", "~> 2.1.1"
|
58
|
+
# gem "turnip_formatter", "~> 0.5.0"
|
59
|
+
# gem "gnawrnip", "~> 0.5.0"
|
60
|
+
# #gem "turnip", :git => 'https://github.com/jnicklas/turnip.git', :branch => '2_0_0_rc1'
|
61
|
+
# end
|
data/README.md
CHANGED
@@ -185,62 +185,6 @@ Feature: Using Wikipedia
|
|
185
185
|
Then I should see "Capybara"
|
186
186
|
```
|
187
187
|
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
# Without selenium configuration
|
192
|
-
|
193
|
-
Your spec class:
|
194
|
-
|
195
|
-
```ruby
|
196
|
-
require 'acceptance_test'
|
197
|
-
|
198
|
-
describe 'Google Search' do
|
199
|
-
|
200
|
-
include_context "AcceptanceTest"
|
201
|
-
|
202
|
-
before :all do
|
203
|
-
acceptance_test.app_host = "http://www.google.com"
|
204
|
-
end
|
205
|
-
|
206
|
-
it "uses selenium driver", driver: :selenium, exclude: false do
|
207
|
-
visit('/')
|
208
|
-
|
209
|
-
fill_in "q", :with => "Capybara"
|
210
|
-
|
211
|
-
#save_and_open_page
|
212
|
-
|
213
|
-
find("#gbqfbw button").click
|
214
|
-
|
215
|
-
all(:xpath, "//li[@class='g']/h3/a").each { |a| puts a[:href] }
|
216
|
-
end
|
217
|
-
end
|
218
|
-
```
|
219
|
-
|
220
|
-
# With selenium configuration
|
221
|
-
|
222
|
-
Your spec class:
|
223
|
-
|
224
|
-
```ruby
|
225
|
-
require 'acceptance_test'
|
226
|
-
|
227
|
-
describe 'Google Search' do
|
228
|
-
|
229
|
-
include_context "AcceptanceTest"
|
230
|
-
|
231
|
-
before :all do
|
232
|
-
selenium_config_file = "spec/features/selenium.yml"
|
233
|
-
selenium_config_name = "test"
|
234
|
-
|
235
|
-
acceptance_test.load_selenium_config selenium_config_file, selenium_config_name
|
236
|
-
end
|
237
|
-
|
238
|
-
it "do something" do
|
239
|
-
# ...
|
240
|
-
end
|
241
|
-
end
|
242
|
-
```
|
243
|
-
|
244
188
|
# Using Vagrant
|
245
189
|
|
246
190
|
1. Install Virtual Box & Vagrant
|
@@ -254,12 +198,6 @@ brew cask install vagrant
|
|
254
198
|
|
255
199
|
vagrant up
|
256
200
|
|
257
|
-
3. Run docker container:
|
258
|
-
|
259
|
-
vagrant docker-run default -- echo hi
|
260
|
-
|
261
|
-
|
262
|
-
app -- rake db:migrate
|
263
201
|
|
264
202
|
|
265
203
|
Capybara resources:
|
data/Rakefile
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
$LOAD_PATH.unshift File.expand_path("lib", File.dirname(__FILE__))
|
4
4
|
|
5
5
|
require "rspec/core/rake_task"
|
6
|
+
require 'rake/testtask'
|
6
7
|
require "acceptance_test/version"
|
7
8
|
require "gemspec_deps_gen/gemspec_deps_gen"
|
8
9
|
|
@@ -31,8 +32,6 @@ task :release => :build do
|
|
31
32
|
system "gem push #{project_name}-#{version}.gem"
|
32
33
|
end
|
33
34
|
|
34
|
-
require 'rake/testtask'
|
35
|
-
|
36
35
|
task :default => :test
|
37
36
|
|
38
37
|
desc 'Run minitest tests'
|
@@ -57,3 +56,7 @@ RSpec::Core::RakeTask.new('turnip') do |t|
|
|
57
56
|
t.rspec_opts = "--color -Ispec/support/features -r turnip/rspec"
|
58
57
|
end
|
59
58
|
|
59
|
+
desc 'Run tests in parallel'
|
60
|
+
RSpec::Core::RakeTask.new('para') do
|
61
|
+
system 'parallel_test -n 2 -e "rspec spec/unit/wikipedia_search_spec.rb"'
|
62
|
+
end
|
data/Thorfile
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
unless defined? Thor::Runner
|
4
|
+
require 'bundler'
|
5
|
+
|
6
|
+
gems = Bundler::Definition.build(Bundler.default_gemfile, Bundler.default_lockfile, nil).requested_specs
|
7
|
+
|
8
|
+
gem = gems.find { |gem| gem.name == 'thor'}
|
9
|
+
|
10
|
+
load "#{ENV['GEM_HOME']}/gems/#{gem.name}-#{gem.version}/bin/thor"
|
11
|
+
end
|
12
|
+
|
13
|
+
require 'thor'
|
14
|
+
|
15
|
+
Dir.glob("thor/**/*.thor") do |name|
|
16
|
+
Thor::Util.load_thorfile(name)
|
17
|
+
end
|
18
|
+
|
19
|
+
# $LOAD_PATH.unshift File.expand_path("lib", File.dirname(__FILE__))
|
data/Vagrantfile
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
# All Vagrant configuration is done below. The "2" in Vagrant.configure
|
5
|
+
# configures the configuration version (we support older styles for
|
6
|
+
# backwards compatibility). Please don't change it unless you know what
|
7
|
+
# you're doing.
|
8
|
+
Vagrant.configure(2) do |config|
|
9
|
+
# The most common configuration options are documented and commented below.
|
10
|
+
# For a complete reference, please see the online documentation at
|
11
|
+
# https://docs.vagrantup.com.
|
12
|
+
|
13
|
+
# Every Vagrant development environment requires a box. You can search for
|
14
|
+
# boxes at https://atlas.hashicorp.com/search.
|
15
|
+
|
16
|
+
config.vm.box = "ubuntu/vivid64"
|
17
|
+
# config.vm.box = "package.box"
|
18
|
+
|
19
|
+
config.vm.network "private_network", ip: "22.22.22.22"
|
20
|
+
|
21
|
+
# Disable automatic box update checking. If you disable this, then
|
22
|
+
# boxes will only be checked for updates when the user runs
|
23
|
+
# `vagrant box outdated`. This is not recommended.
|
24
|
+
# config.vm.box_check_update = false
|
25
|
+
|
26
|
+
# Create a forwarded port mapping which allows access to a specific port
|
27
|
+
# within the machine from a port on the host machine. In the example below,
|
28
|
+
# accessing "localhost:8080" will access port 80 on the guest machine.
|
29
|
+
# config.vm.network "forwarded_port", guest: 80, host: 8080
|
30
|
+
|
31
|
+
# Create a private network, which allows host-only access to the machine
|
32
|
+
# using a specific IP.
|
33
|
+
# config.vm.network "private_network", ip: "192.168.33.10"
|
34
|
+
|
35
|
+
# Create a public network, which generally matched to bridged network.
|
36
|
+
# Bridged networks make the machine appear as another physical device on
|
37
|
+
# your network.
|
38
|
+
# config.vm.network "public_network"
|
39
|
+
|
40
|
+
# Share an additional folder to the guest VM. The first argument is
|
41
|
+
# the path on the host to the actual folder. The second argument is
|
42
|
+
# the path on the guest to mount the folder. And the optional third
|
43
|
+
# argument is a set of non-required options.
|
44
|
+
# config.vm.synced_folder "../data", "/vagrant_data"
|
45
|
+
|
46
|
+
# Provider-specific configuration so you can fine-tune various
|
47
|
+
# backing providers for Vagrant. These expose provider-specific options.
|
48
|
+
# Example for VirtualBox:
|
49
|
+
|
50
|
+
config.vm.provider "virtualbox" do |vb|
|
51
|
+
# Display the VirtualBox GUI when booting the machine
|
52
|
+
# vb.gui = true
|
53
|
+
|
54
|
+
# Customize the amount of memory on the VM:
|
55
|
+
vb.memory = 2048
|
56
|
+
vb.cpus = 4
|
57
|
+
end
|
58
|
+
|
59
|
+
# config.vm.provider "docker" do |d|
|
60
|
+
# d.build_dir = "."
|
61
|
+
# d.remains_running = false
|
62
|
+
# end
|
63
|
+
#
|
64
|
+
# config.ssh.username = "docker"
|
65
|
+
# config.ssh.password = "tcuser"
|
66
|
+
|
67
|
+
# View the documentation for the provider you are using for more
|
68
|
+
# information on available options.
|
69
|
+
|
70
|
+
# Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
|
71
|
+
# such as FTP and Heroku are also available. See the documentation at
|
72
|
+
# https://docs.vagrantup.com/v2/push/atlas.html for more information.
|
73
|
+
# config.push.define "atlas" do |push|
|
74
|
+
# push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
|
75
|
+
# end
|
76
|
+
|
77
|
+
# Enable provisioning with a shell script. Additional provisioners such as
|
78
|
+
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
|
79
|
+
# documentation for more information about their specific syntax and use.
|
80
|
+
|
81
|
+
config.vm.provision :shell, path: "thor/system_provision.sh"
|
82
|
+
|
83
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require File.expand_path(File.dirname(__FILE__) + '/lib/acceptance_test/version')
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "acceptance_test2"
|
7
|
+
spec.summary = %q{Simplifies congiguration and run of acceptance tests.}
|
8
|
+
spec.description = %q{Description: simplifies congiguration and run of acceptance tests.}
|
9
|
+
spec.email = "alexander.shvets@gmail.com"
|
10
|
+
spec.authors = ["Alexander Shvets"]
|
11
|
+
spec.homepage = "http://github.com/shvets/acceptance_test2"
|
12
|
+
|
13
|
+
spec.files = `git ls-files`.split($\)
|
14
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
15
|
+
spec.require_paths = ["lib"]
|
16
|
+
spec.version = AcceptanceTest::VERSION
|
17
|
+
spec.license = "MIT"
|
18
|
+
|
19
|
+
|
20
|
+
spec.add_runtime_dependency "thor", ["~> 0.19.1"]
|
21
|
+
spec.add_runtime_dependency "script_executor", ["~> 1.7.7"]
|
22
|
+
spec.add_runtime_dependency "parallel_tests", ["~> 2.6.0"]
|
23
|
+
spec.add_runtime_dependency "minitest", ["~> 5.9.0"]
|
24
|
+
spec.add_runtime_dependency "minitest-capybara", ["~> 0.8.2"]
|
25
|
+
spec.add_runtime_dependency "minitest-metadata", ["~> 0.6.0"]
|
26
|
+
spec.add_runtime_dependency "minitest-reporters", ["~> 1.1.9"]
|
27
|
+
spec.add_runtime_dependency "capybara", ["~> 2.7.1"]
|
28
|
+
spec.add_runtime_dependency "capybara-extensions", ["~> 0.4.1"]
|
29
|
+
spec.add_runtime_dependency "selenium-webdriver", ["~> 2.53.3"]
|
30
|
+
spec.add_runtime_dependency "rspec", ["~> 3.4.0"]
|
31
|
+
spec.add_development_dependency "gemspec_deps_gen", [">= 0"]
|
32
|
+
spec.add_development_dependency "gemcutter", [">= 0"]
|
33
|
+
|
34
|
+
|
35
|
+
end
|
@@ -8,7 +8,7 @@ class CapybaraHelper
|
|
8
8
|
DEFAULT_BROWSER = :chrome
|
9
9
|
DEFAULT_WAIT_TIME = 2
|
10
10
|
|
11
|
-
attr_reader :headless_mode, :video_mode
|
11
|
+
attr_reader :headless_mode, :video_mode, :parallel_tests_mode
|
12
12
|
|
13
13
|
def initialize
|
14
14
|
Capybara.run_server = false
|
@@ -21,7 +21,7 @@ class CapybaraHelper
|
|
21
21
|
rescue LoadError
|
22
22
|
@headless_mode = false
|
23
23
|
|
24
|
-
|
24
|
+
headless_mode_not_supported
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -33,28 +33,22 @@ class CapybaraHelper
|
|
33
33
|
def before_test(app_host:, driver: DEFAULT_DRIVER, browser: DEFAULT_BROWSER, wait_time: DEFAULT_WAIT_TIME)
|
34
34
|
@old_driver = Capybara.current_driver
|
35
35
|
|
36
|
-
driver_name = register_driver driver
|
36
|
+
driver_name = register_driver driver, browser: browser, selenium_url: nil, capabilities: nil
|
37
37
|
|
38
38
|
use_driver(driver_name)
|
39
39
|
|
40
|
-
# driver_manager.setup_browser_binary config[:browser].to_sym, config[:browser_binaries]
|
41
|
-
|
42
40
|
Capybara.app_host = app_host
|
43
41
|
|
44
42
|
@old_default_max_wait_time = Capybara.default_max_wait_time
|
45
43
|
|
46
44
|
Capybara.configure do |conf|
|
47
45
|
conf.default_max_wait_time = wait_time
|
48
|
-
|
49
|
-
# conf.match = :first
|
50
|
-
#
|
51
|
-
# conf.ignore_hidden_elements = false
|
52
46
|
end
|
53
47
|
|
54
48
|
if headless_mode
|
55
49
|
headless_params = {}
|
56
|
-
|
57
|
-
headless_params[:reuse] =
|
50
|
+
headless_params[:display] = 100 + test_number
|
51
|
+
headless_params[:reuse] = parallel_tests_mode ? true : false
|
58
52
|
headless_params[:dimensions] = "1280x900x24"
|
59
53
|
|
60
54
|
headless_params[:video] = {
|
@@ -67,19 +61,23 @@ class CapybaraHelper
|
|
67
61
|
log_file_path: STDERR
|
68
62
|
} if video_mode
|
69
63
|
|
70
|
-
|
64
|
+
begin
|
65
|
+
@headless = Headless.new headless_params
|
71
66
|
|
72
|
-
|
67
|
+
@headless.start
|
73
68
|
|
74
|
-
|
69
|
+
@headless.video.start_capture if video_mode
|
70
|
+
rescue Headless::Exception
|
71
|
+
@headless_mode = false
|
75
72
|
|
76
|
-
|
73
|
+
headless_mode_not_supported
|
74
|
+
end
|
77
75
|
end
|
78
76
|
|
79
77
|
driver_name
|
80
78
|
end
|
81
79
|
|
82
|
-
def after_test
|
80
|
+
def after_test name: nil, exception: nil
|
83
81
|
Capybara.default_driver = @old_driver
|
84
82
|
Capybara.current_driver = @old_driver
|
85
83
|
Capybara.javascript_driver = @old_driver
|
@@ -91,68 +89,27 @@ class CapybaraHelper
|
|
91
89
|
end
|
92
90
|
|
93
91
|
if headless_mode
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
# else
|
104
|
-
# @headless.video.stop_and_discard if video_mode
|
105
|
-
# end
|
92
|
+
if video_mode
|
93
|
+
@headless.video.stop_and_save success_video_name(name)
|
94
|
+
else
|
95
|
+
if exception
|
96
|
+
@headless.video.stop_and_save error_video_name(name, exception)
|
97
|
+
else
|
98
|
+
@headless.video.stop_and_discard
|
99
|
+
end
|
100
|
+
end
|
106
101
|
|
107
102
|
@headless.destroy
|
108
103
|
end
|
109
104
|
end
|
110
105
|
|
111
|
-
def
|
112
|
-
@parallel_tests_mode ? + ENV['TEST_ENV_NUMBER'].to_i : 1
|
113
|
-
end
|
114
|
-
|
115
|
-
def take_screenshot
|
116
|
-
if headless_mode
|
117
|
-
#@headless.take_screenshot
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
private
|
122
|
-
|
123
|
-
def register_driver driver:, browser: DEFAULT_BROWSER, selenium_url: nil, capabilities: nil
|
106
|
+
def register_driver driver, browser: DEFAULT_BROWSER, selenium_url: nil, capabilities: nil
|
124
107
|
driver_name = build_driver_name(driver: driver, browser: browser, selenium_url: selenium_url)
|
125
108
|
|
126
|
-
# case driver
|
127
|
-
# # when :poltergeist
|
128
|
-
# # require 'capybara/poltergeist'
|
129
|
-
#
|
130
|
-
# when :webkit
|
131
|
-
# require "capybara-webkit"
|
132
|
-
#
|
133
|
-
# when :firefox_with_firebug
|
134
|
-
# require 'capybara/firebug'
|
135
|
-
#
|
136
|
-
# else
|
137
|
-
# ;
|
138
|
-
# end
|
139
|
-
|
140
|
-
# if driver == :poltergeist
|
141
|
-
# properties = {}
|
142
|
-
# properties[:debug] = false
|
143
|
-
#
|
144
|
-
# Capybara.register_driver :poltergeist do |app|
|
145
|
-
# Capybara::Poltergeist::Driver.new(app, properties)
|
146
|
-
# end
|
147
|
-
# elsif driver == :webkit
|
148
|
-
# ;
|
149
|
-
# else
|
150
109
|
if driver == :selenium
|
151
110
|
properties = {}
|
152
111
|
|
153
|
-
if
|
154
|
-
properties[:browser] = browser
|
155
|
-
else
|
112
|
+
if selenium_url
|
156
113
|
properties[:browser] = :remote
|
157
114
|
properties[:url] = selenium_url
|
158
115
|
|
@@ -166,7 +123,7 @@ class CapybaraHelper
|
|
166
123
|
when :chrome
|
167
124
|
caps = Selenium::WebDriver::Remote::Capabilities.chrome
|
168
125
|
else
|
169
|
-
|
126
|
+
caps = nil
|
170
127
|
end
|
171
128
|
|
172
129
|
desired_capabilities =
|
@@ -181,20 +138,63 @@ class CapybaraHelper
|
|
181
138
|
end
|
182
139
|
|
183
140
|
properties[:desired_capabilities] = desired_capabilities if desired_capabilities
|
141
|
+
else
|
142
|
+
properties[:browser] = browser
|
184
143
|
end
|
185
144
|
|
186
145
|
Capybara.register_driver driver_name do |app|
|
187
146
|
Capybara::Selenium::Driver.new(app, properties)
|
188
147
|
end
|
148
|
+
|
149
|
+
# elsif driver == :poltergeist
|
150
|
+
# require 'capybara/poltergeist'
|
151
|
+
#
|
152
|
+
# properties = {}
|
153
|
+
# properties[:debug] = false
|
154
|
+
#
|
155
|
+
# Capybara.register_driver :poltergeist do |app|
|
156
|
+
# Capybara::Poltergeist::Driver.new(app, properties)
|
157
|
+
# end
|
158
|
+
#
|
159
|
+
# elsif driver == :webkit
|
160
|
+
# require "capybara-webkit"
|
189
161
|
end
|
190
162
|
|
191
163
|
driver_name
|
192
164
|
end
|
193
165
|
|
166
|
+
def take_screenshot
|
167
|
+
file_path = '/vagrant/screenshot.jpg'
|
168
|
+
|
169
|
+
if headless_mode
|
170
|
+
@headless.take_screenshot file_path, {using: :imagemagick}
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
private
|
175
|
+
|
176
|
+
def test_number
|
177
|
+
parallel_tests_mode ? ENV['TEST_ENV_NUMBER'].to_i : 1
|
178
|
+
end
|
179
|
+
|
180
|
+
def error_video_name name, exception
|
181
|
+
exception_name = exception && exception.respond_to?(:name) ? exception.name : 'exception'
|
182
|
+
|
183
|
+
"#{exception_name}_#{name}.mp4"
|
184
|
+
end
|
185
|
+
|
186
|
+
def success_video_name name
|
187
|
+
"#{name}.mp4"
|
188
|
+
end
|
189
|
+
|
190
|
+
def headless_mode_not_supported
|
191
|
+
puts "Headless mode is not supported on this OS."
|
192
|
+
end
|
193
|
+
|
194
194
|
def build_driver_name driver:, browser:, selenium_url: nil
|
195
195
|
case driver
|
196
|
-
when :webkit
|
197
|
-
|
196
|
+
# when :webkit
|
197
|
+
# :webkit
|
198
198
|
# when :poltergeist
|
199
199
|
# :poltergeist
|
200
200
|
when :selenium
|