Rspec, capybara, rake - не может создать HTML отчет

Я хочу сделать тест на дым для моей веб-страницы.

Тестовая работа правильная.

После каждого теста у меня есть html отчет, но только если запускать тест по одному (каждый тест имеет разный проход и логин) html отчет в файле.rspec

--format html

--out rspec_results.html

Я создаю задание Rake для запуска всего теста вместе с автоматическим взятием пароля.

Код задачи Rake:

namespace :smoke do

  users = [

    {login: "login",     pass: "pass", tag: "role1"    },
    {login: "login",     pass: "pass", tag: "role2"    },
    {login: "login",     pass: "pass", tag: "role3"    },
    {login: "login",     pass: "pass", tag: "role4"    },
    {login: "login",     pass: "pass", tag: "role5"    }, 
    {login: "login",     pass: "pass", tag: "role6"    },
    {login: "login",     pass: "pass", tag: "role7"    },
    {login: "login",     pass: "pass", tag: "role8"    } 


  ] 

  users.each do |user|

    desc "smoke test for admin"

    task "#{user[:tag].to_sym}" => :environment do
        task('spec').clear

      ENV['LOGIN']    = user[:login]
      ENV['PASSWORD'] = user[:pass]

      RSpec::Core::RakeTask.new(:spec) do |t|
        t.pattern    = './spec/smoke/**/*'
        t.rspec_opts = "-t #{user[:tag]}" 
        t.fail_on_error = false
      end 
      Rake::Task["spec"].execute 
    end
  end

  desc "smoke test for all users"
  task all: :environment do
    task('spec').clear

    Rake::Task["smoke:role1"].invoke
    Rake::Task["smoke:role2"].invoke
    Rake::Task["smoke:role3"].invoke
    Rake::Task["smoke:role4"].invoke
    Rake::Task["smoke:role5"].invoke
    Rake::Task["smoke:role6"].invoke
    Rake::Task["smoke:role7"].invoke
    Rake::Task["smoke:role8"].invoke

  end

Я пытаюсь добавить это t.rspec_opts = '--format html --out reports/rspec_results.html'

Если я выберу одну роль

Пример:

rake smoke:role1 (это начало теста для role1)

После этого продолжите тестирование для другой роли, но используйте pass и login из role1, соответственно, все остальные тесты не пройдены. и в отчете у меня есть все тесты, но только первый шаг проходит правильно, другой сбой.

Как я могу сделать отчет для моих задач по рейку, и если кто-то знает, как добавить экран (капибара) в этот отчет, если шаг от теста не пройден.

С уважением.

1 ответ

Решение

Вы пытаетесь изменить:

RSpec::Core::RakeTask.new(:spec) do |t|
  t.pattern       = './spec/smoke/**/*'
  t.rspec_opts    = "-t #{user[:tag]}" 
  t.fail_on_error = false
end

чтобы:

RSpec::Core::RakeTask.new(:spec) do |t|
  t.pattern       = './spec/smoke/**/*'
  t.rspec_opts    = "-t #{user[:tag]} --format html --out reports/rspec_results_#{user[:login]}.html" 
  t.fail_on_error = false
end

Он создаст отчеты для каждого пользователя: rspec_results_admin.html за rake smoke:admin и т.п.

Другие вопросы по тегам