)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"2e1496792ca518feabb88b5365655fc8e655bf3e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"521ff8eb_aab4897c","updated":"2025-09-12 14:20:36.000000000","message":"LGTM","commit_id":"1aa28fe8862f38b998a6ff30ed70458cda7f54a2"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"b3691dfdb5cee42d4f007dd6c34656c451ced238","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"6c0b47bb_f21b8968","updated":"2025-10-24 10:16:14.000000000","message":"LGTM, thanks!","commit_id":"f8249a891be0f6605d6e125aee17a6b94661a4a1"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"aae9fa73d8528496405c131921b24af871a34bdb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"da70b771_626cd6cc","updated":"2025-11-20 15:22:56.000000000","message":"Please don\u0027t +1 patches that are already merged. It adds nothing but confusion.","commit_id":"f8249a891be0f6605d6e125aee17a6b94661a4a1"}],"openstack_dashboard/test/selenium/integration/test_regions.py":[{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"e51db113ddbd62e8cb29a2b46d0c19f89bb7ed23","unresolved":true,"context_lines":[{"line_number":20,"context_line":"from django.conf import settings"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def test_region_login_selector(login, driver, config):"},{"line_number":24,"context_line":"    \"\"\"Check for the region selector on the login screen."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    Ensures that the region selection drop-down is displayed on the login"}],"source_content_type":"text/x-python","patch_set":4,"id":"c5160a77_30ac07e6","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":54},"updated":"2025-09-14 21:17:07.000000000","message":"Do we really need this as a separate test when the next test is to log in to single regions from settings one by one? So if the region drop-down is missing there or if there is missing some of the regions defined in the settings it will fail there (in the Login function - the part of Region settings). It seems to me like having separate tests for login when it is part of all the other tests.\n\nIs there any specific reason why this separate test is worth it? Maybe I am missing something.","commit_id":"1aa28fe8862f38b998a6ff30ed70458cda7f54a2"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"4f45444a88acd16c95c099e560df167748be0c40","unresolved":true,"context_lines":[{"line_number":20,"context_line":"from django.conf import settings"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def test_region_login_selector(login, driver, config):"},{"line_number":24,"context_line":"    \"\"\"Check for the region selector on the login screen."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    Ensures that the region selection drop-down is displayed on the login"}],"source_content_type":"text/x-python","patch_set":4,"id":"30ef4727_0e54c2b7","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":54},"in_reply_to":"2268ebd2_d2441620","updated":"2025-10-22 15:36:00.000000000","message":"I can\u0027t predict what code will be running there in three years from now. If we only tested current code, then it doesn\u0027t make sense to write any tests, because you can see that the code works. Instead, I\u0027m testing for what I want to see. If the current code gives me that, then that\u0027s fine. If in the future we modify it in a way that will break it (for instance by adding extra options, or changing the order), this test will catch that.","commit_id":"1aa28fe8862f38b998a6ff30ed70458cda7f54a2"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"b3691dfdb5cee42d4f007dd6c34656c451ced238","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from django.conf import settings"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def test_region_login_selector(login, driver, config):"},{"line_number":24,"context_line":"    \"\"\"Check for the region selector on the login screen."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    Ensures that the region selection drop-down is displayed on the login"}],"source_content_type":"text/x-python","patch_set":4,"id":"b4efa4a7_cf37de85","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":54},"in_reply_to":"30ef4727_0e54c2b7","updated":"2025-10-24 10:16:14.000000000","message":"Done","commit_id":"1aa28fe8862f38b998a6ff30ed70458cda7f54a2"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"394a22d4239f1482fbde48244c536bc3144d10fc","unresolved":true,"context_lines":[{"line_number":20,"context_line":"from django.conf import settings"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def test_region_login_selector(login, driver, config):"},{"line_number":24,"context_line":"    \"\"\"Check for the region selector on the login screen."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    Ensures that the region selection drop-down is displayed on the login"}],"source_content_type":"text/x-python","patch_set":4,"id":"2268ebd2_d2441620","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":54},"in_reply_to":"9c859dcd_f9049622","updated":"2025-10-22 13:01:53.000000000","message":"From where exactly there could appear extra options? I understand that some magic can happen but I thought the options there (in the dropdown button) are created based on the regions that are defined in local_settings.py so exactly the same as what we are testing it against \"settings.AVAILABLE_REGIONS\".\n\nThis test is not a big deal so if we want to check the things that you mentioned, I am completely fine with having it there. I am just curious if there is any real technical possibility that there will be an unexpected extra option? I thought that the dropdown is basically 1:1 with \"settings.AVAILABLE_REGIONS\". Is there any “deeper process” behind that could cause new unexpected options to appear?","commit_id":"1aa28fe8862f38b998a6ff30ed70458cda7f54a2"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"5f1632450716f1b88eaeffabc7470e07eec53ceb","unresolved":true,"context_lines":[{"line_number":20,"context_line":"from django.conf import settings"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def test_region_login_selector(login, driver, config):"},{"line_number":24,"context_line":"    \"\"\"Check for the region selector on the login screen."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    Ensures that the region selection drop-down is displayed on the login"}],"source_content_type":"text/x-python","patch_set":4,"id":"9c859dcd_f9049622","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":54},"in_reply_to":"c5160a77_30ac07e6","updated":"2025-10-06 09:37:11.000000000","message":"I want to make sure that all options that are configured are present with the correct labels, and, more importantly, that only the options that are configured are present, and there is nothing else in there.\n\nThe test that actually performs the logins would happily pass if there were extra options in the dropdown.","commit_id":"1aa28fe8862f38b998a6ff30ed70458cda7f54a2"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"e51db113ddbd62e8cb29a2b46d0c19f89bb7ed23","unresolved":true,"context_lines":[{"line_number":66,"context_line":"        region_link \u003d region_list.find_element_by_link_text(name)"},{"line_number":67,"context_line":"        region_link.click()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        user_field \u003d driver.find_element_by_id(\u0027id_username\u0027)"},{"line_number":70,"context_line":"        user_field.send_keys(config.identity.username)"},{"line_number":71,"context_line":"        pass_field \u003d driver.find_element_by_id(\u0027id_password\u0027)"},{"line_number":72,"context_line":"        pass_field.send_keys(config.identity.password)"}],"source_content_type":"text/x-python","patch_set":4,"id":"31fc326b_82d08d40","line":69,"range":{"start_line":69,"start_character":0,"end_line":69,"end_character":2},"updated":"2025-09-14 21:17:07.000000000","message":"It looks like there is not enough time to load the page and click on the Region button immediately after the first Region switch (probably your wait is not proper, or at least does not work in my environment as expected). I am not sure if you tested it with more than 2 regions but when I tried to run it with 3 regions, it never passed.\nEvery time the second switch ends with error:\nselenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id\u003d\"id_username\"]\n\nIt seems to me that the issue is that after the first Region switch, the part of code on line 60-67 is executed before the page is fully loaded and the login form is swept away during loading the rest of the page.\n\nI did not investigate it deeply but when I added “time.sleep(5)” on line 86 just for quick testing (instead of your wait on line 79-85), everything worked well.\nIt will work well if there are 2 regions. But as the test is dependent on local_settings.py (regions) there is a high possibility the tests will be executed on more than 2 regions deployment.\n\nCan you please double check it on your environment, please?","commit_id":"1aa28fe8862f38b998a6ff30ed70458cda7f54a2"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"394a22d4239f1482fbde48244c536bc3144d10fc","unresolved":true,"context_lines":[{"line_number":66,"context_line":"        region_link \u003d region_list.find_element_by_link_text(name)"},{"line_number":67,"context_line":"        region_link.click()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        user_field \u003d driver.find_element_by_id(\u0027id_username\u0027)"},{"line_number":70,"context_line":"        user_field.send_keys(config.identity.username)"},{"line_number":71,"context_line":"        pass_field \u003d driver.find_element_by_id(\u0027id_password\u0027)"},{"line_number":72,"context_line":"        pass_field.send_keys(config.identity.password)"}],"source_content_type":"text/x-python","patch_set":4,"id":"be904cdd_49aca53c","line":69,"range":{"start_line":69,"start_character":0,"end_line":69,"end_character":2},"in_reply_to":"2f90264c_3238d80d","updated":"2025-10-22 13:01:53.000000000","message":"I am sorry but I am still facing the same issue :-/.\nYou added a wait that is waiting for \"id_username\" but it will not solve the issue. From watching what is going on in UI during the test it seems that after switch from region1 to region2 the page is not fully loaded yet and test is already clicking on regions dropdown and clicking switch to region3 but until it can be done the page just finish fully loading the page after the process switch from region1 to region2. So the opened region dropdown or the form is swept out.\n\nSo I think the solution is not to wait for \"id_username\" because it will never appear, but wait for page is fully loaded before trying to switch to another region.\n\nI usually saw this type of behavior in places where angular is used (page/form seemed to be fully loaded but when I started clicking on something then it was returned back in a second when the page was really fully loaded). Like here: https://github.com/openstack/horizon/blob/52dd699410302843b2021c621c149de696ad5f75/openstack_dashboard/test/selenium/integration/test_images.py#L391\n\nIt is not failing all the time so if you have enough performance/low load/good connection it can pass 100% time for you but I am absolutely sure that it will cause a huge problems when we will try to run it anywhere where there are not ideal conditions (uni jobs).","commit_id":"1aa28fe8862f38b998a6ff30ed70458cda7f54a2"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"5f1632450716f1b88eaeffabc7470e07eec53ceb","unresolved":true,"context_lines":[{"line_number":66,"context_line":"        region_link \u003d region_list.find_element_by_link_text(name)"},{"line_number":67,"context_line":"        region_link.click()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        user_field \u003d driver.find_element_by_id(\u0027id_username\u0027)"},{"line_number":70,"context_line":"        user_field.send_keys(config.identity.username)"},{"line_number":71,"context_line":"        pass_field \u003d driver.find_element_by_id(\u0027id_password\u0027)"},{"line_number":72,"context_line":"        pass_field.send_keys(config.identity.password)"}],"source_content_type":"text/x-python","patch_set":4,"id":"2f90264c_3238d80d","line":69,"range":{"start_line":69,"start_character":0,"end_line":69,"end_character":2},"in_reply_to":"31fc326b_82d08d40","updated":"2025-10-06 09:37:11.000000000","message":"I added an additional wait for the login form.","commit_id":"1aa28fe8862f38b998a6ff30ed70458cda7f54a2"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"b3691dfdb5cee42d4f007dd6c34656c451ced238","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        region_link \u003d region_list.find_element_by_link_text(name)"},{"line_number":67,"context_line":"        region_link.click()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        user_field \u003d driver.find_element_by_id(\u0027id_username\u0027)"},{"line_number":70,"context_line":"        user_field.send_keys(config.identity.username)"},{"line_number":71,"context_line":"        pass_field \u003d driver.find_element_by_id(\u0027id_password\u0027)"},{"line_number":72,"context_line":"        pass_field.send_keys(config.identity.password)"}],"source_content_type":"text/x-python","patch_set":4,"id":"587d5d20_3db073f7","line":69,"range":{"start_line":69,"start_character":0,"end_line":69,"end_character":2},"in_reply_to":"ba1d4fed_b27014d4","updated":"2025-10-24 10:16:14.000000000","message":"Done","commit_id":"1aa28fe8862f38b998a6ff30ed70458cda7f54a2"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"4f45444a88acd16c95c099e560df167748be0c40","unresolved":true,"context_lines":[{"line_number":66,"context_line":"        region_link \u003d region_list.find_element_by_link_text(name)"},{"line_number":67,"context_line":"        region_link.click()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        user_field \u003d driver.find_element_by_id(\u0027id_username\u0027)"},{"line_number":70,"context_line":"        user_field.send_keys(config.identity.username)"},{"line_number":71,"context_line":"        pass_field \u003d driver.find_element_by_id(\u0027id_password\u0027)"},{"line_number":72,"context_line":"        pass_field.send_keys(config.identity.password)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba1d4fed_b27014d4","line":69,"range":{"start_line":69,"start_character":0,"end_line":69,"end_character":2},"in_reply_to":"be904cdd_49aca53c","updated":"2025-10-22 15:36:00.000000000","message":"When I try to use that, it gives me https://code.angularjs.org/1.8.2/docs/error/ng/test because that page is not AngularJS.\n\nIt seems to me that since the error you had was `Unable to locate element: [id\u003d\"id_username\"]`, waiting for that element should solve it. Are you getting a different error now?","commit_id":"1aa28fe8862f38b998a6ff30ed70458cda7f54a2"}]}
