)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"eb9020304a1de4e5c6ea8c64a4f5441b97db3330","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"92d62f8a_98751fc5","updated":"2026-01-28 15:56:51.000000000","message":"overall this looks good to me, the only question I have is when will we decide between selenium or playright? Based on the content here and discussions in irc, it looks to me like there was reasonable consensus on playwright having considerable advantatges.","commit_id":"a474bb20cd26c2706a80c1edb4f079a5c34c69a9"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"2b4b40d2926d2daa0bfa43b8124523d190a99b6a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"98a0270a_1b421c79","in_reply_to":"92d62f8a_98751fc5","updated":"2026-01-29 06:40:59.000000000","message":"Let me add it to today\u0027s irc meeting.","commit_id":"a474bb20cd26c2706a80c1edb4f079a5c34c69a9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"68771e577018876f08d75207fb3d048ffba9172a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"7eb06ef5_854db727","updated":"2026-02-25 20:04:52.000000000","message":"this is ok but some style nit inlien.\n\ni just did a quick review but ill take another looks once those are adressed\n\nplease focus on the change that you intend to make and just refence the poc rather then descibign the work you already did this cycle as somethign you will do","commit_id":"7948a1c8e5cf5e91b8efbed03c4f70d914e23ce1"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"f163b110f673d6196bb0e483c3155c6e72cf88a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"2a23ecdd_30e35738","updated":"2026-03-25 12:02:44.000000000","message":"overall lgtm, I think we should remove the comparison table from the references section. It would be ok to move it to an etherpad and link that imo","commit_id":"a325e348d0872dd3144c8238702e39ebcef01d01"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"cab676511e054f3b3f1c63c55e1cd5668e8d8a73","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"bb2594eb_5e8d1dbd","updated":"2026-04-08 14:48:40.000000000","message":"In general looks good yes, you can provide updates if you agree on with the comments, or wait for more feedbacks","commit_id":"091ee39e0d55e8783771345006527f6594df500e"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"2b7907bf96697376f94e995f1bacbad4848f0a1a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"10c18e3f_febdc3dd","updated":"2026-04-16 10:16:56.000000000","message":"I\u0027m voting +1 because I think we may explain better the comparison between Playwright and Selenium. Said that, if we agree in keeping it as-is, i think it\u0027s good enough.","commit_id":"2f98f4429097a36c9c9b5283e40670b67dc8fffa"}],"specs/2026.1/approved/improve-watcher-dashboard-ui-testing.rst":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"3a14e3e72ae97765420783becae01c41f45ec823","unresolved":true,"context_lines":[{"line_number":76,"context_line":"        │       ├── test_audit_templates.py"},{"line_number":77,"context_line":"        │       └── test_strategies.py"},{"line_number":78,"context_line":"        │"},{"line_number":79,"context_line":"        ├── e2e/                              # Integration E2E Tests (NEW)"},{"line_number":80,"context_line":"        │   ├── __init__.py"},{"line_number":81,"context_line":"        │   ├── conftest.py               # Shared fixtures and wait helpers"},{"line_number":82,"context_line":"        │   ├── base.py                   # Base test class with browser setup"}],"source_content_type":"text/x-rst","patch_set":3,"id":"13cb5cc1_05bc3517","line":79,"range":{"start_line":79,"start_character":12,"end_line":79,"end_character":15},"updated":"2025-12-10 14:37:10.000000000","message":"why not \"integration\" instead of \"e2e\" for folder name? I find it more intuitive.","commit_id":"f743ab6c4e81b3573e7a7c3e4051acdbbc5f1722"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"e5fd87213fde86f6ef699742fba07fd17a6d3c1f","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        │       ├── test_audit_templates.py"},{"line_number":77,"context_line":"        │       └── test_strategies.py"},{"line_number":78,"context_line":"        │"},{"line_number":79,"context_line":"        ├── e2e/                              # Integration E2E Tests (NEW)"},{"line_number":80,"context_line":"        │   ├── __init__.py"},{"line_number":81,"context_line":"        │   ├── conftest.py               # Shared fixtures and wait helpers"},{"line_number":82,"context_line":"        │   ├── base.py                   # Base test class with browser setup"}],"source_content_type":"text/x-rst","patch_set":3,"id":"43216b4e_4d62df01","line":79,"range":{"start_line":79,"start_character":12,"end_line":79,"end_character":15},"in_reply_to":"13cb5cc1_05bc3517","updated":"2025-12-11 08:40:51.000000000","message":"Done","commit_id":"f743ab6c4e81b3573e7a7c3e4051acdbbc5f1722"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"3a14e3e72ae97765420783becae01c41f45ec823","unresolved":true,"context_lines":[{"line_number":127,"context_line":"        python -m unittest poc_selenium_test.py"},{"line_number":128,"context_line":"    \"\"\""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    import os"},{"line_number":131,"context_line":"    import unittest"},{"line_number":132,"context_line":"    import time"},{"line_number":133,"context_line":"    from contextlib import contextmanager"}],"source_content_type":"text/x-rst","patch_set":3,"id":"d33429c2_65011089","line":130,"range":{"start_line":130,"start_character":0,"end_line":130,"end_character":2},"updated":"2025-12-10 14:37:10.000000000","message":"I personally don\u0027t like having all this code in the spec itself. I think providing that PoC is a good point but I\u0027d provide it in a different way. Maybe add this low level details in gist.github.com and add the link here.\n\nYou can see that approach in https://specs.openstack.org/openstack/watcher-specs/specs/2026.1/approved/functional-testing.html","commit_id":"f743ab6c4e81b3573e7a7c3e4051acdbbc5f1722"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"328ab84cadc2fb5376546fc97b34fac0e9933199","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        python -m unittest poc_selenium_test.py"},{"line_number":128,"context_line":"    \"\"\""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    import os"},{"line_number":131,"context_line":"    import unittest"},{"line_number":132,"context_line":"    import time"},{"line_number":133,"context_line":"    from contextlib import contextmanager"}],"source_content_type":"text/x-rst","patch_set":3,"id":"c8cb12b6_d1b967d2","line":130,"range":{"start_line":130,"start_character":0,"end_line":130,"end_character":2},"in_reply_to":"6e812a12_d1f78b8c","updated":"2025-12-17 09:00:46.000000000","message":"Done","commit_id":"f743ab6c4e81b3573e7a7c3e4051acdbbc5f1722"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"e5fd87213fde86f6ef699742fba07fd17a6d3c1f","unresolved":true,"context_lines":[{"line_number":127,"context_line":"        python -m unittest poc_selenium_test.py"},{"line_number":128,"context_line":"    \"\"\""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    import os"},{"line_number":131,"context_line":"    import unittest"},{"line_number":132,"context_line":"    import time"},{"line_number":133,"context_line":"    from contextlib import contextmanager"}],"source_content_type":"text/x-rst","patch_set":3,"id":"6e812a12_d1f78b8c","line":130,"range":{"start_line":130,"start_character":0,"end_line":130,"end_character":2},"in_reply_to":"d33429c2_65011089","updated":"2025-12-11 08:40:51.000000000","message":"dropped the code and replaced with selenium and playwright poc link\n- [[poc]Add Playwright-based E2E testing framework](https://review.opendev.org/c/openstack/watcher-dashboard/+/970353)\n- [[poc] Add Selenium-based E2E testing framework](https://review.opendev.org/c/openstack/watcher-dashboard/+/970573)","commit_id":"f743ab6c4e81b3573e7a7c3e4051acdbbc5f1722"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"3a14e3e72ae97765420783becae01c41f45ec823","unresolved":true,"context_lines":[{"line_number":426,"context_line":"    if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":427,"context_line":"        unittest.main()"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"Here is the tox target for the poc for end to end integration testing using"},{"line_number":430,"context_line":"Selenium:"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":".. code-block:: ini"},{"line_number":433,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"8356aa68_6c03ec6e","line":430,"range":{"start_line":429,"start_character":2,"end_line":430,"end_character":9},"updated":"2025-12-10 14:37:10.000000000","message":"Also too much detail for a spec, imo. See my previous comment.","commit_id":"f743ab6c4e81b3573e7a7c3e4051acdbbc5f1722"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"e5fd87213fde86f6ef699742fba07fd17a6d3c1f","unresolved":false,"context_lines":[{"line_number":426,"context_line":"    if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":427,"context_line":"        unittest.main()"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"Here is the tox target for the poc for end to end integration testing using"},{"line_number":430,"context_line":"Selenium:"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":".. code-block:: ini"},{"line_number":433,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ab5b699d_61533873","line":430,"range":{"start_line":429,"start_character":2,"end_line":430,"end_character":9},"in_reply_to":"8356aa68_6c03ec6e","updated":"2025-12-11 08:40:51.000000000","message":"Done","commit_id":"f743ab6c4e81b3573e7a7c3e4051acdbbc5f1722"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"7a88504c8995cce387019322040f7967762105b6","unresolved":true,"context_lines":[{"line_number":131,"context_line":"The end to end integration will be executed via tox target and stestr will"},{"line_number":132,"context_line":"be used to run the tests."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"See the POC implementations in the References section for detailed code."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"**Step 3**: Add unit tests for dashboard"},{"line_number":137,"context_line":"----------------------------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ed29dc37_4583ea29","line":134,"range":{"start_line":134,"start_character":0,"end_line":134,"end_character":2},"updated":"2025-12-11 13:14:35.000000000","message":"Given that we have the PoCs ongoing in gerrit reviews, I think we can add the links for both pocs in this spec.","commit_id":"178026e23d74aecfdb5007e4cc46f8f8508a9d78"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"328ab84cadc2fb5376546fc97b34fac0e9933199","unresolved":false,"context_lines":[{"line_number":131,"context_line":"The end to end integration will be executed via tox target and stestr will"},{"line_number":132,"context_line":"be used to run the tests."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"See the POC implementations in the References section for detailed code."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"**Step 3**: Add unit tests for dashboard"},{"line_number":137,"context_line":"----------------------------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"d93a05d5_938d1f84","line":134,"range":{"start_line":134,"start_character":0,"end_line":134,"end_character":2},"in_reply_to":"ed29dc37_4583ea29","updated":"2025-12-17 09:00:46.000000000","message":"Done","commit_id":"178026e23d74aecfdb5007e4cc46f8f8508a9d78"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"7a88504c8995cce387019322040f7967762105b6","unresolved":true,"context_lines":[{"line_number":157,"context_line":"6. **Debugging**: Quality of error messages and debugging tools"},{"line_number":158,"context_line":"7. **Wait Handling**: Auto-wait vs explicit waits"},{"line_number":159,"context_line":"8. **Headless CI testing**: Ability to run the tests in headless mode in CI"},{"line_number":160,"context_line":"   using chrome headless browser."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"**Step 5**: Implement the end to end integration testing"},{"line_number":163,"context_line":"--------------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"d23b841c_d284b59c","line":160,"range":{"start_line":160,"start_character":0,"end_line":160,"end_character":2},"updated":"2025-12-11 13:14:35.000000000","message":"I would add also a criteria about suitability according to OpenStack governance policies. In case any of the options break any OpenStack rule.","commit_id":"178026e23d74aecfdb5007e4cc46f8f8508a9d78"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"328ab84cadc2fb5376546fc97b34fac0e9933199","unresolved":false,"context_lines":[{"line_number":157,"context_line":"6. **Debugging**: Quality of error messages and debugging tools"},{"line_number":158,"context_line":"7. **Wait Handling**: Auto-wait vs explicit waits"},{"line_number":159,"context_line":"8. **Headless CI testing**: Ability to run the tests in headless mode in CI"},{"line_number":160,"context_line":"   using chrome headless browser."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"**Step 5**: Implement the end to end integration testing"},{"line_number":163,"context_line":"--------------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"a8e71400_9ab3fff9","line":160,"range":{"start_line":160,"start_character":0,"end_line":160,"end_character":2},"in_reply_to":"d23b841c_d284b59c","updated":"2025-12-17 09:00:46.000000000","message":"Done","commit_id":"178026e23d74aecfdb5007e4cc46f8f8508a9d78"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"7a88504c8995cce387019322040f7967762105b6","unresolved":true,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"Developer impact"},{"line_number":226,"context_line":"----------------"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Positive impacts: automated UI testing, reduced manual browser testing,"},{"line_number":229,"context_line":"clearer test organization, better regression protection for UI changes."},{"line_number":230,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"11e9e181_35a83e38","line":227,"range":{"start_line":227,"start_character":0,"end_line":227,"end_character":1},"updated":"2025-12-11 13:14:35.000000000","message":"I think we should put somewhere that playwright is currently not included in global-requirements.txt in the requirements project. It will need to be added if we want to use it. It would probably be accepted fast but it\u0027s something we need to do before starting implementing playwright.","commit_id":"178026e23d74aecfdb5007e4cc46f8f8508a9d78"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"328ab84cadc2fb5376546fc97b34fac0e9933199","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"Developer impact"},{"line_number":226,"context_line":"----------------"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Positive impacts: automated UI testing, reduced manual browser testing,"},{"line_number":229,"context_line":"clearer test organization, better regression protection for UI changes."},{"line_number":230,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"e29e3b77_86d9fe5f","line":227,"range":{"start_line":227,"start_character":0,"end_line":227,"end_character":1},"in_reply_to":"11e9e181_35a83e38","updated":"2025-12-17 09:00:46.000000000","message":"Done","commit_id":"178026e23d74aecfdb5007e4cc46f8f8508a9d78"}],"specs/2026.2/approved/improve-watcher-dashboard-ui-testing.rst":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"eb9020304a1de4e5c6ea8c64a4f5441b97db3330","unresolved":true,"context_lines":[{"line_number":68,"context_line":"* Selenium or Playwright for browser automation (POC evaluation)"},{"line_number":69,"context_line":"* webkit headless mode for CI execution"},{"line_number":70,"context_line":"* Reuse existing ``test/helpers.py`` and ``test/test_data/`` fixtures"},{"line_number":71,"context_line":"* Unit tests mock Watcher API, integration tests use real browser"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"**Directory Structure:**"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"430c9297_941bc73c","line":71,"updated":"2026-01-28 15:56:51.000000000","message":"integration tests use both a real browser and real watcher services deployed in devstack right? I think it might be worth it to make that clear in the contrast to unit tests","commit_id":"a474bb20cd26c2706a80c1edb4f079a5c34c69a9"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"f639a0c861084a7e62581d8c2defca98a674d834","unresolved":false,"context_lines":[{"line_number":68,"context_line":"* Selenium or Playwright for browser automation (POC evaluation)"},{"line_number":69,"context_line":"* webkit headless mode for CI execution"},{"line_number":70,"context_line":"* Reuse existing ``test/helpers.py`` and ``test/test_data/`` fixtures"},{"line_number":71,"context_line":"* Unit tests mock Watcher API, integration tests use real browser"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"**Directory Structure:**"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"7353fcd9_60845562","line":71,"in_reply_to":"430c9297_941bc73c","updated":"2026-01-29 06:40:28.000000000","message":"Done","commit_id":"a474bb20cd26c2706a80c1edb4f079a5c34c69a9"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"eb9020304a1de4e5c6ea8c64a4f5441b97db3330","unresolved":true,"context_lines":[{"line_number":159,"context_line":"8. **Headless CI testing**: Ability to run the tests in headless mode in CI"},{"line_number":160,"context_line":"   using chrome headless browser."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Playwright vs Selenium: POC Notes (Watcher Developer View)"},{"line_number":163,"context_line":"----------------------------------------------------------"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"This section summarizes what a Watcher developer will notice when running"}],"source_content_type":"text/x-rst","patch_set":9,"id":"2bbc6a03_56617482","line":162,"updated":"2026-01-28 15:56:51.000000000","message":"+1 this is great for someone that has no prior experience with these tools, thanks Chandan","commit_id":"a474bb20cd26c2706a80c1edb4f079a5c34c69a9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"68771e577018876f08d75207fb3d048ffba9172a","unresolved":true,"context_lines":[{"line_number":159,"context_line":"8. **Headless CI testing**: Ability to run the tests in headless mode in CI"},{"line_number":160,"context_line":"   using chrome headless browser."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Playwright vs Selenium: POC Notes (Watcher Developer View)"},{"line_number":163,"context_line":"----------------------------------------------------------"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"This section summarizes what a Watcher developer will notice when running"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3cf871a4_4685eb5a","line":162,"in_reply_to":"2bbc6a03_56617482","updated":"2026-02-25 20:04:52.000000000","message":"so for the reposoal we can remove steps 1-4 since the poc is doen.\n\nwe shoudl jsut rewirte this refenic playwrite and the outcome and only refence Selenium in the alternitives.","commit_id":"a474bb20cd26c2706a80c1edb4f079a5c34c69a9"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"f41c690ad7ea0ab8c05bff5ffb997f5539bf421b","unresolved":false,"context_lines":[{"line_number":159,"context_line":"8. **Headless CI testing**: Ability to run the tests in headless mode in CI"},{"line_number":160,"context_line":"   using chrome headless browser."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Playwright vs Selenium: POC Notes (Watcher Developer View)"},{"line_number":163,"context_line":"----------------------------------------------------------"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"This section summarizes what a Watcher developer will notice when running"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bf061ad0_6505e82e","line":162,"in_reply_to":"3cf871a4_4685eb5a","updated":"2026-03-19 07:29:53.000000000","message":"Done","commit_id":"a474bb20cd26c2706a80c1edb4f079a5c34c69a9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"68771e577018876f08d75207fb3d048ffba9172a","unresolved":true,"context_lines":[{"line_number":108,"context_line":"    tox -e unit-dashboard     # Dashboard unit tests"},{"line_number":109,"context_line":"    tox -e integration        # Integration tests (selected framework)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"**Step 1**: Finalize the watcher_dashboard test directory structure"},{"line_number":112,"context_line":"-------------------------------------------------------------------"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Taking the inspiration from Manila-UI and Horizon, the watcher_dashboard test"}],"source_content_type":"text/x-rst","patch_set":10,"id":"e7c9e70f_2823f3d4","line":111,"updated":"2026-02-25 20:04:52.000000000","message":"the propsoed changes ecion is ment to be in prose not a list of steps\nor bullet points","commit_id":"7948a1c8e5cf5e91b8efbed03c4f70d914e23ce1"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"f41c690ad7ea0ab8c05bff5ffb997f5539bf421b","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    tox -e unit-dashboard     # Dashboard unit tests"},{"line_number":109,"context_line":"    tox -e integration        # Integration tests (selected framework)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"**Step 1**: Finalize the watcher_dashboard test directory structure"},{"line_number":112,"context_line":"-------------------------------------------------------------------"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Taking the inspiration from Manila-UI and Horizon, the watcher_dashboard test"}],"source_content_type":"text/x-rst","patch_set":10,"id":"91842bdb_0a07e46d","line":111,"in_reply_to":"e7c9e70f_2823f3d4","updated":"2026-03-19 07:29:53.000000000","message":"Done","commit_id":"7948a1c8e5cf5e91b8efbed03c4f70d914e23ce1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"68771e577018876f08d75207fb3d048ffba9172a","unresolved":true,"context_lines":[{"line_number":353,"context_line":"* Selenium POC implementation: https://review.opendev.org/c/openstack/watcher-dashboard/+/970573"},{"line_number":354,"context_line":"* Playwright POC implementation: https://review.opendev.org/c/openstack/watcher-dashboard/+/970353"},{"line_number":355,"context_line":"* Selenium vs Playwright POC Demo: https://gist.github.com/raukadah/a1fe328770af6ddeb860c255632d1b02"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"**OpenStack References:**"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"* `Django testing documentation`_"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ce2d9607_6590194e","line":356,"updated":"2026-02-25 20:04:52.000000000","message":"its totlla fien to keep these in the refecne but we shoudl remvoe the refecnes to the poc outside of this.","commit_id":"7948a1c8e5cf5e91b8efbed03c4f70d914e23ce1"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"f41c690ad7ea0ab8c05bff5ffb997f5539bf421b","unresolved":false,"context_lines":[{"line_number":353,"context_line":"* Selenium POC implementation: https://review.opendev.org/c/openstack/watcher-dashboard/+/970573"},{"line_number":354,"context_line":"* Playwright POC implementation: https://review.opendev.org/c/openstack/watcher-dashboard/+/970353"},{"line_number":355,"context_line":"* Selenium vs Playwright POC Demo: https://gist.github.com/raukadah/a1fe328770af6ddeb860c255632d1b02"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"**OpenStack References:**"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"* `Django testing documentation`_"}],"source_content_type":"text/x-rst","patch_set":10,"id":"bbd092b8_4f7d2c2a","line":356,"in_reply_to":"ce2d9607_6590194e","updated":"2026-03-19 07:29:53.000000000","message":"Acknowledged","commit_id":"7948a1c8e5cf5e91b8efbed03c4f70d914e23ce1"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"f163b110f673d6196bb0e483c3155c6e72cf88a3","unresolved":true,"context_lines":[{"line_number":251,"context_line":"* Playwright POC implementation: https://review.opendev.org/c/openstack/watcher-dashboard/+/970353"},{"line_number":252,"context_line":"* Selenium vs Playwright POC Demo: https://gist.github.com/raukadah/a1fe328770af6ddeb860c255632d1b02"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"**Playwright vs Selenium: developer perspective**"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"The table summarizes what a Watcher developer will notice when exercising the"},{"line_number":257,"context_line":"Selenium and Playwright POCs against real user flows, without going into"}],"source_content_type":"text/x-rst","patch_set":12,"id":"656a704d_f4d2f8ad","line":254,"updated":"2026-03-25 12:02:44.000000000","message":"I don\u0027t think we should keep this section under References. I would expect only links here. It\u0027s good to have the table in the patchset history, but I would remove it from the final version","commit_id":"a325e348d0872dd3144c8238702e39ebcef01d01"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"08a66284573f74f1c8bbe883de6effa42caf68bf","unresolved":true,"context_lines":[{"line_number":251,"context_line":"* Playwright POC implementation: https://review.opendev.org/c/openstack/watcher-dashboard/+/970353"},{"line_number":252,"context_line":"* Selenium vs Playwright POC Demo: https://gist.github.com/raukadah/a1fe328770af6ddeb860c255632d1b02"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"**Playwright vs Selenium: developer perspective**"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"The table summarizes what a Watcher developer will notice when exercising the"},{"line_number":257,"context_line":"Selenium and Playwright POCs against real user flows, without going into"}],"source_content_type":"text/x-rst","patch_set":12,"id":"cb073ad5_bd9d99c3","line":254,"in_reply_to":"656a704d_f4d2f8ad","updated":"2026-03-26 10:41:47.000000000","message":"Adding patchset history link sounds good.","commit_id":"a325e348d0872dd3144c8238702e39ebcef01d01"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e60973ce89b8798494e2d305d2bc20cfd9db1631","unresolved":true,"context_lines":[{"line_number":251,"context_line":"* Playwright POC implementation: https://review.opendev.org/c/openstack/watcher-dashboard/+/970353"},{"line_number":252,"context_line":"* Selenium vs Playwright POC Demo: https://gist.github.com/raukadah/a1fe328770af6ddeb860c255632d1b02"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"**Playwright vs Selenium: developer perspective**"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"The table summarizes what a Watcher developer will notice when exercising the"},{"line_number":257,"context_line":"Selenium and Playwright POCs against real user flows, without going into"}],"source_content_type":"text/x-rst","patch_set":12,"id":"73ad134e_027dd4e5","line":254,"in_reply_to":"656a704d_f4d2f8ad","updated":"2026-04-14 12:27:25.000000000","message":"correct i asked for this to be remvoed before.\n\nthere shoul be no refece to the poc or any comparison betwen the two in this spec\njust the direction we are takign with a very small refence to seleneitm and howrizong tets in the alternitivs section.\n\nthe refeces esctio nshoudl jsut be urls to external refences and very little additional text.\n\ni woudl dleete everyting form line 254-323","commit_id":"a325e348d0872dd3144c8238702e39ebcef01d01"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"22db8b437410a94c7d0f52b6e91ab250f2072314","unresolved":false,"context_lines":[{"line_number":251,"context_line":"* Playwright POC implementation: https://review.opendev.org/c/openstack/watcher-dashboard/+/970353"},{"line_number":252,"context_line":"* Selenium vs Playwright POC Demo: https://gist.github.com/raukadah/a1fe328770af6ddeb860c255632d1b02"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"**Playwright vs Selenium: developer perspective**"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"The table summarizes what a Watcher developer will notice when exercising the"},{"line_number":257,"context_line":"Selenium and Playwright POCs against real user flows, without going into"}],"source_content_type":"text/x-rst","patch_set":12,"id":"75a35913_4e1c216c","line":254,"in_reply_to":"6b59c657_8786cbdf","updated":"2026-04-16 10:14:16.000000000","message":"I disagree here. I think it\u0027s good to not mention the PoC reviews but the comparison between tools should be clearly documented whether in the spec or in an external referenced doc, so that the reasons to select playwright is more clearly explained and not \"hidden\" in the PS history. Said that, I will not block this patch on that.","commit_id":"a325e348d0872dd3144c8238702e39ebcef01d01"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"9815178af4959bc6026e7b15b5031736c471d2de","unresolved":false,"context_lines":[{"line_number":251,"context_line":"* Playwright POC implementation: https://review.opendev.org/c/openstack/watcher-dashboard/+/970353"},{"line_number":252,"context_line":"* Selenium vs Playwright POC Demo: https://gist.github.com/raukadah/a1fe328770af6ddeb860c255632d1b02"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"**Playwright vs Selenium: developer perspective**"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"The table summarizes what a Watcher developer will notice when exercising the"},{"line_number":257,"context_line":"Selenium and Playwright POCs against real user flows, without going into"}],"source_content_type":"text/x-rst","patch_set":12,"id":"6b59c657_8786cbdf","line":254,"in_reply_to":"73ad134e_027dd4e5","updated":"2026-04-16 04:43:01.000000000","message":"Done","commit_id":"a325e348d0872dd3144c8238702e39ebcef01d01"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"9ff03398fc8c9a69520220464421e5701cc54b78","unresolved":false,"context_lines":[{"line_number":251,"context_line":"* Playwright POC implementation: https://review.opendev.org/c/openstack/watcher-dashboard/+/970353"},{"line_number":252,"context_line":"* Selenium vs Playwright POC Demo: https://gist.github.com/raukadah/a1fe328770af6ddeb860c255632d1b02"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"**Playwright vs Selenium: developer perspective**"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"The table summarizes what a Watcher developer will notice when exercising the"},{"line_number":257,"context_line":"Selenium and Playwright POCs against real user flows, without going into"}],"source_content_type":"text/x-rst","patch_set":12,"id":"06f82b9c_347b9f62","line":254,"in_reply_to":"75a35913_4e1c216c","updated":"2026-04-21 11:17:45.000000000","message":"I have added the comparison summarization under alternative section based last watcher weekly meeting discussion.","commit_id":"a325e348d0872dd3144c8238702e39ebcef01d01"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"b4f65e38c18668f6b47284d59417a13b61566909","unresolved":false,"context_lines":[{"line_number":251,"context_line":"* Playwright POC implementation: https://review.opendev.org/c/openstack/watcher-dashboard/+/970353"},{"line_number":252,"context_line":"* Selenium vs Playwright POC Demo: https://gist.github.com/raukadah/a1fe328770af6ddeb860c255632d1b02"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"**Playwright vs Selenium: developer perspective**"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"The table summarizes what a Watcher developer will notice when exercising the"},{"line_number":257,"context_line":"Selenium and Playwright POCs against real user flows, without going into"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5e104338_37cfcfbc","line":254,"in_reply_to":"cb073ad5_bd9d99c3","updated":"2026-03-26 10:42:01.000000000","message":"Done","commit_id":"a325e348d0872dd3144c8238702e39ebcef01d01"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"cab676511e054f3b3f1c63c55e1cd5668e8d8a73","unresolved":true,"context_lines":[{"line_number":31,"context_line":"and error prone. Many times issues are introduced in the code which got"},{"line_number":32,"context_line":"discovered by users in production."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Below are the current test coverage status:"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* **API Unit Tests**: Only working test type, located in ``test/api_tests/``"},{"line_number":37,"context_line":"* **Dashboard Unit Tests**: No unit tests for dashboard views and forms."},{"line_number":38,"context_line":"* **Integration Tests**: Broken tests in ``test/integration_tests/`` - cannot"},{"line_number":39,"context_line":"  verify UI navigation works correctly."},{"line_number":40,"context_line":"* **No CI Coverage**: Integration tests are not running in CI."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Use Cases"},{"line_number":43,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"53aa5540_e93b9d85","line":40,"range":{"start_line":34,"start_character":0,"end_line":40,"end_character":62},"updated":"2026-04-08 14:48:40.000000000","message":"this text is duplicating the content from the first paragraph, we should keep this simple","commit_id":"091ee39e0d55e8783771345006527f6594df500e"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"d5f80dcd22640f29ac9ede21d449cdf00547d737","unresolved":false,"context_lines":[{"line_number":31,"context_line":"and error prone. Many times issues are introduced in the code which got"},{"line_number":32,"context_line":"discovered by users in production."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Below are the current test coverage status:"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* **API Unit Tests**: Only working test type, located in ``test/api_tests/``"},{"line_number":37,"context_line":"* **Dashboard Unit Tests**: No unit tests for dashboard views and forms."},{"line_number":38,"context_line":"* **Integration Tests**: Broken tests in ``test/integration_tests/`` - cannot"},{"line_number":39,"context_line":"  verify UI navigation works correctly."},{"line_number":40,"context_line":"* **No CI Coverage**: Integration tests are not running in CI."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Use Cases"},{"line_number":43,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ea1cb7c3_ac83751e","line":40,"range":{"start_line":34,"start_character":0,"end_line":40,"end_character":62},"in_reply_to":"53aa5540_e93b9d85","updated":"2026-04-09 06:05:43.000000000","message":"Done","commit_id":"091ee39e0d55e8783771345006527f6594df500e"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"cab676511e054f3b3f1c63c55e1cd5668e8d8a73","unresolved":true,"context_lines":[{"line_number":42,"context_line":"Use Cases"},{"line_number":43,"context_line":"---------"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"**As a Watcher Dashboard Developer**, I want to write unit and end to end"},{"line_number":46,"context_line":"integration tests alongside my UI features so that I can verify my changes"},{"line_number":47,"context_line":"work correctly and get automated feedback from CI. Reviewers can easily"},{"line_number":48,"context_line":"validate my code without manual browser testing."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":13,"id":"c3d6c838_56a85d64","line":48,"range":{"start_line":45,"start_character":0,"end_line":48,"end_character":48},"updated":"2026-04-08 14:48:40.000000000","message":"nit: you could split in 2 here, one from developer pov and other from reviewer point of view","commit_id":"091ee39e0d55e8783771345006527f6594df500e"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"d5f80dcd22640f29ac9ede21d449cdf00547d737","unresolved":false,"context_lines":[{"line_number":42,"context_line":"Use Cases"},{"line_number":43,"context_line":"---------"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"**As a Watcher Dashboard Developer**, I want to write unit and end to end"},{"line_number":46,"context_line":"integration tests alongside my UI features so that I can verify my changes"},{"line_number":47,"context_line":"work correctly and get automated feedback from CI. Reviewers can easily"},{"line_number":48,"context_line":"validate my code without manual browser testing."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":13,"id":"876efdc1_c13affc0","line":48,"range":{"start_line":45,"start_character":0,"end_line":48,"end_character":48},"in_reply_to":"c3d6c838_56a85d64","updated":"2026-04-09 06:05:43.000000000","message":"Done","commit_id":"091ee39e0d55e8783771345006527f6594df500e"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"cab676511e054f3b3f1c63c55e1cd5668e8d8a73","unresolved":true,"context_lines":[{"line_number":48,"context_line":"validate my code without manual browser testing."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Proposed change"},{"line_number":52,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Watcher Dashboard will reorganize testing so CI and reviewers get reliable"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9a037ff5_2a4437fa","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":15},"updated":"2026-04-08 14:48:40.000000000","message":"I would include at least a single paragraph mentioning why Playwright was the choice here. We only have in Alternatives mention why the other weren\u0027t selected.","commit_id":"091ee39e0d55e8783771345006527f6594df500e"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"d5f80dcd22640f29ac9ede21d449cdf00547d737","unresolved":false,"context_lines":[{"line_number":48,"context_line":"validate my code without manual browser testing."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Proposed change"},{"line_number":52,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Watcher Dashboard will reorganize testing so CI and reviewers get reliable"}],"source_content_type":"text/x-rst","patch_set":13,"id":"0a5527db_02cab501","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":15},"in_reply_to":"9a037ff5_2a4437fa","updated":"2026-04-09 06:05:43.000000000","message":"Done","commit_id":"091ee39e0d55e8783771345006527f6594df500e"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"cab676511e054f3b3f1c63c55e1cd5668e8d8a73","unresolved":true,"context_lines":[{"line_number":214,"context_line":"* Implement and maintain Playwright-based integration tests and tox targets"},{"line_number":215,"context_line":"* Add ``playwright`` to global requirements and upper-constraints where needed"},{"line_number":216,"context_line":"* Add Zuul jobs for new test targets with HTML reporting"},{"line_number":217,"context_line":"* Create contributor testing documentation"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"Dependencies"},{"line_number":220,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":13,"id":"b52641fd_c8b522a2","line":217,"range":{"start_line":217,"start_character":2,"end_line":217,"end_character":42},"updated":"2026-04-08 14:48:40.000000000","message":"I would say that this update is very important, to also mention that new features added would require implementation of integration tests to validate them. But the would need to agree on that approach first.","commit_id":"091ee39e0d55e8783771345006527f6594df500e"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"d5f80dcd22640f29ac9ede21d449cdf00547d737","unresolved":false,"context_lines":[{"line_number":214,"context_line":"* Implement and maintain Playwright-based integration tests and tox targets"},{"line_number":215,"context_line":"* Add ``playwright`` to global requirements and upper-constraints where needed"},{"line_number":216,"context_line":"* Add Zuul jobs for new test targets with HTML reporting"},{"line_number":217,"context_line":"* Create contributor testing documentation"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"Dependencies"},{"line_number":220,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":13,"id":"b2eb2dfa_844d6a45","line":217,"range":{"start_line":217,"start_character":2,"end_line":217,"end_character":42},"in_reply_to":"b52641fd_c8b522a2","updated":"2026-04-09 06:05:43.000000000","message":"Done","commit_id":"091ee39e0d55e8783771345006527f6594df500e"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"b5419d0309a6948e4f9515e514156407b97066ea","unresolved":true,"context_lines":[{"line_number":60,"context_line":"data from ``test/test_data/``; they do not need a running Watcher service or a"},{"line_number":61,"context_line":"browser. Integration tests will drive a real browser against a deployed stack"},{"line_number":62,"context_line":"(for example DevStack with Watcher and Horizon), including headless runs in CI,"},{"line_number":63,"context_line":"to validate full UI workflows."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"In-tree proof-of-concept work already compared browser automation options; this"},{"line_number":66,"context_line":"specification adopts **Playwright** for integration tests. Playwright was"}],"source_content_type":"text/x-rst","patch_set":14,"id":"1f50a665_34c3e3fa","line":63,"updated":"2026-04-14 12:23:42.000000000","message":"The entire point of integration tests is to test whether the entire stack works properly -- that includes all the APIs the application depends on, and the browser. If you are mocking the API calls, you are not doing integration testing.","commit_id":"a4382431a516be03577ba04a77998a8670a4759c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e60973ce89b8798494e2d305d2bc20cfd9db1631","unresolved":true,"context_lines":[{"line_number":60,"context_line":"data from ``test/test_data/``; they do not need a running Watcher service or a"},{"line_number":61,"context_line":"browser. Integration tests will drive a real browser against a deployed stack"},{"line_number":62,"context_line":"(for example DevStack with Watcher and Horizon), including headless runs in CI,"},{"line_number":63,"context_line":"to validate full UI workflows."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"In-tree proof-of-concept work already compared browser automation options; this"},{"line_number":66,"context_line":"specification adopts **Playwright** for integration tests. Playwright was"}],"source_content_type":"text/x-rst","patch_set":14,"id":"e043df5b_0e0151af","line":63,"in_reply_to":"1f50a665_34c3e3fa","updated":"2026-04-14 12:27:25.000000000","message":"correct you are miss readign what this says.\nthe unit test and fucntional test will use mock/fixture the itnegration tests wont\nand will run aginst devstack.","commit_id":"a4382431a516be03577ba04a77998a8670a4759c"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"9815178af4959bc6026e7b15b5031736c471d2de","unresolved":true,"context_lines":[{"line_number":60,"context_line":"data from ``test/test_data/``; they do not need a running Watcher service or a"},{"line_number":61,"context_line":"browser. Integration tests will drive a real browser against a deployed stack"},{"line_number":62,"context_line":"(for example DevStack with Watcher and Horizon), including headless runs in CI,"},{"line_number":63,"context_line":"to validate full UI workflows."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"In-tree proof-of-concept work already compared browser automation options; this"},{"line_number":66,"context_line":"specification adopts **Playwright** for integration tests. Playwright was"}],"source_content_type":"text/x-rst","patch_set":14,"id":"a65c2ac6_03b27969","line":63,"in_reply_to":"dea13c11_defdced4","updated":"2026-04-16 04:43:01.000000000","message":"Thank you Radomir for reviewing the spec. I have rewritten the integration and unit tests paragraph. I hope it clears the wording. Thank you!","commit_id":"a4382431a516be03577ba04a77998a8670a4759c"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"b9a3070bf3a37bce2f1134bd305b75a916671cf2","unresolved":true,"context_lines":[{"line_number":60,"context_line":"data from ``test/test_data/``; they do not need a running Watcher service or a"},{"line_number":61,"context_line":"browser. Integration tests will drive a real browser against a deployed stack"},{"line_number":62,"context_line":"(for example DevStack with Watcher and Horizon), including headless runs in CI,"},{"line_number":63,"context_line":"to validate full UI workflows."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"In-tree proof-of-concept work already compared browser automation options; this"},{"line_number":66,"context_line":"specification adopts **Playwright** for integration tests. Playwright was"}],"source_content_type":"text/x-rst","patch_set":14,"id":"dea13c11_defdced4","line":63,"in_reply_to":"e043df5b_0e0151af","updated":"2026-04-14 13:07:46.000000000","message":"Perhaps it could be expressed more clearly?","commit_id":"a4382431a516be03577ba04a77998a8670a4759c"}]}
