Merge "pytest-based tests individual timeout for message check"
This commit is contained in:
@@ -108,9 +108,9 @@ AvailableServiceGroup = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
SeleniumGroup = [
|
SeleniumGroup = [
|
||||||
cfg.FloatOpt(
|
cfg.IntOpt(
|
||||||
'message_implicit_wait',
|
'message_wait',
|
||||||
default=0.1,
|
default=60,
|
||||||
help='Timeout in seconds to wait for message confirmation modal'),
|
help='Timeout in seconds to wait for message confirmation modal'),
|
||||||
cfg.IntOpt(
|
cfg.IntOpt(
|
||||||
'implicit_wait',
|
'implicit_wait',
|
||||||
|
@@ -14,8 +14,8 @@ help_url=https://docs.openstack.org/
|
|||||||
|
|
||||||
[selenium]
|
[selenium]
|
||||||
# Timeout in seconds to wait for message confirmation modal
|
# Timeout in seconds to wait for message confirmation modal
|
||||||
# (float value)
|
# (integer value)
|
||||||
message_implicit_wait=3
|
message_wait=60
|
||||||
|
|
||||||
# Timeout in seconds to wait for a page to become available
|
# Timeout in seconds to wait for a page to become available
|
||||||
# (integer value)
|
# (integer value)
|
||||||
|
@@ -34,6 +34,7 @@ class Session:
|
|||||||
self.current_user = None
|
self.current_user = None
|
||||||
self.current_project = None
|
self.current_project = None
|
||||||
self.driver = driver
|
self.driver = driver
|
||||||
|
self.config = config
|
||||||
self.credentials = {
|
self.credentials = {
|
||||||
'user': (
|
'user': (
|
||||||
config.identity.username,
|
config.identity.username,
|
||||||
@@ -84,7 +85,7 @@ class Session:
|
|||||||
selection = project_element.find_element_by_xpath(
|
selection = project_element.find_element_by_xpath(
|
||||||
f'.//*[normalize-space()="{project}"]')
|
f'.//*[normalize-space()="{project}"]')
|
||||||
selection.click()
|
selection.click()
|
||||||
widgets.get_and_dismiss_messages(self.driver)
|
widgets.get_and_dismiss_messages(self.driver, self.config)
|
||||||
self.current_project = self.driver.find_element_by_xpath(
|
self.current_project = self.driver.find_element_by_xpath(
|
||||||
self.project_name_xpath).text
|
self.project_name_xpath).text
|
||||||
|
|
||||||
|
@@ -64,7 +64,7 @@ def test_update_compute_defaults(login, driver, openstack_admin, config,
|
|||||||
defaults_form.find_element_by_id("id_cores").clear()
|
defaults_form.find_element_by_id("id_cores").clear()
|
||||||
defaults_form.find_element_by_id("id_cores").send_keys(number_of_cores)
|
defaults_form.find_element_by_id("id_cores").send_keys(number_of_cores)
|
||||||
defaults_form.find_element_by_css_selector(".btn-primary").click()
|
defaults_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert 'Success: Default quotas updated.' in messages
|
assert 'Success: Default quotas updated.' in messages
|
||||||
new_quotas = openstack_admin.compute.get(
|
new_quotas = openstack_admin.compute.get(
|
||||||
"/os-quota-class-sets/default").json()
|
"/os-quota-class-sets/default").json()
|
||||||
@@ -93,7 +93,7 @@ def test_update_volume_defaults(login, driver, openstack_admin, config,
|
|||||||
defaults_form.find_element_by_id("id_snapshots").send_keys(
|
defaults_form.find_element_by_id("id_snapshots").send_keys(
|
||||||
number_of_snapshots)
|
number_of_snapshots)
|
||||||
defaults_form.find_element_by_css_selector(".btn-primary").click()
|
defaults_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert 'Success: Default quotas updated.' in messages
|
assert 'Success: Default quotas updated.' in messages
|
||||||
new_quotas = openstack_admin.block_storage.get(
|
new_quotas = openstack_admin.block_storage.get(
|
||||||
"/os-quota-class-sets/default").json()
|
"/os-quota-class-sets/default").json()
|
||||||
|
@@ -60,7 +60,7 @@ def test_create_flavor(login, driver, flavor_name, openstack_admin,
|
|||||||
flavors_form.find_element_by_id("id_disk_gb").send_keys(flavor_disk)
|
flavors_form.find_element_by_id("id_disk_gb").send_keys(flavor_disk)
|
||||||
flavors_form.find_element_by_css_selector(
|
flavors_form.find_element_by_css_selector(
|
||||||
".btn-primary[value='Create Flavor']").click()
|
".btn-primary[value='Create Flavor']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f'Success: Created new flavor "{flavor_name}".' in messages
|
assert f'Success: Created new flavor "{flavor_name}".' in messages
|
||||||
flavor_sdk = openstack_admin.compute.find_flavor(flavor_name)
|
flavor_sdk = openstack_admin.compute.find_flavor(flavor_name)
|
||||||
assert flavor_sdk is not None
|
assert flavor_sdk is not None
|
||||||
@@ -84,6 +84,6 @@ def test_delete_flavor(login, driver, flavor_name, new_flavor, config,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Flavor")
|
widgets.select_from_dropdown(actions_column, "Delete Flavor")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Deleted Flavor: {flavor_name}" in messages
|
assert f"Success: Deleted Flavor: {flavor_name}" in messages
|
||||||
assert openstack_admin.compute.find_flavor(flavor_name) is None
|
assert openstack_admin.compute.find_flavor(flavor_name) is None
|
||||||
|
@@ -70,7 +70,7 @@ def test_allocate_floatingip(login, driver, config, openstack_demo,
|
|||||||
floatingip_form.find_element_by_id("id_description").send_keys(
|
floatingip_form.find_element_by_id("id_description").send_keys(
|
||||||
floatingip_description)
|
floatingip_description)
|
||||||
floatingip_form.find_element_by_css_selector(".btn-primary").click()
|
floatingip_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
if len(messages) > 1:
|
if len(messages) > 1:
|
||||||
message = [msg for msg in messages if
|
message = [msg for msg in messages if
|
||||||
"Success: Allocated Floating IP" in msg][0]
|
"Success: Allocated Floating IP" in msg][0]
|
||||||
@@ -99,7 +99,7 @@ def test_release_floatingip(login, driver, openstack_demo, config,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Release Floating IP")
|
widgets.select_from_dropdown(actions_column, "Release Floating IP")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: Released Floating IP: "
|
assert (f"Success: Released Floating IP: "
|
||||||
f"{new_floating_ip.floating_ip_address}" in messages)
|
f"{new_floating_ip.floating_ip_address}" in messages)
|
||||||
assert openstack_demo.network.find_ip(
|
assert openstack_demo.network.find_ip(
|
||||||
@@ -128,7 +128,7 @@ def test_associate_floatingip(login, driver, openstack_demo, new_floating_ip,
|
|||||||
associateip_form, "id_port_id",
|
associateip_form, "id_port_id",
|
||||||
f"{instance_name}: {new_instance_demo.private_v4}")
|
f"{instance_name}: {new_instance_demo.private_v4}")
|
||||||
associateip_form.find_element_by_css_selector(".btn-primary").click()
|
associateip_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: IP address {new_floating_ip.floating_ip_address}"
|
assert (f"Success: IP address {new_floating_ip.floating_ip_address}"
|
||||||
f" associated." in messages)
|
f" associated." in messages)
|
||||||
assert (new_instance_demo.id == openstack_demo.network.find_ip(
|
assert (new_instance_demo.id == openstack_demo.network.find_ip(
|
||||||
@@ -156,7 +156,7 @@ def test_disassociate_floatingip(login, driver, openstack_demo, config,
|
|||||||
assert len(rows) == 1
|
assert len(rows) == 1
|
||||||
rows[0].find_element_by_css_selector(".data-table-action").click()
|
rows[0].find_element_by_css_selector(".data-table-action").click()
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: Successfully disassociated Floating IP: "
|
assert (f"Success: Successfully disassociated Floating IP: "
|
||||||
f"{instance_auto_ip}" in messages)
|
f"{instance_auto_ip}" in messages)
|
||||||
instance_sdk = openstack_demo.compute.find_server(new_instance_demo.id)
|
instance_sdk = openstack_demo.compute.find_server(new_instance_demo.id)
|
||||||
|
@@ -51,7 +51,7 @@ def test_create_group(login, driver, group_name, openstack_admin, config,
|
|||||||
group_form = driver.find_element_by_css_selector(".modal-dialog form")
|
group_form = driver.find_element_by_css_selector(".modal-dialog form")
|
||||||
group_form.find_element_by_id("id_name").send_keys(group_name)
|
group_form.find_element_by_id("id_name").send_keys(group_name)
|
||||||
group_form.find_element_by_css_selector(".btn-primary").click()
|
group_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f'Success: Group "{group_name}" was successfully created.'
|
assert (f'Success: Group "{group_name}" was successfully created.'
|
||||||
in messages)
|
in messages)
|
||||||
assert openstack_admin.identity.find_group(group_name) is not None
|
assert openstack_admin.identity.find_group(group_name) is not None
|
||||||
@@ -72,7 +72,7 @@ def test_delete_group(login, driver, group_name, openstack_admin, config,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Group")
|
widgets.select_from_dropdown(actions_column, "Delete Group")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Deleted Group: {group_name}" in messages
|
assert f"Success: Deleted Group: {group_name}" in messages
|
||||||
assert openstack_admin.identity.find_group(group_name) is None
|
assert openstack_admin.identity.find_group(group_name) is None
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ def test_edit_group_name_and_description(login, driver, group_name,
|
|||||||
group_form.find_element_by_id("id_description").send_keys(
|
group_form.find_element_by_id("id_description").send_keys(
|
||||||
f"EDITED_Description for: {group_name}")
|
f"EDITED_Description for: {group_name}")
|
||||||
group_form.find_element_by_css_selector(".btn-primary").click()
|
group_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert "Success: Group has been updated successfully." in messages
|
assert "Success: Group has been updated successfully." in messages
|
||||||
assert (openstack_admin.identity.find_group(
|
assert (openstack_admin.identity.find_group(
|
||||||
f"EDITED_{group_name}") is not None)
|
f"EDITED_{group_name}") is not None)
|
||||||
|
@@ -51,7 +51,7 @@ def test_create_grouptype(login, driver, grouptype_name, openstack_admin,
|
|||||||
grouptype_form = driver.find_element_by_css_selector(".modal-content form")
|
grouptype_form = driver.find_element_by_css_selector(".modal-content form")
|
||||||
grouptype_form.find_element_by_id("id_name").send_keys(grouptype_name)
|
grouptype_form.find_element_by_id("id_name").send_keys(grouptype_name)
|
||||||
grouptype_form.find_element_by_css_selector(".btn-primary").click()
|
grouptype_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f'Success: Successfully created group type: {grouptype_name}'
|
assert (f'Success: Successfully created group type: {grouptype_name}'
|
||||||
in messages)
|
in messages)
|
||||||
assert (openstack_admin.block_storage.find_group_type(grouptype_name)
|
assert (openstack_admin.block_storage.find_group_type(grouptype_name)
|
||||||
@@ -73,6 +73,6 @@ def test_delete_grouptype(login, driver, grouptype_name, openstack_admin,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Group Type")
|
widgets.select_from_dropdown(actions_column, "Delete Group Type")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Deleted Group Type: {grouptype_name}" in messages
|
assert f"Success: Deleted Group Type: {grouptype_name}" in messages
|
||||||
assert openstack_admin.block_storage.find_group_type(grouptype_name) is None
|
assert openstack_admin.block_storage.find_group_type(grouptype_name) is None
|
||||||
|
@@ -65,7 +65,7 @@ def test_create_host_aggregate(login, driver, openstack_admin, config,
|
|||||||
host_aggregate_name)
|
host_aggregate_name)
|
||||||
host_aggregate_form.find_element_by_css_selector(
|
host_aggregate_form.find_element_by_css_selector(
|
||||||
".btn-primary[value='Create Host Aggregate']").click()
|
".btn-primary[value='Create Host Aggregate']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f'Success: Created new host aggregate "{host_aggregate_name}".'
|
assert (f'Success: Created new host aggregate "{host_aggregate_name}".'
|
||||||
in messages)
|
in messages)
|
||||||
is_host_aggregate_created_sdk = False
|
is_host_aggregate_created_sdk = False
|
||||||
@@ -93,7 +93,7 @@ def test_delete_host_aggregate(login, driver, openstack_admin, config,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Host Aggregate")
|
widgets.select_from_dropdown(actions_column, "Delete Host Aggregate")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: Deleted Host Aggregate: "
|
assert (f"Success: Deleted Host Aggregate: "
|
||||||
f"{new_host_aggregate['aggregate']['name']}" in messages)
|
f"{new_host_aggregate['aggregate']['name']}" in messages)
|
||||||
is_host_aggregate_deleted_sdk = True
|
is_host_aggregate_deleted_sdk = True
|
||||||
|
@@ -163,7 +163,7 @@ def test_image_create_from_local_file_demo(login, driver, image_names,
|
|||||||
wizard.find_element_by_css_selector(
|
wizard.find_element_by_css_selector(
|
||||||
"[label='QCOW2 - QEMU Emulator']").click()
|
"[label='QCOW2 - QEMU Emulator']").click()
|
||||||
wizard.find_element_by_css_selector("button.btn-primary.finish").click()
|
wizard.find_element_by_css_selector("button.btn-primary.finish").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: Image {image_name} was successfully"
|
assert (f"Success: Image {image_name} was successfully"
|
||||||
f" created." in messages)
|
f" created." in messages)
|
||||||
assert openstack_demo.compute.find_image(image_name) is not None
|
assert openstack_demo.compute.find_image(image_name) is not None
|
||||||
@@ -185,7 +185,7 @@ def test_image_delete_demo(login, driver, image_names, openstack_demo,
|
|||||||
".//ancestor::tr/td[contains(@class,'actions_column')]")
|
".//ancestor::tr/td[contains(@class,'actions_column')]")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Image")
|
widgets.select_from_dropdown(actions_column, "Delete Image")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Deleted Image: {image_name}." in messages
|
assert f"Success: Deleted Image: {image_name}." in messages
|
||||||
assert openstack_demo.compute.find_image(image_name) is None
|
assert openstack_demo.compute.find_image(image_name) is None
|
||||||
|
|
||||||
@@ -262,7 +262,7 @@ def test_image_create_from_local_file_admin(login, driver, image_names,
|
|||||||
wizard.find_element_by_css_selector(
|
wizard.find_element_by_css_selector(
|
||||||
"[label='QCOW2 - QEMU Emulator']").click()
|
"[label='QCOW2 - QEMU Emulator']").click()
|
||||||
wizard.find_element_by_css_selector("button.btn-primary.finish").click()
|
wizard.find_element_by_css_selector("button.btn-primary.finish").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: Image {image_name} was successfully"
|
assert (f"Success: Image {image_name} was successfully"
|
||||||
f" created." in messages)
|
f" created." in messages)
|
||||||
assert openstack_admin.compute.find_image(image_name) is not None
|
assert openstack_admin.compute.find_image(image_name) is not None
|
||||||
@@ -284,7 +284,7 @@ def test_image_delete_admin(login, driver, image_names, openstack_admin,
|
|||||||
".//ancestor::tr/td[contains(@class,'actions_column')]")
|
".//ancestor::tr/td[contains(@class,'actions_column')]")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Image")
|
widgets.select_from_dropdown(actions_column, "Delete Image")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Deleted Image: {image_name}." in messages
|
assert f"Success: Deleted Image: {image_name}." in messages
|
||||||
assert openstack_admin.compute.find_image(image_name) is None
|
assert openstack_admin.compute.find_image(image_name) is None
|
||||||
|
|
||||||
@@ -393,7 +393,7 @@ def test_remove_protected_image_admin(login, driver, image_names,
|
|||||||
image_form.find_element_by_xpath(".//label[text()='No']").click()
|
image_form.find_element_by_xpath(".//label[text()='No']").click()
|
||||||
image_form.find_element_by_xpath(
|
image_form.find_element_by_xpath(
|
||||||
".//button[@class='btn btn-primary finish']").click()
|
".//button[@class='btn btn-primary finish']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Image {image_name} was successfully updated." in messages
|
assert f"Success: Image {image_name} was successfully updated." in messages
|
||||||
wait_for_steady_state_of_unprotected_image(openstack_admin, image_name)
|
wait_for_steady_state_of_unprotected_image(openstack_admin, image_name)
|
||||||
WebDriverWait(driver, config.selenium.page_timeout).until(
|
WebDriverWait(driver, config.selenium.page_timeout).until(
|
||||||
@@ -405,7 +405,7 @@ def test_remove_protected_image_admin(login, driver, image_names,
|
|||||||
".//ancestor::tr/td[contains(@class,'actions_column')]")
|
".//ancestor::tr/td[contains(@class,'actions_column')]")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Image")
|
widgets.select_from_dropdown(actions_column, "Delete Image")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Deleted Image: {image_name}." in messages
|
assert f"Success: Deleted Image: {image_name}." in messages
|
||||||
assert openstack_admin.compute.find_image(image_name) is None
|
assert openstack_admin.compute.find_image(image_name) is None
|
||||||
|
|
||||||
@@ -436,7 +436,7 @@ def test_edit_image_description_admin(login, driver, image_names,
|
|||||||
desc_field.send_keys(new_description)
|
desc_field.send_keys(new_description)
|
||||||
image_form.find_element_by_xpath(
|
image_form.find_element_by_xpath(
|
||||||
".//button[@class='btn btn-primary finish']").click()
|
".//button[@class='btn btn-primary finish']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Image {image_name} " \
|
assert f"Success: Image {image_name} " \
|
||||||
f"was successfully updated." in messages
|
f"was successfully updated." in messages
|
||||||
image_id = new_image_admin.id
|
image_id = new_image_admin.id
|
||||||
@@ -474,7 +474,7 @@ def test_update_image_metadata_admin(login, driver,
|
|||||||
f"//span[@title='{name}']/parent::div/input").send_keys(value) # noqa: E231,E501
|
f"//span[@title='{name}']/parent::div/input").send_keys(value) # noqa: E231,E501
|
||||||
image_form.find_element_by_xpath(
|
image_form.find_element_by_xpath(
|
||||||
"//button[@ng-click='modal.save()']").click()
|
"//button[@ng-click='modal.save()']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert "Success: Metadata was successfully updated." in messages
|
assert "Success: Metadata was successfully updated." in messages
|
||||||
image_id = new_image_admin.id
|
image_id = new_image_admin.id
|
||||||
for name, value in new_metadata.items():
|
for name, value in new_metadata.items():
|
||||||
@@ -521,7 +521,7 @@ def test_launch_instance_from_image_admin(complete_default_test_network, login,
|
|||||||
test_instances.delete_volume_on_instance_delete(source_table, "Yes")
|
test_instances.delete_volume_on_instance_delete(source_table, "Yes")
|
||||||
wizard.find_element_by_css_selector(
|
wizard.find_element_by_css_selector(
|
||||||
"button.btn-primary.finish").click()
|
"button.btn-primary.finish").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert "Info: Scheduled creation of 1 instance." in messages
|
assert "Info: Scheduled creation of 1 instance." in messages
|
||||||
assert openstack_admin.compute.find_server(instance_name) is not None
|
assert openstack_admin.compute.find_server(instance_name) is not None
|
||||||
|
|
||||||
@@ -550,6 +550,6 @@ def test_create_volume_from_image_admin(login, driver, volume_name,
|
|||||||
EC.element_to_be_clickable(
|
EC.element_to_be_clickable(
|
||||||
(By.XPATH, "//button[@class='btn btn-primary finish']")))
|
(By.XPATH, "//button[@class='btn btn-primary finish']")))
|
||||||
create_vol_btn.click()
|
create_vol_btn.click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Info: Creating volume {volume_name}" in messages
|
assert f"Info: Creating volume {volume_name}" in messages
|
||||||
assert openstack_admin.block_storage.find_volume(volume_name) is not None
|
assert openstack_admin.block_storage.find_volume(volume_name) is not None
|
||||||
|
@@ -246,7 +246,7 @@ def test_delete_instance_demo(login, driver, instance_name, openstack_demo,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Instance")
|
widgets.select_from_dropdown(actions_column, "Delete Instance")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Info: Scheduled deletion of Instance: {instance_name}" in messages
|
assert f"Info: Scheduled deletion of Instance: {instance_name}" in messages
|
||||||
wait_for_instance_is_deleted(openstack_demo, instance_name)
|
wait_for_instance_is_deleted(openstack_demo, instance_name)
|
||||||
assert openstack_demo.compute.find_server(instance_name) is None
|
assert openstack_demo.compute.find_server(instance_name) is None
|
||||||
@@ -496,7 +496,7 @@ def test_delete_instance_admin(login, driver, instance_name, openstack_admin,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Instance")
|
widgets.select_from_dropdown(actions_column, "Delete Instance")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Info: Scheduled deletion of Instance: {instance_name}" in messages
|
assert f"Info: Scheduled deletion of Instance: {instance_name}" in messages
|
||||||
wait_for_instance_is_deleted(openstack_admin, instance_name)
|
wait_for_instance_is_deleted(openstack_admin, instance_name)
|
||||||
assert openstack_admin.compute.find_server(instance_name) is None
|
assert openstack_admin.compute.find_server(instance_name) is None
|
||||||
|
@@ -57,7 +57,7 @@ def test_create_keypair_demo(login, driver, openstack_demo, clear_keypair_demo,
|
|||||||
type_options.click()
|
type_options.click()
|
||||||
type_options.find_element_by_css_selector('option[label="SSH Key"]').click()
|
type_options.find_element_by_css_selector('option[label="SSH Key"]').click()
|
||||||
keypair_form.find_element_by_css_selector(".btn-primary").click()
|
keypair_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f'Success: Key pair {keypair_name} was successfully created.'
|
assert (f'Success: Key pair {keypair_name} was successfully created.'
|
||||||
in messages)
|
in messages)
|
||||||
assert openstack_demo.compute.find_keypair(keypair_name) is not None
|
assert openstack_demo.compute.find_keypair(keypair_name) is not None
|
||||||
@@ -78,6 +78,6 @@ def test_delete_keypair_demo(login, driver, openstack_demo, config,
|
|||||||
rows[0].find_element_by_xpath(
|
rows[0].find_element_by_xpath(
|
||||||
".//ancestor::tr/td[contains(@class,'actions_column')]").click()
|
".//ancestor::tr/td[contains(@class,'actions_column')]").click()
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Deleted Key Pair: {new_keypair_demo.name}." in messages
|
assert f"Success: Deleted Key Pair: {new_keypair_demo.name}." in messages
|
||||||
assert openstack_demo.compute.find_keypair(new_keypair_demo.name) is None
|
assert openstack_demo.compute.find_keypair(new_keypair_demo.name) is None
|
||||||
|
@@ -77,7 +77,7 @@ def test_create_metadata_namespace(login, driver, metadata_namespace_name,
|
|||||||
widgets.select_from_dropdown(namespace_form, "Direct Input")
|
widgets.select_from_dropdown(namespace_form, "Direct Input")
|
||||||
namespace_form.find_element_by_id("id_direct_input").send_keys(namespace)
|
namespace_form.find_element_by_id("id_direct_input").send_keys(namespace)
|
||||||
namespace_form.find_element_by_css_selector(".btn-primary").click()
|
namespace_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: Namespace {metadata_namespace_name} "
|
assert (f"Success: Namespace {metadata_namespace_name} "
|
||||||
f"has been created." in messages)
|
f"has been created." in messages)
|
||||||
try:
|
try:
|
||||||
@@ -104,7 +104,7 @@ def test_delete_metadata_namespace(login, driver, new_metadata_namespace,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Namespace")
|
widgets.select_from_dropdown(actions_column, "Delete Namespace")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: Deleted Namespace: "
|
assert (f"Success: Deleted Namespace: "
|
||||||
f"{new_metadata_namespace.namespace}" in messages)
|
f"{new_metadata_namespace.namespace}" in messages)
|
||||||
try:
|
try:
|
||||||
|
@@ -97,7 +97,7 @@ def test_create_network_without_subnet_demo(login, openstack_demo, driver,
|
|||||||
ensure_checkbox(False, checkbox_element)
|
ensure_checkbox(False, checkbox_element)
|
||||||
network_form.find_element_by_css_selector(
|
network_form.find_element_by_css_selector(
|
||||||
".btn-primary.button-final").click()
|
".btn-primary.button-final").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f'Success: Created network "{network_name}".' in messages
|
assert f'Success: Created network "{network_name}".' in messages
|
||||||
assert openstack_demo.network.find_network(network_name) is not None
|
assert openstack_demo.network.find_network(network_name) is not None
|
||||||
|
|
||||||
@@ -124,7 +124,7 @@ def test_create_network_with_subnet_demo(login, driver, openstack_demo,
|
|||||||
".btn-primary.button-next").click()
|
".btn-primary.button-next").click()
|
||||||
network_form.find_element_by_css_selector(
|
network_form.find_element_by_css_selector(
|
||||||
".btn-primary.button-final").click()
|
".btn-primary.button-final").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f'Success: Created network "{network_name}".' in messages
|
assert f'Success: Created network "{network_name}".' in messages
|
||||||
specified_network_sdk = openstack_demo.network.find_network(network_name)
|
specified_network_sdk = openstack_demo.network.find_network(network_name)
|
||||||
assert specified_network_sdk is not None
|
assert specified_network_sdk is not None
|
||||||
@@ -147,7 +147,7 @@ def test_delete_network_demo(login, driver, network_name, openstack_demo,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Network")
|
widgets.select_from_dropdown(actions_column, "Delete Network")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Deleted Network: {network_name}" in messages
|
assert f"Success: Deleted Network: {network_name}" in messages
|
||||||
assert openstack_demo.network.find_network(network_name) is None
|
assert openstack_demo.network.find_network(network_name) is None
|
||||||
|
|
||||||
@@ -171,7 +171,7 @@ def test_create_network_without_subnet_admin(login, openstack_admin, driver,
|
|||||||
network_form, 'id_tenant_id', 'admin')
|
network_form, 'id_tenant_id', 'admin')
|
||||||
network_form.find_element_by_css_selector(
|
network_form.find_element_by_css_selector(
|
||||||
".btn-primary.button-final").click()
|
".btn-primary.button-final").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f'Success: Created network "{network_name}".' in messages
|
assert f'Success: Created network "{network_name}".' in messages
|
||||||
assert openstack_admin.network.find_network(network_name) is not None
|
assert openstack_admin.network.find_network(network_name) is not None
|
||||||
|
|
||||||
@@ -200,7 +200,7 @@ def test_create_network_with_subnet_admin(login, driver, openstack_admin,
|
|||||||
".btn-primary.button-next").click()
|
".btn-primary.button-next").click()
|
||||||
network_form.find_element_by_css_selector(
|
network_form.find_element_by_css_selector(
|
||||||
".btn-primary.button-final").click()
|
".btn-primary.button-final").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f'Success: Created network "{network_name}".' in messages
|
assert f'Success: Created network "{network_name}".' in messages
|
||||||
specified_network_sdk = openstack_admin.network.find_network(network_name)
|
specified_network_sdk = openstack_admin.network.find_network(network_name)
|
||||||
assert specified_network_sdk is not None
|
assert specified_network_sdk is not None
|
||||||
@@ -223,6 +223,6 @@ def test_delete_network_admin(login, driver, network_name, openstack_admin,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Network")
|
widgets.select_from_dropdown(actions_column, "Delete Network")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Deleted Network: {network_name}" in messages
|
assert f"Success: Deleted Network: {network_name}" in messages
|
||||||
assert openstack_admin.network.find_network(network_name) is None
|
assert openstack_admin.network.find_network(network_name) is None
|
||||||
|
@@ -79,7 +79,7 @@ def test_create_project(login, driver, project_name, openstack_admin,
|
|||||||
project_form.find_element_by_id("id_name").send_keys(project_name)
|
project_form.find_element_by_id("id_name").send_keys(project_name)
|
||||||
project_form.find_element_by_css_selector(
|
project_form.find_element_by_css_selector(
|
||||||
".btn-primary[value='Create Project']").click()
|
".btn-primary[value='Create Project']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f'Success: Created new project "{project_name}".' in messages
|
assert f'Success: Created new project "{project_name}".' in messages
|
||||||
assert openstack_admin.identity.find_project(project_name) is not None
|
assert openstack_admin.identity.find_project(project_name) is not None
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ def test_delete_project(login, driver, project_name, openstack_admin,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Project")
|
widgets.select_from_dropdown(actions_column, "Delete Project")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Deleted Project: {project_name}" in messages
|
assert f"Success: Deleted Project: {project_name}" in messages
|
||||||
assert openstack_admin.identity.find_project(project_name) is None
|
assert openstack_admin.identity.find_project(project_name) is None
|
||||||
|
|
||||||
@@ -124,7 +124,7 @@ def test_add_member_to_project(login, driver, project_name, openstack_admin,
|
|||||||
f"/following-sibling::li/a[@href='#add_remove']").click() # noqa: E231
|
f"/following-sibling::li/a[@href='#add_remove']").click() # noqa: E231
|
||||||
project_form.find_element_by_css_selector(
|
project_form.find_element_by_css_selector(
|
||||||
".btn-primary[value='Save']").click()
|
".btn-primary[value='Save']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f'Success: Modified project "{project_name}".' in messages
|
assert f'Success: Modified project "{project_name}".' in messages
|
||||||
assert (openstack_admin.identity.validate_user_has_project_role(
|
assert (openstack_admin.identity.validate_user_has_project_role(
|
||||||
project=new_project,
|
project=new_project,
|
||||||
@@ -156,7 +156,7 @@ def test_add_role_to_project_member(login, driver, openstack_admin, config,
|
|||||||
widgets.select_from_dropdown(select_roles_dropdown, admin_role_name)
|
widgets.select_from_dropdown(select_roles_dropdown, admin_role_name)
|
||||||
project_form.find_element_by_css_selector(
|
project_form.find_element_by_css_selector(
|
||||||
".btn-primary[value='Save']").click()
|
".btn-primary[value='Save']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f'Success: Modified project '
|
assert (f'Success: Modified project '
|
||||||
f'"{new_project_with_admin.name}".' in messages)
|
f'"{new_project_with_admin.name}".' in messages)
|
||||||
assert (openstack_admin.identity.validate_user_has_project_role(
|
assert (openstack_admin.identity.validate_user_has_project_role(
|
||||||
@@ -192,7 +192,7 @@ def test_add_group_to_project(login, driver, openstack_admin,
|
|||||||
f"/following-sibling::li/a[@href='#add_remove']").click() # noqa: E231
|
f"/following-sibling::li/a[@href='#add_remove']").click() # noqa: E231
|
||||||
project_form.find_element_by_css_selector(
|
project_form.find_element_by_css_selector(
|
||||||
".btn-primary[value='Save']").click()
|
".btn-primary[value='Save']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f'Success: Modified project "{new_project.name}".' in messages
|
assert f'Success: Modified project "{new_project.name}".' in messages
|
||||||
assert (openstack_admin.identity.validate_group_has_project_role(
|
assert (openstack_admin.identity.validate_group_has_project_role(
|
||||||
project=new_project,
|
project=new_project,
|
||||||
@@ -225,7 +225,7 @@ def test_add_role_to_project_group(login, driver, openstack_admin, config,
|
|||||||
widgets.select_from_dropdown(select_roles_dropdown, admin_role_name)
|
widgets.select_from_dropdown(select_roles_dropdown, admin_role_name)
|
||||||
project_form.find_element_by_css_selector(
|
project_form.find_element_by_css_selector(
|
||||||
".btn-primary[value='Save']").click()
|
".btn-primary[value='Save']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f'Success: Modified project '
|
assert (f'Success: Modified project '
|
||||||
f'"{new_project_with_group.name}".' in messages)
|
f'"{new_project_with_group.name}".' in messages)
|
||||||
assert (openstack_admin.identity.validate_group_has_project_role(
|
assert (openstack_admin.identity.validate_group_has_project_role(
|
||||||
|
@@ -109,7 +109,7 @@ def test_create_router_demo(login, driver, router_name, openstack_demo,
|
|||||||
config.network.external_network)
|
config.network.external_network)
|
||||||
router_form.find_element_by_css_selector(
|
router_form.find_element_by_css_selector(
|
||||||
".btn-primary[value='Create Router']").click()
|
".btn-primary[value='Create Router']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f'Success: Router {router_name} was successfully created.'
|
assert (f'Success: Router {router_name} was successfully created.'
|
||||||
in messages)
|
in messages)
|
||||||
assert openstack_demo.network.find_router(router_name) is not None
|
assert openstack_demo.network.find_router(router_name) is not None
|
||||||
@@ -131,7 +131,7 @@ def test_delete_router_demo(login, driver, router_name, openstack_demo,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Router")
|
widgets.select_from_dropdown(actions_column, "Delete Router")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Deleted Router: {router_name}" in messages
|
assert f"Success: Deleted Router: {router_name}" in messages
|
||||||
assert openstack_demo.network.find_router(router_name) is None
|
assert openstack_demo.network.find_router(router_name) is None
|
||||||
|
|
||||||
@@ -164,7 +164,7 @@ def test_router_add_interface_demo(login, driver, router_name, openstack_demo,
|
|||||||
add_interface_form.find_element_by_id(
|
add_interface_form.find_element_by_id(
|
||||||
"id_ip_address").send_keys(fixed_ip_test)
|
"id_ip_address").send_keys(fixed_ip_test)
|
||||||
add_interface_form.find_element_by_css_selector(".btn-primary").click()
|
add_interface_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Interface added {fixed_ip_test}" in messages
|
assert f"Success: Interface added {fixed_ip_test}" in messages
|
||||||
|
|
||||||
is_interface_added_sdk = False
|
is_interface_added_sdk = False
|
||||||
@@ -200,7 +200,7 @@ def test_router_delete_interface_demo(login, driver, router_name,
|
|||||||
assert len(rows) == 1
|
assert len(rows) == 1
|
||||||
rows[0].find_element_by_css_selector("td.actions_column").click()
|
rows[0].find_element_by_css_selector("td.actions_column").click()
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Deleted Interface: {extracted_port_name}" in messages
|
assert f"Success: Deleted Interface: {extracted_port_name}" in messages
|
||||||
assert (openstack_demo.network.find_port(
|
assert (openstack_demo.network.find_port(
|
||||||
new_interface['port_id']) is None)
|
new_interface['port_id']) is None)
|
||||||
@@ -229,7 +229,7 @@ def test_router_set_gateway_demo(login, driver, new_router_demo,
|
|||||||
widgets.select_from_specific_dropdown_in_form(
|
widgets.select_from_specific_dropdown_in_form(
|
||||||
gateway_form, 'id_network_id', config.network.external_network)
|
gateway_form, 'id_network_id', config.network.external_network)
|
||||||
gateway_form.find_element_by_css_selector(".btn-primary").click()
|
gateway_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert "Success: Gateway interface is added" in messages
|
assert "Success: Gateway interface is added" in messages
|
||||||
router_sdk = openstack_demo.network.get(
|
router_sdk = openstack_demo.network.get(
|
||||||
f"/routers/{new_router_demo.id}"
|
f"/routers/{new_router_demo.id}"
|
||||||
@@ -262,7 +262,7 @@ def test_router_clear_gateway_demo(login, driver, new_router_with_gateway,
|
|||||||
config.network.external_network).id)
|
config.network.external_network).id)
|
||||||
rows[0].find_element_by_css_selector(".data-table-action").click()
|
rows[0].find_element_by_css_selector(".data-table-action").click()
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: Cleared Gateway: {new_router_with_gateway.name}" in
|
assert (f"Success: Cleared Gateway: {new_router_with_gateway.name}" in
|
||||||
messages)
|
messages)
|
||||||
router_sdk = openstack_demo.network.get(
|
router_sdk = openstack_demo.network.get(
|
||||||
@@ -290,7 +290,7 @@ def test_create_router_admin(login, driver, router_name, openstack_admin,
|
|||||||
router_form, "id_external_network", config.network.external_network)
|
router_form, "id_external_network", config.network.external_network)
|
||||||
router_form.find_element_by_css_selector(
|
router_form.find_element_by_css_selector(
|
||||||
".btn-primary[value='Create Router']").click()
|
".btn-primary[value='Create Router']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f'Success: Router {router_name} was successfully created.'
|
assert (f'Success: Router {router_name} was successfully created.'
|
||||||
in messages)
|
in messages)
|
||||||
assert openstack_admin.network.find_router(router_name) is not None
|
assert openstack_admin.network.find_router(router_name) is not None
|
||||||
@@ -312,6 +312,6 @@ def test_delete_router_admin(login, driver, router_name, openstack_admin,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Router")
|
widgets.select_from_dropdown(actions_column, "Delete Router")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Deleted Router: {router_name}" in messages
|
assert f"Success: Deleted Router: {router_name}" in messages
|
||||||
assert openstack_admin.network.find_router(router_name) is None
|
assert openstack_admin.network.find_router(router_name) is None
|
||||||
|
@@ -66,7 +66,7 @@ def test_create_sec_group_demo(login, driver, config, sec_group_name,
|
|||||||
sec_group_form = driver.find_element_by_css_selector(".modal-dialog form")
|
sec_group_form = driver.find_element_by_css_selector(".modal-dialog form")
|
||||||
sec_group_form.find_element_by_id("id_name").send_keys(sec_group_name)
|
sec_group_form.find_element_by_id("id_name").send_keys(sec_group_name)
|
||||||
sec_group_form.find_element_by_css_selector(".btn-primary").click()
|
sec_group_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f'Success: Successfully created security group: {sec_group_name}'
|
assert (f'Success: Successfully created security group: {sec_group_name}'
|
||||||
in messages)
|
in messages)
|
||||||
assert (openstack_demo.network.find_security_group(sec_group_name)
|
assert (openstack_demo.network.find_security_group(sec_group_name)
|
||||||
@@ -88,7 +88,7 @@ def test_delete_sec_group_demo(login, driver, sec_group_name, openstack_demo,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Security Group")
|
widgets.select_from_dropdown(actions_column, "Delete Security Group")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Deleted Security Group: {sec_group_name}" in messages
|
assert f"Success: Deleted Security Group: {sec_group_name}" in messages
|
||||||
assert openstack_demo.network.find_security_group(sec_group_name) is None
|
assert openstack_demo.network.find_security_group(sec_group_name) is None
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ def test_add_rule_sec_group_demo(login, driver, sec_group_name, openstack_demo,
|
|||||||
rule_form = driver.find_element_by_css_selector(".modal-dialog form")
|
rule_form = driver.find_element_by_css_selector(".modal-dialog form")
|
||||||
rule_form.find_element_by_id("id_port").send_keys(rule_port)
|
rule_form.find_element_by_id("id_port").send_keys(rule_port)
|
||||||
rule_form.find_element_by_css_selector(".btn-primary").click()
|
rule_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: Successfully added rule: ALLOW IPv4 {rule_port}"
|
assert (f"Success: Successfully added rule: ALLOW IPv4 {rule_port}"
|
||||||
f"/tcp from 0.0.0.0/0" in messages)
|
f"/tcp from 0.0.0.0/0" in messages)
|
||||||
sec_group_rules_sdk = openstack_demo.network.find_security_group(
|
sec_group_rules_sdk = openstack_demo.network.find_security_group(
|
||||||
@@ -138,7 +138,7 @@ def test_delete_rule_sec_group_demo(login, driver, sec_group_name,
|
|||||||
assert len(rows) == 1
|
assert len(rows) == 1
|
||||||
rows[0].find_element_by_css_selector("td.actions_column").click()
|
rows[0].find_element_by_css_selector("td.actions_column").click()
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: Deleted Rule: ALLOW IPv4 {rule_port}/tcp from 0.0.0.0/0"
|
assert (f"Success: Deleted Rule: ALLOW IPv4 {rule_port}/tcp from 0.0.0.0/0"
|
||||||
in messages)
|
in messages)
|
||||||
sec_group_rules_sdk = openstack_demo.network.find_security_group(
|
sec_group_rules_sdk = openstack_demo.network.find_security_group(
|
||||||
|
@@ -58,7 +58,7 @@ def test_create_user_credential_totp(login, driver, openstack_admin, config,
|
|||||||
widgets.select_from_specific_dropdown_in_form(
|
widgets.select_from_specific_dropdown_in_form(
|
||||||
user_credential_form, 'id_cred_type', 'TOTP')
|
user_credential_form, 'id_cred_type', 'TOTP')
|
||||||
user_credential_form.find_element_by_css_selector(".btn-primary").click()
|
user_credential_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert 'Success: User credential created successfully.' in messages
|
assert 'Success: User credential created successfully.' in messages
|
||||||
credentials_sdk_after = list(openstack_admin.identity.credentials())
|
credentials_sdk_after = list(openstack_admin.identity.credentials())
|
||||||
assert (len(credentials_sdk_after) == 1 and
|
assert (len(credentials_sdk_after) == 1 and
|
||||||
@@ -87,7 +87,7 @@ def test_create_user_credential_ec2(login, driver, openstack_admin, config,
|
|||||||
widgets.select_from_specific_dropdown_in_form(
|
widgets.select_from_specific_dropdown_in_form(
|
||||||
user_credential_form, 'id_project', 'admin')
|
user_credential_form, 'id_project', 'admin')
|
||||||
user_credential_form.find_element_by_css_selector(".btn-primary").click()
|
user_credential_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert 'Success: User credential created successfully.' in messages
|
assert 'Success: User credential created successfully.' in messages
|
||||||
credentials_sdk_after = list(openstack_admin.identity.credentials())
|
credentials_sdk_after = list(openstack_admin.identity.credentials())
|
||||||
assert (len(credentials_sdk_after) == 1 and
|
assert (len(credentials_sdk_after) == 1 and
|
||||||
@@ -113,7 +113,7 @@ def test_delete_user_credential(login, driver, openstack_admin, config,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete User Credential")
|
widgets.select_from_dropdown(actions_column, "Delete User Credential")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: Deleted User Credential: {user_credential_blob}" in
|
assert (f"Success: Deleted User Credential: {user_credential_blob}" in
|
||||||
messages)
|
messages)
|
||||||
credentials_sdk_after = list(openstack_admin.identity.credentials())
|
credentials_sdk_after = list(openstack_admin.identity.credentials())
|
||||||
@@ -139,7 +139,7 @@ def test_edit_user_credential(login, driver, openstack_admin, config,
|
|||||||
user_credential_form.find_element_by_id("id_data").send_keys(
|
user_credential_form.find_element_by_id("id_data").send_keys(
|
||||||
f"EDITED_{user_credential_blob}")
|
f"EDITED_{user_credential_blob}")
|
||||||
user_credential_form.find_element_by_css_selector(".btn-primary").click()
|
user_credential_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert ("Success: User credential updated successfully." in messages)
|
assert ("Success: User credential updated successfully." in messages)
|
||||||
credentials_sdk = list(openstack_admin.identity.credentials())
|
credentials_sdk = list(openstack_admin.identity.credentials())
|
||||||
assert (len(credentials_sdk) == 1 and
|
assert (len(credentials_sdk) == 1 and
|
||||||
|
@@ -57,7 +57,7 @@ def test_create_user(login, driver, user_name, openstack_admin,
|
|||||||
user_form.find_element_by_id(
|
user_form.find_element_by_id(
|
||||||
"id_confirm_password").send_keys(default_password)
|
"id_confirm_password").send_keys(default_password)
|
||||||
user_form.find_element_by_css_selector(".btn-primary").click()
|
user_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f'Success: User "{user_name}" was successfully created.' in messages
|
assert f'Success: User "{user_name}" was successfully created.' in messages
|
||||||
assert openstack_admin.identity.find_user(user_name) is not None
|
assert openstack_admin.identity.find_user(user_name) is not None
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ def test_delete_user(login, driver, user_name, openstack_admin,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete User")
|
widgets.select_from_dropdown(actions_column, "Delete User")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Deleted User: {user_name}" in messages
|
assert f"Success: Deleted User: {user_name}" in messages
|
||||||
assert openstack_admin.identity.find_user(user_name) is None
|
assert openstack_admin.identity.find_user(user_name) is None
|
||||||
|
|
||||||
@@ -101,5 +101,5 @@ def test_change_user_password(login, driver, user_name, new_user, config):
|
|||||||
password_form.find_element_by_id(
|
password_form.find_element_by_id(
|
||||||
"id_confirm_password").send_keys(new_password)
|
"id_confirm_password").send_keys(new_password)
|
||||||
password_form.find_element_by_css_selector(".btn-primary").click()
|
password_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert "Success: User password has been updated successfully." in messages
|
assert "Success: User password has been updated successfully." in messages
|
||||||
|
@@ -163,7 +163,7 @@ def test_create_volume_snapshot_demo(login, driver, volume_name,
|
|||||||
create_snap_form.find_element_by_id("id_name").send_keys(
|
create_snap_form.find_element_by_id("id_name").send_keys(
|
||||||
volume_snapshot_name)
|
volume_snapshot_name)
|
||||||
create_snap_form.find_element_by_css_selector(".btn-primary").click()
|
create_snap_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f'Info: Creating volume snapshot "{volume_snapshot_name}".'
|
assert (f'Info: Creating volume snapshot "{volume_snapshot_name}".'
|
||||||
in messages)
|
in messages)
|
||||||
assert (openstack_demo.block_storage.find_snapshot(volume_snapshot_name)
|
assert (openstack_demo.block_storage.find_snapshot(volume_snapshot_name)
|
||||||
@@ -187,7 +187,7 @@ def test_delete_volume_snapshot_demo(login, driver, volume_snapshot_names,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Volume Snapshot")
|
widgets.select_from_dropdown(actions_column, "Delete Volume Snapshot")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: Scheduled deletion of Volume Snapshot: "
|
assert (f"Success: Scheduled deletion of Volume Snapshot: "
|
||||||
f"{volume_snapshot_name}" in messages)
|
f"{volume_snapshot_name}" in messages)
|
||||||
wait_for_volume_snapshot_is_deleted(openstack_demo, volume_snapshot_name)
|
wait_for_volume_snapshot_is_deleted(openstack_demo, volume_snapshot_name)
|
||||||
@@ -216,7 +216,7 @@ def test_edit_volume_snapshot_description_demo(login, driver, openstack_demo,
|
|||||||
snapshot_form.find_element_by_id("id_description").send_keys(
|
snapshot_form.find_element_by_id("id_description").send_keys(
|
||||||
f"EDITED_Description for: {new_volume_snapshot_demo.name}")
|
f"EDITED_Description for: {new_volume_snapshot_demo.name}")
|
||||||
snapshot_form.find_element_by_css_selector(".btn-primary").click()
|
snapshot_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f'Info: Updating volume snapshot '
|
assert (f'Info: Updating volume snapshot '
|
||||||
f'"{new_volume_snapshot_demo.name}"' in messages)
|
f'"{new_volume_snapshot_demo.name}"' in messages)
|
||||||
assert (openstack_demo.block_storage.find_snapshot(
|
assert (openstack_demo.block_storage.find_snapshot(
|
||||||
@@ -246,7 +246,7 @@ def test_create_volume_from_volume_snapshot_demo(login, driver, openstack_demo,
|
|||||||
volume_form.find_element_by_id("id_name").send_keys(
|
volume_form.find_element_by_id("id_name").send_keys(
|
||||||
volume_from_snapshot_name)
|
volume_from_snapshot_name)
|
||||||
volume_form.find_element_by_css_selector(".btn-primary").click()
|
volume_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f'Info: Creating volume "{volume_from_snapshot_name}"' in messages)
|
assert (f'Info: Creating volume "{volume_from_snapshot_name}"' in messages)
|
||||||
assert (openstack_demo.block_storage.find_volume(
|
assert (openstack_demo.block_storage.find_volume(
|
||||||
volume_from_snapshot_name) is not None)
|
volume_from_snapshot_name) is not None)
|
||||||
@@ -269,7 +269,7 @@ def test_delete_volume_from_volume_snapshot_demo(login, driver, openstack_demo,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Volume")
|
widgets.select_from_dropdown(actions_column, "Delete Volume")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Info: Scheduled deletion of Volume: "
|
assert (f"Info: Scheduled deletion of Volume: "
|
||||||
f"{new_volume_from_snapshot_demo.name}" in messages)
|
f"{new_volume_from_snapshot_demo.name}" in messages)
|
||||||
test_volumes.wait_for_volume_is_deleted(
|
test_volumes.wait_for_volume_is_deleted(
|
||||||
@@ -302,7 +302,7 @@ def test_delete_snapshot_before_volume_demo(login, driver, openstack_demo,
|
|||||||
widgets.select_from_dropdown(actions_column_snapshot,
|
widgets.select_from_dropdown(actions_column_snapshot,
|
||||||
"Delete Volume Snapshot")
|
"Delete Volume Snapshot")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: Scheduled deletion of Volume Snapshot: "
|
assert (f"Success: Scheduled deletion of Volume Snapshot: "
|
||||||
f"{volume_snapshot_name}" in messages)
|
f"{volume_snapshot_name}" in messages)
|
||||||
wait_for_volume_snapshot_is_deleted(openstack_demo, volume_snapshot_name)
|
wait_for_volume_snapshot_is_deleted(openstack_demo, volume_snapshot_name)
|
||||||
@@ -322,7 +322,7 @@ def test_delete_snapshot_before_volume_demo(login, driver, openstack_demo,
|
|||||||
"td.actions_column")
|
"td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column_volume, "Delete Volume")
|
widgets.select_from_dropdown(actions_column_volume, "Delete Volume")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Info: Scheduled deletion of Volume: "
|
assert (f"Info: Scheduled deletion of Volume: "
|
||||||
f"{new_volume_from_snapshot_demo.name}" in messages)
|
f"{new_volume_from_snapshot_demo.name}" in messages)
|
||||||
test_volumes.wait_for_volume_is_deleted(
|
test_volumes.wait_for_volume_is_deleted(
|
||||||
@@ -425,7 +425,7 @@ def test_create_volume_snapshot_admin(login, driver, new_volume_admin,
|
|||||||
snapshot_form.find_element_by_id("id_name").send_keys(
|
snapshot_form.find_element_by_id("id_name").send_keys(
|
||||||
volume_snapshot_name)
|
volume_snapshot_name)
|
||||||
snapshot_form.find_element_by_css_selector(".btn-primary").click()
|
snapshot_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f'Info: Creating volume snapshot "{volume_snapshot_name}".'
|
assert (f'Info: Creating volume snapshot "{volume_snapshot_name}".'
|
||||||
in messages)
|
in messages)
|
||||||
assert (openstack_admin.block_storage.find_snapshot(volume_snapshot_name)
|
assert (openstack_admin.block_storage.find_snapshot(volume_snapshot_name)
|
||||||
@@ -448,7 +448,7 @@ def test_delete_volume_snapshot_admin(login, driver, openstack_admin,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Volume Snapshot")
|
widgets.select_from_dropdown(actions_column, "Delete Volume Snapshot")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: Scheduled deletion of Volume Snapshot: "
|
assert (f"Success: Scheduled deletion of Volume Snapshot: "
|
||||||
f"{new_volume_snapshot_admin.name}" in messages)
|
f"{new_volume_snapshot_admin.name}" in messages)
|
||||||
wait_for_volume_snapshot_is_deleted(openstack_admin,
|
wait_for_volume_snapshot_is_deleted(openstack_admin,
|
||||||
@@ -478,7 +478,7 @@ def test_edit_volume_snapshot_description_admin(login, driver, openstack_admin,
|
|||||||
snapshot_form.find_element_by_id("id_description").send_keys(
|
snapshot_form.find_element_by_id("id_description").send_keys(
|
||||||
f"EDITED_Description for: {new_volume_snapshot_admin.name}")
|
f"EDITED_Description for: {new_volume_snapshot_admin.name}")
|
||||||
snapshot_form.find_element_by_css_selector(".btn-primary").click()
|
snapshot_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f'Info: Updating volume snapshot '
|
assert (f'Info: Updating volume snapshot '
|
||||||
f'"{new_volume_snapshot_admin.name}"' in messages)
|
f'"{new_volume_snapshot_admin.name}"' in messages)
|
||||||
assert (openstack_admin.block_storage.find_snapshot(
|
assert (openstack_admin.block_storage.find_snapshot(
|
||||||
|
@@ -67,7 +67,7 @@ def test_create_empty_volume_demo(login, driver, volume_name, openstack_demo,
|
|||||||
volume_form.find_element_by_id("id_name").send_keys(volume_name)
|
volume_form.find_element_by_id("id_name").send_keys(volume_name)
|
||||||
volume_form.find_element_by_css_selector(
|
volume_form.find_element_by_css_selector(
|
||||||
".btn-primary[value='Create Volume']").click()
|
".btn-primary[value='Create Volume']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f'Info: Creating volume "{volume_name}"' in messages
|
assert f'Info: Creating volume "{volume_name}"' in messages
|
||||||
assert openstack_demo.block_storage.find_volume(volume_name) is not None
|
assert openstack_demo.block_storage.find_volume(volume_name) is not None
|
||||||
|
|
||||||
@@ -94,7 +94,7 @@ def test_create_volume_via_vol_source_image_demo(login, driver,
|
|||||||
volume_form, 'id_image_source', image_source_name)
|
volume_form, 'id_image_source', image_source_name)
|
||||||
volume_form.find_element_by_css_selector(
|
volume_form.find_element_by_css_selector(
|
||||||
".btn-primary[value='Create Volume']").click()
|
".btn-primary[value='Create Volume']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f'Info: Creating volume "{volume_name}"' in messages
|
assert f'Info: Creating volume "{volume_name}"' in messages
|
||||||
assert openstack_demo.block_storage.find_volume(volume_name) is not None
|
assert openstack_demo.block_storage.find_volume(volume_name) is not None
|
||||||
|
|
||||||
@@ -116,7 +116,7 @@ def test_delete_volume_demo(login, driver, volume_name, openstack_demo,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Volume")
|
widgets.select_from_dropdown(actions_column, "Delete Volume")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Info: Scheduled deletion of Volume: {volume_name}" in messages
|
assert f"Info: Scheduled deletion of Volume: {volume_name}" in messages
|
||||||
wait_for_volume_is_deleted(openstack_demo, volume_name)
|
wait_for_volume_is_deleted(openstack_demo, volume_name)
|
||||||
assert (openstack_demo.block_storage.find_volume(volume_name) is None)
|
assert (openstack_demo.block_storage.find_volume(volume_name) is None)
|
||||||
@@ -142,7 +142,7 @@ def test_edit_volume_description_demo(login, driver, volume_name, config,
|
|||||||
volume_form.find_element_by_id("id_description").send_keys(
|
volume_form.find_element_by_id("id_description").send_keys(
|
||||||
f"EDITED_Description for: {volume_name}")
|
f"EDITED_Description for: {volume_name}")
|
||||||
volume_form.find_element_by_css_selector(".btn-primary").click()
|
volume_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f'Info: Updating volume "{volume_name}"' in messages
|
assert f'Info: Updating volume "{volume_name}"' in messages
|
||||||
assert (openstack_demo.block_storage.find_volume(
|
assert (openstack_demo.block_storage.find_volume(
|
||||||
volume_name).description == f"EDITED_Description for: {volume_name}")
|
volume_name).description == f"EDITED_Description for: {volume_name}")
|
||||||
@@ -169,7 +169,7 @@ def test_extend_volume_demo(login, driver, openstack_demo, new_volume_demo,
|
|||||||
volume_form.find_element_by_id("id_new_size").send_keys(2)
|
volume_form.find_element_by_id("id_new_size").send_keys(2)
|
||||||
volume_form.find_element_by_css_selector(
|
volume_form.find_element_by_css_selector(
|
||||||
".btn-primary[value='Extend Volume']").click()
|
".btn-primary[value='Extend Volume']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f'Info: Extending volume: "{new_volume_demo.name}"' in messages
|
assert f'Info: Extending volume: "{new_volume_demo.name}"' in messages
|
||||||
wait_for_steady_state_of_volume(openstack_demo, new_volume_demo.name)
|
wait_for_steady_state_of_volume(openstack_demo, new_volume_demo.name)
|
||||||
assert (openstack_demo.block_storage.find_volume(
|
assert (openstack_demo.block_storage.find_volume(
|
||||||
@@ -244,7 +244,7 @@ def test_volume_upload_to_image_demo(login, driver, openstack_demo,
|
|||||||
volume_form.find_element_by_id("id_image_name").send_keys(image_names[0])
|
volume_form.find_element_by_id("id_image_name").send_keys(image_names[0])
|
||||||
volume_form.find_element_by_css_selector(
|
volume_form.find_element_by_css_selector(
|
||||||
".btn-primary[value='Upload']").click()
|
".btn-primary[value='Upload']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert ('Info: Successfully sent the request to upload volume to image for '
|
assert ('Info: Successfully sent the request to upload volume to image for '
|
||||||
f'volume: "{new_volume_demo.name}"' in messages)
|
f'volume: "{new_volume_demo.name}"' in messages)
|
||||||
wait_for_steady_state_of_volume(openstack_demo, new_volume_demo.name)
|
wait_for_steady_state_of_volume(openstack_demo, new_volume_demo.name)
|
||||||
@@ -345,7 +345,7 @@ def test_manage_volume_attachments(login, driver, openstack_demo,
|
|||||||
f"{new_instance_demo.name} ({new_instance_demo.id})")
|
f"{new_instance_demo.name} ({new_instance_demo.id})")
|
||||||
attach_to_instance_form.find_element_by_css_selector(
|
attach_to_instance_form.find_element_by_css_selector(
|
||||||
".btn-primary[value='Attach Volume']").click()
|
".btn-primary[value='Attach Volume']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Info: Attaching volume {new_volume_demo.name} to instance "
|
assert (f"Info: Attaching volume {new_volume_demo.name} to instance "
|
||||||
f"{new_instance_demo.name} on /dev/vdb." in messages)
|
f"{new_instance_demo.name} on /dev/vdb." in messages)
|
||||||
wait_for_steady_state_of_volume(openstack_demo, new_volume_demo.name)
|
wait_for_steady_state_of_volume(openstack_demo, new_volume_demo.name)
|
||||||
@@ -368,7 +368,7 @@ def test_manage_volume_attachments(login, driver, openstack_demo,
|
|||||||
"td.actions_column").click()
|
"td.actions_column").click()
|
||||||
driver.find_element_by_xpath(
|
driver.find_element_by_xpath(
|
||||||
".//a[normalize-space()='Detach Volume']").click()
|
".//a[normalize-space()='Detach Volume']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: Detaching Volume: Volume {new_volume_demo.name} "
|
assert (f"Success: Detaching Volume: Volume {new_volume_demo.name} "
|
||||||
f"on instance {new_instance_demo.name}" in messages)
|
f"on instance {new_instance_demo.name}" in messages)
|
||||||
wait_for_steady_state_of_volume(openstack_demo, new_volume_demo.name)
|
wait_for_steady_state_of_volume(openstack_demo, new_volume_demo.name)
|
||||||
@@ -394,7 +394,7 @@ def test_create_empty_volume_admin(login, driver, volume_name, openstack_admin,
|
|||||||
volume_form.find_element_by_id("id_name").send_keys(volume_name)
|
volume_form.find_element_by_id("id_name").send_keys(volume_name)
|
||||||
volume_form.find_element_by_css_selector(
|
volume_form.find_element_by_css_selector(
|
||||||
".btn-primary[value='Create Volume']").click()
|
".btn-primary[value='Create Volume']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f'Info: Creating volume "{volume_name}"' in messages
|
assert f'Info: Creating volume "{volume_name}"' in messages
|
||||||
assert openstack_admin.block_storage.find_volume(volume_name) is not None
|
assert openstack_admin.block_storage.find_volume(volume_name) is not None
|
||||||
|
|
||||||
@@ -420,7 +420,7 @@ def test_create_volume_via_vol_source_image_admin(login, driver, volume_name,
|
|||||||
volume_form, 'id_image_source', image_source_name)
|
volume_form, 'id_image_source', image_source_name)
|
||||||
volume_form.find_element_by_css_selector(
|
volume_form.find_element_by_css_selector(
|
||||||
".btn-primary[value='Create Volume']").click()
|
".btn-primary[value='Create Volume']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f'Info: Creating volume "{volume_name}"' in messages
|
assert f'Info: Creating volume "{volume_name}"' in messages
|
||||||
assert openstack_admin.block_storage.find_volume(volume_name) is not None
|
assert openstack_admin.block_storage.find_volume(volume_name) is not None
|
||||||
|
|
||||||
@@ -442,7 +442,7 @@ def test_delete_volume_admin(login, driver, volume_name, openstack_admin,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Volume")
|
widgets.select_from_dropdown(actions_column, "Delete Volume")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Info: Scheduled deletion of Volume: {volume_name}" in messages
|
assert f"Info: Scheduled deletion of Volume: {volume_name}" in messages
|
||||||
wait_for_volume_is_deleted(openstack_admin, volume_name)
|
wait_for_volume_is_deleted(openstack_admin, volume_name)
|
||||||
assert (openstack_admin.block_storage.find_volume(volume_name) is None)
|
assert (openstack_admin.block_storage.find_volume(volume_name) is None)
|
||||||
@@ -468,7 +468,7 @@ def test_edit_volume_description_admin(login, driver, volume_name, config,
|
|||||||
volume_form.find_element_by_id("id_description").send_keys(
|
volume_form.find_element_by_id("id_description").send_keys(
|
||||||
f"EDITED_Description for: {volume_name}")
|
f"EDITED_Description for: {volume_name}")
|
||||||
volume_form.find_element_by_css_selector(".btn-primary").click()
|
volume_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f'Info: Updating volume "{volume_name}"' in messages
|
assert f'Info: Updating volume "{volume_name}"' in messages
|
||||||
assert (openstack_admin.block_storage.find_volume(
|
assert (openstack_admin.block_storage.find_volume(
|
||||||
volume_name).description == f"EDITED_Description for: {volume_name}")
|
volume_name).description == f"EDITED_Description for: {volume_name}")
|
||||||
|
@@ -107,7 +107,7 @@ def test_create_volume_type(login, driver, volume_type_name, openstack_admin,
|
|||||||
volume_type_form = driver.find_element_by_css_selector(".modal-dialog form")
|
volume_type_form = driver.find_element_by_css_selector(".modal-dialog form")
|
||||||
volume_type_form.find_element_by_id("id_name").send_keys(volume_type_name)
|
volume_type_form.find_element_by_id("id_name").send_keys(volume_type_name)
|
||||||
volume_type_form.find_element_by_css_selector(".btn-primary").click()
|
volume_type_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f'Success: Successfully created volume '
|
assert (f'Success: Successfully created volume '
|
||||||
f'type: {volume_type_name}' in messages)
|
f'type: {volume_type_name}' in messages)
|
||||||
assert openstack_admin.block_storage.find_type(volume_type_name) is not None
|
assert openstack_admin.block_storage.find_type(volume_type_name) is not None
|
||||||
@@ -128,7 +128,7 @@ def test_delete_volume_type(login, driver, volume_type_name, openstack_admin,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Volume Type")
|
widgets.select_from_dropdown(actions_column, "Delete Volume Type")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Deleted Volume Type: {volume_type_name}" in messages
|
assert f"Success: Deleted Volume Type: {volume_type_name}" in messages
|
||||||
assert openstack_admin.block_storage.find_type(volume_type_name) is None
|
assert openstack_admin.block_storage.find_type(volume_type_name) is None
|
||||||
|
|
||||||
@@ -150,7 +150,7 @@ def test_volume_type_create_encryption(login, driver, openstack_admin, config,
|
|||||||
volume_type_form.find_element_by_id("id_provider").send_keys("plain")
|
volume_type_form.find_element_by_id("id_provider").send_keys("plain")
|
||||||
volume_type_form.find_element_by_css_selector(
|
volume_type_form.find_element_by_css_selector(
|
||||||
".btn-primary[value='Create Volume Type Encryption']").click()
|
".btn-primary[value='Create Volume Type Encryption']").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: Successfully created encryption for "
|
assert (f"Success: Successfully created encryption for "
|
||||||
f"volume type: {new_volume_type.name}" in messages)
|
f"volume type: {new_volume_type.name}" in messages)
|
||||||
assert (openstack_admin.block_storage.get_type_encryption(
|
assert (openstack_admin.block_storage.get_type_encryption(
|
||||||
@@ -176,7 +176,7 @@ def test_volume_type_delete_encryption(login, driver, openstack_admin, config,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete Encryption")
|
widgets.select_from_dropdown(actions_column, "Delete Encryption")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: Deleted Encryption: "
|
assert (f"Success: Deleted Encryption: "
|
||||||
f"{new_volume_type_with_encryption.name}" in messages)
|
f"{new_volume_type_with_encryption.name}" in messages)
|
||||||
assert (openstack_admin.block_storage.get_type_encryption(
|
assert (openstack_admin.block_storage.get_type_encryption(
|
||||||
@@ -196,7 +196,7 @@ def test_create_qos_spec(login, driver, qos_spec_name, openstack_admin,
|
|||||||
volume_qos_form = driver.find_element_by_css_selector(".modal-dialog form")
|
volume_qos_form = driver.find_element_by_css_selector(".modal-dialog form")
|
||||||
volume_qos_form.find_element_by_id("id_name").send_keys(qos_spec_name)
|
volume_qos_form.find_element_by_id("id_name").send_keys(qos_spec_name)
|
||||||
volume_qos_form.find_element_by_css_selector(".btn-primary").click()
|
volume_qos_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f'Success: Successfully created QoS '
|
assert (f'Success: Successfully created QoS '
|
||||||
f'Spec: {qos_spec_name}' in messages)
|
f'Spec: {qos_spec_name}' in messages)
|
||||||
qos_specs = openstack_admin.block_storage.get(
|
qos_specs = openstack_admin.block_storage.get(
|
||||||
@@ -220,7 +220,7 @@ def test_delete_qos_spec(login, driver, qos_spec_name, openstack_admin,
|
|||||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||||
widgets.select_from_dropdown(actions_column, "Delete QoS Spec")
|
widgets.select_from_dropdown(actions_column, "Delete QoS Spec")
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert f"Success: Deleted QoS Spec: {qos_spec_name}" in messages
|
assert f"Success: Deleted QoS Spec: {qos_spec_name}" in messages
|
||||||
qos_specs = openstack_admin.block_storage.get(
|
qos_specs = openstack_admin.block_storage.get(
|
||||||
"/qos-specs").json()['qos_specs']
|
"/qos-specs").json()['qos_specs']
|
||||||
@@ -248,7 +248,7 @@ def test_edit_qos_spec_consumer(login, driver, openstack_admin, config,
|
|||||||
volume_qos_form = driver.find_element_by_css_selector(".modal-dialog form")
|
volume_qos_form = driver.find_element_by_css_selector(".modal-dialog form")
|
||||||
widgets.select_from_dropdown(volume_qos_form, 'front-end')
|
widgets.select_from_dropdown(volume_qos_form, 'front-end')
|
||||||
volume_qos_form.find_element_by_css_selector(".btn-primary").click()
|
volume_qos_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert "Success: Successfully modified QoS Spec consumer." in messages
|
assert "Success: Successfully modified QoS Spec consumer." in messages
|
||||||
assert (openstack_admin.block_storage.get(
|
assert (openstack_admin.block_storage.get(
|
||||||
f"/qos-specs/{new_qos_spec['id']}").json()['qos_specs']['consumer'] ==
|
f"/qos-specs/{new_qos_spec['id']}").json()['qos_specs']['consumer'] ==
|
||||||
@@ -274,7 +274,7 @@ def test_qos_spec_create_extra_specs(login, driver, openstack_admin, config,
|
|||||||
extra_specs_form.find_element_by_id("id_key").send_keys('minIOPS')
|
extra_specs_form.find_element_by_id("id_key").send_keys('minIOPS')
|
||||||
extra_specs_form.find_element_by_id("id_value").send_keys(20)
|
extra_specs_form.find_element_by_id("id_value").send_keys(20)
|
||||||
extra_specs_form.find_element_by_css_selector(".btn-primary").click()
|
extra_specs_form.find_element_by_css_selector(".btn-primary").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert 'Success: Created spec "minIOPS".' in messages
|
assert 'Success: Created spec "minIOPS".' in messages
|
||||||
assert (openstack_admin.block_storage.get(
|
assert (openstack_admin.block_storage.get(
|
||||||
f"/qos-specs/{new_qos_spec['id']}").json()['qos_specs']['specs'] ==
|
f"/qos-specs/{new_qos_spec['id']}").json()['qos_specs']['specs'] ==
|
||||||
@@ -307,7 +307,7 @@ def test_qos_spec_delete_extra_specs(login, driver, openstack_admin, config,
|
|||||||
widgets.select_from_dropdown(actions_column, "Delete Spec")
|
widgets.select_from_dropdown(actions_column, "Delete Spec")
|
||||||
driver.find_element_by_css_selector(
|
driver.find_element_by_css_selector(
|
||||||
".modal-dialog .modal-footer .btn-danger").click()
|
".modal-dialog .modal-footer .btn-danger").click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert "Success: Deleted Spec: maxIOPS" in messages
|
assert "Success: Deleted Spec: maxIOPS" in messages
|
||||||
assert (openstack_admin.block_storage.get(
|
assert (openstack_admin.block_storage.get(
|
||||||
f"/qos-specs/{new_qos_spec_with_extra_specs['id']}").json()
|
f"/qos-specs/{new_qos_spec_with_extra_specs['id']}").json()
|
||||||
|
@@ -17,7 +17,7 @@ from openstack_dashboard.test.selenium import widgets
|
|||||||
|
|
||||||
|
|
||||||
def test_delete_multiple_instance_rows(live_server, driver, dashboard_data,
|
def test_delete_multiple_instance_rows(live_server, driver, dashboard_data,
|
||||||
user):
|
config, user):
|
||||||
with mock.patch.object(
|
with mock.patch.object(
|
||||||
api.glance, 'image_list_detailed') as mocked_i_l_d, \
|
api.glance, 'image_list_detailed') as mocked_i_l_d, \
|
||||||
mock.patch.object(
|
mock.patch.object(
|
||||||
@@ -52,14 +52,14 @@ def test_delete_multiple_instance_rows(live_server, driver, dashboard_data,
|
|||||||
server_names.append(str(server)[1:-1].split("Server: ")[1])
|
server_names.append(str(server)[1:-1].split("Server: ")[1])
|
||||||
string_server_names = ", ".join(server_names)
|
string_server_names = ", ".join(server_names)
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Info: Scheduled deletion of Instances: {string_server_names}"
|
assert (f"Info: Scheduled deletion of Instances: {string_server_names}"
|
||||||
in messages)
|
in messages)
|
||||||
|
|
||||||
|
|
||||||
# Test for cover delete multiple rows also for Angular based table
|
# Test for cover delete multiple rows also for Angular based table
|
||||||
def test_delete_multiple_images_rows(live_server, driver, dashboard_data,
|
def test_delete_multiple_images_rows(live_server, driver, dashboard_data,
|
||||||
user):
|
config, user):
|
||||||
with mock.patch.object(
|
with mock.patch.object(
|
||||||
api.glance, 'image_list_detailed') as mocked_i_l_d, \
|
api.glance, 'image_list_detailed') as mocked_i_l_d, \
|
||||||
mock.patch.object(
|
mock.patch.object(
|
||||||
@@ -91,6 +91,6 @@ def test_delete_multiple_images_rows(live_server, driver, dashboard_data,
|
|||||||
driver.find_element_by_xpath(
|
driver.find_element_by_xpath(
|
||||||
"//button[normalize-space()='Delete Images']").click()
|
"//button[normalize-space()='Delete Images']").click()
|
||||||
widgets.confirm_modal(driver)
|
widgets.confirm_modal(driver)
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert (f"Success: Deleted Images: {string_image_names}."
|
assert (f"Success: Deleted Images: {string_image_names}."
|
||||||
in messages)
|
in messages)
|
||||||
|
@@ -94,14 +94,14 @@ def test_message_after_password_change(live_server, driver, user,
|
|||||||
'Password changed. Please log in again to continue.')
|
'Password changed. Please log in again to continue.')
|
||||||
|
|
||||||
|
|
||||||
def test_languages(live_server, driver, user):
|
def test_languages(live_server, driver, user, config):
|
||||||
driver.get(live_server.url + '/settings')
|
driver.get(live_server.url + '/settings')
|
||||||
user_settings = driver.find_element_by_id('user_settings_modal')
|
user_settings = driver.find_element_by_id('user_settings_modal')
|
||||||
language_options = user_settings.find_element_by_id('id_language')
|
language_options = user_settings.find_element_by_id('id_language')
|
||||||
language_options.click()
|
language_options.click()
|
||||||
language_options.find_element_by_xpath("//option[@value='de']").click()
|
language_options.find_element_by_xpath("//option[@value='de']").click()
|
||||||
user_settings.find_element_by_xpath('//*[@class="btn btn-primary"]').click()
|
user_settings.find_element_by_xpath('//*[@class="btn btn-primary"]').click()
|
||||||
messages = widgets.get_and_dismiss_messages(driver)
|
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||||
assert ("Success: Settings saved." in messages or
|
assert ("Success: Settings saved." in messages or
|
||||||
"Erfolg:Einstellungen gespeichert." in messages)
|
"Erfolg:Einstellungen gespeichert." in messages)
|
||||||
assert "Error" not in messages
|
assert "Error" not in messages
|
||||||
|
@@ -27,8 +27,10 @@ class TableDefinition:
|
|||||||
names: list
|
names: list
|
||||||
|
|
||||||
|
|
||||||
def get_and_dismiss_messages(element):
|
def get_and_dismiss_messages(driver, config):
|
||||||
messages = element.find_elements_by_css_selector("div.messages div.alert")
|
messages = WebDriverWait(driver, config.selenium.message_wait).until(
|
||||||
|
EC.presence_of_all_elements_located(
|
||||||
|
(By.CSS_SELECTOR, 'div.messages div.alert')))
|
||||||
collect = []
|
collect = []
|
||||||
for message in messages:
|
for message in messages:
|
||||||
text = message.find_element_by_css_selector("p, div").text
|
text = message.find_element_by_css_selector("p, div").text
|
||||||
|
Reference in New Issue
Block a user