qat-web 6.1.1 → 7.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/qat/web/browser/html_dump.rb +16 -3
- data/lib/qat/web/browser/screenshot.rb +14 -4
- data/lib/qat/web/generator.rb +38 -13
- data/lib/qat/web/hooks/html_dump.rb +4 -1
- data/lib/qat/web/hooks/screenshot.rb +1 -1
- data/lib/qat/web/version.rb +1 -1
- metadata +24 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a7fc27f04467c3f761672ec57c2007529b67f0d7de28381d553088f82334ff8
|
4
|
+
data.tar.gz: 8796cdf363c255e27ad62b3c3021f3a167716f02eb2d9c59dfafce69d5b9907e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 756778a83ec785faa5f40c6430595d265bb8fd1eed7f935fc3aae6c1175c0b271b9e0f53726776839107ead2d3be8d90f01723ee1d3135073deb058bc0f9b464
|
7
|
+
data.tar.gz: 8bb3e2dc3af755e3720293655e666b5fc09a87cde7d5ee74c684037a0618484758a1fe0071bedb8e84ed08fc863c0f42c87355639615ddc22fb302ab39db0370
|
@@ -17,23 +17,36 @@ module QAT::Web
|
|
17
17
|
#@return [String/NilClass] File path to where the HTML dump file was saved or nil if the browser doesn't support HTML dumps
|
18
18
|
#@since 1.0.0
|
19
19
|
def take_html_dump(page=Capybara.current_session, path=html_dump_path)
|
20
|
-
log.info { "Saving HTML dump to #{path}" }
|
21
20
|
raise ArgumentError.new "File #{path} already exists! Choose another filename" if ::File.exists? path
|
22
|
-
|
21
|
+
log.info { "Saving HTML dump to #{path}" }
|
22
|
+
path = read_html_dump page ,path
|
23
23
|
log.info { "HTML dump available" }
|
24
|
-
|
24
|
+
path
|
25
25
|
rescue Capybara::NotSupportedByDriverError
|
26
26
|
log.warn { "Driver #{page.mode} does not support HTML dumps!" }
|
27
27
|
return nil
|
28
28
|
end
|
29
29
|
|
30
|
+
|
31
|
+
##Helper for reading file, in cucumber 6 this could be reverted to path directly
|
32
|
+
def read_html_dump page, dump_path
|
33
|
+
file = page.save_page dump_path
|
34
|
+
dump_path_read = File.open file
|
35
|
+
dump_path_read.read
|
36
|
+
end
|
37
|
+
|
30
38
|
#Default HTML dump path. Can be set with {#html_dump_path=}.
|
31
39
|
#@return [String] HTML dump path
|
32
40
|
#@since 1.0.0
|
41
|
+
|
33
42
|
def html_dump_path
|
34
43
|
@html_dump_path || ::File.join('public', "browser_#{Time.new.strftime("%H%M%S%L")}.html")
|
35
44
|
end
|
36
45
|
|
46
|
+
def html_dump_filename
|
47
|
+
File.basename(@html_dump_path)
|
48
|
+
end
|
49
|
+
|
37
50
|
#Set new default HTML dump path.
|
38
51
|
#@param path [String] HTML dump path
|
39
52
|
#@since 1.0.0
|
@@ -16,17 +16,27 @@ module QAT::Web
|
|
16
16
|
#@param path [String] File path to save screenshot file
|
17
17
|
#@return [String/NilClass]File path to where the screenshot file was saved or nil if the browser doesn't support screenshots
|
18
18
|
#@since 1.0.0
|
19
|
-
def take_screenshot page=Capybara.current_session,
|
20
|
-
log.info {"Saving screenshot to #{path}"}
|
19
|
+
def take_screenshot page = Capybara.current_session , path = screenshot_path
|
20
|
+
log.info { "Saving screenshot to #{path}" }
|
21
21
|
raise ArgumentError.new "File #{path} already exists! Choose another filename" if ::File.exists? path
|
22
|
-
path = page
|
23
|
-
log.info {"Screenshot available"}
|
22
|
+
path = read_screenshot_file page, path
|
23
|
+
log.info { "Screenshot available" }
|
24
24
|
path
|
25
25
|
rescue Capybara::NotSupportedByDriverError
|
26
26
|
log.warn {"Driver #{page.mode} does not support screenshots!"}
|
27
27
|
return nil
|
28
28
|
end
|
29
29
|
|
30
|
+
##Helper for reading file, in cucumber 6 this could be reverted to path directly
|
31
|
+
def read_screenshot_file page, image_path
|
32
|
+
file = page.save_screenshot image_path
|
33
|
+
File.open file
|
34
|
+
end
|
35
|
+
|
36
|
+
def screenshot_filename
|
37
|
+
File.basename(@screenshot_path)
|
38
|
+
end
|
39
|
+
|
30
40
|
#Default screenshot path. Can be set with {#screenshot_path=}.
|
31
41
|
#@return [String] Screenshot path
|
32
42
|
#@since 1.0.0
|
data/lib/qat/web/generator.rb
CHANGED
@@ -1,32 +1,57 @@
|
|
1
1
|
require_relative '../../../lib/qat/web/version'
|
2
2
|
require 'fileutils'
|
3
|
+
require 'gemnasium/parser'
|
4
|
+
|
3
5
|
module QAT::Web
|
4
6
|
#Module for the various generators used in the CLI utility
|
5
7
|
#@since 6.1.0
|
6
8
|
module Generator
|
7
9
|
include FileUtils
|
8
10
|
extend FileUtils
|
9
|
-
|
10
11
|
# Adds a files QAT Web module to the current project
|
11
12
|
def add_module(stdout, opts)
|
12
|
-
|
13
13
|
stdout.puts "Adding files to project" if opts[:verbose]
|
14
|
-
cp_r ::File.join(::File.dirname(__FILE__), 'generator', 'project', '.'), Dir.pwd, opts
|
15
|
-
::File.write('Gemfile', <<-GEMFILE, mode: 'a')
|
16
|
-
|
17
14
|
|
15
|
+
# Read GemFile of new project
|
16
|
+
path = File.join(Dir.pwd, 'Gemfile')
|
17
|
+
has_qatweb = verify_gems path, 'qat-web', verbose: opts[:verbose]
|
18
|
+
if has_qatweb
|
19
|
+
puts "Module already integrated"
|
20
|
+
else
|
21
|
+
add_gem_dependency path, 'qat-web', verbose: opts[:verbose], version: QAT::Web::VERSION
|
22
|
+
add_gem_dependency path, 'headless', verbose: opts[:verbose]
|
23
|
+
add_gem_dependency path, 'selenium-webdriver', verbose: opts[:verbose]
|
24
|
+
cp_r ::File.join(::File.dirname(__FILE__), 'generator', 'project', '.'), Dir.pwd, opts
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def verify_gems (gemfile_path, gem, opts = {})
|
29
|
+
file = File.read(gemfile_path)
|
30
|
+
gemfile = Gemnasium::Parser.gemfile(file)
|
31
|
+
dependencies = gemfile.dependencies
|
32
|
+
found_gem = dependencies.find {|i| i.name == gem}
|
33
|
+
puts "Found gem: #{found_gem}"
|
34
|
+
puts "gem #{gem} found? #{!found_gem.nil?}" if opts[:verbose]
|
35
|
+
|
36
|
+
if found_gem
|
37
|
+
return true
|
38
|
+
else
|
39
|
+
return false
|
40
|
+
end
|
41
|
+
end
|
18
42
|
|
19
|
-
|
20
|
-
|
43
|
+
def add_gem_dependency (gemfile_path, gem, opts = {})
|
44
|
+
version = opts[:version]
|
45
|
+
line = "\n\ngem '#{gem}'#{version ? ", '>= #{version}'" : ''}"
|
46
|
+
puts "adding dependencies #{gem} to Gemfile" if opts[:verbose]
|
47
|
+
write_to_gemfile gemfile_path, line
|
48
|
+
end
|
21
49
|
|
22
|
-
# Ruby headless display interface (http://leonid.shevtsov.me/en/headless)
|
23
|
-
gem 'headless' #optional
|
24
50
|
|
25
|
-
|
26
|
-
|
27
|
-
GEMFILE
|
51
|
+
def write_to_gemfile filename, line
|
52
|
+
::File.write(filename, line, mode: 'a')
|
28
53
|
end
|
29
54
|
|
30
|
-
module_function :add_module
|
55
|
+
module_function :add_module, :write_to_gemfile, :add_gem_dependency, :verify_gems
|
31
56
|
end
|
32
57
|
end
|
@@ -15,7 +15,10 @@ After do |scenario|
|
|
15
15
|
if scenario.failed?
|
16
16
|
if QAT::Web::Exceptions::HTML_DUMP.any? { |exception| scenario.exception.kind_of?(exception) }
|
17
17
|
# Embeds an existing HTML dump to Cucumber's HTML report
|
18
|
-
|
18
|
+
# This attach the content of the file in this case the attach method appears it doesn't allow atm to embed a file link as before
|
19
|
+
# attach(QAT::Web::Browser::HTMLDump.take_html_dump, 'text/html')
|
20
|
+
# Only saving the content to the public folder
|
21
|
+
QAT::Web::Browser::HTMLDump.take_html_dump
|
19
22
|
end
|
20
23
|
end
|
21
24
|
end
|
@@ -14,7 +14,7 @@ end
|
|
14
14
|
After do |scenario|
|
15
15
|
if scenario.failed?
|
16
16
|
if QAT::Web::Exceptions::SCREENSHOT.any? { |exception| scenario.exception.kind_of?(exception) }
|
17
|
-
|
17
|
+
attach QAT::Web::Browser::Screenshot.take_screenshot, 'image/png'
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
data/lib/qat/web/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qat-web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 7.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- QAT
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: qat-cucumber
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 7.0.4
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 7.0.4
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: qat-devel
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '8.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '8.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: headless
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -126,14 +126,14 @@ dependencies:
|
|
126
126
|
requirements:
|
127
127
|
- - "~>"
|
128
128
|
- !ruby/object:Gem::Version
|
129
|
-
version: '
|
129
|
+
version: '8.0'
|
130
130
|
type: :runtime
|
131
131
|
prerelease: false
|
132
132
|
version_requirements: !ruby/object:Gem::Requirement
|
133
133
|
requirements:
|
134
134
|
- - "~>"
|
135
135
|
- !ruby/object:Gem::Version
|
136
|
-
version: '
|
136
|
+
version: '8.0'
|
137
137
|
- !ruby/object:Gem::Dependency
|
138
138
|
name: little-plugger
|
139
139
|
requirement: !ruby/object:Gem::Requirement
|
@@ -196,6 +196,20 @@ dependencies:
|
|
196
196
|
- - ">="
|
197
197
|
- !ruby/object:Gem::Version
|
198
198
|
version: '0'
|
199
|
+
- !ruby/object:Gem::Dependency
|
200
|
+
name: gemnasium-parser
|
201
|
+
requirement: !ruby/object:Gem::Requirement
|
202
|
+
requirements:
|
203
|
+
- - ">="
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: '0'
|
206
|
+
type: :runtime
|
207
|
+
prerelease: false
|
208
|
+
version_requirements: !ruby/object:Gem::Requirement
|
209
|
+
requirements:
|
210
|
+
- - ">="
|
211
|
+
- !ruby/object:Gem::Version
|
212
|
+
version: '0'
|
199
213
|
description: |2
|
200
214
|
QAT-Web is a browser controller for Web testing, with support for various browsers and webdrivers.
|
201
215
|
Includes various classes for easier planning and implementation of web interactions, using the Page Objects Pattern.
|
@@ -281,15 +295,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
281
295
|
requirements:
|
282
296
|
- - "~>"
|
283
297
|
- !ruby/object:Gem::Version
|
284
|
-
version: '2.
|
298
|
+
version: '2.5'
|
285
299
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
286
300
|
requirements:
|
287
301
|
- - ">="
|
288
302
|
- !ruby/object:Gem::Version
|
289
303
|
version: '0'
|
290
304
|
requirements: []
|
291
|
-
|
292
|
-
rubygems_version: 2.7.7
|
305
|
+
rubygems_version: 3.0.8
|
293
306
|
signing_key:
|
294
307
|
specification_version: 4
|
295
308
|
summary: QAT-Web is a browser controller for Web testing
|