Skip to content

Commit

Permalink
Merge pull request #1 from AndressaKarla/refatoracoes
Browse files Browse the repository at this point in the history
Várias refatorações gerais: base_url, fixtures, README, etc
  • Loading branch information
AndressaKarla authored Mar 26, 2024
2 parents bf0cc70 + f39bdb6 commit f8e1722
Show file tree
Hide file tree
Showing 16 changed files with 94 additions and 72 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,23 @@ jobs:
steps:
- name: Passo 1 - Obter cópia do código-fonte do repositório
uses: actions/checkout@v3

- name: Passo 2 - Redirecionar os conteúdos de "secrets.LOGIN_ENV", "secrets.USUARIO_ENV", para os arquivos "login.json", "usuario.json", etc
run: |
echo '${{ secrets.LOGIN_ENV }}' > ./features/support/fixtures/login.json
echo '${{ secrets.USUARIO_ENV }}' > ./features/support/fixtures/usuario.json
- name: Passo 2 - Instalar ruby e Instalar dependências
- name: Passo 3 - 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 no navegador chrome em modo headless (2º plano) em um ambiente de desenvolvimento e Gerar os resultados dos testes
- name: Passo 4 - Executar testes no navegador chrome em modo headless (2º plano) em um ambiente de desenvolvimento e Gerar os resultados dos testes
run: bundle exec cucumber -p ci

- name: Passo 4 - Armazenar os resultados dos testes em relatório html
- name: Passo 5 - Armazenar os resultados dos testes em relatório html
uses: actions/upload-artifact@v3
# expressão condicional para que sempre seja executado independentemente dos resultados dos steps anteriores
if: ${{ always() }}
Expand All @@ -39,7 +44,7 @@ jobs:
# armazena o relatório html por 30 dias
retention-days: 30

