我正在升级我的Rails应用程序,使用Turbolinks 5以利用Native Wrappers。我已更新了所有javascript,并且在浏览器和Android应用程序中一切正常。但是,在使用js true时,我的一些capybara测试出现问题。在撰写本文时,我使用的是最新的capybara(2.11.0)、poltergeist(1.12.0)和phantomjs(2.1)。我也尝试过capybara-webkit驱动程序,但没有成功。
出现问题的地方似乎是在turbolinks 5中,所有表单都应该通过远程方式提交,并且turbolinks知道如何处理请求。我发现,使用Capybara时,我的表单在提交后并没有重定向,而是停留在同一页上。我进行了大量的谷歌搜索和试错,但一无所获。如果需要更多信息,请让我知道。
出现问题的地方似乎是在turbolinks 5中,所有表单都应该通过远程方式提交,并且turbolinks知道如何处理请求。我发现,使用Capybara时,我的表单在提交后并没有重定向,而是停留在同一页上。我进行了大量的谷歌搜索和试错,但一无所获。如果需要更多信息,请让我知道。
scenario 'user has dispatch permission and valid attributes', js: true do
sign_in('jdoe')
page.visit path
page.fill_in 'contact_text_input', with: 'Jimmy'
page.select 'Medium - 3 Hours', from: 'Priority'
page.fill_in 'Created By', with: 'John Doe'
page.click_button 'Create This'
save_and_open_page
expect(page.current_path).to eq("/dispatch")
expect(page).to have_content('This was created successfully')
end
def sign_in(username)
page.visit '/'
page.fill_in 'Username', with: username
page.fill_in 'Password', with: 'test'
page.click_button 'Log In'
end
js_errors: true
运行 Poltergeist,以确保没有任何 JS 错误或使用不支持的 JS 函数/特性(Poltergeist 2.1.1 不支持 ES2015 - 新的 2.5 beta 应该支持)。此外,请注意,在你的 JS 中使用let
将在 Poltergeist 2.1.1 中静默失败。 - Thomas Walpolesign_in
没有等待登录完成而失败。这意味着您测试中的page.visit path
可能在身份验证 cookie 被设置之前被调用,因此无法加载您认为的页面。您应该添加一些内容来确保登录已完成,例如expect(page).to have_text('You have logged in!')
或者显示成功登录的页面上的任何内容。 - Thomas Walpolesave_and_open_page
这行代码,会发生什么事情,@RyanCondron? - Zalom