testnow 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/testnow +129 -0
- data/data/showtime/Gemfile +7 -0
- data/data/showtime/cucumber.yml +1 -0
- data/data/showtime/env.rb +9 -0
- data/data/showtime/github.feature +11 -0
- data/data/showtime/github_page.rb +30 -0
- data/data/showtime/github_steps.rb +23 -0
- data/data/showtime/hooks.rb +40 -0
- data/lib/testnow/version +1 -0
- metadata +25 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb556c37d8d2e832253d745a9bf20d05e3145d97
|
4
|
+
data.tar.gz: 0a5ff7218eaedd0d5d2d38aeeb199be5f8f23ba9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 823fc2fbf9d73eac0a341e795782adbc204f6576f402ffa3aa0b7c543ccf60011bdf598781ca81276801124081cfdbe5022d54f1a8ee721f2afda8708c33e86e
|
7
|
+
data.tar.gz: 8fdac75edef2b6a10783f2cc883ea27d84994ea5d140f1d547e3f45ead4bd48f942405e5c435e7722a4b9eae6537fbc6090336777f23a9dec386d735458f5dff
|
data/bin/testnow
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
@root_dir = File.join(FileUtils.pwd, "cucumber_now")
|
6
|
+
@feature_dir = File.join(@root_dir,'features')
|
7
|
+
@scenario_dir = File.join(@feature_dir, 'scenarios')
|
8
|
+
@steps_dir = File.join(@feature_dir,'step_definition')
|
9
|
+
@page_dir = File.join(@feature_dir, 'pages')
|
10
|
+
@support_dir = File.join(@feature_dir,'support')
|
11
|
+
@report_dir = File.join(@root_dir, 'reports')
|
12
|
+
@showtime_dir = File.join(File.dirname(__FILE__) + "/../data/showtime")
|
13
|
+
|
14
|
+
def cucumber_now
|
15
|
+
if File.exist?(@root_dir)
|
16
|
+
print 'There is already cucumber_now directory. Either delete it or try running the command from some other directory.'
|
17
|
+
exit 1
|
18
|
+
end
|
19
|
+
puts "\n"+"*"*70
|
20
|
+
puts "* TestNow is creating a WebDriver-Ruby-Cucumber framework for you. *"
|
21
|
+
puts "*"*70
|
22
|
+
|
23
|
+
print "Creating project directory."
|
24
|
+
FileUtils.makedirs(@root_dir)
|
25
|
+
|
26
|
+
print "Creating features directory."
|
27
|
+
FileUtils.makedirs(@feature_dir)
|
28
|
+
|
29
|
+
print "Creating the scenarios directory to contain the feature files."
|
30
|
+
FileUtils.makedirs(@scenario_dir)
|
31
|
+
|
32
|
+
print "Creating the steps directory to contain the step definition files"
|
33
|
+
FileUtils.makedirs(@steps_dir)
|
34
|
+
|
35
|
+
print "Creating the page directory just in case if you want to use page object pattern."
|
36
|
+
FileUtils.makedirs(@page_dir)
|
37
|
+
|
38
|
+
print "Creating a support directory which will contain all the configs"
|
39
|
+
FileUtils.makedirs(@support_dir)
|
40
|
+
|
41
|
+
print "Creating the reports directory where the reports will be save after execution."
|
42
|
+
FileUtils.makedirs(@report_dir)
|
43
|
+
|
44
|
+
print "Creating config files..."
|
45
|
+
print "1. hooks.rb -- used for setup and teardown purpose."
|
46
|
+
FileUtils.copy(@showtime_dir+"/hooks.rb", @support_dir)
|
47
|
+
print "2. env.rb -- used as cucumber config"
|
48
|
+
FileUtils.copy(@showtime_dir+"/env.rb", @support_dir)
|
49
|
+
|
50
|
+
print "Creating feature file inside scenarios directory."
|
51
|
+
FileUtils.copy(@showtime_dir+"/github.feature", @scenario_dir)
|
52
|
+
|
53
|
+
print "Creating step definition file inside the steps directory"
|
54
|
+
FileUtils.copy(@showtime_dir+"/github_steps.rb", @steps_dir)
|
55
|
+
|
56
|
+
print "Creating page class file inside the page directory."
|
57
|
+
FileUtils.copy(@showtime_dir+"/github_page.rb", @page_dir)
|
58
|
+
|
59
|
+
print "Creating Gemfile -- used to contain all required gems information."
|
60
|
+
FileUtils.copy(@showtime_dir+"/Gemfile", @root_dir)
|
61
|
+
|
62
|
+
print "Creating cucumber.yml -- used to provide cucumber options"
|
63
|
+
FileUtils.copy(@showtime_dir+"/cucumber.yml", @root_dir)
|
64
|
+
|
65
|
+
puts "\n"+"*"*97
|
66
|
+
puts "* TestNow completed framework creation. A sample scenario is also created for your reference. *"
|
67
|
+
puts "*"*97
|
68
|
+
|
69
|
+
puts "\n Would you like to continue with dependency(gems) installation? (Y/n)"
|
70
|
+
ans=gets
|
71
|
+
if ans.chomp.downcase == "y"
|
72
|
+
print "TestNow is installing gems using bundler. Please wait till process completed."
|
73
|
+
system('gem install bundler')
|
74
|
+
system('bundle install --gemfile=$(pwd)/cucumber_now/Gemfile')
|
75
|
+
print "Dependency installation completed successfully.\n"
|
76
|
+
else
|
77
|
+
exit 1
|
78
|
+
end
|
79
|
+
|
80
|
+
puts "\n"+"*"*80
|
81
|
+
puts "* Congratulations!!! Your WenDriver-Ruby-Cucumber framework is ready to use. *"
|
82
|
+
puts "*"*80
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
def print(msg)
|
87
|
+
puts "\n"
|
88
|
+
puts "=>=>=>=>=> " + msg
|
89
|
+
sleep 1
|
90
|
+
end
|
91
|
+
|
92
|
+
def print_help
|
93
|
+
puts <<MSG
|
94
|
+
|
95
|
+
Usage: testnow <command-name>
|
96
|
+
|
97
|
+
<command-name> can be one of
|
98
|
+
help
|
99
|
+
cucumber_now
|
100
|
+
version
|
101
|
+
|
102
|
+
|
103
|
+
Command descriptions :
|
104
|
+
help : Prints help information in detail.
|
105
|
+
|
106
|
+
cucumber_now : Creates a framework for cross browser testing. This framework acts
|
107
|
+
as a sketon to add more features for your respective project.
|
108
|
+
This framework is compatible with the TestNow platform and also
|
109
|
+
can be used locally.
|
110
|
+
|
111
|
+
version : Prints the gem version
|
112
|
+
|
113
|
+
MSG
|
114
|
+
end
|
115
|
+
|
116
|
+
if ARGV.length == 0
|
117
|
+
print_help
|
118
|
+
else
|
119
|
+
cmd = ARGV.shift
|
120
|
+
if cmd == 'help'
|
121
|
+
print_help
|
122
|
+
elsif cmd == 'cucumber_now'
|
123
|
+
cucumber_now
|
124
|
+
elsif cmd == 'version'
|
125
|
+
puts File.read(File.expand_path("../../lib/testnow/version", __FILE__))
|
126
|
+
else
|
127
|
+
print_usage
|
128
|
+
end
|
129
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
default: --require features --no-source --color --format pretty --format html --out reports/github_report.html --format json --out reports/github_report.json
|
@@ -0,0 +1,11 @@
|
|
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 Rupani" is displayed
|
10
|
+
When I follow username link to view the profile page
|
11
|
+
Then I verify "Kaushal Rupani" is displayed
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class GithubPage
|
2
|
+
|
3
|
+
def initialize(page_driver)
|
4
|
+
@driver = page_driver
|
5
|
+
end
|
6
|
+
|
7
|
+
def search_github(key)
|
8
|
+
@driver.find_element(:name => "q").send_keys(key+"\n")
|
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 => ".menu>a[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
|
@@ -0,0 +1,23 @@
|
|
1
|
+
Given /^I am on github page$/ do
|
2
|
+
@driver.get("https://github.com")
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I search for "([^"]*)" keyword$/ do |key|
|
6
|
+
home = GithubPage.new(@driver)
|
7
|
+
home.search_github(key)
|
8
|
+
end
|
9
|
+
|
10
|
+
When /^I follow the Users Tab$/ do
|
11
|
+
home = GithubPage.new(@driver)
|
12
|
+
home.click_tab("Users")
|
13
|
+
end
|
14
|
+
|
15
|
+
When /^I follow username link to view the profile page$/ do
|
16
|
+
home = GithubPage.new(@driver)
|
17
|
+
home.visit_profile
|
18
|
+
end
|
19
|
+
|
20
|
+
Then /^I verify "([^"]*)" is displayed$/ do |name|
|
21
|
+
home = GithubPage.new(@driver)
|
22
|
+
home.verify_text_presence(name)
|
23
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
Before do |scenario|
|
2
|
+
@driver = TestNow.init
|
3
|
+
end
|
4
|
+
|
5
|
+
After do |scenario|
|
6
|
+
if scenario.failed?
|
7
|
+
begin
|
8
|
+
encoded_img = driver.screenshot_as(:base64)
|
9
|
+
embed("#{encoded_img}", "image/png;base64")
|
10
|
+
rescue
|
11
|
+
p "*** Could not take failed scenario screenshot ***"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
quit_driver
|
15
|
+
end
|
16
|
+
|
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
|
+
AfterStep do
|
26
|
+
begin
|
27
|
+
encoded_img = driver.screenshot_as(:base64)
|
28
|
+
embed("#{encoded_img}", "image/png;base64")
|
29
|
+
rescue
|
30
|
+
p "*** Could Not take screenshot ***"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def driver
|
35
|
+
@driver
|
36
|
+
end
|
37
|
+
|
38
|
+
def quit_driver
|
39
|
+
@driver.quit
|
40
|
+
end
|
data/lib/testnow/version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.4
|
metadata
CHANGED
@@ -1,50 +1,66 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testnow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kaushal Rupani
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: selenium-webdriver
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.52'
|
17
20
|
- - ">="
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
22
|
+
version: '2.52'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '2.52'
|
24
30
|
- - ">="
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
32
|
+
version: '2.52'
|
27
33
|
description: A gem to configure your Ruby Selenium suite for TestNow
|
28
34
|
email: kushrupani@live.com
|
29
|
-
executables:
|
35
|
+
executables:
|
36
|
+
- testnow
|
30
37
|
extensions: []
|
31
38
|
extra_rdoc_files: []
|
32
39
|
files:
|
33
40
|
- LICENCE
|
34
41
|
- README.md
|
42
|
+
- bin/testnow
|
35
43
|
- data/firebug-2.0.13.xpi
|
36
44
|
- data/netExport-0.8.xpi
|
45
|
+
- data/showtime/Gemfile
|
46
|
+
- data/showtime/cucumber.yml
|
47
|
+
- data/showtime/env.rb
|
48
|
+
- data/showtime/github.feature
|
49
|
+
- data/showtime/github_page.rb
|
50
|
+
- data/showtime/github_steps.rb
|
51
|
+
- data/showtime/hooks.rb
|
37
52
|
- lib/testnow.rb
|
38
53
|
- lib/testnow/chrome.rb
|
39
54
|
- lib/testnow/firefox.rb
|
40
55
|
- lib/testnow/opera.rb
|
56
|
+
- lib/testnow/version
|
41
57
|
- spec/spec_helper.rb
|
42
58
|
- spec/testnow/testnow_spec.rb
|
43
59
|
homepage: https://github.com/krupani/testnow
|
44
60
|
licenses:
|
45
61
|
- MIT
|
46
62
|
metadata: {}
|
47
|
-
post_install_message:
|
63
|
+
post_install_message: "=>=>=>=>=> Thank you for installing TestNow gem. <=<=<=<=<= "
|
48
64
|
rdoc_options: []
|
49
65
|
require_paths:
|
50
66
|
- lib
|
@@ -64,4 +80,6 @@ rubygems_version: 2.5.1
|
|
64
80
|
signing_key:
|
65
81
|
specification_version: 4
|
66
82
|
summary: TestNow helper
|
67
|
-
test_files:
|
83
|
+
test_files:
|
84
|
+
- spec/spec_helper.rb
|
85
|
+
- spec/testnow/testnow_spec.rb
|