2011-09-11 3 views
10

저는 'Remember me'유형의 기능을 테스트하기 위해 오이 테스트를 작성하고 있습니다. 실제로이 작업을 수행하려면 사용자가 브라우저를 닫고 브라우저를 다시 열고 사이트로 돌아올 것입니다.오이/카피 바라의 브라우저를 닫거나 다시 여는 것을 시뮬레이션 하시겠습니까?

내 테스트는 지금까지 다음과 같습니다

Scenario: 'Remember me' checked 
    Given I have checked "Remember me" 
    And I am logged in as "[email protected]" 
    When I close and re-open my browser 
    And I come back to the dashboard 
    Then I should be on the dashboard 

그러나 나는 '나는 닫고 때 다시 열고 브라우저의 단계 정의에 기입 해야할지 모르겠어.

는 사람이 어떻게 이런 짓을 했을까 알고 있나요 (또는이 내가 일을해야 무엇을하지 않은 경우, 나는 그것을 테스트 어떻게해야합니까?)

+0

질문에 대한 답을 찾았습니까? 우리는 localStorage 사용과 오프라인 애플리케이션을 테스트하려고합니다. 때로는 브라우저를 다시 열거 나 다른 브라우저에서 열어야합니다 (동일한 브라우저 일 수 있지만 깨끗한 localstorage 데이터와 빈 쿠키가 있어야 함). 우리는 이미 다른 포크 (html5 지원) 포크를 만들고 localStorage를 지원하는 capybara-webkit (0.7.2)과 병합했습니다. 하지만 이제 브라우저 단계를 다시 열면 문제가 발생합니다. – oivoodoo

+0

질문에 대한 답변을 찾았습니까? –

+0

답변을 찾지 못했지만 궁극적으로 테스트를 폐기하게되었습니다. 죄송합니다! – sevenseacat

답변

1

쿠키를 지울 수 있습니다.

When /^I clear cookies$/ do 
    browser = Capybara.current_session.driver.browser 
    browser.manage.delete_all_cookies 
end 
+2

나는 시나리오가 쿠키가 설정되고 다른 세션에서 올바르게 읽혀 지는지 확인하는 지원이라고 생각한다. 따라서 쿠키를 지우면 테스트가 중단 될 것이다. –

2

나는 Show me the cookies을 사용합니다.

추가 gem 'show_me_the_cookies'와 함께 번들 다음에 World(ShowMeTheCookies)를 추가하는 features/support/env.rb

그런 다음 단계 정의 :

When /^I reopen the browser$/ do 
    expire_cookies 
    visit [ current_path, page.driver.request.env['QUERY_STRING'] ].reject(&:blank?).join('?') 
end 
0

똑같은 일이 이렇게 생겼어.

When(/^I close and reopen the browser$/) do 
    # Get cookies we want to keep 
    remember_me_cookie = page.driver.browser.manage.cookie_named('remember_user_token') 

    # Close the window and delete the cookies 
    page.driver.quit 

    # Reopen the window 
    page.driver.switch_to_window(page.driver.current_window_handle) 

    # Go to our domain and add our cookies back in 
    visit('/') 
    remember_me_cookie.nil? ? @current_user = nil : page.driver.browser.manage.add_cookie(remember_me_cookie) 

    # Refresh the domain to activate the cookies 
    visit('/') 
end 

몇 가지 : 나는

  • 난 후, page.driver.close_window(page.driver.current_window_handle)를 사용 page.driver.switch_to_window(handle)로 다시 전환 창을 닫지 시도 쿠키와 춤을하고있는 이유

    • page.driver.quit가, 쿠키 제거는 먹으 렴하지만하지 않았다 일
    • 그때 새 창 page.driver.switch_to_window(page.driver.open_new_window)로 전환하지만 난 아니에요처럼 그 내 기분이

    를 작동하지 않았다, page.driver.close_window(page.driver.current_window_handle)를 사용하여 창을 닫지 시도

  • 카피 바라에있는 browser/window 관계가 실제로 어떻게 작동하는지 이해합니다. 또한 쿠키를 복사하는 것이 내 통합 테스트를 부정하는 것 같아요. 다행히 향후 버전에서이 모든 것을 성취 할 수있는 더 좋은 방법이 있습니다.

  • 관련 문제