qat-web 6.1.0 → 7.0.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 +4 -4
- data/lib/qat/web/browser/html_dump.rb +16 -3
- data/lib/qat/web/browser/screenshot.rb +16 -4
- data/lib/qat/web/generator.rb +38 -13
- data/lib/qat/web/generator/project/features/web_example.feature +1 -1
- data/lib/qat/web/hooks/html_dump.rb +1 -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: 1c2d1b0213253a59851177f4c3deab93a1b917a1b6fdc377489f4c64a2d40578
|
4
|
+
data.tar.gz: 7d0a48a39e34dc27e675a3fa9147184540234feaf206c3b6f93803b8d81c7a40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5494488e766199f13cdefe63932109742ae9116c0db27dd6b8d5e387b29eedde20f7acff54630287fef110320ef2a86c39717742c90029cc3895b50bd842eb02
|
7
|
+
data.tar.gz: 89ffa58aca9a2db20caeb29eb4bac1614991569ce3212b367fa5a6584dc38d489d68e081db39ee6b914d8a746f5cb7c7aa3ed5a97f62001677b88c2d76a45711
|
@@ -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,29 @@ 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_page image_path
|
33
|
+
image_path_read = File.open file
|
34
|
+
image_path_read.read
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
def screenshot_filename
|
39
|
+
File.basename(@screenshot_path)
|
40
|
+
end
|
41
|
+
|
30
42
|
#Default screenshot path. Can be set with {#screenshot_path=}.
|
31
43
|
#@return [String] Screenshot path
|
32
44
|
#@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,7 @@ 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
|
+
attach(QAT::Web::Browser::HTMLDump.take_html_dump, 'text/html')
|
19
19
|
end
|
20
20
|
end
|
21
21
|
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.0
|
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-04-28 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
|