kaya 0.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 +7 -0
- data/.gitignore +26 -0
- data/CHANGELOG +52 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/NOTAS +19 -0
- data/README.md +279 -0
- data/Rakefile +1 -0
- data/bin/kaya +4 -0
- data/documentation/api.md +47 -0
- data/documentation/api_execution_data.md +47 -0
- data/documentation/configuration.md +13 -0
- data/documentation/custom_parameters.md +117 -0
- data/documentation/document_kaya.md +122 -0
- data/documentation/link.md +12 -0
- data/documentation/results.md +119 -0
- data/documentation/start.md +19 -0
- data/documentation/suites.md +60 -0
- data/documentation/test_suite_information.md +9 -0
- data/kaya.gemspec +42 -0
- data/lib/generators/task_rack.rb +160 -0
- data/lib/generators/templates/Gemfile.tt +2 -0
- data/lib/generators/templates/config.ru.tt +2 -0
- data/lib/generators/templates/kaya_conf.tt +49 -0
- data/lib/generators/templates/kaya_log.tt +0 -0
- data/lib/generators/templates/sidekiq_log.tt +0 -0
- data/lib/generators/templates/tasks.kaya.tt +10 -0
- data/lib/generators/templates/unicorn.rb.tt +21 -0
- data/lib/kaya/API/error.rb +17 -0
- data/lib/kaya/API/execution.rb +141 -0
- data/lib/kaya/API/result.rb +49 -0
- data/lib/kaya/API/results.rb +31 -0
- data/lib/kaya/API/suite.rb +42 -0
- data/lib/kaya/API/suites.rb +36 -0
- data/lib/kaya/background_jobs/sidekiq.rb +35 -0
- data/lib/kaya/background_jobs/workers/execution_checker.rb +20 -0
- data/lib/kaya/background_jobs/workers/garbage_cleaner.rb +31 -0
- data/lib/kaya/commands/bye.rb +12 -0
- data/lib/kaya/commands/help.rb +13 -0
- data/lib/kaya/commands/install.rb +27 -0
- data/lib/kaya/commands/reset.rb +39 -0
- data/lib/kaya/commands/reset_suites.rb +40 -0
- data/lib/kaya/commands/restart.rb +9 -0
- data/lib/kaya/commands/start.rb +104 -0
- data/lib/kaya/commands/stop.rb +53 -0
- data/lib/kaya/cuba.rb +287 -0
- data/lib/kaya/cucumber/features.rb +15 -0
- data/lib/kaya/cucumber/task.rb +64 -0
- data/lib/kaya/custom/execution_data.rb +50 -0
- data/lib/kaya/custom/params.rb +34 -0
- data/lib/kaya/database/mongo_connector.rb +285 -0
- data/lib/kaya/error/errors.rb +55 -0
- data/lib/kaya/execution.rb +57 -0
- data/lib/kaya/results/result.rb +493 -0
- data/lib/kaya/results/results.rb +47 -0
- data/lib/kaya/suites/custom/params.rb +151 -0
- data/lib/kaya/suites/suite.rb +177 -0
- data/lib/kaya/suites/suites.rb +130 -0
- data/lib/kaya/support/clean.rb +12 -0
- data/lib/kaya/support/configuration.rb +254 -0
- data/lib/kaya/support/console.rb +11 -0
- data/lib/kaya/support/documentation.rb +34 -0
- data/lib/kaya/support/error_handler_helper.rb +24 -0
- data/lib/kaya/support/files_cleanner.rb +136 -0
- data/lib/kaya/support/git.rb +161 -0
- data/lib/kaya/support/if_config.rb +14 -0
- data/lib/kaya/support/logo.rb +23 -0
- data/lib/kaya/support/logs.rb +37 -0
- data/lib/kaya/support/notification.rb +127 -0
- data/lib/kaya/support/processes.rb +96 -0
- data/lib/kaya/support/query_string.rb +22 -0
- data/lib/kaya/support/request.rb +32 -0
- data/lib/kaya/support/risk.rb +9 -0
- data/lib/kaya/support/time_helper.rb +11 -0
- data/lib/kaya/support/update.rb +65 -0
- data/lib/kaya/version.rb +3 -0
- data/lib/kaya/view/body.mote +60 -0
- data/lib/kaya/view/custom/params/select_list.mote +14 -0
- data/lib/kaya/view/custom/params/text.mote +9 -0
- data/lib/kaya/view/custom/params.mote +9 -0
- data/lib/kaya/view/error_handler.mote +40 -0
- data/lib/kaya/view/features/feature.mote +14 -0
- data/lib/kaya/view/features/features_list.mote +10 -0
- data/lib/kaya/view/features.mote +57 -0
- data/lib/kaya/view/footer.mote +10 -0
- data/lib/kaya/view/git_information.mote +21 -0
- data/lib/kaya/view/help/main.mote +21 -0
- data/lib/kaya/view/help/page.mote +2 -0
- data/lib/kaya/view/help/search_result.mote +29 -0
- data/lib/kaya/view/help.mote +72 -0
- data/lib/kaya/view/javascript.mote +96 -0
- data/lib/kaya/view/logs/log.mote +3 -0
- data/lib/kaya/view/modals.mote +31 -0
- data/lib/kaya/view/navigation_bar.mote +48 -0
- data/lib/kaya/view/not_found.mote +40 -0
- data/lib/kaya/view/parser.rb +79 -0
- data/lib/kaya/view/results/all.mote +59 -0
- data/lib/kaya/view/results/console.mote +106 -0
- data/lib/kaya/view/results/detailed_info.mote +112 -0
- data/lib/kaya/view/results/report.mote +1 -0
- data/lib/kaya/view/results/result.mote +23 -0
- data/lib/kaya/view/results/results.mote +52 -0
- data/lib/kaya/view/screenshot.mote +42 -0
- data/lib/kaya/view/sections.rb +25 -0
- data/lib/kaya/view/styles.mote +58 -0
- data/lib/kaya/view/suites/suite.mote +73 -0
- data/lib/kaya/view/suites/suites.mote +9 -0
- data/lib/kaya/view/view.rb +72 -0
- data/lib/kaya.rb +175 -0
- data/test/features/install.feature +18 -0
- data/test/features/support/env.rb +3 -0
- metadata +395 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<div class='starter-template'>
|
|
2
|
+
<div class='panel panel-{{Kaya::View.color(suite["status"])}}'>
|
|
3
|
+
<div class='panel-heading' data-toggle='collapse' data-target='#{{suite["name"].gsub(' ','')}}'>
|
|
4
|
+
<h4 class='panel-title'>{{suite["name"]}}</h4>
|
|
5
|
+
% unless suite["status"]=="READY"
|
|
6
|
+
<div class="spinner">
|
|
7
|
+
<div class="bounce1"></div>
|
|
8
|
+
<div class="bounce2"></div>
|
|
9
|
+
<div class="bounce3"></div>
|
|
10
|
+
</div>
|
|
11
|
+
% end
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
<div class='panel-body collapse in' id='{{suite["name"].gsub(' ','')}}'>
|
|
15
|
+
<ul class='list-group'>
|
|
16
|
+
<li class='list-group-item'>
|
|
17
|
+
Command: {{suite["command"]}}
|
|
18
|
+
</li>
|
|
19
|
+
% if suite["last_result"]
|
|
20
|
+
% unless suite["status"] == "RUNNING"
|
|
21
|
+
<li class='list-group-item'>
|
|
22
|
+
Last result: {{Kaya::View.label_color_for_result_id suite["last_result"]}}
|
|
23
|
+
</li>
|
|
24
|
+
<li class='list-group-item'>
|
|
25
|
+
Started on: {{Kaya::Support::TimeHelper.formatted_time_for suite["last_result"]}}
|
|
26
|
+
</li>
|
|
27
|
+
% end
|
|
28
|
+
% end
|
|
29
|
+
% if suite["status"] == "RUNNING"
|
|
30
|
+
<li class='list-group-item'>
|
|
31
|
+
<a href='#' class='btn btn-info' onclick="refresh_and_open('/{{Kaya::Support::Configuration.hostname}}/kaya/results/log/{{suite['last_result']}}');">
|
|
32
|
+
See progress
|
|
33
|
+
</a>
|
|
34
|
+
</li>
|
|
35
|
+
% else
|
|
36
|
+
<li class='list-group-item'>
|
|
37
|
+
<form name='run' id='{{suite["name"]}}' method='get' action='/{{Kaya::Support::Configuration.hostname}}/kaya/suites/{{suite["name"]}}/run'>
|
|
38
|
+
|
|
39
|
+
% unless suite["custom"].empty?
|
|
40
|
+
% custom_template = Mote.parse(File.read("#{Kaya::View.path}/custom/params.mote"), self, [:custom_params])
|
|
41
|
+
{{custom_template.call(custom_params:suite["custom"])}}
|
|
42
|
+
% end
|
|
43
|
+
<br><br>
|
|
44
|
+
<input type='submit' class='btn btn-success' value='Execute Suite'>
|
|
45
|
+
<input type='text' name='execution_name' class='customParam' title='This value could be used to identify the result execution from other execution of this suite. E.g: You could use the release your are going to test' placeholder='Identify your execution' value='{{Kaya::Support::Configuration.auto_execution_id}}' style='height: 34px; padding: 6px 12px; font-size: 14px; line-height: 1.42857143; color: #555; background-color: #fff; background-image: none; border: 1px solid #ccc; border-radius: 4px; font-weight:normal;' />
|
|
46
|
+
<button type='button' class='btn btn-default' aria-label='Left Align' data-toggle='modal' data-target='#myModal' onclick='javascript:starter_link("{{suite["name"]}}");'>
|
|
47
|
+
<span class='glyphicon glyphicon-star' aria-hidden='true'>
|
|
48
|
+
Link
|
|
49
|
+
</span>
|
|
50
|
+
</button>
|
|
51
|
+
% unless suite["info"].empty?
|
|
52
|
+
<div style="text-align:right">
|
|
53
|
+
<a href='#'><span title='{{suite["info"]}}' class='glyphicon glyphicon-info-sign' aria-hidden='true' data-toggle='modal' data-target='#myModal' onclick="javascript:info('Information about {{suite["name"]}}','{{suite["info"].gsub('\n','<br>')}}', null);"></span>
|
|
54
|
+
</a><b>Information</b>
|
|
55
|
+
</div>
|
|
56
|
+
% end
|
|
57
|
+
|
|
58
|
+
</form>
|
|
59
|
+
</li>
|
|
60
|
+
% end
|
|
61
|
+
</li>
|
|
62
|
+
</ul>
|
|
63
|
+
|
|
64
|
+
% if suite["last_result"] # There is at least one result
|
|
65
|
+
% if suite["results"]["size"] > 0
|
|
66
|
+
<a href='/{{Kaya::Support::Configuration.hostname}}/kaya/results/suite/{{suite["name"].gsub(' ','%20')}}' class='btn btn-default pull-center'>All results({{suite["results"]["size"]}})</a>
|
|
67
|
+
% end
|
|
68
|
+
% else
|
|
69
|
+
|
|
70
|
+
% end
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
% suites_list = Kaya::API::Suites.list({})
|
|
2
|
+
% if suites_list["suites"].size > 0
|
|
3
|
+
% suite_template = Mote.parse(File.read("#{Kaya::View.path}/suites/suite.mote"), self, [:suite])
|
|
4
|
+
% suites_list = suites_list["suites"]
|
|
5
|
+
% suites_list.select!{|suite| suite["name"]==suite_name} if suite_name
|
|
6
|
+
% suites_list.each do |suite_data|
|
|
7
|
+
{{suite_template.call(suite:suite_data)}}
|
|
8
|
+
% end
|
|
9
|
+
% end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
module Kaya
|
|
2
|
+
module View
|
|
3
|
+
|
|
4
|
+
def self.path
|
|
5
|
+
File.expand_path('../', __FILE__)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def self.label_color_for result
|
|
9
|
+
if result["summary"]
|
|
10
|
+
label_color = color result["summary"]
|
|
11
|
+
"<a href='#' class='label label-#{label_color}' #{access_report?(result)}>#{result['summary'].capitalize}</a>"
|
|
12
|
+
else
|
|
13
|
+
"<a href='#' class='label label-default' >No summary</a>"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.color value
|
|
18
|
+
case value.downcase
|
|
19
|
+
when /running/
|
|
20
|
+
"success"
|
|
21
|
+
when /finished|ready/
|
|
22
|
+
"primary"
|
|
23
|
+
when /(stopped|failed)/
|
|
24
|
+
"danger"
|
|
25
|
+
when /\d+ scenarios? \(\d+ pending\).*\d+ steps?/
|
|
26
|
+
"warning"
|
|
27
|
+
when /\d+ scenarios? \(\d+ passed\).*\d+ steps?/
|
|
28
|
+
"success"
|
|
29
|
+
when /\d+ scenarios? \(\d+ failed\).*\d+ steps?/
|
|
30
|
+
"danger"
|
|
31
|
+
when /(undefined|pending)/
|
|
32
|
+
"warning"
|
|
33
|
+
else
|
|
34
|
+
"default"
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.unviewed
|
|
39
|
+
'<span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span>'
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def self.access_report? result
|
|
43
|
+
if result["status"] =~ /stopped|running/
|
|
44
|
+
"onclick=\"javascript:refresh_and_open('/#{Kaya::Support::Configuration.hostname}/kaya/results/log/#{result["_id"]}');\""
|
|
45
|
+
else
|
|
46
|
+
"onclick=\"javascript:refresh_and_open('/#{Kaya::Support::Configuration.hostname}/kaya/results/report/#{result['_id']}');\"" if result["status"]=='finished' and result["has_report"]
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def self.label_color_for_result_id result_id
|
|
51
|
+
result = Kaya::API::Result.info result_id
|
|
52
|
+
self.label_color_for result if result
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def self.formatted_for seconds
|
|
56
|
+
hours = seconds/ 3600
|
|
57
|
+
seconds = seconds% 3600
|
|
58
|
+
minutes = seconds/ 60
|
|
59
|
+
seconds = seconds % 60
|
|
60
|
+
elapsed = ""
|
|
61
|
+
elapsed += "#{hours} h " if hours > 0
|
|
62
|
+
elapsed += " #{minutes} m " if minutes > 0
|
|
63
|
+
elapsed += "#{seconds} s" if seconds
|
|
64
|
+
"#{elapsed}"
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def self.result_started_at result_id
|
|
68
|
+
result = Kaya::API::Result.info result_id
|
|
69
|
+
self.formatted_for result["started_at"] if result
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
data/lib/kaya.rb
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
require "kaya/version"
|
|
2
|
+
require "thor"
|
|
3
|
+
require 'json'
|
|
4
|
+
require 'colorize'
|
|
5
|
+
require 'github/markup'
|
|
6
|
+
require 'redis'
|
|
7
|
+
require 'sidekiq'
|
|
8
|
+
require 'mote'
|
|
9
|
+
require 'byebug'
|
|
10
|
+
|
|
11
|
+
require_relative "generators/task_rack"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# Commands
|
|
15
|
+
require_relative "kaya/commands/install"
|
|
16
|
+
require_relative "kaya/commands/start"
|
|
17
|
+
require_relative "kaya/commands/stop"
|
|
18
|
+
require_relative "kaya/commands/restart"
|
|
19
|
+
require_relative "kaya/commands/bye"
|
|
20
|
+
require_relative "kaya/commands/reset"
|
|
21
|
+
require_relative "kaya/commands/reset_suites"
|
|
22
|
+
require_relative "kaya/commands/help"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# Custom params
|
|
26
|
+
require_relative "kaya/custom/params"
|
|
27
|
+
require_relative "kaya/custom/execution_data"
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# Database
|
|
31
|
+
require_relative "kaya/database/mongo_connector"
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# Suites
|
|
35
|
+
require_relative "kaya/suites/suites"
|
|
36
|
+
require_relative "kaya/suites/suite"
|
|
37
|
+
require_relative "kaya/suites/custom/params"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
# Results
|
|
41
|
+
require_relative "kaya/results/results"
|
|
42
|
+
require_relative "kaya/results/result"
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
# View
|
|
46
|
+
require_relative "kaya/view/view"
|
|
47
|
+
require_relative "kaya/view/sections"
|
|
48
|
+
require_relative "kaya/view/parser"
|
|
49
|
+
require_relative "kaya/view/parser"
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
# API
|
|
53
|
+
require_relative "kaya/API/suite"
|
|
54
|
+
require_relative "kaya/API/suites"
|
|
55
|
+
require_relative "kaya/API/result"
|
|
56
|
+
require_relative "kaya/API/results"
|
|
57
|
+
require_relative "kaya/API/error"
|
|
58
|
+
require_relative "kaya/API/execution"
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
# Cucumber relate code
|
|
62
|
+
require_relative "kaya/cucumber/features"
|
|
63
|
+
require_relative "kaya/cucumber/task"
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
# Error
|
|
67
|
+
require_relative "kaya/error/errors"
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
# Support code
|
|
71
|
+
require_relative "kaya/support/logo"
|
|
72
|
+
require_relative "kaya/support/configuration"
|
|
73
|
+
require_relative "kaya/support/clean"
|
|
74
|
+
require_relative "kaya/support/documentation"
|
|
75
|
+
require_relative "kaya/support/console"
|
|
76
|
+
require_relative "kaya/support/notification"
|
|
77
|
+
require_relative "kaya/support/processes"
|
|
78
|
+
require_relative "kaya/support/error_handler_helper"
|
|
79
|
+
require_relative "kaya/support/update"
|
|
80
|
+
require_relative "kaya/support/risk"
|
|
81
|
+
require_relative "kaya/support/request"
|
|
82
|
+
require_relative "kaya/support/files_cleanner"
|
|
83
|
+
require_relative "kaya/support/git"
|
|
84
|
+
require_relative "kaya/support/query_string"
|
|
85
|
+
require_relative "kaya/support/if_config"
|
|
86
|
+
require_relative "kaya/support/time_helper"
|
|
87
|
+
require_relative "kaya/support/logs"
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
# Background jobs
|
|
91
|
+
require_relative "kaya/background_jobs/workers/execution_checker"
|
|
92
|
+
require_relative "kaya/background_jobs/workers/garbage_cleaner"
|
|
93
|
+
require_relative "kaya/background_jobs/sidekiq"
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
# Main
|
|
97
|
+
require_relative "kaya/execution"
|
|
98
|
+
require_relative "kaya/cuba"
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
module Kaya
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
if Dir.exist? "#{Dir.pwd}/kaya"
|
|
107
|
+
|
|
108
|
+
# Creates kaya_log if it does not exist
|
|
109
|
+
File.open("#{Dir.pwd}/kaya/kaya_log","a+"){} unless File.exist? "#{Dir.pwd}/kaya/kaya_log"
|
|
110
|
+
|
|
111
|
+
# Set global conf
|
|
112
|
+
$K_LOG ||= Logger.new("#{Dir.pwd}/kaya/kaya_log",1,1024*1024)
|
|
113
|
+
Kaya::Support::Configuration.get
|
|
114
|
+
$NOTIF ||= Support::Notification.new("#{Dir.pwd.split("/").last}", "#{Kaya::Support::IfConfig.ip}:#{Kaya::Support::Configuration.port}")
|
|
115
|
+
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
class Base < Thor
|
|
120
|
+
|
|
121
|
+
desc "help","If you cannot start kaya"
|
|
122
|
+
def help
|
|
123
|
+
Kaya::Commands.help
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
desc "install","Install Kaya on your project"
|
|
127
|
+
def install
|
|
128
|
+
Kaya::Commands.install
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
desc "start", "Starts a service waiting for get requests to run tasks you've defined"
|
|
132
|
+
option :nodemon, :required =>false, :type => :boolean, :desc => "Add this flag to no demon use."
|
|
133
|
+
def start
|
|
134
|
+
if Dir.exist? "#{Dir.pwd}/kaya"
|
|
135
|
+
$K_LOG = Logger.new("#{Dir.pwd}/kaya/kaya_log",1,1024*1024)
|
|
136
|
+
Kaya::Commands.start(options["nodemon"])
|
|
137
|
+
else
|
|
138
|
+
puts "
|
|
139
|
+
|
|
140
|
+
Could not find kaya folder on root project folder. You can use `kaya install`
|
|
141
|
+
|
|
142
|
+
".red
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
desc "stop", "Stop kaya service"
|
|
147
|
+
def stop
|
|
148
|
+
Kaya::Commands.stop
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
desc "restart", "Restart Kaya"
|
|
152
|
+
def restart
|
|
153
|
+
Kaya::Commands.restart
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
desc "reset","Purges all db registers"
|
|
157
|
+
def reset
|
|
158
|
+
if yes? "Are you sure to reset all register? (yes/no)"
|
|
159
|
+
Kaya::Commands.reset
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
desc "reset_suites","Reset all suites registers. This command is to purge all suites from db"
|
|
164
|
+
def reset_suites
|
|
165
|
+
Kaya::Commands.reset_suites
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
desc "Say bye to kaya", ""
|
|
169
|
+
def bye
|
|
170
|
+
if yes? "Are you sure to say bye to Kaya? (yes/no)"
|
|
171
|
+
Kaya::Commands.bye
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
Feature: Installing Kaya on a Cucumber project
|
|
2
|
+
As a Cucumber user
|
|
3
|
+
When I install kaya on the project
|
|
4
|
+
I have to see a folder inside the root project folder
|
|
5
|
+
|
|
6
|
+
# ASSUME THAT REQUIREMENTS ARE INSTALLED ON THE SYSTEM
|
|
7
|
+
|
|
8
|
+
Background: A cucumber project must exist on a folder
|
|
9
|
+
Given ensure that a cucumber project exist
|
|
10
|
+
|
|
11
|
+
Scenario: Installing Kaya on a project without requirements on the system
|
|
12
|
+
Given kaya gem is installed on the system
|
|
13
|
+
When I run 'install' kaya command
|
|
14
|
+
Then a folder called kaya should be added to the project
|
|
15
|
+
And kaya folder must have the following files
|
|
16
|
+
|kaya_conf|kaya_log|unicorn.rb|sidekiq_log|config.ru|
|
|
17
|
+
And kaya folder must have the following folders
|
|
18
|
+
|temp|
|