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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d8d68e9065fad78da0faeae6edd261f76f9c2afca7a4b6a9c9032603edffea21
4
- data.tar.gz: 5530cb9a8c37d1d930297c270a780c4e1a89516d370e3e25e142c2c50a3c3f70
3
+ metadata.gz: 1c2d1b0213253a59851177f4c3deab93a1b917a1b6fdc377489f4c64a2d40578
4
+ data.tar.gz: 7d0a48a39e34dc27e675a3fa9147184540234feaf206c3b6f93803b8d81c7a40
5
5
  SHA512:
6
- metadata.gz: 7174abc47b1c79a9bed227ba151d9769bd4b660194137b21e820ce7ab0970616b265eab2924a8a2742831823719ea39f628bbc2925dd757e66c98fd1a0faba23
7
- data.tar.gz: 78d04f134561aceb6a00c0ed197d6cf56afcb9002a9bc8018a6951e56533d1e0bd46f332a88c496939c03b103283743f3fed8f6a633e2cb302ba3d1abbbdc4f4
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
- path = page.save_page path
21
+ log.info { "Saving HTML dump to #{path}" }
22
+ path = read_html_dump page ,path
23
23
  log.info { "HTML dump available" }
24
- ::File.basename(path)
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, path=screenshot_path
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.save_screenshot path
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
@@ -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
- # QAT-Web is a browser controller for Web testing (https://github.com/readiness-it/qat-web)
20
- gem 'qat-web', '~> 6.1'
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
- # The next generation developer focused tool for automated testing of webapps (https://github.com/seleniumhq/selenium)
26
- gem 'selenium-webdriver' #optional
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
@@ -5,7 +5,7 @@ Feature: some feature
5
5
  I want to specify scenarios
6
6
 
7
7
 
8
- @test#4 @dummy_test
8
+ @test#10 @dummy_test
9
9
  Scenario: Navigate to google page
10
10
  When I navigate to home page
11
11
  Then I can interact with home page
@@ -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
- embed(QAT::Web::Browser::HTMLDump.take_html_dump, 'text/plain', 'HTML dump')
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
- embed QAT::Web::Browser::Screenshot.take_screenshot, 'image/png', 'Screenshot'
17
+ attach QAT::Web::Browser::Screenshot.take_screenshot, 'image/png'
18
18
  end
19
19
  end
20
20
  end
@@ -4,6 +4,6 @@ module QAT
4
4
  #@since 1.0.0
5
5
  module Web
6
6
  # Represents QAT-Web's version
7
- VERSION = '6.1.0'
7
+ VERSION = '7.0.0'
8
8
  end
9
9
  end
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: 6.1.0
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: 2019-09-30 00:00:00.000000000 Z
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: '6.0'
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: '6.0'
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: '6.0'
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: '6.0'
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: '6.0'
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: '6.0'
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.4'
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
- rubyforge_project:
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