)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"4282fbe077912fb67a99a72346cd41e810886cf7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"52261ab1_a6c24684","updated":"2026-07-07 07:49:26.000000000","message":"recheck","commit_id":"77139e25454f7f695d18b2dba8a241a26e80eaae"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"a7ff9f46aa46d8e5bc82c3d3d4fdcd7e99247327","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"3041c7bc_09fa58f0","updated":"2026-07-14 06:37:50.000000000","message":"test_existing_goals.py test screenshot: https://dcdef67f370bf151c86e-9e1e29a469f8f669289667ecce245a85.ssl.cf1.rackcdn.com/openstack/67c0871e85f2480fbe906ec623883649/controller/logs/playwright/screenshots/watcher_dashboard.test.integration.test_existing_goals.GoalsTests.test_goals_match_watcher_api/011_all_goals_verified.png\n\ntest_existing_strategies.py test screenshot: https://dcdef67f370bf151c86e-9e1e29a469f8f669289667ecce245a85.ssl.cf1.rackcdn.com/openstack/67c0871e85f2480fbe906ec623883649/controller/logs/playwright/screenshots/watcher_dashboard.test.integration.test_existing_strategies.StrategiesTests.test_strategies_match_watcher_api/011_all_strategies_verified.png","commit_id":"d2168fc4129e5adb9c74e3594f397df7d606d7dc"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"84c8cfab31990538f7ed8e9e9df8ac830e0e6358","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"5a970f8f_6c07075a","updated":"2026-07-16 17:13:49.000000000","message":"lgtm, thanks","commit_id":"741f180af3387307929aad5bc72d1ac3c9319169"}],"watcher_dashboard/test/integration/test_existing_goals.py":[{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"a55ada967b06ebabd7d813fc34dd663921f402b6","unresolved":false,"context_lines":[{"line_number":13,"context_line":"\"\"\"Integration tests for Goals using Playwright.\"\"\""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from django import test"},{"line_number":16,"context_line":"from playwright import sync_api as playwright_sync"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from watcher_dashboard.test.integration import playwright_base"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"76f12bd2_2f53f263","line":16,"updated":"2026-07-06 10:22:31.000000000","message":"Imports `playwright_sync` solely to call `playwright_sync.expect(...)`, but the base class already exposes the same helper as `self.expect`, which the sibling audit-workflow test uses consistently.\n\n**Severity**: SUGGESTION | **Confidence**: 0.9\n\n**Benefit**: Consistency with the sibling integration test and with the base class design, plus removal of an import that is no longer needed.\n\n**Recommendation**:\nDrop the `from playwright import sync_api as playwright_sync` import and replace each `playwright_sync.expect(...)` call with `self.expect(...)`, matching how PlaywrightTestCase exposes `expect \u003d sync_api.expect` and how test_playwright_audit_workflow.py uses it.","commit_id":"0d38af2430e64d25b915052f7177c6a03c17db56"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"a55ada967b06ebabd7d813fc34dd663921f402b6","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            display_name \u003d api_goal.display_name"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"            # Locate the row by goal name"},{"line_number":66,"context_line":"            row \u003d self.page.locator(f\"tbody tr[data-display\u003d\u0027{goal_name}\u0027]\")"},{"line_number":67,"context_line":"            playwright_sync.expect(row).to_be_visible("},{"line_number":68,"context_line":"                timeout\u003d5000"},{"line_number":69,"context_line":"            ), f\"Goal \u0027{goal_name}\u0027 not found in UI\""}],"source_content_type":"text/x-python","patch_set":5,"id":"4a80acd5_92976142","line":66,"updated":"2026-07-06 10:22:31.000000000","message":"Locates table rows with the CSS selector `tbody tr[data-display\u003d\u0027{goal_name}\u0027]`, which couples the test to Horizon\u0027s internal `data-display` rendering and breaks if a goal name contains an apostrophe.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Role-based locators survive markup churn and special characters, and they align this test with the existing sibling-test convention.\n\n**Recommendation**:\nPrefer the role-based pattern already used in test_playwright_audit_workflow.py: `self.page.get_by_role(\"row\").filter(has_text\u003dgoal_name)`. If the attribute selector must stay, at least escape single quotes/apostrophes in goal_name before interpolating it into the selector.","commit_id":"0d38af2430e64d25b915052f7177c6a03c17db56"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"6639a945e29f6a6c81fa50c25d7bf9cb9e29b453","unresolved":false,"context_lines":[{"line_number":13,"context_line":"\"\"\"Integration tests for Goals using Playwright.\"\"\""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from django import test"},{"line_number":16,"context_line":"from playwright import sync_api as playwright_sync"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from watcher_dashboard.test.integration import playwright_base"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5383b08b_d08d87e1","line":16,"updated":"2026-07-07 08:10:12.000000000","message":"Both new test files import \u0027from playwright import sync_api as playwright_sync\u0027 and call playwright_sync.expect(...) throughout. The base class PlaywrightTestCase already provides \u0027expect \u003d sync_api.expect\u0027 (playwright_base.py line 177), and the sibling test test_playwright_audit_workflow.py cons...\n\n**Severity**: SUGGESTION | **Confidence**: 0.9\n\n**Benefit**: Minor maintainability concern: future contributors may be confused by two different patterns for the same operation across sibling test files. The base class alias was specifically designed to avoid importing playwright internals in test subclasses.\n\n**Recommendation**:\nRemove the \u0027from playwright import sync_api as playwright_sync\u0027 import and replace all \u0027playwright_sync.expect(...)\u0027 calls with \u0027self.expect(...)\u0027 to match the convention used in test_playwright_audit_workflow.py and the design intent of the base class.","commit_id":"77139e25454f7f695d18b2dba8a241a26e80eaae"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"4fb85e43eb65176253e13f78d7d50012b259b4a4","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"            # Locate the row by goal name"},{"line_number":66,"context_line":"            row \u003d self.page.locator(f\"tbody tr[data-display\u003d\u0027{goal_name}\u0027]\")"},{"line_number":67,"context_line":"            ("},{"line_number":68,"context_line":"                playwright_sync.expect(row).to_be_visible(timeout\u003d5000),"},{"line_number":69,"context_line":"                f\"Goal \u0027{goal_name}\u0027 not found in UI\","},{"line_number":70,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":8,"id":"2e70a278_5c92fedc","line":67,"updated":"2026-07-07 09:10:39.000000000","message":"The pattern `(playwright_sync.expect(row).to_be_visible(timeout\u003d5000), f\"Goal \u0027...\u0027 not found in UI\")` creates a bare tuple that is immediately discarded. The expect() call does execute and will raise on failure, but the error message string is the second element of a discarded tuple and is never...\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: When a goal is missing from the UI, the test fails with Playwright\u0027s generic timeout message instead of the intended descriptive message (e.g., \"Goal \u0027X\u0027 not found in UI\"). Developers debugging test failures lose the context the author clearly intended to provide. The tuple syntax is also mislead...\n\n**Suggestion**:\nRemove the tuple wrapper and either (a) call `playwright_sync.expect(row).to_be_visible(timeout\u003d5000)` directly without a custom message, or (b) if custom messages are desired, use a try/except around the expect() call that re-raises with the descriptive message. Option (a) aligns with the existing pattern in test_playwright_audit_workflow.py.","commit_id":"b801385945f4710b95b5e72cbeb8049237a7413e"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"d62c9021d0a542c333491106430c349c474f5009","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from django import test"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from playwright import sync_api as playwright_sync"},{"line_number":18,"context_line":"from watcher_dashboard.test.integration import playwright_base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"03554d57_6d29d90c","line":17,"updated":"2026-07-08 09:01:42.000000000","message":"Both new test files import playwright_sync from playwright.sync_api and use playwright_sync.expect(...), while the PlaywrightTestCase base class already exposes expect as a class attribute (self.expect). The existing sibling test_playwright_audit_workflow.py follows the established pattern of usi...\n\n**Severity**: SUGGESTION | **Confidence**: 0.9\n\n**Benefit**: The inconsistency creates a maintenance pattern where future test files may copy the redundant import rather than using the base class facility. It also adds an unnecessary module-level import that could confuse readers about which expect API is in use.\n\n**Recommendation**:\nRemove the \u0027from playwright import sync_api as playwright_sync\u0027 import from both files and replace all playwright_sync.expect(...) calls with self.expect(...), matching the pattern used in test_playwright_audit_workflow.py.","commit_id":"5aa6ef85d6d6acea5183286294f91f9b3d18bea1"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"84d080b7f4615a5f937746a5d63242f4aa2b0f1b","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"            # Locate the row by goal name"},{"line_number":66,"context_line":"            row \u003d self.page.locator(f\"tbody tr[data-display\u003d\u0027{goal_name}\u0027]\")"},{"line_number":67,"context_line":"            playwright_sync.expect(row).to_be_visible(timeout\u003d5000)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"            # Verify the display name is visible in the row"},{"line_number":70,"context_line":"            playwright_sync.expect("}],"source_content_type":"text/x-python","patch_set":11,"id":"a0fd951c_ef276c5f","line":67,"updated":"2026-07-09 08:09:33.000000000","message":"Both new test files use a hardcoded timeout\u003d5000 for to_be_visible() calls instead of the configurable config.get_timeout() used throughout the rest of the test framework.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: If the configured PLAYWRIGHT_TIMEOUT is higher than 5000ms (common in slow CI environments), these tests will use a shorter timeout than intended, potentially causing flaky failures when the UI takes longer than 5 seconds to render individual rows.\n\n**Recommendation**:\nReplace `timeout\u003d5000` with `timeout\u003dconfig.get_timeout()` in both test files, or simply omit the timeout parameter to inherit the default already set on the browser context via set_default_timeout().","commit_id":"effec6618f058202220d4f7079d0fd6c674224e6"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"f6353070596ff70851306e4fa2b206b9d0941d70","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from django import test"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from playwright import sync_api as playwright_sync"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from watcher_dashboard.test.integration import playwright_base"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"72d444c3_fd2814f2","line":17,"updated":"2026-07-09 09:24:43.000000000","message":"Both new test files import \u0027from playwright import sync_api as playwright_sync\u0027 and call playwright_sync.expect() throughout. However, the base class PlaywrightTestCase already defines \u0027expect \u003d sync_api.expect\u0027 as a class attribute (playwright_base.py line 177), and the existing sibling test tes...\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Minor maintainability concern: future test authors may copy either pattern, leading to mixed conventions. The redundant import also adds unnecessary cognitive overhead when reading the test suite.\n\n**Recommendation**:\nReplace \u0027playwright_sync.expect(...)\u0027 calls with \u0027self.expect(...)\u0027 and remove the \u0027from playwright import sync_api as playwright_sync\u0027 import from both files, matching the pattern used in test_playwright_audit_workflow.py and the base class.","commit_id":"2913f3169ce55c3ab04f019317d6d332cbb519c3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"84c8cfab31990538f7ed8e9e9df8ac830e0e6358","unresolved":true,"context_lines":[{"line_number":21,"context_line":"class GoalsTests(playwright_base.PlaywrightTestCase):"},{"line_number":22,"context_line":"    \"\"\"Integration tests for Goals using Playwright.\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def test_goals_match_watcher_api(self):"},{"line_number":25,"context_line":"        \"\"\"Test that goals displayed in UI match those from Watcher API."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        This test verifies that the Horizon dashboard correctly displays all"}],"source_content_type":"text/x-python","patch_set":15,"id":"9477af73_55b0ebde","line":24,"range":{"start_line":24,"start_character":8,"end_line":24,"end_character":36},"updated":"2026-07-16 17:13:49.000000000","message":"https://b3463c59c8f87072d3e9-87141d8cdbf10530595552debffaf82b.ssl.cf1.rackcdn.com/openstack/d9661a56cf4247dcae457ab6860ff481/controller/logs/playwright/screenshots/watcher_dashboard.test.integration.test_existing_goals.GoalsTests.test_goals_match_watcher_api/index.html\nlgtm","commit_id":"741f180af3387307929aad5bc72d1ac3c9319169"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"9a93a142b41d28a771051d1a2024b7b1f8f85afc","unresolved":true,"context_lines":[{"line_number":69,"context_line":"            self.expect("},{"line_number":70,"context_line":"                row.get_by_text(display_name, exact\u003dTrue)"},{"line_number":71,"context_line":"            ).to_be_visible()"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        self.take_screenshot(\"all_goals_verified\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"8140a9b2_541cee4d","line":72,"updated":"2026-07-16 13:27:46.000000000","message":"Same comment as for strategies.","commit_id":"741f180af3387307929aad5bc72d1ac3c9319169"}],"watcher_dashboard/test/integration/test_existing_strategies.py":[{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"a55ada967b06ebabd7d813fc34dd663921f402b6","unresolved":false,"context_lines":[{"line_number":13,"context_line":"\"\"\"Integration tests for Strategies using Playwright.\"\"\""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from django import test"},{"line_number":16,"context_line":"from playwright import sync_api as playwright_sync"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from watcher_dashboard.test.integration import playwright_base"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1d4df97c_2456c204","line":16,"updated":"2026-07-06 10:22:31.000000000","message":"Imports `playwright_sync` solely to call `playwright_sync.expect(...)`, but the base class already exposes the same helper as `self.expect`, which the sibling audit-workflow test uses consistently.\n\n**Severity**: SUGGESTION | **Confidence**: 0.9\n\n**Benefit**: Consistency with the sibling integration test and with the base class design, plus removal of an import that is no longer needed.\n\n**Recommendation**:\nDrop the `from playwright import sync_api as playwright_sync` import and replace each `playwright_sync.expect(...)` call with `self.expect(...)`, matching how PlaywrightTestCase exposes `expect \u003d sync_api.expect` and how test_playwright_audit_workflow.py uses it.","commit_id":"0d38af2430e64d25b915052f7177c6a03c17db56"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"a55ada967b06ebabd7d813fc34dd663921f402b6","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            display_name \u003d api_strategy.display_name"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"            # Locate the row by strategy name"},{"line_number":70,"context_line":"            row \u003d self.page.locator("},{"line_number":71,"context_line":"                f\"tbody tr[data-display\u003d\u0027{strategy_name}\u0027]\""},{"line_number":72,"context_line":"            )"},{"line_number":73,"context_line":"            playwright_sync.expect(row).to_be_visible("}],"source_content_type":"text/x-python","patch_set":5,"id":"0a003dd8_05462ce3","line":70,"updated":"2026-07-06 10:22:31.000000000","message":"Locates rows with `tbody tr[data-display\u003d\u0027{strategy_name}\u0027]`, coupling the test to Horizon internals and breaking on names that contain apostrophes or other quote characters.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Role-based locators survive markup churn and special characters, and they align this test with the existing sibling-test convention.\n\n**Recommendation**:\nPrefer the role-based pattern already used in test_playwright_audit_workflow.py: `self.page.get_by_role(\"row\").filter(has_text\u003dstrategy_name)`. If the attribute selector must stay, at least escape single quotes/apostrophes in strategy_name before interpolating it into the selector.","commit_id":"0d38af2430e64d25b915052f7177c6a03c17db56"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"4fb85e43eb65176253e13f78d7d50012b259b4a4","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            row \u003d self.page.locator("},{"line_number":71,"context_line":"                f\"tbody tr[data-display\u003d\u0027{strategy_name}\u0027]\""},{"line_number":72,"context_line":"            )"},{"line_number":73,"context_line":"            ("},{"line_number":74,"context_line":"                playwright_sync.expect(row).to_be_visible(timeout\u003d5000),"},{"line_number":75,"context_line":"                f\"Strategy \u0027{strategy_name}\u0027 not found in UI\","},{"line_number":76,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":8,"id":"72d26d76_df1e8c3f","line":73,"updated":"2026-07-07 09:10:39.000000000","message":"The pattern `(playwright_sync.expect(row).to_be_visible(timeout\u003d5000), f\"Strategy \u0027...\u0027 not found in UI\")` creates a bare tuple that is immediately discarded. The expect() call does execute and will raise on failure, but the error message string is never surfaced. This is the identical pattern as...\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: When a strategy is missing from the UI, the test fails with Playwright\u0027s generic timeout message instead of the intended descriptive message. Developers debugging test failures lose the context the author intended to provide.\n\n**Suggestion**:\nRemove the tuple wrapper and call `playwright_sync.expect(row).to_be_visible(timeout\u003d5000)` directly, or use a try/except to re-raise with the custom message. Align with the existing pattern in test_playwright_audit_workflow.py.","commit_id":"b801385945f4710b95b5e72cbeb8049237a7413e"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"84c8cfab31990538f7ed8e9e9df8ac830e0e6358","unresolved":true,"context_lines":[{"line_number":21,"context_line":"class StrategiesTests(playwright_base.PlaywrightTestCase):"},{"line_number":22,"context_line":"    \"\"\"Integration tests for Strategies using Playwright.\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def test_strategies_match_watcher_api(self):"},{"line_number":25,"context_line":"        \"\"\"Test that strategies displayed in UI match those from Watcher API."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        This test verifies that the Horizon dashboard correctly displays all"}],"source_content_type":"text/x-python","patch_set":15,"id":"13bbcf46_8b79804e","line":24,"range":{"start_line":24,"start_character":8,"end_line":24,"end_character":41},"updated":"2026-07-16 17:13:49.000000000","message":"https://b3463c59c8f87072d3e9-87141d8cdbf10530595552debffaf82b.ssl.cf1.rackcdn.com/openstack/d9661a56cf4247dcae457ab6860ff481/controller/logs/playwright/screenshots/watcher_dashboard.test.integration.test_existing_strategies.StrategiesTests.test_strategies_match_watcher_api/index.html\nlooks good","commit_id":"741f180af3387307929aad5bc72d1ac3c9319169"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"9a93a142b41d28a771051d1a2024b7b1f8f85afc","unresolved":true,"context_lines":[{"line_number":73,"context_line":"            self.expect("},{"line_number":74,"context_line":"                row.get_by_text(display_name, exact\u003dTrue)"},{"line_number":75,"context_line":"            ).to_be_visible()"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        self.take_screenshot(\"all_strategies_verified\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"f7e26b57_de9151c9","line":76,"updated":"2026-07-16 13:27:46.000000000","message":"I think this is not testing the details view of strategies, right?. IMO, it\u0027d be good to extend this test to click on one of the strategies and check that the strategy details page is properly displayed.","commit_id":"741f180af3387307929aad5bc72d1ac3c9319169"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"66846610dbe608a25920f4dad3984c2df861eb06","unresolved":true,"context_lines":[{"line_number":73,"context_line":"            self.expect("},{"line_number":74,"context_line":"                row.get_by_text(display_name, exact\u003dTrue)"},{"line_number":75,"context_line":"            ).to_be_visible()"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        self.take_screenshot(\"all_strategies_verified\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"81500f22_e82acc56","line":76,"in_reply_to":"f7e26b57_de9151c9","updated":"2026-07-16 17:17:43.000000000","message":"right, it is only checking the display_name, not strategy details. The test could be extended to check for details on each strategy..","commit_id":"741f180af3387307929aad5bc72d1ac3c9319169"}]}
