Help us learn about your current experience with the documentation. Take the survey.

GitLab QA 中的流程

流程是常用的一系列操作。它们比页面对象(page objects)更高层次的抽象。流程可以包含多个页面对象,或任何其他相关的代码。

例如,登录流程封装了两个步骤,这两个步骤包含在每一个浏览器 UI 测试中。

# QA::Flow::登录

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::登录

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 = create(:user)
  user2 = create(:user)

  Flow::Login.while_signed_in(as: user1) do
    # 以 user1 身份执行一些设置
  end

  Flow::Login.sign_in(as: user2)

  # 以 user2 身份执行测试的其余部分
end