# frozen_string_literal: true

level_blacklist = Set["WARNING", "INFO"]
After do |scenario|
  if scenario.failed?
    base_name = "#{scenario.name.parameterize}-#{Time.zone.now.strftime('%Y-%m-%d-%H:%M:%S')}"
    screenshot_name = "#{base_name}.png"
    screenshot_path = "/tmp/artifacts/#{screenshot_name}"
    Capybara.page.save_screenshot(screenshot_path)
    raw_logs = Capybara.page.driver.browser.manage.logs.get(:browser).filter { |log| !level_blacklist.include?(log.level) }
    logs = raw_logs.map { |log| "#{log.level}: #{log.message}" }.join("\n")
    File.open("/tmp/artifacts/#{base_name}.log", "w") { |f| f.write(logs) }
  end
end

After('@close-tab') do
  @context.close_tab
end

Before do |scenario|
  first_tag = scenario.tags.first.name
  camel_case_class = first_tag[1..-1].gsub('-', '_').classify
  @context = "#{camel_case_class}Context".constantize.new
end

Before('@create-home-page') do
  @context.given_page('Home')
end

Before('@create-features-page') do
  @context.given_page('Features')
end

Before('@create-permissions-and-privileges') do
  @context.create_permissions_and_permission_privileges
end

Before('@create-redirects') do
  @context.create_redirects
end

Before('@create-reusable-image') do
  @context.create_reusable_image
end

Before('@create-teams-and-privileges') do
  @context.create_teams
  @context.create_permissions
end

Before('@create-two-pages') do
  @context.create_two_pages
end
