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
и т.п.