本文会进行概述如何在本地进行E2E测试的设置
gitlab/qa
目录。bundle install
来进行gem安装。
参数名 | 默认值 | 含义 | 是否必须 |
---|---|---|---|
GITLAB_USERNAME |
root |
登录用户名 | 必须 |
GITLAB_PASSWORD |
5iveL!fe |
登录密码 | 必须 |
GITLAB_ADMIN_USERNAME |
ADMIN用户名 | 必须 | |
GITLAB_ADMIN_PASSWORD |
ADMIN密码 | 必须 | |
GITLAB_QA_ACCESS_TOKEN |
登录用户的Personal Access Token,只需要api 的权限 |
非必须 | |
EE_LICENSE |
EE证书 | 非必须 | |
WEBDRIVER_HEADLESS |
true |
在本地运行测试的时候,可以将该参数设置为false |
非必须 |
QA_DEBUG |
false |
在本地运行测试的时候,可以将该参数设置为true ,可以显示详细的测试信息 |
非必须 |
QA_CAN_TEST_ADMIN_FEATURES |
true |
设置成false 将会跳过需要admin账号的测试用例 |
非必须 |
ifconfig
命令获得当前ip,比如说192.168.1.13
。gdk
目录来创建/修改gdk.yml
,并在中加入如下的内容
---
gdk:
overwrite_changes: true
hostname: 192.168.1.13
sshd:
enabled: true
listen_address: 192.168.1.13
webpack:
host: 192.168.1.13
gdk
目录来运行gdk reconfigure
gitlab/config/gitlab.yml
里的localhost
为上面提供的ip。gdk/gitlab/config/gitlab.yml
里面的production:gitlab_shell
部分下面的ssh_host: localhost
为ssh_host: 192.168.1.13
。gdk
目录中的openssh/sshd_config
添加 AcceptEnv GIT_PROTOCOL
。gdk restart
来重启gdk。http://192.168.1.13:3000
就可以访问本地的gdk
环境了。在运行测试时,可能需要打开关闭某些 Feature Flag,比如 默认中文语言
,可以传入参数 --enable-feature xxx
或者 --disable-feature xxx
来实现,比如
...
GITLAB_QA_ADMIN_ACCESS_TOKEN=$ROOT_ADMIN_TOKEN \
bundle exec bin/qa Test::Instance::All http://gdk.test:3000 \
--disable-feature set_default_locale_to_zhcn \
-- qa/specs/features/browser_ui/1_manage/project/personal_project_permissions_spec.rb
在代码 template.rb
中会读取 enable-feature
/disable-feature
参数,通过 Runtime::Feature.enable/disable
调用 REST API 打开关闭 Feature。需要注意,打开关闭 Feature Flag 需要设置 GITLAB_QA_ADMIN_ACCESS_TOKEN
,因为只有 ROOT 用户有权限操作 Feature Flag。在测试运行完成后,会恢复刚才对 Feature Flag 的修改,确保测试环境的一致性。
在运行测试时,可能需要打开关闭某些 ApplicationSetting,比如 验证手机号码
,和上面的调整 Feature Flag 不同,目前不能通过传入参数进行调整,只能通过在代码中调用 Runtime::ApplicationSettings.set_application_settings
修改,比如下面这个测试,需要注意的是,测试需要自己恢复对 ApplicationSetting 的修改。
module QA
RSpec.describe 'Create' do
describe 'Default branch name instance setting', :requires_admin, :skip_live_env do
before(:context) do
Runtime::ApplicationSettings.set_application_settings(default_branch_name: 'main')
end
after(:context) do
Runtime::ApplicationSettings.restore_application_settings(:default_branch_name)
end
...
gitlab/qa
目录。
测试命令可以很简单的分为
参数设置 bundle exec bin/qa 测试场景 测试对象 -- 用例目录
下面是具体例子,及解析:
QA_DEBUG=1 WEBDRIVER_HEADLESS=0 GITLAB_USERNAME=xxxx GITLAB_PASSWORD=yyyy GITLAB_ADMIN_USERNAME=zzzz GITLAB_ADMIN_PASSWORD=xyxy GITLAB_QA_ACCESS_TOKEN=yzyz bundle exec bin/qa Test::Instance::All http://staging.jihulab.com -- qa/qa/specs/features/browser_ui/
bin/qa
命令来进行全
级别的测试。http://staging.jihulab.com
。qa/qa/specs/features/browser_ui/
。qa/qa/specs/features
下的所有测试用例。
请使用下列命令
export EE_LICENSE=$(cat /path/to/gitlab_license)
参数名 | 默认值 | 含义 | 是否必须 |
---|---|---|---|
GITLAB_USERNAME |
root |
登录用户名 | 必须 |
GITLAB_PASSWORD |
5iveL!fe |
登录密码 | 必须 |
GITLAB_ADMIN_USERNAME |
ADMIN用户名 | 必须 | |
GITLAB_ADMIN_PASSWORD |
ADMIN密码 | 必须 | |
GITLAB_QA_ACCESS_TOKEN |
登录用户的Personal Access Token,只需要api 的权限 |
非必须 | |
EE_LICENSE |
EE证书 | 非必须 | |
WEBDRIVER_HEADLESS |
true |
在本地运行测试的时候,可以将该参数设置为false |
非必须 |
QA_DEBUG |
false |
在本地运行测试的时候,可以将该参数设置为true ,可以显示详细的测试信息 |
非必须 |
QA_CAN_TEST_ADMIN_FEATURES |
true |
设置成false 将会跳过需要admin账号的测试用例 |
非必须 |
GITLAB_QA_ADMIN_ACCESS_TOKEN |
Admin账号的Personal Access Token,只需要api 的权限 |
非必须 | |
EE_LICENSE |
EE版本的license内容 | 非必须 | |
QA_CAN_TEST_GIT_PROTOCOL_V2 |
true |
在不支持git v2 协议的环境请设置为false . |
非必须 |
QA_CAN_TEST_PRAEFECT |
true |
在无法运行需要高级权限账号的测试的时候,请设置为false |
非必须 |
QA_SKIP_PULL |
false |
在需要使用本地构建的docker镜像时,请设置为 | 非必须 |
gitlab-qa
:
gem install gitlab-qa
gitlab-jh-qa
和gitlab-jh
镜像:gitlab-jh-qa
镜像名字: gitlab-qa
使用对镜像名字进行了非常严格的判断,必须是以gitlab/*-ce|ee-qa:<tag>
样式:
docker tag <gitlab-jh-qa> gitlab/gitlab-ee-qa:<release-version>
gitlab-jh-qa
镜像:
export QA_SKIP_PULL=1
export GITLAB_USERNAME=xxxx
export GITLAB_PASSWORD=yyyy
export QA_DEBUG=1
gitlab-qa Test::Instance::Any gitlab/gitlab-ee-qa:<release-version> http://192.168.1.13:3000 -- qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb