When(/^I specify (.*?) as the publishing obligation for the physical track$/) do |obligation|
  @obligation = obligation
  on(Project::PhysicalProductDetailsPage) do |page|
    page.wait_until do
      page.navigate_to_publishing_element.attribute_value("class").include?("ProductBuildSteps-active-item")
    end
  end
  on(Project::ProductPublishingPage) do |page|
    print_attempt = proc do |exception, try|
      puts "#{exception.class}: '#{exception.message}' - Retry attempt: #{try}"
    end
    Retriable.retriable(on: Watir::Wait::TimeoutError, tries: 2, on_retry: print_attempt) do
      i = 0
      until (page.publishing_obligation_element.text == @obligation) || (i == 5)
        i += 1
        page.select_publishing_obligation @obligation
      end
    end
  end
end

When(/^I save my physical publishing obligations$/) do
  on(Project::CreatePhysicalProductPage).save
end
