Meu problema atual ocorre apenas ao executar o teste da linha de comando. Ao executar o script do RubyMine eu não tenho problemas, da linha de comando é semelhante a este
pepino features / regression / createCloudUser.feature -r features / step_definitions / -r lib /
Execução:
Feature: User pages Creation
Add user to system
Background: # features/regression/createUser.feature:4
Given you are in Cloud Staging # features/step_definitions/is_given_steps.rb:5
undefined method `visit_page" for #<Object:0x007fe29cb4c798> (NoMethodError)
./features/step_definitions/old_pages.rb:10:in `/^you are accessing User Page$/"
ele aponta para a seguinte página:
#is_given_steps.rb
When(/^you are accessing User Page$/) do
defined? $base_url
#pry
visit_page CreateCustomerPage #Error is on this line unsure why?
end
Aqui está a aula:
require "fig_newton"
require "page-object"
class CreateCustomerPage
include PageObject
include DataMagic
page_url "https://#{FigNewton.site_url}/admin/users/new"
text_field(:first_name, :id => "user_first_name")
text_field(:last_name, :id => "user_last_name")
text_field(:user_email, :id => "user_email")
button(:create_customer, :name => "commit")
button(:cancel, :name => "button")
def customerIsCreated
raise "User Not Created" unless browser.text.include?("#{FigNewton.customer_created.to_s.strip}")
return true
end
def customerIsNotCreated
raise "User was Created" unless browser.text.include?("#{FigNewton.customer_no_created.to_s.strip}")
return true
end
def complete_user_creation (data = { })
populate_page_with data_for(:create_user, data)
create_customer
end
end
projeto é configurado da seguinte forma:
TestProj-|
|--Config
|--Feature
|--Regression
|-- *.features
|--step_definitions
|-- is_given_steps.rb
|--support
|-- env.rb
|--lib
|---pages
|--Common
|--IS
|--*.* (other files)
|-- CreateCustomerPage.rb
adicionado env.rb
#env.rb
#ADDED THIS AS TEST
$: << File.dirname(__FILE__)+"/../../lib"
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "../../", "lib"))
require "rspec-expectations"
require "page-object"
require "selenium-webdriver"
require "fig_newton"
require "data_magic"
require "require_all"
require "time"
require "date"
require "yaml"
require "fileutils"
require "aws-sdk"
require_all "lib"
$base_url = FigNewton.sys_url #used to parse a separate Url
World(PageObject::PageFactory)
Não sei por que visit_page geraria um erro nessa página. Quando executo a partir do Rubymine, não tenho problemas e o teste é executado com sucesso. Por favor ajude.
Respostas:
2 para resposta № 1Já que você está exigindo pastas manualmente, meu palpite é que você não está exigindo a pasta que inclui o env.rb
.
Dada a configuração do projeto, acho que o env.rb
está no support
pasta. Você precisa incluir um requerimento para isso em seu comando Cucumber - ou seja, -r features/support
:
cucumber features/regression/createCloudUser.feature -r features/step_definitions/ -r lib/ -r features/support
0 para resposta № 2
Esse erro
método indefinido `visit_page" para # (NoMethodError)
significa que você não inicializou a página em que a visit_page está. Você pode exigir ou, se estiver fazendo um POM, precisará fazer algo assim para onde quer que essa etapa esteja:
Given $/You are in Cloud Staging$/ do
@page = SomePage.new(@test_env) // initialize new object where method lives
@page.visit_page
end