)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"e54288a4b799f808785c02043ad303f61ff5e4dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"f9345475_e23a4cc2","updated":"2023-09-19 09:40:32.000000000","message":"recheck, random failure","commit_id":"a3fc6c86cb44dc259dd9ecce8891958704fe71dd"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"89b109777321fd83acca5e7d685ff4d216cca251","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"b92cb25f_a1f6be15","updated":"2023-09-28 23:37:44.000000000","message":"recheck, random timeout","commit_id":"1f70e7816851e02b17319c1af594ed1318ed66e8"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"68fdb62a8d2cbe092e4c6e9710f7c88caf9371ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"c2b5bee0_e5a4524c","updated":"2023-09-29 08:24:25.000000000","message":"recheck random timeout","commit_id":"a9c648090ddfe6161168a9a7d5d4cb9d59f0b32a"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"167d190826c1243e8ab499691ec7297deb17e2dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"4030c766_c573a5e9","updated":"2023-09-29 07:53:58.000000000","message":"recheck, random failure","commit_id":"a9c648090ddfe6161168a9a7d5d4cb9d59f0b32a"}],"openstack_dashboard/test/selenium/integration/test_instances.py":[{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"121a18c5e2d0c324918738ec91151188b0870f10","unresolved":true,"context_lines":[{"line_number":30,"context_line":"@pytest.fixture"},{"line_number":31,"context_line":"def new_instance_demo(request, instance_name, openstack_demo, config):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    count \u003d request.param[0]"},{"line_number":34,"context_line":"    delete_multiple_instances \u003d request.param[1]"},{"line_number":35,"context_line":"    instance \u003d openstack_demo.create_server("},{"line_number":36,"context_line":"        instance_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fd0d9f3f_d1e44382","line":33,"updated":"2023-09-19 09:56:26.000000000","message":"Can we have the count default to 1, so that you don\u0027t have to specify it in the common case?","commit_id":"a3fc6c86cb44dc259dd9ecce8891958704fe71dd"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"00be92f32fc2fe43f09c1d135643fb48a44d2139","unresolved":false,"context_lines":[{"line_number":30,"context_line":"@pytest.fixture"},{"line_number":31,"context_line":"def new_instance_demo(request, instance_name, openstack_demo, config):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    count \u003d request.param[0]"},{"line_number":34,"context_line":"    delete_multiple_instances \u003d request.param[1]"},{"line_number":35,"context_line":"    instance \u003d openstack_demo.create_server("},{"line_number":36,"context_line":"        instance_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5c073bb2_dfa1f36f","line":33,"in_reply_to":"fd0d9f3f_d1e44382","updated":"2023-09-28 17:35:59.000000000","message":"Done","commit_id":"a3fc6c86cb44dc259dd9ecce8891958704fe71dd"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"121a18c5e2d0c324918738ec91151188b0870f10","unresolved":true,"context_lines":[{"line_number":31,"context_line":"def new_instance_demo(request, instance_name, openstack_demo, config):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    count \u003d request.param[0]"},{"line_number":34,"context_line":"    delete_multiple_instances \u003d request.param[1]"},{"line_number":35,"context_line":"    instance \u003d openstack_demo.create_server("},{"line_number":36,"context_line":"        instance_name,"},{"line_number":37,"context_line":"        image\u003dconfig.image.images_list[0],"}],"source_content_type":"text/x-python","patch_set":5,"id":"76dc1a06_309663ef","line":34,"updated":"2023-09-19 09:56:26.000000000","message":"Is there any case when the count is \u003e 1 and you want this set to False? Because if not, we could just check the count and not need a second param.","commit_id":"a3fc6c86cb44dc259dd9ecce8891958704fe71dd"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"00be92f32fc2fe43f09c1d135643fb48a44d2139","unresolved":false,"context_lines":[{"line_number":31,"context_line":"def new_instance_demo(request, instance_name, openstack_demo, config):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    count \u003d request.param[0]"},{"line_number":34,"context_line":"    delete_multiple_instances \u003d request.param[1]"},{"line_number":35,"context_line":"    instance \u003d openstack_demo.create_server("},{"line_number":36,"context_line":"        instance_name,"},{"line_number":37,"context_line":"        image\u003dconfig.image.images_list[0],"}],"source_content_type":"text/x-python","patch_set":5,"id":"a615c49a_c7354acd","line":34,"in_reply_to":"76dc1a06_309663ef","updated":"2023-09-28 17:35:59.000000000","message":"Done","commit_id":"a3fc6c86cb44dc259dd9ecce8891958704fe71dd"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"db6cae869a9152fe46e4829134f02986918265f5","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                                                           items_per_page\u003d1)"},{"line_number":284,"context_line":"    assert first_page_definition \u003d\u003d actual_page1_definition"},{"line_number":285,"context_line":"    # Turning to next page"},{"line_number":286,"context_line":"    driver.find_element_by_link_text(\"Next »\").click()"},{"line_number":287,"context_line":"    actual_page2_definition \u003d widgets.get_table_definition(driver, login,"},{"line_number":288,"context_line":"                                                           config, sorting\u003dTrue,"},{"line_number":289,"context_line":"                                                           items_per_page\u003d1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"b5e1fa69_bd55a513","line":286,"updated":"2023-09-29 06:40:48.000000000","message":"Removed the check for is_next_link_available() as it is already being checked in previous assert. In case of link not being there ,test would fail on previous assert itself.","commit_id":"6e43c1303000340f50a7ea6625d1ee304788035c"}],"openstack_dashboard/test/selenium/widgets.py":[{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"121a18c5e2d0c324918738ec91151188b0870f10","unresolved":true,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def turn_next_page(driver):"},{"line_number":70,"context_line":"    if is_next_link_available(driver):"},{"line_number":71,"context_line":"        driver.find_element_by_link_text(\"Next »\").click()"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"d7edec30_a8f95afa","line":70,"updated":"2023-09-19 09:56:26.000000000","message":"Do we need this check? If the link is not there, and the test tries to click it, it should be an error. Like this, it will just be quietly ignored, and some weird error might or might not happen later?","commit_id":"a3fc6c86cb44dc259dd9ecce8891958704fe71dd"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"00be92f32fc2fe43f09c1d135643fb48a44d2139","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def turn_next_page(driver):"},{"line_number":70,"context_line":"    if is_next_link_available(driver):"},{"line_number":71,"context_line":"        driver.find_element_by_link_text(\"Next »\").click()"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"54ea9ae2_9f516f00","line":70,"in_reply_to":"d7edec30_a8f95afa","updated":"2023-09-28 17:35:59.000000000","message":"Done","commit_id":"a3fc6c86cb44dc259dd9ecce8891958704fe71dd"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"121a18c5e2d0c324918738ec91151188b0870f10","unresolved":true,"context_lines":[{"line_number":76,"context_line":"        driver.find_element_by_link_text(\"« Prev\").click()"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"def assert_definition(driver, expected_table_definition,"},{"line_number":80,"context_line":"                      sorting\u003dFalse, items_per_page\u003d1):"},{"line_number":81,"context_line":"    \"\"\"Checks that actual table is expected one."},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"e32cc22f_235e2809","line":79,"updated":"2023-09-19 09:56:26.000000000","message":"I don\u0027t like having asserts in helper functions, because they are not then handled by pytest\u0027s rewritter. I would rather define a class for a TableDefinition, have a function here that checks with selenium and returns a TableDefinition, and an pytest_assertrepr_compare hook for comparing TableDefinition instances (see https://docs.pytest.org/en/7.1.x/how-to/assert.html#defining-your-own-explanation-for-failed-assertions).","commit_id":"a3fc6c86cb44dc259dd9ecce8891958704fe71dd"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"00be92f32fc2fe43f09c1d135643fb48a44d2139","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        driver.find_element_by_link_text(\"« Prev\").click()"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"def assert_definition(driver, expected_table_definition,"},{"line_number":80,"context_line":"                      sorting\u003dFalse, items_per_page\u003d1):"},{"line_number":81,"context_line":"    \"\"\"Checks that actual table is expected one."},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fb399b13_643574d9","line":79,"in_reply_to":"e32cc22f_235e2809","updated":"2023-09-28 17:35:59.000000000","message":"Done","commit_id":"a3fc6c86cb44dc259dd9ecce8891958704fe71dd"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"d3c7d3a68f85e4e88b26d6ed1fb75869dfb5925c","unresolved":true,"context_lines":[{"line_number":79,"context_line":"                         sorting\u003dFalse, items_per_page\u003d1):"},{"line_number":80,"context_line":"    names \u003d driver.find_elements_by_css_selector(\u0027table tr td:nth-child(2)\u0027)"},{"line_number":81,"context_line":"    rows \u003d driver.find_elements_by_css_selector(\"tr[data-display-key\u003d\u0027name\u0027]\")"},{"line_number":82,"context_line":"    if len(names) \u003d\u003d items_per_page:"},{"line_number":83,"context_line":"        if sorting:"},{"line_number":84,"context_line":"            names.sort()"},{"line_number":85,"context_line":"        actual_table \u003d TableDefinition(next\u003dis_next_link_available(driver),"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fb8ed73_76bbcfed","line":82,"updated":"2023-09-29 08:28:37.000000000","message":"I\u0027m not entirely sure we need this test. If the count doesn\u0027t match, the table definitions will differ anyways.","commit_id":"a9c648090ddfe6161168a9a7d5d4cb9d59f0b32a"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"f4d340687e1e1bb22cac5159612338b498125f8a","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                         sorting\u003dFalse, items_per_page\u003d1):"},{"line_number":80,"context_line":"    names \u003d driver.find_elements_by_css_selector(\u0027table tr td:nth-child(2)\u0027)"},{"line_number":81,"context_line":"    rows \u003d driver.find_elements_by_css_selector(\"tr[data-display-key\u003d\u0027name\u0027]\")"},{"line_number":82,"context_line":"    if len(names) \u003d\u003d items_per_page:"},{"line_number":83,"context_line":"        if sorting:"},{"line_number":84,"context_line":"            names.sort()"},{"line_number":85,"context_line":"        actual_table \u003d TableDefinition(next\u003dis_next_link_available(driver),"}],"source_content_type":"text/x-python","patch_set":12,"id":"16463c2a_21000f4f","line":82,"in_reply_to":"1fb8ed73_76bbcfed","updated":"2023-09-29 09:14:23.000000000","message":"Done","commit_id":"a9c648090ddfe6161168a9a7d5d4cb9d59f0b32a"}]}
