)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"0394fcba445cbbc4deb0dc92282ce4619324df3e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"cf434c99_087052c6","updated":"2024-03-27 13:47:49.000000000","message":"LGTM, thanks!","commit_id":"b5a160a1ccbccf64797dd7d2c1dae7e73d94915d"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"d0c2a516d7708d03eeec2cc0d68a49823553d512","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"c318b6be_fa904663","updated":"2024-03-27 12:05:19.000000000","message":"recheck, random failure","commit_id":"b5a160a1ccbccf64797dd7d2c1dae7e73d94915d"}],"openstack_dashboard/test/selenium/integration/test_images.py":[{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"a4d8477eea9ef3e6cf43f209fba1f172e6a45e9e","unresolved":false,"context_lines":[{"line_number":437,"context_line":"    )[\u0027image\u0027][\u0027metadata\u0027][\u0027description\u0027] \u003d\u003d new_description)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"def test_update_image_metadata_admin(login, driver, image_names,"},{"line_number":441,"context_line":"                                     new_image_admin, config,"},{"line_number":442,"context_line":"                                     openstack_admin):"},{"line_number":443,"context_line":"    new_metadata \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"906950de_16e91d75","line":440,"range":{"start_line":440,"start_character":52,"end_line":440,"end_character":63},"updated":"2024-03-27 09:04:49.000000000","message":"I know that in some of the first tests it is used too, but as here is used \"new_image_admin\" then it is not necessary to use also \"image_names\", because \"image_names\" is called inside \"new_image_admin\" fixture and then it is accessible via \"new_image_admin.name\".\nNo need to change it, just hint for future.","commit_id":"6e59a76fbce3a4b647b208015450f4bcc338a1d5"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"a4d8477eea9ef3e6cf43f209fba1f172e6a45e9e","unresolved":false,"context_lines":[{"line_number":459,"context_line":"    widgets.select_from_dropdown(actions_column, \"Update Metadata\")"},{"line_number":460,"context_line":"    image_form \u003d driver.find_element_by_css_selector(\".modal-content\")"},{"line_number":461,"context_line":"    for name, value in new_metadata.items():"},{"line_number":462,"context_line":"        image_form.find_element_by_xpath("},{"line_number":463,"context_line":"            \"//input[@name\u003d\u0027customItem\u0027]\").send_keys(name)"},{"line_number":464,"context_line":"        image_form.find_element_by_xpath("},{"line_number":465,"context_line":"            \"//button[@class\u003d\u0027btn btn-primary\u0027]\").click()"},{"line_number":466,"context_line":"        image_form.find_element_by_xpath("}],"source_content_type":"text/x-python","patch_set":7,"id":"a52732e9_a9e64c95","line":463,"range":{"start_line":462,"start_character":19,"end_line":463,"end_character":42},"updated":"2024-03-27 09:04:49.000000000","message":"Just hint for future. Where it is possible we trying to use find_element_by_css_selector, id, link_text, etc. instead of xpath.","commit_id":"6e59a76fbce3a4b647b208015450f4bcc338a1d5"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"a4d8477eea9ef3e6cf43f209fba1f172e6a45e9e","unresolved":true,"context_lines":[{"line_number":461,"context_line":"    for name, value in new_metadata.items():"},{"line_number":462,"context_line":"        image_form.find_element_by_xpath("},{"line_number":463,"context_line":"            \"//input[@name\u003d\u0027customItem\u0027]\").send_keys(name)"},{"line_number":464,"context_line":"        image_form.find_element_by_xpath("},{"line_number":465,"context_line":"            \"//button[@class\u003d\u0027btn btn-primary\u0027]\").click()"},{"line_number":466,"context_line":"        image_form.find_element_by_xpath("},{"line_number":467,"context_line":"            f\"//span[@title\u003d\u0027{name}\u0027]/parent::div/input\").send_keys(value)"},{"line_number":468,"context_line":"    image_form.find_element_by_xpath("}],"source_content_type":"text/x-python","patch_set":7,"id":"8d8c4410_a5c859ea","line":465,"range":{"start_line":464,"start_character":19,"end_line":465,"end_character":49},"updated":"2024-03-27 09:04:49.000000000","message":"I am pretty sure that command finds at least two elements (the element we need + the save button for whole form). It will work because the selenium using the first element that is found. But if it is possible I would prefer to use more specific locator, to find just the element that we need.\nLike: find_element_by_css_selector(\"button.btn span[class\u003d\u0027fa fa-plus\u0027]\")","commit_id":"6e59a76fbce3a4b647b208015450f4bcc338a1d5"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"5427bf7de53c25c9c172a33b9defa44f17f1b4a6","unresolved":false,"context_lines":[{"line_number":461,"context_line":"    for name, value in new_metadata.items():"},{"line_number":462,"context_line":"        image_form.find_element_by_xpath("},{"line_number":463,"context_line":"            \"//input[@name\u003d\u0027customItem\u0027]\").send_keys(name)"},{"line_number":464,"context_line":"        image_form.find_element_by_xpath("},{"line_number":465,"context_line":"            \"//button[@class\u003d\u0027btn btn-primary\u0027]\").click()"},{"line_number":466,"context_line":"        image_form.find_element_by_xpath("},{"line_number":467,"context_line":"            f\"//span[@title\u003d\u0027{name}\u0027]/parent::div/input\").send_keys(value)"},{"line_number":468,"context_line":"    image_form.find_element_by_xpath("}],"source_content_type":"text/x-python","patch_set":7,"id":"30535623_c69f1268","line":465,"range":{"start_line":464,"start_character":19,"end_line":465,"end_character":49},"in_reply_to":"7fbdb6d6_4bc0c2f9","updated":"2024-03-27 10:55:06.000000000","message":"Never mind, I was thinking about the login screen, for the forms this should be fine.","commit_id":"6e59a76fbce3a4b647b208015450f4bcc338a1d5"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"679019adced0a7f64cd5017f1e3b321370d5583e","unresolved":false,"context_lines":[{"line_number":461,"context_line":"    for name, value in new_metadata.items():"},{"line_number":462,"context_line":"        image_form.find_element_by_xpath("},{"line_number":463,"context_line":"            \"//input[@name\u003d\u0027customItem\u0027]\").send_keys(name)"},{"line_number":464,"context_line":"        image_form.find_element_by_xpath("},{"line_number":465,"context_line":"            \"//button[@class\u003d\u0027btn btn-primary\u0027]\").click()"},{"line_number":466,"context_line":"        image_form.find_element_by_xpath("},{"line_number":467,"context_line":"            f\"//span[@title\u003d\u0027{name}\u0027]/parent::div/input\").send_keys(value)"},{"line_number":468,"context_line":"    image_form.find_element_by_xpath("}],"source_content_type":"text/x-python","patch_set":7,"id":"7fbdb6d6_4bc0c2f9","line":465,"range":{"start_line":464,"start_character":19,"end_line":465,"end_character":49},"in_reply_to":"84209982_92f43a1d","updated":"2024-03-27 10:50:21.000000000","message":"Be careful here, because the downstream theme uses slightly different html structure. Ideally we want to use the same selector in upstream and downstream theme.","commit_id":"6e59a76fbce3a4b647b208015450f4bcc338a1d5"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"e27df731eb20476f5f961f06e9c3f3777b943ff1","unresolved":false,"context_lines":[{"line_number":461,"context_line":"    for name, value in new_metadata.items():"},{"line_number":462,"context_line":"        image_form.find_element_by_xpath("},{"line_number":463,"context_line":"            \"//input[@name\u003d\u0027customItem\u0027]\").send_keys(name)"},{"line_number":464,"context_line":"        image_form.find_element_by_xpath("},{"line_number":465,"context_line":"            \"//button[@class\u003d\u0027btn btn-primary\u0027]\").click()"},{"line_number":466,"context_line":"        image_form.find_element_by_xpath("},{"line_number":467,"context_line":"            f\"//span[@title\u003d\u0027{name}\u0027]/parent::div/input\").send_keys(value)"},{"line_number":468,"context_line":"    image_form.find_element_by_xpath("}],"source_content_type":"text/x-python","patch_set":7,"id":"84209982_92f43a1d","line":465,"range":{"start_line":464,"start_character":19,"end_line":465,"end_character":49},"in_reply_to":"8d8c4410_a5c859ea","updated":"2024-03-27 10:09:27.000000000","message":"Hey right , thanks for pointing that out . Looks like it got leftover while I was debugging or when I reverted back to earlier patchset.","commit_id":"6e59a76fbce3a4b647b208015450f4bcc338a1d5"}]}
