automation_wizard 0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 278280f6976a396faab9b3b87edb3c78df1b6e6d
4
+ data.tar.gz: dffab9fd29018cb43bd64f0f1b25e9e32244b085
5
+ SHA512:
6
+ metadata.gz: 1ab199f9751d3da87d6db6a75e74450f3cfcc9bd481e5f9ada0c442d127c55c9f6d38b4e67ce897613b4c24254e4ec28dffceaf4e4e870262cfb6ea040d638d6
7
+ data.tar.gz: 5297caef617e6e810e5698fe619de9c21e40a2be5b578b69c201f7977d184ec15e164225837ccbfd6f17520873dfda15e8a34a4fb389db770a5cdbd9d2203d12
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ # Created by .ignore support plugin (hsz.mobi)
2
+ .idea/
3
+ .DS_Store
4
+ automation_wizard-0.1.gem
data/ChangeLog ADDED
@@ -0,0 +1,2 @@
1
+ === Version 0.1 / 2016-08-11
2
+ * Initial release that contains a simple project generator for candidates apply to the Test Automation Team
data/Readme.md ADDED
@@ -0,0 +1,20 @@
1
+ # Automation Wizard
2
+
3
+ A gem that contains generators that create things testers need.
4
+
5
+ Currently it only generates a cucumber project. You can do this by executing:
6
+
7
+ wiz testproject <project_name>
8
+
9
+ This command will create a project in the <em>project_name</em> directory with the files needed to begin
10
+ developing cucumber features. There is an option that can be provided to have the project configure to use different gems:
11
+
12
+ ## Web testing
13
+
14
+ If you are testing a web application, <em>testgen</em> can setup the project to use the PageObject gem.
15
+
16
+ wiz testproject <project_name> --pageobject-driver=watir
17
+
18
+ Valid options for the <em>--pageobject-driver</em> option are 'watir' or 'selenium'
19
+
20
+
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "automation_wizard/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "automation_wizard"
7
+ s.version = AutomationWizard::VERSION
8
+ s.license = 'MIT'
9
+ s.authors = ["Avery Roswell"]
10
+ s.email = ["avery.roswell@loblaw.ca"]
11
+ s.summary = %q{Generator for wizard test. Generator for base project setup.}
12
+ s.description = %q{A collection of generators for project setup, applicant testing, and onboarding.}
13
+
14
+ s.rubyforge_project = "automation_wizard"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ s.add_dependency 'thor', '~> 0.17', '>=0.17.0'
22
+ s.add_dependency 'cucumber', '~> 1.2', '>=1.2.0'
23
+ s.add_dependency 'rspec', '~> 2.13', '>=2.13.0'
24
+ s.add_dependency 'pry', '~> 0.10', '>=0.10.0'
25
+ s.add_dependency 'require_all'
26
+
27
+ s.add_development_dependency 'aruba'
28
+ end
data/bin/wiz ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'automation_wizard/cli'
4
+ AutomationWizard::CLI.start
@@ -0,0 +1,16 @@
1
+ require 'thor'
2
+ require 'automation_wizard/generators/project'
3
+
4
+ module AutomationWizard
5
+ class CLI < Thor
6
+
7
+ desc "testproject <project_name>", "Create a new test project"
8
+ method_option :pageobject_driver, type: :string, required: false, desc: "Use the PageObject gem to drive browsers. Valid values are 'watir' and 'selenium'"
9
+
10
+ def testproject(name)
11
+ driver = options[:pageobject_driver].nil? ? 'none' : options[:pageobject_driver]
12
+ AutomationWizard::Generators::Project.start([name, driver])
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,10 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'cucumber'
4
+ gem 'rspec'
5
+ gem 'rake'
6
+ gem 'pry'
7
+ <% unless pageobject_driver.downcase == 'none' -%>
8
+ gem 'page-object'
9
+ <% end -%>
10
+
@@ -0,0 +1,9 @@
1
+ require 'rubygems'
2
+ require 'cucumber'
3
+ require 'cucumber/rake/task'
4
+
5
+ Cucumber::Rake::Task.new(:features) do |t|
6
+ t.profile = 'default'
7
+ end
8
+
9
+ task :default => :features
@@ -0,0 +1,49 @@
1
+ ###Automation Take-Home Test
2
+
3
+ Purpose:
4
+
5
+ 1. To measure candidate's ability to build robust tests using the PageObject gem as a base.
6
+
7
+ 2. To measure candidate's overall code quality and test architecture
8
+
9
+
10
+ Deliverables:
11
+
12
+ * Return the generated project folder in a zip file
13
+
14
+ * Include instructions on how to run the tests and install any required libraries
15
+
16
+
17
+ Recommended Tools in Generated Gemfile:
18
+
19
+ * Cucumber for the test framework
20
+
21
+ * Page-Object gem for the test code (it is a wrapper for Selenium & Watir WebDriver)
22
+
23
+ * Rake for launching tests / tasks
24
+
25
+ * Pry for debugging (optional)
26
+
27
+
28
+ Browser the test needs to run on:
29
+
30
+ * Chrome (Chrome driver should be installed first if not already.)
31
+
32
+
33
+ Time:
34
+
35
+ * 1 week from the time the candidate receives the email with the test instructions.
36
+
37
+ * You can contact aroswell@gmail.com via email or on google hangout for any questions or clarifications
38
+
39
+
40
+
41
+ Tests scenarios:
42
+
43
+ _Goto_ [loblaw.ca](https://www.loblaws.ca/)
44
+
45
+ 1a) Search for `apples` and sort the search results from highest price to lowest price. Confirm that the web site has sorted the price correctly.
46
+
47
+ 1b) Search for `apples` and use the _Price Reduction_ filter under _Promotions_ to sort the search by sale badges. Verify for every product: the amount on the badge and the price reduction match, and that the price in kg is equivalent to the price in lbs.
48
+
49
+ 2) As a new user to the site, add an item to your cart. The site should ask you to pick a store. After selecting a store that allows online shopping, confirm that the homepage displays the correct store. Then select a timeslot in the slot wizard and confirm that the homepage displays the correct timeslot.
@@ -0,0 +1 @@
1
+ default: --no-source --color --format pretty
@@ -0,0 +1,10 @@
1
+ require 'rspec'
2
+ require 'pry'
3
+ <% unless pageobject_driver.downcase == 'none' -%>
4
+ require 'page-object'
5
+ <% end -%>
6
+
7
+ <% unless pageobject_driver.downcase == 'none' -%>
8
+ World(PageObject::PageFactory)
9
+ <% end -%>
10
+
@@ -0,0 +1,20 @@
1
+ <% if pageobject_driver.downcase == 'watir' -%>
2
+ require 'watir-webdriver'
3
+ <% end %>
4
+ <% if pageobject_driver.downcase == 'selenium' -%>
5
+ require 'selenium-webdriver'
6
+ <% end %>
7
+
8
+ Before do
9
+ <% if pageobject_driver.downcase == 'watir' -%>
10
+ @browser = Watir::Browser.new :chrome
11
+ <% end %>
12
+ <% if pageobject_driver.downcase == 'selenium' -%>
13
+ @browser = Selenium::WebDriver.for :chrome
14
+ <% end %>
15
+ end
16
+
17
+
18
+ After do
19
+ @browser.close
20
+ end
@@ -0,0 +1,63 @@
1
+ require 'thor/group'
2
+
3
+ module AutomationWizard
4
+ module Generators
5
+ class Project < Thor::Group
6
+ include Thor::Actions
7
+
8
+ argument :name, type: :string, desc: 'The name of the project'
9
+ argument :pageobject_driver, type: :string, desc: 'Driver to use with PageObject'
10
+
11
+ desc "Generates a project structure for automation applicant test"
12
+
13
+ def self.source_root
14
+ File.dirname(__FILE__) + "/project"
15
+ end
16
+
17
+ def create_top_directory
18
+ empty_directory(name)
19
+ end
20
+
21
+ def copy_cucumber_yml
22
+ template "cucumber.yml.tt", "#{name}/cucumber.yml"
23
+ end
24
+
25
+ def copy_gemfile
26
+ template "Gemfile.tt", "#{name}/Gemfile"
27
+ end
28
+
29
+ def copy_rakefile
30
+ copy_file "Rakefile", "#{name}/Rakefile"
31
+ end
32
+
33
+ def copy_readme
34
+ copy_file "Readme.md.tt", "#{name}/Readme.md"
35
+ end
36
+
37
+ def create_cucumber_directories
38
+ empty_directory("#{name}/features")
39
+ empty_directory("#{name}/features/support")
40
+ empty_directory("#{name}/features/step_definitions")
41
+ end
42
+
43
+ def copy_env
44
+ template "env.rb.tt", "#{name}/features/support/env.rb"
45
+ end
46
+
47
+ def copy_hooks
48
+ template "hooks.rb.tt", "#{name}/features/support/hooks.rb" unless no_driver_selected
49
+ end
50
+
51
+ def create_pages_directory
52
+ empty_directory("#{name}/features/support/pages") unless no_driver_selected
53
+ end
54
+
55
+
56
+ private
57
+ def no_driver_selected
58
+ pageobject_driver.downcase == 'none'
59
+ end
60
+
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,3 @@
1
+ module AutomationWizard
2
+ VERSION = "0.1"
3
+ end
@@ -0,0 +1,2 @@
1
+ require "automation_wizard/version"
2
+ require 'automation_wizard/cli'
metadata ADDED
@@ -0,0 +1,170 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: automation_wizard
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - Avery Roswell
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-08-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.17'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.17.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.17'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.17.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: cucumber
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.2'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 1.2.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.2'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 1.2.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: rspec
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '2.13'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 2.13.0
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '2.13'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 2.13.0
73
+ - !ruby/object:Gem::Dependency
74
+ name: pry
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '0.10'
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 0.10.0
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.10'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 0.10.0
93
+ - !ruby/object:Gem::Dependency
94
+ name: require_all
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ type: :runtime
101
+ prerelease: false
102
+ version_requirements: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ - !ruby/object:Gem::Dependency
108
+ name: aruba
109
+ requirement: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ type: :development
115
+ prerelease: false
116
+ version_requirements: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ description: A collection of generators for project setup, applicant testing, and
122
+ onboarding.
123
+ email:
124
+ - avery.roswell@loblaw.ca
125
+ executables:
126
+ - wiz
127
+ extensions: []
128
+ extra_rdoc_files: []
129
+ files:
130
+ - ".gitignore"
131
+ - ChangeLog
132
+ - Readme.md
133
+ - automation_wizard.gemspec
134
+ - bin/wiz
135
+ - lib/automation_wizard.rb
136
+ - lib/automation_wizard/cli.rb
137
+ - lib/automation_wizard/generators/project.rb
138
+ - lib/automation_wizard/generators/project/Gemfile.tt
139
+ - lib/automation_wizard/generators/project/Rakefile
140
+ - lib/automation_wizard/generators/project/Readme.md.tt
141
+ - lib/automation_wizard/generators/project/cucumber.yml.tt
142
+ - lib/automation_wizard/generators/project/env.rb.tt
143
+ - lib/automation_wizard/generators/project/hooks.rb.tt
144
+ - lib/automation_wizard/version.rb
145
+ homepage:
146
+ licenses:
147
+ - MIT
148
+ metadata: {}
149
+ post_install_message:
150
+ rdoc_options: []
151
+ require_paths:
152
+ - lib
153
+ required_ruby_version: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ required_rubygems_version: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
163
+ requirements: []
164
+ rubyforge_project: automation_wizard
165
+ rubygems_version: 2.5.1
166
+ signing_key:
167
+ specification_version: 4
168
+ summary: Generator for wizard test. Generator for base project setup.
169
+ test_files: []
170
+ has_rdoc: