testnow 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
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