ScreenXOTE dos Milagres

Artigos

ScreenXOTE dos Milagres

Fernando Papito
Escrito por Fernando Papito em 30 de julho de 2019
Junte-se a mais de 7000 alunos

Entre para nossa lista e receba conteúdos exclusivos e com prioridade

Anexando Evidências de Testes Automatizados com RSpec

Do que adianta automatizar o testes se eu não consigo provar o que ocorreu durante a execução? Meus reports de testes estão todos verdes (passando) mas será que o cliente está mesmo confiando que as coisas estão funcionando? E quando meu teste automatizado falhar? vai ficar até vermelho no Report. Mas e a evidência?

Neste artigo, quero mostrar como implementar o processo de captura de evidência em um projeto de automação de testes construído com RSpecCapybara e Allure Reports. Vamos começar?

Configurando o Allure Reports

Crie a seguinte estrutura

mkdir c:\qaninja
mkdir c:\qaninja\xote-dos-milagres
cd c:\qaninja\xote-dos-milagres

Abra a pasta “xote-dos-milagres” no Visual Studio Code ou na IDE de sua preferência. Em seguida crie o arquivo Gemfile e coloque o conteúdo abaixo:

source "http://rubygems.org"

gem "allure-rspec"
gem "capybara"
gem "rspec"
gem "selenium-webdriver"

Em seguinda, execute:

bundler install
rspec --init

Abra o arquivo spec_helper.rb e adicione o código abaixo para configurar o Capybara e Allure Report

require "allure-rspec"
require "capybara"
require "capybara/rspec"
require "selenium-webdriver"
require "logger"

RSpec.configure do |config|
  config.expect_with :rspec do |expectations|
    expectations.include_chain_clauses_in_custom_matcher_descriptions = true
  end

  config.mock_with :rspec do |mocks|
    mocks.verify_partial_doubles = true
  end

  config.shared_context_metadata_behavior = :apply_to_host_groups

  config.include AllureRSpec::Adaptor # => adiciona o adaptador do report
  config.include Capybara::DSL # => adiciona os recursos do capybara
end

AllureRSpec.configure do |c|
  c.output_dir = "allure-results" # => onde serão gerados os resultados
  c.clean_dir = true # => limpa a pasta de resultados
  c.logging_level = Logger::WARN # => log somente para avisos
end

Capybara.configure do |config|
  config.default_driver = :selenium_chrome
  config.app_host = "https://training-wheels-protocol.herokuapp.com"
  config.default_max_wait_time = 10
end

Implementando os Testes

Dentro da pasta spec, crie um arquivo com o nome login_spec.rb. Em seguida, escreva dois exemplos de testes conforme o código abaixo:

def do_login(uname, pass)
  find("input[name=username]").set uname
  find("input[name=password]").set pass
  click_on "Login"
end

describe("Login") do
  before(:each) do
    page.current_window.resize_to(1378, 768)
    visit "/login"
  end
  context ("quando a senha é inválida") do
    before do
      do_login("stark", "ultron123")
    end

    it("deve exibir senha incorreta") do
      expect(page).to have_text "Senha é invalida!"
    end
  end

  context ("quando o cara não existe") do
    before do
      do_login("adam_warlock", "magnus")
    end

    it("deve exibir usuário não cadastrado") do
      expect(page).to have_text "O usuário informado não está cadastrado!"
    end
  end
end

Agora execute o rspec com saída no terminal e em formato de documentação:

rspec -fd

Já temos um projeto de testes automatizados funcionando. Além disso perceba que dentro da pasta allure-results, temos o relatório em XML que foi gerado pelo Allure.

Obtendo e anexando as evidências

Para anexar as evidências, iremos Hookar nossos cenários. Usaremos o After each do RSpec.

Vamos implementar o seguinte código dentro do bloco RSpec.configure do arquivo spec_helper.rb:

require "allure-rspec"
require "capybara"
require "capybara/rspec"
require "selenium-webdriver"
require "logger"

RSpec.configure do |config|
  config.expect_with :rspec do |expectations|
    expectations.include_chain_clauses_in_custom_matcher_descriptions = true
  end

  config.mock_with :rspec do |mocks|
    mocks.verify_partial_doubles = true
  end

  config.shared_context_metadata_behavior = :apply_to_host_groups

  config.include AllureRSpec::Adaptor # => adiciona o adaptador do report
  config.include Capybara::DSL # => adiciona os recursos do capybara

  config.after(:each) do |e|
    # screenshot temporário com parse para o tipo file do ruby
    temp_xote = File.join(Dir.pwd, "allure-results/temp_xote.png")

    # incova o método do capybara que tira screenshot e converte a saída para o tipo file
    final_xote = File.new(page.save_screenshot(temp_xote))

    # anexa a evidência no Report do Allure (1 para cada cenário)
    e.attach_file("ScreenXote", final_xote)
  end
end

AllureRSpec.configure do |c|
  c.output_dir = "allure-results" # => onde serão gerados os resultados
  c.clean_dir = true # => limpa a pasta de resultados
  c.logging_level = Logger::WARN # => log somente para avisos
end

Capybara.configure do |config|
  config.default_driver = :selenium_chrome
  config.app_host = "https://training-wheels-protocol.herokuapp.com"
  config.default_max_wait_time = 10
end

Execute rspec -fd novamente. Veja agora que além das saídas em XML, temos as evidências no formato PNG dentro de allure-results.

Estado da arte. Gerando o Report em HTML

Até o momento, temos um projeto de automação, reports do Allure no formato XML e as evidências Hookadas para cada cenário.

Vamos usar o Allure Command Line. Uma ferramenta para gerar o relatório Allure no formato HTML. Você pode instalá-lo facilmente com NPM.

Pré-requisitos:

1- Instale o Nodejs (no blog temos o guia de instalação)
2- Java 8 ou superior. Sim, ele precisa do Java 🙂

Instalação do Allure Command Line via NPM:

npm install -g allure-commandline

Lembre-se que no Windows, será necessário abrir o terminal como Admin e no Linux ou Mac executar o NPM com sudo.

Para subir o servidor de relatórios, na pasta raiz do projeto, execute o seguinte comando:

allure serve

Allure deve inicializar o servidor de relatórios e abrir o endereço no seu navegador padrão conforme a imagem abaixo:

Chique neh?

Agora temos um relatório com as evidências

Projeto final no meu Github: https://github.com/papitoio/xote-dos-milagres

Quer saber mais sobre testes automatizadosVeja área de cursos.

Fim 🙂

E ai,

o que você achou deste conteúdo? Conte nos comentários.

Entre para nossa lista e receba conteúdos exclusivos e com prioridade

Junte-se a mais de 7000 alunos