Gerador Automático de BDD em Ruby
Visão Geral
Ferramenta Ruby para gerar automaticamente arquivos Gherkin (.feature) e definições de passos (steps.rb) a partir de histórias em texto. Atende aos padrões ISTQB, suporta parametrização com blocos de exemplos e fornece relatórios de QA (rastreabilidade, backups e PDF). Também suporta geração via IA (OpenAI / Gemini) e configuração por ambiente.
Estrutura do Projeto
bdd-generation/
Instalação
Adicione ao seu Gemfile:
gem 'bddgenx'
Ou instale diretamente:
gem install bddgenx
🔧 Configuração
1. Instale dependências
bundle install
2. Configure seu .env
cp .env.example .env
Edite o .env:
OPENAI_API_KEY=sk-...
GEMINI_API_KEY=ya29-...
BDDGENX_MODE=chatgpt # static | chatgpt | gemini
🔐 Dica: nunca versionar o
.env— ele já está no.gitignore
🚀 Uso com Rake
Com os arquivos .txt dentro da pasta input/, execute:
rake bddgenx:static # geração sem IA
rake bddgenx:chatgpt # usando ChatGPT
rake bddgenx:gemini # usando Gemini
O modo pode ser sobrescrito via ENV ou
Bddgenx.configure
📦 Geração manual via Ruby
require 'bddgenx'
Bddgenx.configure do |config|
config.mode = :chatgpt
config.openai_api_key_env = 'OPENAI_API_KEY'
end
Bddgenx::Runner.execute
📦 Geração manual via Rake
require 'rake'
require 'bddgenx'
namespace :bddgenx do
desc 'Executa geração interativa: escolha entre static, chatgpt, gemini ou deepseek'
task :generate do
puts "=== Qual modo deseja usar para gerar os cenários? ==="
puts "1. static (sem IA)"
puts "2. chatgpt (via OpenAI)"
puts "3. gemini (via Google)"
print "Digite o número (1-3): "
escolha = STDIN.gets.chomp.to_i
modo = case escolha
when 1 then :static
when 2 then :chatgpt
when 3 then :gemini
else
puts "❌ Opção inválida. Saindo."; exit 1
end
Bddgenx.configure do |config|
config.mode = modo
config.openai_api_key_env = 'OPENAI_API_KEY'
config.gemini_api_key_env = 'GEMINI_API_KEY'
end
# ⚠️ Limpa o ARGV antes de executar para evitar que [static] seja interpretado como nome de arquivo
ARGV.clear
ENV['BDDGENX_MODE'] = modo.to_s
puts "\n⚙️ Modo selecionado: #{modo}\n\n"
Bddgenx::Runner.execute
end
end
📝 Formato do Arquivo de Entrada (.txt)
# language: pt
Como um usuário do sistema
Quero fazer login corretamente
Para acessar minha conta com segurança
[CONTEXT]
Dado que estou na tela de login
[SUCCESS]
Quando preencho email e senha válidos
Então vejo a tela inicial
[SUCCESS]
Quando tento logar com "<email>" e "<senha>"
Então recebo "<mensagem>"
[EXAMPLES]
| email | senha | mensagem |
| [email protected] | 123456 | login realizado |
| [email protected] | senha | credenciais inválidas |
| | senha | email é obrigatório |
| [email protected] | | senha é obrigatória |
[SUCCESS]
Quando deixo o campo "<campo>" vazio
Então recebo a mensagem "<mensagem>"
[EXAMPLES]
| campo | mensagem |
| | login realizado |
| | credenciais inválidas |
| email | email é obrigatório |
| senha | senha é obrigatória |
🧪 Setup Rápido para Novos Usuários
ruby bin/setup.rb
Esse comando:
- Cria
.enva partir de.env.example - Garante que
input/existe
🧾 Artefatos Gerados
- ✅
.feature→ dentro defeatures/ - ✅
steps.rb→ dentro defeatures/steps/ - 🗂️ Backup automático →
reports/backup/ - 📄 PDF das features →
reports/pdf/
⚙️ CI/CD Exemplo com GitHub Actions
jobs:
gerar_bdd:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.1'
- run: bundle install
- run: bundle exec rake bddgenx:chatgpt
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
Licença
MIT © 2025 David Nascimento