Skip to content

Commit

Permalink
Primeiro commit do Projeto de Testes Automatizados de API desenvolvid…
Browse files Browse the repository at this point in the history
…o para me aprofundar um pouco mais nos estudos sobre testes automatizados de API REST em Ruby nas ferramentas Rspec, HTTParty e GitHub Actions
  • Loading branch information
AndressaKarla committed Nov 29, 2023
0 parents commit 6ef4723
Show file tree
Hide file tree
Showing 17 changed files with 729 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Pipeline Testes Automatizados API ServeRest Ruby
# executa o workflow toda vez que for realizado um push ou pull-request no repositório
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]

# permite também executar esse workflow manualmente na aba "Actions" do GitHub
workflow_dispatch:

jobs:
testes-automatizados-api-serve-rest-ruby:
# agente de execução/runner do tipo máquina virtual bem enxuta, sem interface gráfica
runs-on: ubuntu-latest

steps:
- name: Passo 1 - Obter cópia do código-fonte do repositório
uses: actions/checkout@v3

- name: Passo 2 - Instalar ruby e Instalar dependências
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.1.2'
# executa o comando bundle install e armazena as gems instaladas automaticamente
bundler-cache: true

- name: Passo 3 - Executar testes automatizados de API REST em um ambiente de desenvolvimento e Gerar relatório html
run: bundle exec rspec spec/tests/*

- name: Passo 5 - Armazenar relatório html
uses: actions/upload-artifact@v3
# expressão condicional para que sempre seja executado independentemente dos resultados dos steps anteriores
if: ${{ always() }}
with:
name: relatorio-api-serve-rest-ruby
path: ./relatorios/relatorio-api-serve-rest-ruby.html
# armazena o relatório html por 30 dias
retention-days: 30
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*.log
Gemfile.lock
3 changes: 3 additions & 0 deletions .rspec
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
--require spec_helper
--format documentation
--format html --out relatorios/relatorio-api-serve-rest-ruby.html
7 changes: 7 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# frozen_string_literal: true

source 'https://rubygems.org'

gem 'rspec', '~> 3.12.0'
gem 'httparty', '~> 0.21.0'
gem 'faker', '~> 3.2.2'
208 changes: 208 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
---
# :test_tube: Projeto de Testes Automatizados de API REST | Ruby | Rspec | HTTParty | GitHub Actions :test_tube:
---
# :information_source: Introdução
Esse projeto "testes-automatizados-api-serve-rest_ruby" é executado em um ambiente de desenvolvimento na ["API REST"](https://serverest.dev) do ["ServeRest"](https://github.com/ServeRest) que simula uma loja virtual, com o objetivo de me aprofundar um pouco mais nos estudos sobre testes automatizados de API REST em Ruby nas ferramentas Rspec, HTTParty e GitHub Actions.

---
# :dart: Executar testes automatizados de API REST em um ambiente de desenvolvimento, Gerar e armazenar relatório html no GitHub Actions
- Nesse repositório, acessar a aba "Actions"
- Na seção "Actions", clicar em "Pipeline Testes Automatizados API ServeRest Postman"
- Em "This workflow has a workflow_dispatch event trigger.", clicar em "Run workflow" > "Run workflow" para executar testes automatizados de API REST, gerar e armazenar relatório html no GitHub Actions
- Após o término da execução, clicar na run "Pipeline Testes Automatizados API ServeRest Postman"
- Na seção "Artifacts", clicar em "relatorio-api-serve-rest-ruby"
- Na janela aberta, escolher um diretório para baixar a pasta compactada "relatorio-api-serve-rest-ruby.zip"


# :female_detective: Verificar no navegador padrão o relatório html gerado e armazenado anteriormente no GitHub Actions e descompactado no computador :male_detective:
- Abrir uma janela do "Windows Explorer"
- Acessar o diretório onde foi baixada a pasta compactada "relatorio-api-serve-rest-ruby.zip" anteriormente
- Descompactar a pasta
- Acessar a pasta descompactada "relatorio-api-serve-rest-ruby"
- Clicar 2 vezes sob o relatório "relatorio-api-serve-rest-ruby.html" gerado e armazenado anteriormente no GitHub Actions e descompactado para ser aberto e verificado no navegador padrão no computador


---
# :warning: Antes de clonar ou executar esse projeto localmente no computador, é necessário seguir as instruções abaixo :point_down:

## :hammer_and_wrench: Janela do "Windows Explorer" > aba "Exibir" e marcar algumas opções
- Abrir uma janela do "Windows Explorer"
- Clicar na aba "Exibir"
- Marcar a opção "Extensões de nomes de arquivos"
- Marcar a opção "Itens ocultos"


## :hammer_and_wrench: Janela do "Windows Explorer", criar uma pasta "tools"
- Abrir uma janela do "Windows Explorer"
- Acessar o diretório "C:"
- Criar uma pasta "tools"


## :hammer_and_wrench: Cmder (Console Emulator)
- Baixar o [Console Emulator (cmder)](https://github.com/cmderdev/cmder/releases/download/v1.3.5/cmder.zip)
- Clicar com botão direito na pasta compactada > Extrair para "cmder"
- Mover a pasta descompactada "cmder" para o diretório "C:\tools" criado anteriormente
- Acessar o diretório "C:\tools\cmder"
- Clicar com botão direito no executável "cmder.exe" > Enviar para > Área de trabalho (criar atalho)
- Acessar a Área de Trabalho
- Clicar 2 vezes no atalho "Cmder - Atalho"
- Clicar na opção "Unblock and Continue"


## :hammer_and_wrench: Desinstalar Ruby e/ou Rails que já foram instalados em algum outro momento
- Na ferramenta de pesquisa do Windows, informar "Adicionar ou remover programas"
- Clicar na sugestão apresentada
- Em "Aplicativos e recursos", no campo de busca, informar "Ruby" e/ou "Rails"
- Clicar no resultado apresentado
- Clicar no botão "Desinstalar" e prosseguir com as etapas de desinstalação
- Na janela do "Windows Explorer" acessar o diretório "C:", procurar e excluir a pasta "Ruby" e/ou "Rails"
- Acessar o diretório "C:\Users\usuario", procurar e excluir os arquivos ".gem" e ".bundle"


## :hammer_and_wrench: Ruby+Devkit versão 3.1.2-1 (x64)
- Baixar o [Ruby+Devkit 3.1.2-1 (x64)](https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.2-1/rubyinstaller-devkit-3.1.2-1-x64.exe)
- Em "Select Components", marcar todas as opções caso ainda não estiverem marcadas
- Em "Completing the Ruby 3.1.2-1 ...", verificar se "Run 'ridk install' to set ip MSYS2 ..." está marcado por padrão e clicar em "Finish"

- No terminal aberto automaticamente, após algum tempo teclar "Enter"
- Após o término da instalação, teclar "Enter" novamente
- Fechar esse terminal

- Abrir um novo cmder ou outro terminal de preferência, informar o comando abaixo para confirmar se o ruby realmente foi instalado
```ruby
ruby -v
```
- E verificar se foi retornada a mesma versão do ruby+devkit instalada anteriormente:
```
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt]
```


## :hammer_and_wrench: Rspec versão 3.12.0
- No cmder aberto anteriormente, informar o comando abaixo para instalar o rspec versão 3.12.0
```ruby
gem install rspec -v 3.12.0
```


## :hammer_and_wrench: Baixar, instalar e configurar o git
- Caso ainda não tenha o git baixado e instalado, acessar o site do [git](https://git-scm.com/download/win), baixar e instalar
- Caso ainda não tenha configurado o git, seguir os passos apresentados nesse link [Configure a ferramenta](https://training.github.com/downloads/pt_BR/github-git-cheat-sheet/#:~:text=Configure%20a%20ferramenta) e configurar


## :hammer_and_wrench: Clonar o projeto
- Abrir uma janela do "Windows Explorer"
- Acessar o diretório onde será clonado o projeto "testes-automatizados-api-serve-rest_ruby"
- Copiar esse diretório
- No cmder aberto anteriormente, informar o comando abaixo para acessar onde será clonado o projeto
```
cd "<diretório copiado anteriormente>"
```
Ex.:
```
cd "C:\Users\usuario\Desktop"
```
- Informar o comando abaixo para clonar este repositório via "HTTPS"

```
git clone https://github.com/AndressaKarla/testes-automatizados-api-serve-rest_ruby.git
```

- Ou informar o comando abaixo para clonar este repositório via "SSH"

```
git clone [email protected]:AndressaKarla/testes-automatizados-api-serve-rest_ruby.git
```


## :hammer_and_wrench: Instalar todas as dependências necessárias
- No cmder aberto anteriormente, informar o comando abaixo para acessar o projeto “testes-automatizados-web-front-serve-rest_ruby” clonado anteriormente
```
cd testes-automatizados-api-serve-rest_ruby
```
Ex.:
```
C:\Users\usuario\Desktop\testes-automatizados-api-serve-rest_ruby
```
- Informar o comando abaixo para instalar todas as dependências necessárias do projeto
```ruby
bundle install
```
- Fechar esse cmder

## :hammer_and_wrench: Instalar as extensões no Visual Studio Code (VS Code)
- Caso ainda não tenha o VS Code baixado e instalado, acessar o site do [Visual Studio Code](https://code.visualstudio.com/download), baixar e instalar com a opção "System Installer"
- Com o Visual Studio Code aberto, caso seja apresentado alguma mensagem de "Instalar pacote de idiomas ...", clicar no ícone de configurações > "Don't Show Again"
- Clicar na opção "Manage > Profiles > Create Profile"
- Em "Profile name", informar "Ruby"
- Clicar na opção "Create"
- Clicar na opção "Extensions", informar e instalar as extensões abaixo:
- One Dark Pro
- binaryify
- Clicar na opção "One Dark Pro Darker" apresentada para habilitar a extensão
- Ruby
- Peng Lv
- VsCode Ruby
- Stafford Brunk
- Material Icon Theme
- Philipp Kief
- Clicar na opção "Material Icon Theme" apresentada para habilitar a extensão

- Fechar o VS Code

---
# :dart: Executar testes automatizados de API REST em um ambiente de desenvolvimento, Gerar e armazenar relatório html no computador
- Abrir uma janela do "Windows Explorer"
- Acessar o diretório onde foi clonado o projeto “testes-automatizados-web-front-serve-rest_ruby”
- Copiar esse diretório
- Abrir um novo cmder
- Informar o comando abaixo para acessar o projeto "testes-automatizados-api-serve-rest_ruby"
```
cd "<diretório copiado anteriormente>"
```
Ex.:
```
cd "C:\Users\usuario\Desktop\testes-automatizados-api-serve-rest_ruby"
```
- Informar o comando abaixo para executar cada feature individualmente do projeto:
```ruby
bundle exec rspec spec/tests/nome_arquivo_request_test.rb
```
Ex. 1:
```ruby
bundle exec rspec spec/tests/login_test.rb
```
Ex. 2:
```ruby
bundle exec rspec spec/tests/usuario_request.rb
```

- Ou informar o comando abaixo para executar todas as features e/ou cenários do projeto:
```ruby
bundle exec rspec spec/tests/*
```

---
# :female_detective: Verificar no navegador padrão o relatório html gerado anteriormente no computador :male_detective:

## :bookmark_tabs: Abrir o VS Code diretamente na pasta do projeto "testes-automatizados-api-serve-rest_ruby"
- No cmder aberto anteriormente, informar o comando abaixo para abrir o VS Code diretamente na pasta do projeto "testes-automatizados-api-serve-rest_ruby"
```
code .
```
- No VS Code aberto, caso seja apresentado "Do you trust the authors on the files in this folder?", marcar a opção "Trust the authors of all files in the parent folder ...."
- Clicar no botão "Yes, I trust the authors ...."


## :bookmark_tabs: Relatório html no computador
- No VS Code aberto anteriormente, acessar "relatorios > relatorio-api-serve-rest-ruby.html"
- Clicar com botão direito do mouse sob o arquivo "relatorio-api-serve-rest-ruby.html" > "Reveal in File Explorer"
- Na janela do "Windows Explorer" aberta automaticamente, clicar 2 vezes sob o arquivo "relatorio-api-serve-rest-ruby.html" para ser aberto e visualizado no navegador padrão


---
### Feito com ❤️ por Andressa Karla :wave:

### [![Medium](https://img.shields.io/badge/-Medium-595D60?style=plastic&logo=Medium&logoColor=white&link=https://medium.com/@andressakarla)](https://medium.com/@andressakarla) [![Linkedin](https://img.shields.io/badge/-LinkedIn-595D60?style=plastic&logo=Linkedin&logoColor=white&link=https://www.linkedin.com/in/andressakarla//)](https://www.linkedin.com/in/andressakarla/)

---
1 change: 1 addition & 0 deletions relatorios/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[^.]*
9 changes: 9 additions & 0 deletions spec/requests/login_request.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
require 'httparty'

class Login
include HTTParty

def post_login(email, senha)
BaseApi.post('/login', body: { email: email, password: senha }.to_json, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' })
end
end
Loading

0 comments on commit 6ef4723

Please sign in to comment.