Fix and simplify end-to-end tests for secret variables
This commit is contained in:
parent
1192526b89
commit
a69b36264b
5 changed files with 33 additions and 39 deletions
|
@ -4,18 +4,6 @@ module QA
|
|||
class SecretVariable < Factory::Base
|
||||
attr_accessor :key, :value
|
||||
|
||||
product :key do
|
||||
Page::Project::Settings::CICD.act do
|
||||
expand_secret_variables(&:variable_key)
|
||||
end
|
||||
end
|
||||
|
||||
product :value do
|
||||
Page::Project::Settings::CICD.act do
|
||||
expand_secret_variables(&:variable_value)
|
||||
end
|
||||
end
|
||||
|
||||
dependency Factory::Resource::Project, as: :project do |project|
|
||||
project.name = 'project-with-secret-variables'
|
||||
project.description = 'project for adding secret variable test'
|
||||
|
|
|
@ -98,6 +98,10 @@ module QA
|
|||
views.map(&:errors).flatten
|
||||
end
|
||||
|
||||
def self.elements
|
||||
views.map(&:elements).flatten
|
||||
end
|
||||
|
||||
class DSL
|
||||
attr_reader :views
|
||||
|
||||
|
|
|
@ -6,39 +6,37 @@ module QA
|
|||
include Common
|
||||
|
||||
view 'app/views/ci/variables/_variable_row.html.haml' do
|
||||
element :variable_row, '.ci-variable-row-body'
|
||||
element :variable_key, '.js-ci-variable-input-key'
|
||||
element :variable_value, '.js-ci-variable-input-value'
|
||||
element :key_placeholder, 'Input variable key'
|
||||
element :value_placeholder, 'Input variable value'
|
||||
end
|
||||
|
||||
view 'app/views/ci/variables/_index.html.haml' do
|
||||
element :save_variables, '.js-secret-variables-save-button'
|
||||
element :reveal_values, '.js-secret-value-reveal-button'
|
||||
end
|
||||
|
||||
def fill_variable_key(key)
|
||||
page.within('.js-ci-variable-list-section .js-row:nth-child(1)') do
|
||||
page.find('.js-ci-variable-input-key').set(key)
|
||||
end
|
||||
fill_in('Input variable key', with: key, match: :first)
|
||||
end
|
||||
|
||||
def fill_variable_value(value)
|
||||
page.within('.js-ci-variable-list-section .js-row:nth-child(1)') do
|
||||
page.find('.js-ci-variable-input-value').set(value)
|
||||
end
|
||||
fill_in('Input variable value', with: value, match: :first)
|
||||
end
|
||||
|
||||
def save_variables
|
||||
click_button('Save variables')
|
||||
find('.js-secret-variables-save-button').click
|
||||
end
|
||||
|
||||
def variable_key
|
||||
page.within('.js-ci-variable-list-section .js-row:nth-child(1)') do
|
||||
page.find('.js-ci-variable-input-key').value
|
||||
end
|
||||
def reveal_variables
|
||||
find('.js-secret-value-reveal-button').click
|
||||
end
|
||||
|
||||
def variable_value
|
||||
page.within('.js-ci-variable-list-section .js-row:nth-child(1)') do
|
||||
page.find('.js-ci-variable-input-value').value
|
||||
def variable_value(key)
|
||||
within('.ci-variable-row-body', text: key) do
|
||||
find('.js-ci-variable-input-value').value
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -4,16 +4,21 @@ module QA
|
|||
Runtime::Browser.visit(:gitlab, Page::Main::Login)
|
||||
Page::Main::Login.act { sign_in_using_credentials }
|
||||
|
||||
variable_key = 'VARIABLE_KEY'
|
||||
variable_value = 'variable value'
|
||||
|
||||
variable = Factory::Resource::SecretVariable.fabricate! do |resource|
|
||||
resource.key = variable_key
|
||||
resource.value = variable_value
|
||||
resource.key = 'VARIABLE_KEY'
|
||||
resource.value = 'some secret variable'
|
||||
end
|
||||
|
||||
expect(variable.key).to eq(variable_key)
|
||||
expect(variable.value).to eq(variable_value)
|
||||
Page::Project::Settings::CICD.perform do |settings|
|
||||
settings.expand_secret_variables do |page|
|
||||
expect(page).to have_field(with: 'VARIABLE_KEY')
|
||||
expect(page).not_to have_field(with: 'some secret variable')
|
||||
|
||||
page.reveal_variables
|
||||
|
||||
expect(page).to have_field(with: 'some secret variable')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -14,7 +14,7 @@ describe QA::Page::Base do
|
|||
end
|
||||
|
||||
view 'path/to/some/_partial.html.haml' do
|
||||
element :something, 'string pattern'
|
||||
element :another_element, 'string pattern'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -25,11 +25,10 @@ describe QA::Page::Base do
|
|||
end
|
||||
|
||||
it 'populates views objects with data about elements' do
|
||||
subject.views.first.elements.tap do |elements|
|
||||
expect(elements.size).to eq 2
|
||||
expect(elements).to all(be_an_instance_of QA::Page::Element)
|
||||
expect(elements.map(&:name)).to eq [:something, :something_else]
|
||||
end
|
||||
expect(subject.elements.size).to eq 3
|
||||
expect(subject.elements).to all(be_an_instance_of QA::Page::Element)
|
||||
expect(subject.elements.map(&:name))
|
||||
.to eq [:something, :something_else, :another_element]
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue