fuel-ui/static/tests/functional/nightly/library/settings.js

294 lines
16 KiB
JavaScript
Executable File

/*
* Copyright 2016 Mirantis, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
**/
import 'tests/functional/helpers';
function SettingsLib(remote) {
this.remote = remote;
}
SettingsLib.prototype = {
constructor: SettingsLib,
gotoOpenStackSettings(settingsSegmentName) {
var segmentName = (settingsSegmentName.toLowerCase()).replace(' ', '_') + ' ';
var listSelector = 'ul.nav-pills.nav-stacked ';
var segmentSelector = 'a.subtab-link-' + segmentName;
var pageSelector = 'div.' + segmentName;
var activeSelector = 'li.active ';
var segmentDescription = RegExp(settingsSegmentName, 'i');
return this.remote
.assertElementsExist(listSelector, 'Default settings segment list exists')
.assertElementsExist(segmentSelector, settingsSegmentName +
' settings segment link exists')
.clickByCssSelector(segmentSelector)
.assertElementsAppear(pageSelector, 2000, settingsSegmentName +
' settings segment page is loaded')
.assertElementsExist(activeSelector + segmentSelector, settingsSegmentName +
' settings segment link exists and active')
.assertElementMatchesRegExp(activeSelector + segmentSelector, segmentDescription,
settingsSegmentName + ' settings segment link name is correct');
},
checkGeneralSegment() {
var accessSelector = 'div.setting-section-access';
var repositoriesSelector = 'div.setting-section-repo_setup';
var kernelSelector = 'div.setting-section-kernel_params';
var provisionSelector = 'div.setting-section-provision';
var repositoriesMessage = RegExp(
'Please note: the first repository will be considered the operating system mirror that ' +
'will be used during node provisioning[\\s\\S]*To create a local repository mirror on the ' +
'Fuel master node, please follow the instructions provided by running "fuel-createmirror ' +
'--help" on the Fuel master node[\\s\\S]*Please make sure your Fuel master node has ' +
'Internet access to the repository before attempting to create a mirror.', 'i');
return this.remote
// Check Access subgroup
.assertElementsExist(accessSelector, 'Access subgroup exists')
.findByCssSelector(accessSelector)
.assertElementMatchesRegExp('h3', /Access/i, 'Default subgroup name is observed')
.assertElementEnabled('input[name="user"]', '"Username" textfield enabled')
.assertElementEnabled('input[name="password"]', '"Password" textfield enabled')
.assertElementEnabled('input[name="tenant"]', '"Tenant" textfield enabled')
.assertElementEnabled('input[name="email"]', '"Email" textfield enabled')
.end()
// Check Repositories subgroup
.assertElementsExist(repositoriesSelector, 'Repositories subgroup exists')
.findByCssSelector(repositoriesSelector)
.assertElementMatchesRegExp('h3', /Repositories/i, 'Default subgroup name is observed')
.assertElementMatchesRegExp('span.help-block', repositoriesMessage,
'Default subgroup description is observed')
.assertElementsExist('div.repo-name', 8,
'Default quantity of Name textfields is observed')
.assertElementsExist('div.repo-uri', 8,
'Default quantity of URI textfields is observed')
.assertElementsExist('div.repo-priority', 8,
'Default quantity of Priority textfields is observed')
.assertElementEnabled('button.btn-add-repo', '"Add Extra Repo" button enabled')
.end()
// Check Kernel parameters subgroup
.assertElementsExist(kernelSelector, 'Kernel parameters subgroup exists')
.findByCssSelector(kernelSelector)
.assertElementMatchesRegExp('h3', /Kernel parameters/i,
'Default subgroup name is observed')
.assertElementEnabled('input[name="kernel"]', '"Initial parameters" textfield enabled')
.end()
// Check Provision subgroup
.assertElementsExist(provisionSelector, 'Provision subgroup exists')
.findByCssSelector(provisionSelector)
.assertElementMatchesRegExp('h3', /Provision/i, 'Default subgroup name is observed')
.assertElementEnabled('textarea[name="packages"]', '"Initial packages" textarea enabled')
.end();
},
checkSecuritySegment() {
var publicTlsSelector = 'div.setting-section-public_ssl';
var servicesName = 'TLS for OpenStack public endpoints';
var horizonName = 'HTTPS for Horizon';
return this.remote
// Check Public TLS subgroup
.assertElementsExist(publicTlsSelector, 'Public TLS subgroup exists')
.findByCssSelector(publicTlsSelector)
.assertElementMatchesRegExp('h3', /Public TLS/i, 'Default subgroup name is observed')
.findByCssSelector('div.checkbox-group')
.assertElementEnabled('input', '"' + servicesName + '" checkbox is enabled')
.assertElementNotSelected('input', '"' + servicesName + '" checkbox is not selected')
.assertElementContainsText('label', servicesName, '"' + servicesName +
'" label has default description')
.assertElementContainsText('span.help-block',
'Enable TLS termination on HAProxy for OpenStack services', '"' + servicesName +
'" description has default value')
.end()
.findByCssSelector('div.checkbox-group.disabled')
.assertElementDisabled('input', '"' + horizonName + '" checkbox is disabled')
.assertElementNotSelected('input', '"' + horizonName + '" checkbox is not selected')
.assertElementContainsText('label', horizonName, '"' + horizonName +
'" label has default description')
.assertElementContainsText('span.help-block',
'Secure access to Horizon enabling HTTPS instead of HTTP', '"' + horizonName +
'" description has default value')
.end()
.end();
},
checkComputeSegment() {
var commonSelector = 'div.setting-section-common';
var kvmSelector = 'input[value="kvm"]';
var qemuSelector = 'input[value="qemu"]';
var novaSelector = 'input[name="nova_quota"]';
var stateSelector = 'input[name="resume_guests_state_on_host_boot"]';
return this.remote
// Check Common subgroup
.assertElementsExist(commonSelector, 'Common subgroup exists')
.findByCssSelector(commonSelector)
.assertElementMatchesRegExp('h3', /Common/i, 'Default subgroup name is observed')
.assertElementMatchesRegExp('h4', /Hypervisor type/i, 'Default name is observed')
.assertElementEnabled(kvmSelector, '"KVM" radiobutton is enabled')
.assertElementNotSelected(kvmSelector, '"KVM" radiobutton is not selected')
.assertElementEnabled(qemuSelector, '"QEMU" radiobutton is enabled')
.assertElementSelected(qemuSelector, '"QEMU" radiobutton is selected')
.assertElementEnabled(novaSelector, '"Nova quotas" checkbox is enabled')
.assertElementNotSelected(novaSelector, '"Nova quotas" checkbox is not selected')
.assertElementEnabled(stateSelector,
'"Resume guests state on host boot" checkbox is enabled')
.assertElementSelected(stateSelector,
'"Resume guests state on host boot" checkbox is selected')
.end();
},
checkStorageSegment() {
var commonSelector = 'div.setting-section-common';
var storageSelector = 'div.setting-section-storage';
var lvmSelector = 'input[name="volumes_lvm"]';
var blockSelector = 'input[name="volumes_block_device"]';
var cephSelector = 'input[name="volumes_ceph"]';
var imagesSelector = 'input[name="images_ceph"]';
var ephemeralSelector = 'input[name="ephemeral_ceph"]';
var objectsSelector = 'input[name="objects_ceph"]';
return this.remote
// Check Common subgroup
.assertElementsExist(commonSelector, 'Common subgroup exists')
.findByCssSelector(commonSelector)
.assertElementMatchesRegExp('h3', /Common/i, 'Default subgroup name is observed')
.assertElementEnabled('input[name="use_cow_images"]',
'"Use qcow format for images" checkbox is enabled')
.assertElementSelected('input[name="use_cow_images"]',
'"Use qcow format for images" checkbox is selected')
.end()
// Check Storage Backends subgroup
.assertElementsExist(storageSelector, 'Storage Backends subgroup exists')
.findByCssSelector(storageSelector)
.assertElementMatchesRegExp('h3', /Storage Backends/i,
'Default subgroup name is observed')
.assertElementEnabled(lvmSelector,
'"Cinder LVM over iSCSI for volumes" checkbox is enabled')
.assertElementSelected(lvmSelector,
'"Cinder LVM over iSCSI for volumes" checkbox is selected')
.assertElementEnabled(blockSelector, '"Cinder Block device driver" checkbox is enabled')
.assertElementNotSelected(blockSelector,
'"Cinder Block device driver" checkbox is not selected')
.assertElementDisabled(cephSelector,
'"Ceph RBD for volumes (Cinder)" checkbox is disabled')
.assertElementNotSelected(cephSelector,
'"Ceph RBD for volumes (Cinder)" checkbox is not selected')
.assertElementEnabled(imagesSelector,
'"Ceph RBD for images (Glance)" checkbox is enabled')
.assertElementNotSelected(imagesSelector,
'"Ceph RBD for images (Glance)" checkbox is not selected')
.assertElementEnabled(ephemeralSelector,
'"Ceph RBD for ephemeral volumes (Nova)" checkbox is enabled')
.assertElementNotSelected(ephemeralSelector,
'"Ceph RBD for ephemeral volumes (Nova)" checkbox is not selected')
.assertElementEnabled(objectsSelector,
'"Ceph RadosGW for objects (Swift API)" checkbox is enabled')
.assertElementNotSelected(objectsSelector,
'"Ceph RadosGW for objects (Swift API)" checkbox is not selected')
.assertElementEnabled('input[name="osd_pool_size"]',
'"Ceph object replication factor" textfield is enabled')
.end();
},
checkLoggingSegment() {
var commonSelector = 'div.setting-section-common';
var syslogSelector = 'div.setting-section-syslog';
var puppetSelector = 'input[name="puppet_debug"]';
var debugSelector = 'input[name="debug"]';
var metadataSelector = 'input[name="metadata"]';
var udpSelector = 'input[value="udp"]';
var tcpSelector = 'input[value="tcp"]';
return this.remote
// Check Common subgroup
.assertElementsExist(commonSelector, 'Common subgroup exists')
.findByCssSelector(commonSelector)
.assertElementMatchesRegExp('h3', /Common/i, 'Default subgroup name is observed')
.assertElementEnabled(puppetSelector, '"Puppet debug logging" checkbox is enabled')
.assertElementSelected(puppetSelector, '"Puppet debug logging" checkbox is selected')
.assertElementEnabled(debugSelector, '"OpenStack debug logging" checkbox is enabled')
.assertElementNotSelected(debugSelector,
'"OpenStack debug logging" checkbox is not selected')
.end()
// Check Syslog subgroup
.assertElementsExist(syslogSelector, 'Syslog subgroup exists')
.findByCssSelector(syslogSelector)
.assertElementMatchesRegExp('h3', /Syslog/i, 'Default subgroup name is observed')
.assertElementEnabled(metadataSelector, '"Syslog" checkbox is enabled')
.assertElementNotSelected(metadataSelector, '"Syslog" checkbox is not selected')
.assertElementDisabled('input[name="syslog_server"]', '"Hostname" textfield is disabled')
.assertElementDisabled('input[name="syslog_port"]', '"Port" textfield is disabled')
.assertElementDisabled(udpSelector, '"UDP" radiobutton is disabled')
.assertElementNotSelected(udpSelector, '"UDP" radiobutton is not selected')
.assertElementDisabled(tcpSelector, '"TCP" radiobutton is disabled')
.assertElementSelected(tcpSelector, '"TCP" radiobutton is selected')
.end();
},
checkOpenStackServicesSegment() {
var componentsSelector = 'div.setting-section-additional_components';
var saharaSelector = 'input[name="sahara"]';
var ironicSelector = 'input[name="ironic"]';
return this.remote
// Check Additional Components subgroup
.assertElementsExist(componentsSelector, 'Additional Components subgroup exists')
.findByCssSelector(componentsSelector)
.assertElementMatchesRegExp('h3', /Additional Components/i,
'Default subgroup name is observed')
.assertElementEnabled(saharaSelector, '"Install Sahara" checkbox is enabled')
.assertElementNotSelected(saharaSelector, '"Install Sahara" checkbox is not selected')
.assertElementEnabled(ironicSelector, '"Install Ironic" checkbox is enabled')
.assertElementNotSelected(ironicSelector, '"Install Ironic" checkbox is not selected')
.end();
},
checkOtherSegment() {
var loggingSelector = 'div.setting-section-logging';
var vpnSelector = 'div.setting-section-VPNaaS';
var zabbixSelector = 'div.setting-section-zabbix_monitoring';
var mainInputSelector = 'input[name="metadata"]:enabled:not(:checked)';
var zabbiRadioSelector = 'input[name="zabbix_monitoring"]:disabled';
return this.remote
// Check The Logging, Monitoring and Alerting (LMA) Collector Plugin subgroup
.assertElementsExist(loggingSelector,
'"The Logging, Monitoring and Alerting (LMA) Collector Plugin" subgroup exists')
.findByCssSelector(loggingSelector)
.assertElementMatchesRegExp('label',
/.*The Logging, Monitoring and Alerting.*LMA.*Collector Plugin.*/i,
'Default subgroup name is observed')
.assertElementsExist(mainInputSelector,
'"Collector Plugin" main checkbox is enabled and not selected')
.assertElementDisabled('input[name="logging"]:disabled:checked',
'"Versions 0.7.0" radiobutton is disabled and selected')
.assertElementDisabled('input[name="logging_text"]', '"label" textfield is disabled')
.end()
// Check VPNaaS plugin for Neutron subgroup
.assertElementsExist(vpnSelector, '"VPNaaS plugin" for Neutron subgroup exists')
.findByCssSelector(vpnSelector)
.assertElementMatchesRegExp('label', /VPNaaS plugin for Neutron/i,
'Default subgroup name is observed')
.assertElementsExist(mainInputSelector,
'"VPNaaS plugin" main checkbox is enabled and not selected')
.assertElementsExist('input[name="VPNaaS"]:disabled:checked',
'"Versions 1.1.0" radiobutton is disabled and selected')
.end()
// Check Zabbix for Fuel subgroup
.assertElementsExist(zabbixSelector, 'Zabbix for Fuel subgroup exists')
.findByCssSelector(zabbixSelector)
.assertElementMatchesRegExp('label', /Zabbix for Fuel/i,
'Default subgroup name is observed')
.assertElementsExist(mainInputSelector,
'"Zabbix for Fuel Plugin" main checkbox is enabled and not selected')
.assertElementsExist(zabbiRadioSelector + ':checked',
'"Versions 1.0.0" radiobutton is disabled and selected')
.assertElementsExist(zabbiRadioSelector + ':not(:checked)',
'"Versions 2.0.0" radiobutton is disabled and not selected')
.assertElementDisabled('input[name="zabbix_text_1"]', '"label 1.1" textfield is disabled')
.end();
}
};
export default SettingsLib;