testnow 0.1.1 → 0.1.2

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
  SHA1:
3
- metadata.gz: b68ad6887680969d5c0c5368a4f3fce814b3c546
4
- data.tar.gz: b43f18122dcc3179a8d46e87edd6929bf7724a92
3
+ metadata.gz: cec532a191afce5e92480eba76d1891c7b80e10c
4
+ data.tar.gz: 89baf5dcabc8330d70473394d3e9606e7f305778
5
5
  SHA512:
6
- metadata.gz: 0ba0dc401ac6c946b64670cc94ba7bf489bdbd82c2d7ecb8f69add69bafa07b9b87e0ebb6464c2a1a5bc70c91300a2645bebac9f71208797697f2d3eece2c474
7
- data.tar.gz: e3049cb81ae6e560f6351dd585cd0d57ce36066e051b614553e6c663f83f847482d0053db1c263b1abf7d2e734d38576ef4d644011aacddb163a7a26eb9c157c
6
+ metadata.gz: 8bb4dd60127154883aee1e8d26038a37448655b0f4004cd0465b7d837b1bb96896b9f82b8728be546da3d9a556841113cb878bf0234af9109c78d322344f011d
7
+ data.tar.gz: 27e254b120cac5a8dd0a11e201f38fd1bc942594bea2812312be2f2683c2564d8c43a87041c9e092cb0c25835e280a76c99ebe40171c779f1ac721a5aebd8b09
data/README.md CHANGED
@@ -29,16 +29,20 @@ An instant WebDriver-Ruby-Cucumber or WebDriver-Ruby-RSpec framework which has a
29
29
 
30
30
  ## Installation
31
31
  There are multiple ways in which you can install and use testnow gem.
32
- You must have Ruby installed before you can install this gem.
32
+ You must have Ruby(>2.0) installed before you can install this gem.
33
33
 
34
34
  ### <a name="gem" /> 1. Install using gem command
35
- Just use following command from you Terminal.
35
+ Just use following command from you Terminal.
36
+ Usually installing testnow using gem command is always advised in cases of creating a new framework from scratch.
37
+ For existing framework, see next section (Install using bundler).
36
38
  ```
37
39
  gem install testnow
38
40
  ```
39
41
 
40
42
  ### <a name="bundler" /> 2. Install using bundler
41
- You can include it in your Gemfile and run bundle install
43
+ You can include it in your Gemfile and run bundle install.
44
+ This is the preferred way to do it incase of adding testnow to an existing framework.
45
+ To create a new framework from scratch, there would be no Gemfile, then please install testnow using gem command (Previous section).
42
46
 
43
47
  ```
44
48
  gem 'testnow'
@@ -195,11 +199,11 @@ rake testnow BROWSER="Mobile Chrome" DEVICE=Google_Nexus_6
195
199
  ## Browsers
196
200
  As mentioned in the above section that there is a variable exposed called _BROWSER_ but what are the values to be passed and which OS-Browsers combinations are supported, well here is a index grid below:
197
201
 
198
- | OS | Chrome | Firefox (v47-) | Firefox Gecko (v48+) | IE 11/10 | Edge | Opera | PhantomJS | Chrome Mobile[2] |
202
+ | OS | Chrome | Firefox (v47-) | Firefox Gecko (v48+) | IE 11/10 | Edge | Opera | PhantomJS | Chrome Mobile[2] |
199
203
  |---|---|---|---|---|---|---|---|---|
200
- | Linux | Supported | Supported | Supported | N/A | N/A | Supported[1] | Coming Soon! | Supported |
201
- | Mac | Supported | Supported | Supported | N/A | N/A | Supported[1] | Coming Soon! | Supported |
202
- | Windows | Supported | Supported | Supported | Supported | Supported[3]| Coming Soon! | Coming Soon! | Supported |
204
+ | Linux | Supported | Supported | Supported | N/A | N/A | Supported[1] | Supported | Supported |
205
+ | Mac | Supported | Supported | Supported | N/A | N/A | Supported[1] | Supported | Supported |
206
+ | Windows | Supported | Supported | Supported | Supported | Supported[3]| Coming Soon! | Supported | Supported |
203
207
 
204
208
  Note:
205
209
  [1] Currently it is expected that the Opera webdriver binary is present inside "/usr/local/bin/operadriver, soon this path will be made customizable and exposaed as a varibale.
data/bin/testnow CHANGED
@@ -56,7 +56,7 @@ def cucumber_now(framework="cucumber")
56
56
  FileUtils.makedirs(@report_dir)
57
57
 
58
58
  print "Creating feature file inside scenarios directory."
59
- FileUtils.copy(@showtime_dir+"/github.feature", @scenario_dir)
59
+ FileUtils.copy(@showtime_dir+"/testnow.feature", @scenario_dir)
60
60
 
61
61
  if framework == "watir"
62
62
  print "Creating config files -- hooks.rb -- used for setup and teardown purpose."
@@ -65,10 +65,10 @@ def cucumber_now(framework="cucumber")
65
65
  FileUtils.copy(@showtime_dir+"/watir/env.rb", @support_dir)
66
66
 
67
67
  print "Creating step definition file inside the steps directory"
68
- FileUtils.copy(@showtime_dir+"/watir/github_steps.rb", @steps_dir)
68
+ FileUtils.copy(@showtime_dir+"/watir/testnow_steps.rb", @steps_dir)
69
69
 
70
70
  print "Creating page class file inside the page directory."
71
- FileUtils.copy(@showtime_dir+"/watir/github_page.rb", @page_dir)
71
+ FileUtils.copy(@showtime_dir+"/watir/testnow_page.rb", @page_dir)
72
72
 
73
73
  print "Creating Gemfile -- used to contain all required gems information."
74
74
  FileUtils.copy(@showtime_dir+"/watir/Gemfile", @root_dir)
@@ -79,10 +79,10 @@ def cucumber_now(framework="cucumber")
79
79
  FileUtils.copy(@showtime_dir+"/env.rb", @support_dir)
80
80
 
81
81
  print "Creating step definition file inside the steps directory"
82
- FileUtils.copy(@showtime_dir+"/github_steps.rb", @steps_dir)
82
+ FileUtils.copy(@showtime_dir+"/testnow_steps.rb", @steps_dir)
83
83
 
84
84
  print "Creating page class file inside the page directory."
85
- FileUtils.copy(@showtime_dir+"/github_page.rb", @page_dir)
85
+ FileUtils.copy(@showtime_dir+"/testnow_page.rb", @page_dir)
86
86
 
87
87
  print "Creating Gemfile -- used to contain all required gems information."
88
88
  FileUtils.copy(@showtime_dir+"/Gemfile", @root_dir)
@@ -105,7 +105,7 @@ def cucumber_now(framework="cucumber")
105
105
  system("bundle install --gemfile=$(pwd)/#{@base}/Gemfile")
106
106
  print "Dependency installation completed successfully.\n\n"
107
107
  else
108
- print "You can do this later also. Just cd into cucumber_now directory and run 'bundle install'\n\n"
108
+ print "You can do this later also. Just cd into #{@base} directory and run 'bundle install'\n\n"
109
109
  exit 1
110
110
  end
111
111
 
@@ -172,10 +172,10 @@ def rspec_now(framework="cucumber")
172
172
  FileUtils.copy(@showtime_dir+"/watir/Gemfile_rspec", @root_dir+"/Gemfile")
173
173
 
174
174
  print "Creating spec file inside the scenarios directory."
175
- FileUtils.copy(@showtime_dir+"/watir/github_spec.rb", @scenario_dir)
175
+ FileUtils.copy(@showtime_dir+"/watir/testnow_spec.rb", @scenario_dir)
176
176
 
177
177
  print "Creating page class file inside the pages directory."
178
- FileUtils.copy(@showtime_dir+"/watir/github_page.rb", @pages_dir)
178
+ FileUtils.copy(@showtime_dir+"/watir/testnow_page.rb", @pages_dir)
179
179
  else
180
180
  print "Creating config file -- spec_helper.rb -- used for dependency declaration and global setup-teardown"
181
181
  FileUtils.copy(@showtime_dir+"/spec_helper.rb", @spec_dir)
@@ -184,10 +184,10 @@ def rspec_now(framework="cucumber")
184
184
  FileUtils.copy(@showtime_dir+"/Gemfile_rspec", @root_dir+"/Gemfile")
185
185
 
186
186
  print "Creating spec file inside the scenarios directory."
187
- FileUtils.copy(@showtime_dir+"/github_spec.rb", @scenario_dir)
187
+ FileUtils.copy(@showtime_dir+"/testnow_spec.rb", @scenario_dir)
188
188
 
189
189
  print "Creating page class file inside the pages directory."
190
- FileUtils.copy(@showtime_dir+"/github_page.rb", @pages_dir)
190
+ FileUtils.copy(@showtime_dir+"/testnow_page.rb", @pages_dir)
191
191
  end
192
192
 
193
193
  print "Creating Rakefile -- used to write automation execution tasks."
@@ -223,7 +223,7 @@ end
223
223
 
224
224
  def print(msg)
225
225
  puts "\n"
226
- puts "=>=>=> " + msg
226
+ puts "=>=> " + msg
227
227
  sleep 0.5
228
228
  end
229
229
 
@@ -3,4 +3,5 @@ gem 'selenium-webdriver'
3
3
  gem 'cucumber'
4
4
  gem 'rspec'
5
5
  gem 'rake'
6
- gem 'testnow'
6
+ gem 'testnow'
7
+ gem 'web-object'
@@ -2,4 +2,5 @@ source "http://rubygems.org"
2
2
  gem 'selenium-webdriver'
3
3
  gem 'rspec'
4
4
  gem 'rake'
5
- gem 'testnow'
5
+ gem 'testnow'
6
+ gem 'web-object'
@@ -3,5 +3,5 @@ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new("testnow") do |role|
5
5
  role.pattern="spec/scenarios/*_spec.rb"
6
- role.rspec_opts = ["--format", "html", "--out", "reports/github.html"]
6
+ role.rspec_opts = ["--format", "html", "--out", "reports/testnow_report.html"]
7
7
  end
@@ -1 +1 @@
1
- default: --require features --no-source --color --format pretty --format html --out reports/github_report.html --format json --out reports/github_report.json
1
+ default: --require features --no-source --color --format pretty --format html --out reports/testnow_report.html --format json --out reports/testnow_report.json
data/data/showtime/env.rb CHANGED
@@ -3,6 +3,7 @@ require 'selenium-webdriver'
3
3
  require 'cucumber'
4
4
  require 'rake'
5
5
  require 'testnow'
6
+ require 'web-object'
6
7
 
7
8
  include RSpec::Matchers
8
9
  include TestNow
@@ -1,12 +1,11 @@
1
- Before do |scenario|
1
+ Before do
2
2
  @driver = TestNow.init
3
3
  end
4
4
 
5
5
  After do |scenario|
6
6
  if scenario.failed?
7
7
  begin
8
- encoded_img = driver.screenshot_as(:base64)
9
- embed("#{encoded_img}", "image/png;base64")
8
+ capture_n_embed
10
9
  rescue
11
10
  p "*** Could not take failed scenario screenshot ***"
12
11
  end
@@ -14,23 +13,19 @@ After do |scenario|
14
13
  quit_driver
15
14
  end
16
15
 
17
- at_exit do
18
- ENV['TITLE'] = "GITHUB AUTOMATION REPORT" if ENV['TITLE'].nil?
19
- report_file = File.absolute_path("github_report.html","reports")
20
- doc = File.read(report_file)
21
- new_doc = doc.sub("Cucumber Features", "#{ENV['TITLE']}")
22
- File.open(report_file, "w") {|file| file.puts new_doc }
23
- end
24
-
25
16
  AfterStep do
26
17
  begin
27
- encoded_img = driver.screenshot_as(:base64)
28
- embed("#{encoded_img}", "image/png;base64")
18
+ capture_n_embed
29
19
  rescue
30
- p "*** Could Not take screenshot ***"
20
+ # Do nothing, screenshot fails in cases of alerts
31
21
  end
32
22
  end
33
23
 
24
+ def capture_n_embed
25
+ encoded_img = driver.screenshot_as(:base64)
26
+ embed("#{encoded_img}", "image/png;base64")
27
+ end
28
+
34
29
  def driver
35
30
  @driver
36
31
  end
@@ -2,15 +2,15 @@ require 'rspec'
2
2
  require 'selenium-webdriver'
3
3
  require 'rake'
4
4
  require 'testnow'
5
+ require 'web-object'
5
6
 
6
7
  include RSpec::Matchers
7
8
  include TestNow
8
9
 
9
- require File.dirname(__FILE__) + "/../pages/github_page"
10
+ require File.dirname(__FILE__) + "/../pages/testnow_page"
10
11
 
11
12
  RSpec.configure do |config|
12
13
  config.before(:all) do
13
- ENV['TEST_URL'] = "https://github.com" if ENV['TEST_URL'].nil?
14
14
  @driver = TestNow.init
15
15
  end
16
16
 
@@ -0,0 +1,14 @@
1
+ Feature: As a TestNow user
2
+ I want to submit my professional data
3
+ and verify the acknowledgement
4
+
5
+ Scenario: Verify I can submit the testnow form
6
+ Given I am on the test page
7
+ When I submit the form
8
+ Then I verify n accept the validation alert
9
+ When I fill following data:
10
+ | Name | Role | Language |
11
+ | Kaushal Rupani | Automation | Ruby |
12
+ And I submit the form
13
+ Then I verify n accept the confirmation box
14
+ And I verify the acknowledgement
@@ -0,0 +1,76 @@
1
+ class TestNowPage < WebObject
2
+
3
+ # Different locators such as xpaths, name, css are used in mixed fashion for demo purpose
4
+ element :header, {:id => 'header'}
5
+ element :form, {:name => 'testnow-form'}
6
+ element :name_field, {:id => 'name'}
7
+ element :automation_radio, {:css => '[value=Automation]'}
8
+ element :manual_radio, {:css => '[value=Manual]'}
9
+ element :language_dropdown, {:id => 'lang'}
10
+ element :terms_checkbox, {:xpath => '//*[@id="terms"]'}
11
+ element :submit_button, {id: 'button'}
12
+
13
+ def visit_page
14
+ ENV['TEST_URL'] = "http://krupani.github.io/testnow_form" if ENV['TEST_URL'].nil?
15
+ @driver.get(ENV['TEST_URL'])
16
+ end
17
+
18
+ def verify_n_accept_validation_alert
19
+ if ENV['BROWSER'].downcase!='phantomjs'
20
+ alert = @driver.switch_to.alert
21
+ expect(alert.text).to eq "Please accept terms to submit the data."
22
+ alert.accept
23
+ else
24
+ msg=@driver.execute_script("return window.msg")
25
+ expect(msg).to eq "Please accept terms to submit the data."
26
+ end
27
+ end
28
+
29
+ def fill_form_data(data)
30
+ data.each do |key,value|
31
+ case key.downcase
32
+ when "name"
33
+ name_field.send_keys(value)
34
+ when "role"
35
+ if value.downcase=="automation"
36
+ automation_radio.click
37
+ else
38
+ manual_radio.click
39
+ end
40
+ when "language"
41
+ select = Selenium::WebDriver::Support::Select.new(language_dropdown)
42
+ select.select_by(:text, value)
43
+ end
44
+ end
45
+ terms_checkbox.click
46
+ end
47
+
48
+ def verify_n_accept_confirmation(expected)
49
+ if ENV['BROWSER'].downcase!='phantomjs'
50
+ confirm = @driver.switch_to.alert
51
+ data = confirm.text
52
+ expected.values.each do |val|
53
+ expect(data).to include(val)
54
+ end
55
+ confirm.accept
56
+ else
57
+ msg=@driver.execute_script("return window.msg")
58
+ expected.values.each do |val|
59
+ expect(msg).to include(val)
60
+ end
61
+ end
62
+ end
63
+
64
+ def submit_form
65
+ if ENV['BROWSER'].downcase=='phantomjs'
66
+ @driver.execute_script("window.alert = function(msg){window.msg=msg;return true;};")
67
+ @driver.execute_script("window.confirm = function(msg){window.msg=msg;return true;};")
68
+ end
69
+ submit_button.click
70
+ end
71
+
72
+ def verify_acknowledgement
73
+ expect(header.text).to eq 'Thank you for using TestNow!!'
74
+ end
75
+
76
+ end
@@ -0,0 +1,21 @@
1
+ require File.join(File.dirname(__FILE__),'/../spec_helper')
2
+
3
+ describe "As a TestNow user, I want to submit my professional data" do
4
+
5
+ before(:each) do
6
+ testnow = TestNowPage.new(@driver)
7
+ testnow.visit_page
8
+ end
9
+
10
+ it "should display acknowledgement message" do
11
+ testnow = TestNowPage.new(@driver)
12
+ testnow.submit_form
13
+ testnow.verify_n_accept_validation_alert
14
+ data={'Name'=>'Kaushal Rupani', 'Role'=>'Automation', 'Language'=>'Ruby'}
15
+ testnow.fill_form_data(data)
16
+ testnow.submit_form
17
+ testnow.verify_n_accept_confirmation(data)
18
+ testnow.verify_acknowledgement
19
+ end
20
+
21
+ end
@@ -0,0 +1,33 @@
1
+
2
+ Given(/^I am on the test page$/) do
3
+ testnow = TestNowPage.new(@driver)
4
+ testnow.visit_page
5
+ expect(@driver.title).to eq 'Testnow Form'
6
+ expect(testnow.header.text).to eq 'TestNow Form'
7
+ end
8
+
9
+ When(/^I fill following data:$/) do |table|
10
+ @data = table.hashes.first
11
+ testnow = TestNowPage.new(@driver)
12
+ testnow.fill_form_data(@data)
13
+ end
14
+
15
+ And(/^I submit the form$/) do
16
+ testnow = TestNowPage.new(@driver)
17
+ testnow.submit_form
18
+ end
19
+
20
+ Then(/^I verify n accept the validation alert$/) do
21
+ testnow = TestNowPage.new(@driver)
22
+ testnow.verify_n_accept_validation_alert
23
+ end
24
+
25
+ Then(/^I verify n accept the confirmation box$/) do
26
+ testnow = TestNowPage.new(@driver)
27
+ testnow.verify_n_accept_confirmation(@data)
28
+ end
29
+
30
+ And(/^I verify the acknowledgement$/) do
31
+ testnow = TestNowPage.new(@driver)
32
+ testnow.verify_acknowledgement
33
+ end
@@ -4,4 +4,5 @@ gem 'cucumber'
4
4
  gem 'rspec'
5
5
  gem 'rake'
6
6
  gem 'testnow'
7
- gem 'watir-webdriver'
7
+ gem 'watir'
8
+ gem 'web-object'
@@ -1,7 +1,7 @@
1
1
  source "http://rubygems.org"
2
2
  gem 'selenium-webdriver'
3
- gem 'cucumber'
4
3
  gem 'rspec'
5
4
  gem 'rake'
6
5
  gem 'testnow'
7
- gem 'watir-webdriver'
6
+ gem 'watir'
7
+ gem 'web-object'
@@ -3,7 +3,8 @@ require 'selenium-webdriver'
3
3
  require 'cucumber'
4
4
  require 'rake'
5
5
  require 'testnow'
6
- require 'watir-webdriver'
6
+ require 'watir'
7
+ require 'web-object'
7
8
 
8
9
  include RSpec::Matchers
9
10
  include TestNow::Watir
@@ -1,12 +1,11 @@
1
- Before do |scenario|
1
+ Before do
2
2
  @browser = TestNow.init
3
3
  end
4
4
 
5
5
  After do |scenario|
6
6
  if scenario.failed?
7
7
  begin
8
- encoded_img = driver.screenshot_as(:base64)
9
- embed("#{encoded_img}", "image/png;base64")
8
+ capture_n_embed
10
9
  rescue
11
10
  p "*** Could not take failed scenario screenshot ***"
12
11
  end
@@ -14,23 +13,19 @@ After do |scenario|
14
13
  quit_driver
15
14
  end
16
15
 
17
- at_exit do
18
- ENV['TITLE'] = "GITHUB AUTOMATION REPORT" if ENV['TITLE'].nil?
19
- report_file = File.absolute_path("github_report.html","reports")
20
- doc = File.read(report_file)
21
- new_doc = doc.sub("Cucumber Features", "#{ENV['TITLE']}")
22
- File.open(report_file, "w") {|file| file.puts new_doc }
23
- end
24
-
25
16
  AfterStep do
26
17
  begin
27
- encoded_img = driver.screenshot_as(:base64)
28
- embed("#{encoded_img}", "image/png;base64")
18
+ capture_n_embed
29
19
  rescue
30
- p "*** Could Not take screenshot ***"
20
+ # Do nothing, screenshot fails in cases of alerts
31
21
  end
32
22
  end
33
23
 
24
+ def capture_n_embed
25
+ encoded_img = driver.screenshot_as(:base64)
26
+ embed("#{encoded_img}", "image/png;base64")
27
+ end
28
+
34
29
  def driver
35
30
  @browser.driver
36
31
  end
@@ -2,16 +2,16 @@ require 'rspec'
2
2
  require 'selenium-webdriver'
3
3
  require 'rake'
4
4
  require 'testnow'
5
- require 'watir-webdriver'
5
+ require 'watir'
6
+ require 'web-object'
6
7
 
7
8
  include RSpec::Matchers
8
9
  include TestNow::Watir
9
10
 
10
- require File.dirname(__FILE__) + "/../pages/github_page"
11
+ require File.dirname(__FILE__) + "/../pages/testnow_page"
11
12
 
12
13
  RSpec.configure do |config|
13
14
  config.before(:all) do
14
- ENV['TEST_URL'] = "https://github.com" if ENV['TEST_URL'].nil?
15
15
  @browser = TestNow.init
16
16
  end
17
17
 
@@ -0,0 +1,80 @@
1
+ class TestNowPage < WebObject
2
+
3
+ # Different locators such as xpaths, name, css are used in mixed fashion for demo purpose
4
+ element :header, {:id => 'header'}
5
+ element :form, {:name => 'testnow-form'}
6
+ element :name_field, {:id => 'name'}
7
+ element :automation_radio, {:css => '[value=Automation]'}
8
+ element :manual_radio, {:css => '[value=Manual]'}
9
+ element :language_dropdown, {:id => 'lang'}
10
+ element :terms_checkbox, {:xpath => '//*[@id="terms"]'}
11
+ element :submit_button, {id: 'button'}
12
+
13
+ def initialize(browser)
14
+ @browser = browser
15
+ super(browser.driver)
16
+ end
17
+
18
+ def visit_page
19
+ ENV['TEST_URL'] = "http://krupani.github.io/testnow_form" if ENV['TEST_URL'].nil?
20
+ @browser.goto(ENV['TEST_URL'])
21
+ expect(@browser.title).to eq 'Testnow Form'
22
+ expect(header.text).to eq 'TestNow Form'
23
+ end
24
+
25
+ def verify_n_accept_validation_alert
26
+ if ENV['BROWSER'].downcase!='phantomjs'
27
+ expect(@browser.alert.text).to eq "Please accept terms to submit the data."
28
+ @browser.alert.ok
29
+ else
30
+ msg=@browser.execute_script("return window.msg")
31
+ expect(msg).to eq "Please accept terms to submit the data."
32
+ end
33
+ end
34
+
35
+ def fill_form_data(data)
36
+ data.each do |key,value|
37
+ case key.downcase
38
+ when "name"
39
+ name_field.send_keys(value)
40
+ when "role"
41
+ if value.downcase=="automation"
42
+ automation_radio.click
43
+ else
44
+ manual_radio.click
45
+ end
46
+ when "language"
47
+ @browser.select_list(:id,'lang').select(value)
48
+ end
49
+ end
50
+ terms_checkbox.click
51
+ end
52
+
53
+ def verify_n_accept_confirmation(expected)
54
+ if ENV['BROWSER'].downcase!='phantomjs'
55
+ data = @browser.alert.text
56
+ expected.values.each do |val|
57
+ expect(data).to include(val)
58
+ end
59
+ @browser.alert.ok
60
+ else
61
+ msg=@browser.execute_script("return window.msg")
62
+ expected.values.each do |val|
63
+ expect(msg).to include(val)
64
+ end
65
+ end
66
+ end
67
+
68
+ def submit_form
69
+ if ENV['BROWSER'].downcase=='phantomjs'
70
+ @browser.execute_script("window.alert = function(msg){window.msg=msg;return true;};")
71
+ @browser.execute_script("window.confirm = function(msg){window.msg=msg;return true;};")
72
+ end
73
+ submit_button.click
74
+ end
75
+
76
+ def verify_acknowledgement
77
+ expect(header.text).to eq 'Thank you for using TestNow!!'
78
+ end
79
+
80
+ end
@@ -0,0 +1,21 @@
1
+ require File.join(File.dirname(__FILE__),'/../spec_helper')
2
+
3
+ describe "As a TestNow user, I want to submit my professional data" do
4
+
5
+ before(:each) do
6
+ testnow = TestNowPage.new(@browser)
7
+ testnow.visit_page
8
+ end
9
+
10
+ it "should display acknowledgement message" do
11
+ testnow = TestNowPage.new(@browser)
12
+ testnow.submit_form
13
+ testnow.verify_n_accept_validation_alert
14
+ data={'Name'=>'Kaushal Rupani', 'Role'=>'Automation', 'Language'=>'Ruby'}
15
+ testnow.fill_form_data(data)
16
+ testnow.submit_form
17
+ testnow.verify_n_accept_confirmation(data)
18
+ testnow.verify_acknowledgement
19
+ end
20
+
21
+ end
@@ -0,0 +1,31 @@
1
+
2
+ Given(/^I am on the test page$/) do
3
+ testnow = TestNowPage.new(@browser)
4
+ testnow.visit_page
5
+ end
6
+
7
+ When(/^I submit the form$/) do
8
+ testnow = TestNowPage.new(@browser)
9
+ testnow.submit_form
10
+ end
11
+
12
+ Then(/^I verify n accept the validation alert$/) do
13
+ testnow = TestNowPage.new(@browser)
14
+ testnow.verify_n_accept_validation_alert
15
+ end
16
+
17
+ When(/^I fill following data:$/) do |table|
18
+ @data = table.hashes.first
19
+ testnow = TestNowPage.new(@browser)
20
+ testnow.fill_form_data(@data)
21
+ end
22
+
23
+ Then(/^I verify n accept the confirmation box$/) do
24
+ testnow = TestNowPage.new(@browser)
25
+ testnow.verify_n_accept_confirmation(@data)
26
+ end
27
+
28
+ And(/^I verify the acknowledgement$/) do
29
+ testnow = TestNowPage.new(@browser)
30
+ testnow.verify_acknowledgement
31
+ end
data/lib/testnow.rb CHANGED
@@ -5,6 +5,7 @@ require 'testnow/android_chrome'
5
5
  require 'testnow/ie'
6
6
  require 'testnow/edge'
7
7
  require 'testnow/firefox_gecko'
8
+ require 'testnow/phantomjs'
8
9
 
9
10
  module TestNow
10
11
 
@@ -30,8 +31,8 @@ module TestNow
30
31
  firefox_gecko = FirefoxGecko.new
31
32
  firefox_gecko.launch_driver_firefox_gecko
32
33
  when "phantomjs"
33
- puts "Coming Soon!!\n"
34
- puts "Apologies for inconvenience...\n\n"
34
+ phantomjs = PhantomJS.new
35
+ phantomjs.launch_driver_phantomjs
35
36
  when "chromemobile","mobilechrome"
36
37
  chrome = Chrome.new
37
38
  chrome.launch_driver_chrome_mobile
@@ -63,6 +64,9 @@ module TestNow
63
64
  when "firefoxgecko","geckofirefox","firefoxnew","newfirefox","firefox"
64
65
  firefox_gecko = FirefoxGecko.new
65
66
  firefox_gecko.launch_watir_firefox_gecko
67
+ when "phantomjs"
68
+ phantomjs = PhantomJS.new
69
+ phantomjs.launch_watir_phantomjs
66
70
  when "chromemobile","mobilechrome"
67
71
  chrome = Chrome.new
68
72
  chrome.launch_watir_chrome_mobile
@@ -0,0 +1,22 @@
1
+ class PhantomJS
2
+
3
+ @private
4
+ def post_config(driver)
5
+ driver.manage.timeouts.implicit_wait = 30
6
+ driver.manage.timeouts.page_load = 120
7
+ driver.manage.window.maximize
8
+ end
9
+
10
+ def launch_driver_phantomjs
11
+ driver = Selenium::WebDriver.for(:phantomjs)
12
+ self.post_config(driver)
13
+ return driver
14
+ end
15
+
16
+ def launch_watir_phantomjs
17
+ browser = Watir::Browser.new(:phantomjs)
18
+ self.post_config(browser.driver)
19
+ return browser
20
+ end
21
+
22
+ end
data/lib/testnow/version CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testnow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kaushal Rupani
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-19 00:00:00.000000000 Z
11
+ date: 2017-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -39,19 +39,19 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3'
41
41
  - !ruby/object:Gem::Dependency
42
- name: watir-webdriver
42
+ name: watir
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.9'
47
+ version: '6'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.9'
54
+ version: '6'
55
55
  description: A gem to configure your WebDriver-Ruby automation framework. Write your
56
56
  tests, leave the browser config to testnow...
57
57
  email: kushrupani@live.com
@@ -72,20 +72,20 @@ files:
72
72
  - data/showtime/Rakefile_rspec
73
73
  - data/showtime/cucumber.yml
74
74
  - data/showtime/env.rb
75
- - data/showtime/github.feature
76
- - data/showtime/github_page.rb
77
- - data/showtime/github_spec.rb
78
- - data/showtime/github_steps.rb
79
75
  - data/showtime/hooks.rb
80
76
  - data/showtime/spec_helper.rb
77
+ - data/showtime/testnow.feature
78
+ - data/showtime/testnow_page.rb
79
+ - data/showtime/testnow_spec.rb
80
+ - data/showtime/testnow_steps.rb
81
81
  - data/showtime/watir/Gemfile
82
82
  - data/showtime/watir/Gemfile_rspec
83
83
  - data/showtime/watir/env.rb
84
- - data/showtime/watir/github_page.rb
85
- - data/showtime/watir/github_spec.rb
86
- - data/showtime/watir/github_steps.rb
87
84
  - data/showtime/watir/hooks.rb
88
85
  - data/showtime/watir/spec_helper.rb
86
+ - data/showtime/watir/testnow_page.rb
87
+ - data/showtime/watir/testnow_spec.rb
88
+ - data/showtime/watir/testnow_steps.rb
89
89
  - lib/testnow.rb
90
90
  - lib/testnow/android_chrome.rb
91
91
  - lib/testnow/chrome.rb
@@ -94,6 +94,7 @@ files:
94
94
  - lib/testnow/firefox_gecko.rb
95
95
  - lib/testnow/ie.rb
96
96
  - lib/testnow/opera.rb
97
+ - lib/testnow/phantomjs.rb
97
98
  - lib/testnow/version
98
99
  - spec/spec_helper.rb
99
100
  - spec/testnow/testnow_spec.rb
@@ -1,11 +0,0 @@
1
- Feature: As a github user
2
- I want to verify my user is searchable on github
3
- and confirm my name is displayed correctly on my profile
4
-
5
- Scenario: Verify full name is displayed on facebook public profile
6
- Given I am on github page
7
- When I search for "Kaushal Rupani" keyword
8
- And I follow the Users Tab
9
- Then I verify "Kaushal" is displayed
10
- When I follow username link to view the profile page
11
- Then I verify "Kaushal Rupani" is displayed
@@ -1,30 +0,0 @@
1
- class GithubPage
2
-
3
- def initialize(page_driver)
4
- @driver = page_driver
5
- end
6
-
7
- def search_github(key)
8
- @driver.get(@driver.current_url+"/search?q=#{key}")
9
- end
10
-
11
- def click_tab(tab)
12
- wait = Selenium::WebDriver::Wait.new(:timeout => 30)
13
- case tab
14
- when "Users"
15
- @driver.find_element(:css => "[href*=Users]").click
16
- wait.until{@driver.find_element(:id => "user_search_results").displayed?}
17
- else
18
- puts "Wrong tab buddy!!"
19
- end
20
- end
21
-
22
- def visit_profile
23
- @driver.find_element(:link => "krupani").click
24
- end
25
-
26
- def verify_text_presence(word)
27
- expect(@driver.find_element(:tag_name => "body").text).to include(word)
28
- end
29
-
30
- end
@@ -1,18 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'/../spec_helper')
2
-
3
- describe "As a github user, my public profile" do
4
-
5
- before(:each) do
6
- @driver.get(ENV['TEST_URL'])
7
- end
8
-
9
- it "should display my name" do
10
- git = GithubPage.new(@driver)
11
- git.search_github("Kaushal Rupani")
12
- git.click_tab("Users")
13
- git.verify_text_presence("Kaushal")
14
- git.visit_profile
15
- git.verify_text_presence("Kaushal Rupani")
16
- end
17
-
18
- end
@@ -1,24 +0,0 @@
1
- Given /^I am on github page$/ do
2
- ENV['TEST_URL'] = "https://github.com" if ENV['TEST_URL'].nil?
3
- @driver.get(ENV['TEST_URL'])
4
- end
5
-
6
- When (/^I search for "([^"]*)" keyword$/) do |key|
7
- home = GithubPage.new(@driver)
8
- home.search_github(key)
9
- end
10
-
11
- When /^I follow the Users Tab$/ do
12
- home = GithubPage.new(@driver)
13
- home.click_tab("Users")
14
- end
15
-
16
- When /^I follow username link to view the profile page$/ do
17
- home = GithubPage.new(@driver)
18
- home.visit_profile
19
- end
20
-
21
- Then (/^I verify "([^"]*)" is displayed$/) do |name|
22
- home = GithubPage.new(@driver)
23
- home.verify_text_presence(name)
24
- end
@@ -1,29 +0,0 @@
1
- class GithubPage
2
-
3
- def initialize(page_browser)
4
- @browser = page_browser
5
- end
6
-
7
- def search_github(key)
8
- @browser.goto(@browser.driver.current_url+"/search?q=#{key}")
9
- end
10
-
11
- def click_tab(tab)
12
- case tab
13
- when "Users"
14
- @browser.element(:css => "[href*=Users]").click
15
- @browser.element(:id => "user_search_results").wait_until_present(timeout=30)
16
- else
17
- puts "Wrong tab buddy!!"
18
- end
19
- end
20
-
21
- def visit_profile
22
- @browser.link(:text => "krupani").click
23
- end
24
-
25
- def verify_text_presence(word)
26
- expect(@browser.element(:text => word).present?).to be true
27
- end
28
-
29
- end
@@ -1,18 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'/../spec_helper')
2
-
3
- describe "As a github user, my public profile" do
4
-
5
- before(:each) do
6
- @browser.goto(ENV['TEST_URL'])
7
- end
8
-
9
- it "should display my name" do
10
- git = GithubPage.new(@browser)
11
- git.search_github("Kaushal Rupani")
12
- git.click_tab("Users")
13
- git.verify_text_presence("Kaushal")
14
- git.visit_profile
15
- git.verify_text_presence("Kaushal Rupani")
16
- end
17
-
18
- end
@@ -1,24 +0,0 @@
1
- Given /^I am on github page$/ do
2
- ENV['TEST_URL'] = "https://github.com" if ENV['TEST_URL'].nil?
3
- @browser.goto(ENV['TEST_URL'])
4
- end
5
-
6
- When (/^I search for "([^"]*)" keyword$/) do |key|
7
- home = GithubPage.new(@browser)
8
- home.search_github(key)
9
- end
10
-
11
- When /^I follow the Users Tab$/ do
12
- home = GithubPage.new(@browser)
13
- home.click_tab("Users")
14
- end
15
-
16
- When /^I follow username link to view the profile page$/ do
17
- home = GithubPage.new(@browser)
18
- home.visit_profile
19
- end
20
-
21
- Then (/^I verify "([^"]*)" is displayed$/) do |name|
22
- home = GithubPage.new(@browser)
23
- home.verify_text_presence(name)
24
- end