rubygene 0.1.0
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 +22 -0
- data/.rspec +3 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +21 -0
- data/README.md +152 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/rubygene +207 -0
- data/bin/setup +8 -0
- data/lib/SkeletonApi/.gitignore +1 -0
- data/lib/SkeletonApi/Gemfile +6 -0
- data/lib/SkeletonApi/README.md +36 -0
- data/lib/SkeletonApi/Rakefile +11 -0
- data/lib/SkeletonApi/cucumber.yml +13 -0
- data/lib/SkeletonApi/features/services/.gitkeep +0 -0
- data/lib/SkeletonApi/features/specifications/.gitkeep +0 -0
- data/lib/SkeletonApi/features/steps_definitions/.gitkeep +0 -0
- data/lib/SkeletonApi/features/support/config/dev.yaml +1 -0
- data/lib/SkeletonApi/features/support/config/hmg.yaml +1 -0
- data/lib/SkeletonApi/features/support/env.rb +13 -0
- data/lib/SkeletonApi/results/report.html +0 -0
- data/lib/SkeletonApi/results/report.json +0 -0
- data/lib/SkeletonMobile/.gitignore +1 -0
- data/lib/SkeletonMobile/Gemfile +7 -0
- data/lib/SkeletonMobile/README.md +37 -0
- data/lib/SkeletonMobile/cucumber.yml +7 -0
- data/lib/SkeletonMobile/features/screens/.gitkeep +0 -0
- data/lib/SkeletonMobile/features/specifications/.gitkeep +0 -0
- data/lib/SkeletonMobile/features/steps_definitions/.gitkeep +0 -0
- data/lib/SkeletonMobile/features/support/appium.txt +4 -0
- data/lib/SkeletonMobile/features/support/env.rb +25 -0
- data/lib/SkeletonMobile/features/support/helper.rb +11 -0
- data/lib/SkeletonMobile/features/support/hooks.rb +23 -0
- data/lib/SkeletonMobile/features/support/page_helper.rb +3 -0
- data/lib/SkeletonMobile/results/report.html +0 -0
- data/lib/SkeletonMobile/results/report.json +0 -0
- data/lib/SkeletonMobile/results/screenshots/.gitkeep +0 -0
- data/lib/SkeletonWeb/.gitignore +1 -0
- data/lib/SkeletonWeb/Gemfile +10 -0
- data/lib/SkeletonWeb/README.md +49 -0
- data/lib/SkeletonWeb/Rakefile +23 -0
- data/lib/SkeletonWeb/cucumber.yml +15 -0
- data/lib/SkeletonWeb/features/pages/.gitkeep +0 -0
- data/lib/SkeletonWeb/features/specifications/.gitkeep +0 -0
- data/lib/SkeletonWeb/features/steps_definitions/.gitkeep +0 -0
- data/lib/SkeletonWeb/features/support/config/dev.yml +1 -0
- data/lib/SkeletonWeb/features/support/config/hmg.yml +1 -0
- data/lib/SkeletonWeb/features/support/env.rb +34 -0
- data/lib/SkeletonWeb/features/support/helper.rb +22 -0
- data/lib/SkeletonWeb/features/support/hooks.rb +15 -0
- data/lib/SkeletonWeb/features/support/page_helper.rb +6 -0
- data/lib/SkeletonWeb/results/report.html +0 -0
- data/lib/SkeletonWeb/results/report.json +0 -0
- data/lib/SkeletonWeb/results/screenshots/.gitkeep +0 -0
- data/lib/generate_ruby_tests/generate_ruby_test_helper.rb +59 -0
- data/lib/generate_ruby_tests/version.rb +3 -0
- data/lib/generate_ruby_tests.rb +5 -0
- data/lib/locales/en.yml +7 -0
- data/lib/locales/pt.yml +7 -0
- data/lib/templates/feature.tt +8 -0
- data/lib/templates/page.tt +6 -0
- data/lib/templates/screens.tt +5 -0
- data/lib/templates/services.tt +8 -0
- data/lib/templates/steps.tt +5 -0
- data/rubygene.gemspec +30 -0
- metadata +198 -0
@@ -0,0 +1,37 @@
|
|
1
|
+
## Getting Started ##
|
2
|
+
|
3
|
+
### Installing gems ###
|
4
|
+
To install gems type:
|
5
|
+
```shell
|
6
|
+
bundle install
|
7
|
+
```
|
8
|
+
|
9
|
+
### Run tests in DEV ###
|
10
|
+
Type this in the tests folder:
|
11
|
+
```shell
|
12
|
+
bundle exec cucumber
|
13
|
+
```
|
14
|
+
|
15
|
+
### Run tests in HMG ###
|
16
|
+
Type this in the tests folder:
|
17
|
+
```shell
|
18
|
+
bundle exec cucumber -p json -p hmg
|
19
|
+
```
|
20
|
+
|
21
|
+
### HTML Report###
|
22
|
+
Type this in the tests folder:
|
23
|
+
```shell
|
24
|
+
bundle exec cucumber -p html -p hmg
|
25
|
+
```
|
26
|
+
|
27
|
+
### Json Report###
|
28
|
+
Type this in the tests folder:
|
29
|
+
```shell
|
30
|
+
bundle exec cucumber -p json -p hmg
|
31
|
+
```
|
32
|
+
|
33
|
+
### Run with tags###
|
34
|
+
Type this in the tests folder:
|
35
|
+
```shell
|
36
|
+
bundle exec cucumber --tags @run
|
37
|
+
```
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'appium_lib'
|
2
|
+
require 'yaml'
|
3
|
+
require_relative 'page_helper.rb'
|
4
|
+
require_relative 'helper.rb'
|
5
|
+
|
6
|
+
SERVER_URL = 'http://localhost:4723/wd/hub'.freeze
|
7
|
+
PORT = 4723
|
8
|
+
TWENTY_SECONDS = 20
|
9
|
+
|
10
|
+
World(Screens)
|
11
|
+
World(Helper)
|
12
|
+
|
13
|
+
Before do
|
14
|
+
def opts
|
15
|
+
{
|
16
|
+
caps: {
|
17
|
+
deviceName: 'Nexus 5X API 25',
|
18
|
+
platformName: 'Android',
|
19
|
+
app: File.join(File.dirname(__FILE__), 'nome_do_seu_app.apk'),
|
20
|
+
newCommandTimeout: '3600'
|
21
|
+
},
|
22
|
+
appium_lib: { server_url: SERVER_URL, port: PORT }
|
23
|
+
}
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# !/usr/bin/env ruby
|
3
|
+
# metodo para tira screenshot e imbutir no relatorio html
|
4
|
+
module Helper
|
5
|
+
def take_screenshot(file_name, result)
|
6
|
+
file_path = "results/screenshots/test_#{result}"
|
7
|
+
screenshot = "#{file_path}/#{file_name}.png"
|
8
|
+
@driver.screenshot(screenshot)
|
9
|
+
embed(screenshot, 'image/png', 'Click here')
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
Before do
|
2
|
+
@appium_driver = Appium::Driver.new(opts, true)
|
3
|
+
Appium.promote_appium_methods Object
|
4
|
+
@settings = YAML.load_file(File.expand_path('../../cucumber.yml',
|
5
|
+
File.dirname(__FILE__)))
|
6
|
+
@driver.start_driver
|
7
|
+
@driver.set_wait(TWENTY_SECONDS)
|
8
|
+
end
|
9
|
+
|
10
|
+
def scroll_screen(xone, yone, xtwo, ytwo)
|
11
|
+
Appium::TouchAction.new.long_press(x: xone, y: yone)
|
12
|
+
.move_to(x: xtwo, y: ytwo).release.perform
|
13
|
+
end
|
14
|
+
|
15
|
+
After do |scenario|
|
16
|
+
scenario_name = scenario.name.gsub(/\s+/, '_').tr('/', '_')
|
17
|
+
|
18
|
+
if scenario.failed?
|
19
|
+
take_screenshot(scenario_name.downcase!, 'failed')
|
20
|
+
else
|
21
|
+
take_screenshot(scenario_name.downcase!, 'passed')
|
22
|
+
end
|
23
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
.DS_Store
|
@@ -0,0 +1,49 @@
|
|
1
|
+
## Getting Started ##
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
### Installing gems ###
|
6
|
+
To install gems type:
|
7
|
+
```shell
|
8
|
+
bundle install
|
9
|
+
```
|
10
|
+
|
11
|
+
### Drivers: ###
|
12
|
+
Install and include in PATH
|
13
|
+
- [chromedriver](https://sites.google.com/a/chromium.org/chromedriver/)
|
14
|
+
- [phantomjs](http://phantomjs.org/)
|
15
|
+
- [internetExplorerDriver](http://www.seleniumhq.org/download/)
|
16
|
+
- [Firefox Geckodriver](https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver)
|
17
|
+
|
18
|
+
Install [Webdriver Safari extension](http://selenium-release.storage.googleapis.com/2.48/SafariDriver.safariextz).
|
19
|
+
|
20
|
+
|
21
|
+
### Run tests in DEV with Chrome###
|
22
|
+
Type this in the tests folder:
|
23
|
+
```shell
|
24
|
+
bundle exec cucumber -p ci -p html -p headless -p dev
|
25
|
+
```
|
26
|
+
|
27
|
+
### Run tests in DEV with headless###
|
28
|
+
Type this in the tests folder:
|
29
|
+
```shell
|
30
|
+
bundle exec cucumber -p ci -p html -p headless -p dev
|
31
|
+
```
|
32
|
+
|
33
|
+
### Run tests in HMG with Chrome###
|
34
|
+
Type this in the tests folder:
|
35
|
+
```shell
|
36
|
+
bundle exec cucumber -p pretty -p html -p no_headless -p hmg
|
37
|
+
```
|
38
|
+
|
39
|
+
### Run tests in HMG with headless###
|
40
|
+
Type this in the tests folder:
|
41
|
+
```shell
|
42
|
+
bundle exec cucumber -p ci -p html -p headless -p hmg
|
43
|
+
```
|
44
|
+
|
45
|
+
### Run with tags###
|
46
|
+
Type this in the tests folder:
|
47
|
+
```shell
|
48
|
+
bundle exec cucumber --tags @run
|
49
|
+
```
|
@@ -0,0 +1,23 @@
|
|
1
|
+
desc "Executar os testes em dev usando o Chrome"
|
2
|
+
task :test_chrome_dev do
|
3
|
+
puts "Executando test:chrome:dev"
|
4
|
+
sh "bundle exec cucumber -p pretty -p html -p dev -p no_headless"
|
5
|
+
end
|
6
|
+
|
7
|
+
desc "Executar os testes em dev usando o Chrome headless"
|
8
|
+
task :test_chrome_dev_headless do
|
9
|
+
puts "Executando test:chrome:dev"
|
10
|
+
sh "bundle exec cucumber -p ci -p html -p dev -p headless"
|
11
|
+
end
|
12
|
+
|
13
|
+
desc "Executar os testes em hmg usando o Chrome"
|
14
|
+
task :test_chrome_hmg do
|
15
|
+
puts "Executando test:chrome:dev"
|
16
|
+
sh "bundle exec cucumber -p pretty -p html -p hmg -p no_headless"
|
17
|
+
end
|
18
|
+
|
19
|
+
desc "Executar os testes em hmg usando o Chrome headless"
|
20
|
+
task :test_chrome_hmg_headless do
|
21
|
+
puts "Executando test:chrome:dev"
|
22
|
+
sh "bundle exec cucumber -p ci -p html -p hmg -p headless"
|
23
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
## YAML Templatesss
|
2
|
+
---
|
3
|
+
default: -p pretty -p html -p no_headless -p hmg
|
4
|
+
|
5
|
+
pretty: --format pretty
|
6
|
+
ci: --format progress
|
7
|
+
|
8
|
+
html: --format html --out=results/report.html
|
9
|
+
json: --format json --out=results/report.json
|
10
|
+
|
11
|
+
hmg: ENVIRONMENT_TYPE=hmg
|
12
|
+
dev: ENVIRONMENT_TYPE=dev
|
13
|
+
|
14
|
+
headless: HEADLESS=headless
|
15
|
+
no_headless: HEADLESS=no_headless
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
url_default: https://www.google.com/
|
@@ -0,0 +1 @@
|
|
1
|
+
url_default: https://www.google.com/
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'capybara'
|
2
|
+
require 'capybara/cucumber'
|
3
|
+
require 'byebug'
|
4
|
+
require 'selenium-webdriver'
|
5
|
+
require 'site_prism'
|
6
|
+
require 'rspec'
|
7
|
+
require_relative 'helper.rb'
|
8
|
+
require_relative 'page_helper.rb'
|
9
|
+
|
10
|
+
World(Pages)
|
11
|
+
World(Helper)
|
12
|
+
|
13
|
+
ENVIRONMENT_TYPE = ENV['ENVIRONMENT_TYPE']
|
14
|
+
HEADLESS = ENV['HEADLESS']
|
15
|
+
|
16
|
+
CONFIG = YAML.load_file(File.dirname(__FILE__) + "/config/#{ENVIRONMENT_TYPE}.yml")
|
17
|
+
|
18
|
+
## register driver according with browser chosen
|
19
|
+
Capybara.register_driver :selenium do |app|
|
20
|
+
if HEADLESS.eql?('headless')
|
21
|
+
option = ::Selenium::WebDriver::Chrome::Options.new(args: ['--headless', '--disable-gpu', '--window-size=1600,1024'])
|
22
|
+
Capybara::Selenium::Driver.new(app, browser: :chrome, options: option)
|
23
|
+
|
24
|
+
elsif HEADLESS.eql?('no_headless')
|
25
|
+
option = ::Selenium::WebDriver::Chrome::Options.new(args: ['--disable-infobars', 'window-size=1600,1024'])
|
26
|
+
Capybara::Selenium::Driver.new(app, browser: :chrome, options: option)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
Capybara.configure do |config|
|
31
|
+
config.default_driver = :selenium
|
32
|
+
config.app_host = CONFIG['url_default']
|
33
|
+
config.default_max_wait_time = 30
|
34
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# !/usr/bin/env ruby
|
3
|
+
require 'fileutils'
|
4
|
+
# metodo para tira screenshot e imbutir no relatorio html
|
5
|
+
module Helper
|
6
|
+
def take_screenshot(file_name, result)
|
7
|
+
file_path = "results/screenshots/test_#{result}"
|
8
|
+
screenshot = "#{file_path}/#{file_name}.png"
|
9
|
+
page.save_screenshot(screenshot)
|
10
|
+
embed(screenshot, 'image/png', 'Click here')
|
11
|
+
end
|
12
|
+
|
13
|
+
def wait_for_ajax
|
14
|
+
Timeout.timeout(Capybara.default_max_wait_time) do
|
15
|
+
loop until finished_all_ajax_requests?
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def finished_all_ajax_requests?
|
20
|
+
page.evaluate_script('jQuery.active').zero?
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative 'helper.rb'
|
2
|
+
|
3
|
+
After do |scenario|
|
4
|
+
scenario_name = scenario.name.gsub(/\s+/, '_').tr('/', '_')
|
5
|
+
scenario_name = scenario_name.gsub(',', '')
|
6
|
+
scenario_name = scenario_name.gsub('(', '')
|
7
|
+
scenario_name = scenario_name.gsub(')', '')
|
8
|
+
scenario_name = scenario_name.gsub('#', '')
|
9
|
+
|
10
|
+
if scenario.failed?
|
11
|
+
take_screenshot(scenario_name.downcase!, 'failed')
|
12
|
+
else
|
13
|
+
take_screenshot(scenario_name.downcase!, 'passed')
|
14
|
+
end
|
15
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,59 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: UTF-8
|
3
|
+
|
4
|
+
def create_feature_file(name)
|
5
|
+
# opcoes usadas para gerar o arquivo na funcao de modelo
|
6
|
+
opts = { name: camelize(name) }
|
7
|
+
# Thor cria um arquivo com base no modelo templates/feature.tt
|
8
|
+
template('feature', File.join(FileUtils.pwd, 'features', 'specifications',
|
9
|
+
"#{name.downcase}.feature"), opts)
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_steps_file(name)
|
13
|
+
# opcoes usadas para gerar o arquivo na funcao de modelo
|
14
|
+
opts = { name: camelize(name) }
|
15
|
+
# Thor cria um arquivo com base no modelo templates/steps.tt
|
16
|
+
template('steps', File.join(FileUtils.pwd, 'features', 'steps_definitions',
|
17
|
+
"#{name.downcase}_steps.rb"), opts)
|
18
|
+
end
|
19
|
+
|
20
|
+
def create_page_file(name)
|
21
|
+
# opcoes usadas para gerar o arquivo na funcao de modelo
|
22
|
+
opts = { name: camelize(name) }
|
23
|
+
# Thor cria um arquivo com base no modelo templates/page.tt
|
24
|
+
template('page', File.join(FileUtils.pwd, 'features', 'pages',
|
25
|
+
"#{name.downcase}_page.rb"), opts)
|
26
|
+
end
|
27
|
+
|
28
|
+
def create_service_file(name)
|
29
|
+
# opcoes usadas para gerar o arquivo na funcao de modelo
|
30
|
+
opts = { name: camelize(name) }
|
31
|
+
# Thor cria um arquivo com base no modelo templates/services.tt
|
32
|
+
template('services', File.join(FileUtils.pwd, 'features', 'services',
|
33
|
+
"#{name.downcase}_services.rb"), opts)
|
34
|
+
end
|
35
|
+
|
36
|
+
def create_screens_file(name)
|
37
|
+
# opcoes usadas para gerar o arquivo na funcao de modelo
|
38
|
+
opts = { name: camelize(name) }
|
39
|
+
# Thor cria um arquivo com base no modelo templates/screens.tt
|
40
|
+
template('screens', File.join(FileUtils.pwd, 'features', 'screens',
|
41
|
+
"#{name.downcase}_screens.rb"), opts)
|
42
|
+
end
|
43
|
+
|
44
|
+
def camelize(string)
|
45
|
+
camelized = ''
|
46
|
+
string.split('_').each do |s|
|
47
|
+
camelized += s.capitalize
|
48
|
+
end
|
49
|
+
camelized
|
50
|
+
end
|
51
|
+
|
52
|
+
def in_root_project_folder?
|
53
|
+
# Olha se o usuario esta na pasta raiz do projeto
|
54
|
+
unless Dir.exist?(File.join(FileUtils.pwd, 'features', 'specifications'))
|
55
|
+
puts 'Please run this command on the root folder of the project'
|
56
|
+
exit 1
|
57
|
+
end
|
58
|
+
true
|
59
|
+
end
|
data/lib/locales/en.yml
ADDED
data/lib/locales/pt.yml
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
<%= "# language: #{options[:lang]}" %>
|
2
|
+
<%= I18n.translate( :feature ) %>: <%= config[:name] %>
|
3
|
+
|
4
|
+
<%= I18n.translate( :background ) %>:
|
5
|
+
# <%= I18n.translate( "comments.insert_steps" ) %>
|
6
|
+
|
7
|
+
<%= I18n.translate( :scenario ) %>: <%= I18n.translate( :first_scenario ) %>
|
8
|
+
# <%= I18n.translate( "comments.insert_steps" ) %>
|
data/rubygene.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'generate_ruby_tests/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'rubygene'
|
7
|
+
spec.version = GenerateRubyTests::VERSION
|
8
|
+
spec.authors = ['brunobatista25']
|
9
|
+
spec.email = ['brunobatista101@gmail.com']
|
10
|
+
spec.summary = %q{Generates an Web,Api and Mobile Test Automation project with Cucumber,
|
11
|
+
SitePrism, Capybara, Selenium, Httparty and JsonSchema.}
|
12
|
+
spec.description = %q{A simple gem to generate all files needed in a
|
13
|
+
project Mobile, Web and Api.}
|
14
|
+
spec.homepage = 'https://github.com/brunobatista25/RubyGene'
|
15
|
+
spec.license = 'MIT'
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
|
+
f.match(%r{^(test|spec|features)/})
|
19
|
+
end
|
20
|
+
|
21
|
+
spec.executables = ['rubygene']
|
22
|
+
spec.require_paths = ['lib']
|
23
|
+
|
24
|
+
spec.add_development_dependency 'bundler', '~> 1.16'
|
25
|
+
spec.add_runtime_dependency 'gherkin', '2.12.2'
|
26
|
+
spec.add_runtime_dependency 'i18n', '>= 0.8.6'
|
27
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
28
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
29
|
+
spec.add_runtime_dependency 'thor', '>= 0.19.1'
|
30
|
+
end
|