- name: Passo 5 - Armazenar os resultados dos testes em screenshots
- name: Passo 6 - Armazenar os resultados dos testes em screenshots
uses: actions/upload-artifact@v3
if: ${{ always() }}
with:
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
*.log
Gemfile.lock
relatorio-web-front-serve-rest-ruby.*
relatorio-web-front-serve-rest-ruby.*
features/support/fixtures/*.json
!features/support/fixtures/*.example.json
38 changes: 20 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Esse projeto "testes-automatizados-web-front-serve-rest_ruby" é executado em um
## :triangular_flag_on_post: Executar os testes automatizados web no navegador chrome em modo headless (2° plano) e Gerar os resultados dos testes no GitHub Actions
- Nesse repositório, acessar a aba "Actions"
- Na seção "Actions", clicar em "Pipeline Testes Automatizados Web Front ServeRest Ruby"
- Em "This workflow has a workflow_dispatch event trigger.", clicar em "Run workflow" > "Run workflow" para executar os testes automatizados web no navegador chrome em modo headless (2° plano) no GitHub Actions
- Em "This workflow has a workflow_dispatch event trigger.", clicar em "Run workflow" > "Run workflow" para executar os testes automatizados web no navegador chrome em modo headless (2° plano) no GitHub Actions [com os conteúdos de "secrets.LOGIN_ENV", "secrets.USUARIO_ENV", etc (baseado nos arquivos ["login.example.json"](https://github.com/AndressaKarla/testes-automatizados-web-front-serve-rest_ruby/blob/main/features/support/fixtures/login.example.json), ["usuario.example.json"](https://github.com/AndressaKarla/testes-automatizados-web-front-serve-rest_ruby/blob/main/features/support/fixtures/usuario.example.json), etc, e configurados na aba "Settings" desse repositório > "Secrets and variables" > "Actions" > "Secrets" > "Repository secrets") que foram redirecionados para os arquivos "login.json", "usuario.json"]
- Após o término da execução, clicar na run "Pipeline Testes Automatizados Web Front ServeRest Ruby"
- Na seção "Artifacts", clicar em "relatorio_html_chrome"
- Na janela aberta, escolher um diretório para baixar a pasta compactada "relatorio_html_chrome.zip"
Expand Down Expand Up @@ -144,20 +144,6 @@ ruby -v
```
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt]
```


## :hammer_and_wrench: Cucumber versão 8.0.0
- No cmder ou terminal aberto anteriormente, informar o comando abaixo para instalar o cucumber versão 8.0.0
```
gem install cucumber -v 8.0.0
```


## :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
```
gem install rspec -v 3.12.0
```
- Fechar esse cmder ou terminal

## :hammer_and_wrench: Baixar, instalar e configurar o git
Expand Down Expand Up @@ -204,7 +190,6 @@ C:\Users\usuario\Desktop\testes-automatizados-web-front-serve-rest_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"
Expand Down Expand Up @@ -234,7 +219,24 @@ bundle install
- Snippets and Syntax Highlight for Gherkin (Cucumber)
- Euclidity

- Fechar o VS Code
## :bookmark_tabs: Abrir o VS Code diretamente na pasta do projeto "testes-automatizados-web-front-serve-rest_ruby"
- No cmder aberto anteriormente, informar o comando abaixo para abrir o VS Code diretamente na pasta do projeto "testes-automatizados-web-front-serve-rest_ruby"
```
code .
```
- Aguardar o VS Code ser aberto
- Fechar esse cmder
- 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 ...."

## :hammer_and_wrench: Criar arquivos "login.json", "usuario.json", informando os dados com base nos arquivos "login.example.json", "usuario.example.json", etc
- No VS Code aberto anteriormente, acessar "features > support > fixtures"
- Criar o arquivo "login.json"
- Informar os dados com base no arquivo ["login.example.json"](https://github.com/AndressaKarla/testes-automatizados-web-front-serve-rest_ruby/blob/main/features/support/fixtures/login.example.json)
- Salvar o arquivo "login.json" com os dados informados anteriormente
- Criar o arquivo "usuario.json"
- Informar os dados com base no arquivo ["usuario.example.json"](https://github.com/AndressaKarla/testes-automatizados-web-front-serve-rest_ruby/blob/main/features/support/fixtures/usuario.example.json)
- Salvar o arquivo "usuario.json" com os dados informados anteriormente

---
# :dart: Executar testes em um ambiente de desenvolvimento e Gerar os resultados dos testes no computador
Expand Down Expand Up @@ -271,7 +273,7 @@ bundle exec cucumber
```

## :triangular_flag_on_post: Ou executar os testes automatizados web no navegador chrome em modo headless (2° plano) e Gerar os resultados dos testes no computador
- No cmder aberto anteriormente, informar o comando abaixo para executar todas as features e/ou cenários do projeto em modo headless (2° plano - mesmo modo e comando que é utilizado no "Passo 3" da "Pipeline Testes Automatizados Web Front ServeRest Ruby" em ".github > workflows > [workflow-testes-automatizados-web-front-serve-rest-ruby.yml](https://github.com/AndressaKarla/testes-automatizados-web-front-serve-rest_ruby/blob/main/.github/workflows/workflow-testes-automatizados-web-front-serve-rest-ruby.yml)" no GitHub Actions) e Gerar os resultados dos testes no computador:
- No cmder aberto anteriormente, informar o comando abaixo para executar todas as features e/ou cenários do projeto em modo headless (2° plano - mesmo modo e comando que é utilizado no "Passo 4" da "Pipeline Testes Automatizados Web Front ServeRest Ruby" em ".github > workflows > [workflow-testes-automatizados-web-front-serve-rest-ruby.yml](https://github.com/AndressaKarla/testes-automatizados-web-front-serve-rest_ruby/blob/main/.github/workflows/workflow-testes-automatizados-web-front-serve-rest-ruby.yml)" no GitHub Actions) e Gerar os resultados dos testes no computador:
```
bundle exec cucumber -p ci
```
Expand Down
2 changes: 1 addition & 1 deletion features/pages/cadastro_page.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ class Cadastro < SitePrism::Page
element :botao_cadastrar, 'button[type="submit"]'
element :rolagem_tela, 'small[class="message form-text"]'

def cadastrar_admin(nome, email, senha)
def realizar_login_admin_opcao_cadastre_se(nome, email, senha)
campo_nome.click
campo_nome.set nome

Expand Down
2 changes: 1 addition & 1 deletion features/pages/login_page.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class Login < SitePrism::Page
element :rolagem_tela, 'small[class="message form-text"]'
element :opcao_cadastre_se, 'a[type="button"]'

def realizar_login_entrar(email, senha)
def realizar_login_botao_entrar(email, senha)
campo_email.click
campo_email.set email

Expand Down
4 changes: 2 additions & 2 deletions features/step_definitions/common_steps.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# Esquema do Cenario: Validar Pesquisar Produtos - produto não cadastrado
Dado('que eu informe os campos de email e senha de um usuário administrador') do
@login_fixture = carregar_fixture('login')
login.realizar_login_entrar(@login_fixture['admin_valido1']['email_valido1'], @login_fixture['admin_valido1']['senha_valida1'])
login.realizar_login_botao_entrar(@login_fixture['admin_valido1']['email_valido1'], @login_fixture['admin_valido1']['senha_valida1'])
end

Dado('que eu esteja na tela Home') do
Expand Down Expand Up @@ -53,7 +53,7 @@
# Esquema do Cenario: Validar Pesquisar Produtos - produto cadastrado
# Esquema do Cenario: Validar Pesquisar Produtos - produto não cadastrado
Dado('que eu informe os campos de {string} e {string} do usuário padrão cadastrado anteriormente') do |email, senha|
login.realizar_login_entrar(@usuario_fixture['padrao_valido1'][email], @usuario_fixture['padrao_valido1'][senha])
login.realizar_login_botao_entrar(@usuario_fixture['padrao_valido1'][email], @usuario_fixture['padrao_valido1'][senha])
end

Dado('que eu esteja na tela Home Serverest Store') do
Expand Down
2 changes: 1 addition & 1 deletion features/step_definitions/login_cadastre_se_step.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

Quando('eu informar os campos {string}, {string}, {string} e opcão Cadastrar como administrador') do |nome, email, senha|
@usuario_fixture = carregar_fixture('usuario')
cadastro.cadastrar_admin(@usuario_fixture['admin1'][nome], @usuario_fixture['admin1'][email], @usuario_fixture['admin1'][senha])
cadastro.realizar_login_admin_opcao_cadastre_se(@usuario_fixture['admin1'][nome], @usuario_fixture['admin1'][email], @usuario_fixture['admin1'][senha])
end

Então('na tela de Cadastro deverá apresentar a mensagem "{string}"') do |mensagem_esperada|
Expand Down
6 changes: 3 additions & 3 deletions features/step_definitions/login_entrar_step.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Esquema do Cenario: Validar Login usuário administrador
Quando('eu informar os campos de {string} e {string} de um usuário administrador') do |email, senha|
@login_fixture = carregar_fixture('login')
login.realizar_login_entrar(@login_fixture['admin_valido1'][email], @login_fixture['admin_valido1'][senha])
login.realizar_login_botao_entrar(@login_fixture['admin_valido1'][email], @login_fixture['admin_valido1'][senha])
end

Então('deverá apresentar a tela Home com o texto Bem Vindo') do
Expand All @@ -15,7 +15,7 @@

# Esquema do Cenario: Validar Login usuário padrão
Quando('eu informar os campos de {string} e {string} do usuário padrão cadastrado anteriormente') do |email, senha|
login.realizar_login_entrar(@usuario_fixture['padrao_valido1'][email], @usuario_fixture['padrao_valido1'][senha])
login.realizar_login_botao_entrar(@usuario_fixture['padrao_valido1'][email], @usuario_fixture['padrao_valido1'][senha])
end

Então('deverá apresentar a tela Home Serverest Store') do
Expand All @@ -28,7 +28,7 @@
# Esquema do Cenario: Validar Login usuários inválidos
Quando('eu informar os campos de {string}, {string} incorretamente') do |email, senha|
@login_fixture = carregar_fixture('login')
login.realizar_login_entrar(@login_fixture['invalido1'][email], @login_fixture['invalido1'][senha])
login.realizar_login_botao_entrar(@login_fixture['invalido1'][email], @login_fixture['invalido1'][senha])
end

Então('na tela Login deverá apresentar a mensagem "{string}"') do |mensagem_esperada|
Expand Down
2 changes: 1 addition & 1 deletion features/support/env.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,6 @@
config.default_driver = :selenium_chrome
end

config.app_host = CONFIG['url_default']
config.app_host = CONFIG['base_url']
config.default_max_wait_time = 10
end
2 changes: 1 addition & 1 deletion features/support/environments/dev.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
url_default: 'https://front.serverest.dev'
base_url: 'https://front.serverest.dev'
base_uri: 'https://serverest.dev'
2 changes: 1 addition & 1 deletion features/support/environments/local.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
url_default: 'http://localhost:3001'
base_url: 'http://localhost:3001'
base_uri: 'https://serverest.dev'
14 changes: 14 additions & 0 deletions features/support/fixtures/login.example.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"admin_valido1": {
"email_valido1": "[email protected]",
"senha_valida1": "informar-mesma-senha-usuario-admin-valido-fixture-usuario"
},
"invalido1": {
"email_invalido_vazio1": "deixar-apenas-as-aspas-duplas",
"senha_invalida_vazia1": "deixar-apenas-as-aspas-duplas",
"email_invalido_dominio_sem_ponto1": "informar-email-usuario-invalido-dominio-sem-ponto@outlook",
"senha_valida2": "informar-senha-usuario-valido",
"email_invalido_nao_cadastrado1": "[email protected]",
"senha_invalida_nao_cadastrada1": "informar-senha-usuario-invalido-nao-cadastrada"
}
}
14 changes: 0 additions & 14 deletions features/support/fixtures/login.json

This file was deleted.

23 changes: 23 additions & 0 deletions features/support/fixtures/usuario.example.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"admin_valido1": {
"nome_valido1": "informar-nome-usuario-admin-valido",
"email_valido1": "[email protected]",
"senha_valida1": "informar-mesma-senha-usuario-admin-valido-fixture-login"
},
"admin1": {
"nome_valido1": "informar-outro-nome-usuario-admin-valido",
"email_valido1": "[email protected]",
"senha_valida1": "informar-outra-senha-usuario-admin-valido",
"nome_invalido_vazio1": "deixar-apenas-as-aspas-duplas",
"email_invalido_vazio1": "deixar-apenas-as-aspas-duplas",
"senha_invalida_vazia1": "deixar-apenas-as-aspas-duplas",
"nome_valido2": "informar-outro-nome-usuario-admin-valido",
"email_invalido_dominio_sem_ponto1": "informar-email-usuario-admin-invalido-dominio-sem-ponto@yahoo",
"senha_valida2": "informar-outra-senha-usuario-admin-valido"
},
"padrao_valido1": {
"nome_valido3": "informar-nome-usuario-padrao-valido",
"email_valido2": "[email protected]",
"senha_valida3": "informar-senha-usuario-padrao-valido"
}
}
18 changes: 0 additions & 18 deletions features/support/fixtures/usuario.json

This file was deleted.

20 changes: 14 additions & 6 deletions features/support/hooks.rb
Original file line number Diff line number Diff line change
@@ -1,20 +1,28 @@
Before do |scenario|
def obter_por_email_e_excluir_usuario_por_id(base_uri, email_usuario)
retorno_get = HTTParty.get("#{base_uri}/usuarios?email=#{email_usuario}")
def obter_por_email_e_excluir_usuario_por_id(base_uri, email)
retorno_get = HTTParty.get("#{base_uri}/usuarios?email=#{email}")

if retorno_get["quantidade"] == 1
id_usuario_retornado = retorno_get["usuarios"][0]["_id"]
HTTParty.delete("#{base_uri}/usuarios/#{id_usuario_retornado}")
end
end

def obter_por_email_e_incluir_usuario_admin(base_uri, nome, email, senha)
retorno_get = HTTParty.get("#{base_uri}/usuarios?email=#{email}")

if retorno_get["quantidade"] == 0
HTTParty.post("#{base_uri}/usuarios", headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: { nome: nome, email: email, password: senha, administrador: "true" }.to_json)
end
end

usuario_fixture = carregar_fixture('usuario')
email_usuario_padrao_valido1 = usuario_fixture['padrao_valido1']['email_valido2']
email_usuario_admin_valido1 = usuario_fixture['admin1']['email_valido1']
$base_uri = CONFIG['base_uri']

obter_por_email_e_excluir_usuario_por_id($base_uri, email_usuario_padrao_valido1)
obter_por_email_e_excluir_usuario_por_id($base_uri, email_usuario_admin_valido1)
obter_por_email_e_excluir_usuario_por_id($base_uri, usuario_fixture['padrao_valido1']['email_valido2'])
obter_por_email_e_excluir_usuario_por_id($base_uri, usuario_fixture['admin1']['email_valido1'])

obter_por_email_e_incluir_usuario_admin($base_uri, usuario_fixture['admin_valido1']['nome_valido1'], usuario_fixture['admin_valido1']['email_valido1'], usuario_fixture['admin_valido1']['senha_valida1'])

Capybara.current_session.driver.browser.manage.delete_all_cookies
Capybara.page.driver.browser.manage.window.resize_to(1280, 720)
Expand Down

0 comments on commit f8e1722

Please sign in to comment.