GitLab QA에서의 Flows
Flows는 자주 사용되는 액션의 일련의 시퀀스입니다. 페이지 객체보다 더 높은 추상화 수준을 갖습니다. Flows에는 여러 페이지 객체나 다른 관련 코드가 포함될 수 있습니다.
예를 들어, 로그인 플로우는 모든 브라우저 UI 테스트에 포함된 두 단계를 캡슐화합니다.
# QA::Flow::Login
def sign_in(as: nil)
Runtime::Browser.visit(:gitlab, Page::Main::Login)
Page::Main::Login.perform { |login| login.sign_in_using_credentials(user: as) }
end
# 테스트에서 사용될 때
it '기본 사용자로 로그인한 후 테스트 수행' do
Flow::Login.sign_in
# 테스트 수행
end
QA::Flow::Login
은 테스트에서 사용자를 쉽게 전환할 수 있는 훨씬 유용한 플로우를 제공합니다.
# QA::Flow::Login
def while_signed_in(as: nil)
Page::Main::Menu.perform(&:sign_out_if_signed_in)
sign_in(as: as)
yield
Page::Main::Menu.perform(&:sign_out)
end
# 테스트에서 사용될 때
it '한 사용자로 테스트를 수행하고 다른 사용자로 확인' do
user1 = Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_1, Runtime::Env.gitlab_qa_password_1)
user2 = Resource::User.fabricate_or_use(Runtime::Env.gitlab_qa_username_2, Runtime::Env.gitlab_qa_password_2)
Flow::Login.while_signed_in(as: user1) do
# user1로 일부 설정 수행
end
Flow::Login.sign_in(as: user2)
# 나머지 테스트를 user2로 수행
end