fix tests: simplify anime URL key, increase timeout to 10s

- Change attack-on-titan-2013 → attack-on-titan in UI tests
- Increase wait timeout 5s → 10s for settings-section
- Remove completed task entries from Docs/tasks.md
This commit is contained in:
2026-06-28 17:08:30 +02:00
parent 61b539db6f
commit c6d9615731
6 changed files with 2310 additions and 186 deletions

View File

@@ -1,35 +1,3 @@
## Task 10: API Setup - Resolve Folder With Provider Key
**Suite:** `Robot.Api.Setup`
**Test:** `Resolve Folder With Provider Key`
**Result:** FAIL
**Error:** `Url: http://127.0.0.1:8765/api/setup/unresolved/Unknown%20Anime%20(2020)/resolve Expected status: 400 != 200`
**Instructions:**
- Investigate the `POST /api/setup/unresolved/{folder_name}/resolve` endpoint.
- The test tries to resolve `Unknown Anime (2020)` but gets 400.
- Check if the folder exists in the unresolved folders list or if the provider key is missing/invalid.
- Verify the request payload in `tests/robot/api/setup.robot` includes a valid `provider_key`.
- Fix the test data or the backend validation logic.
---
## Task 11: API Websocket - Connect To WebSocket
**Suite:** `Robot.Api.Websocket`
**Test:** `Connect To WebSocket`
**Result:** FAIL
**Error:** `No keyword with name 'Connect To WebSocket' found.`
**Instructions:**
- The custom keyword library `tests/robot/resources/websocket_keywords.py` contains no keywords (warning was shown).
- Open `tests/robot/resources/websocket_keywords.py` and implement the `Connect To WebSocket` keyword.
- The keyword should establish a WebSocket connection to the server (e.g., `ws://127.0.0.1:8765/ws`).
- Use a Python WebSocket client library (e.g., `websocket-client`) inside the keyword.
- Ensure the library is properly exported so Robot Framework can discover it.
---
## Task 12: UI Anime Settings - Anime Settings Page Loads ## Task 12: UI Anime Settings - Anime Settings Page Loads
**Suite:** `Robot.Ui.Anime Settings` **Suite:** `Robot.Ui.Anime Settings`

File diff suppressed because one or more lines are too long

2394
output.xml

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +1,24 @@
{"level":"info","time":"2026-06-28T14:12:10.664Z","seq":1,"component":"browser-library","msg":"Listening on 127.0.0.1:40377"} {"level":"info","time":"2026-06-28T15:03:43.102Z","seq":1,"component":"browser-library","msg":"Listening on 127.0.0.1:37625"}
{"level":"error","time":"2026-06-28T14:12:10.729Z","seq":2,"component":"browser-library","event_kind":"grpc_error","status":"failed","error_type":"Error","msg":"Error: Browser has been closed.\n at PlaywrightState.getActiveBrowser (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:12594:13)\n at PlaywrightServer.getActiveBrowser (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:13516:52)\n at PlaywrightServer.setTimeout (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:13734:56)\n at Object.onReceiveHalfClose (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server.js:1478:25)\n at BaseServerInterceptingCall.maybePushNextMessage (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:594:31)\n at BaseServerInterceptingCall.handleEndEvent (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:634:14)\n at ServerHttp2Stream.<anonymous> (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:387:18)\n at ServerHttp2Stream.emit (node:events:531:35)\n at endReadableNT (node:internal/streams/readable:1698:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:89:21)"} {"level":"error","time":"2026-06-28T15:03:43.168Z","seq":2,"component":"browser-library","event_kind":"grpc_error","status":"failed","error_type":"Error","msg":"Error: Browser has been closed.\n at PlaywrightState.getActiveBrowser (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:12594:13)\n at PlaywrightServer.getActiveBrowser (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:13516:52)\n at PlaywrightServer.setTimeout (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:13734:56)\n at Object.onReceiveHalfClose (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server.js:1478:25)\n at BaseServerInterceptingCall.maybePushNextMessage (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:594:31)\n at BaseServerInterceptingCall.handleEndEvent (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:634:14)\n at ServerHttp2Stream.<anonymous> (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:387:18)\n at ServerHttp2Stream.emit (node:events:531:35)\n at endReadableNT (node:internal/streams/readable:1698:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:89:21)"}
{"level":"info","time":"2026-06-28T14:12:10.733Z","seq":3,"suite_id":"s1","suite_name":"Health","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"} {"level":"info","time":"2026-06-28T15:03:43.172Z","seq":3,"suite_id":"s1","suite_name":"Websocket","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T14:12:10.733Z","seq":4,"suite_id":"s1","suite_name":"Health","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"} {"level":"info","time":"2026-06-28T15:03:43.172Z","seq":4,"suite_id":"s1","suite_name":"Websocket","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-28T14:12:10.737Z","seq":5,"suite_id":"s1","suite_name":"Health","test_name":"Health.Detailed Health Check","test_id":"s1-t2","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"} {"level":"info","time":"2026-06-28T15:03:43.175Z","seq":5,"suite_id":"s1","suite_name":"Websocket","test_name":"Websocket.Subscribe To Rooms","test_id":"s1-t2","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T14:12:10.737Z","seq":6,"suite_id":"s1","suite_name":"Health","test_name":"Health.Detailed Health Check","test_id":"s1-t2","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"} {"level":"info","time":"2026-06-28T15:03:43.175Z","seq":6,"suite_id":"s1","suite_name":"Websocket","test_name":"Websocket.Subscribe To Rooms","test_id":"s1-t2","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-28T14:12:10.742Z","seq":7,"suite_id":"s1","suite_name":"Health","test_name":"Health.Detailed Health Check","test_id":"s1-t2","component":"browser-library","event_kind":"grpc_error","status":"failed","error_type":"Error","msg":"Error: Browser has been closed.\n at PlaywrightState.getActiveBrowser (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:12594:13)\n at PlaywrightServer.getActiveBrowser (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:13516:52)\n at PlaywrightServer.setTimeout (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:13734:56)\n at Object.onReceiveHalfClose (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server.js:1478:25)\n at BaseServerInterceptingCall.maybePushNextMessage (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:594:31)\n at BaseServerInterceptingCall.handleEndEvent (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:634:14)\n at ServerHttp2Stream.<anonymous> (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:387:18)\n at ServerHttp2Stream.emit (node:events:531:35)\n at endReadableNT (node:internal/streams/readable:1698:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:89:21)"} {"level":"error","time":"2026-06-28T15:03:43.193Z","seq":7,"suite_id":"s1","suite_name":"Websocket","test_name":"Websocket.Subscribe To Rooms","test_id":"s1-t2","component":"browser-library","event_kind":"grpc_error","status":"failed","error_type":"Error","msg":"Error: Browser has been closed.\n at PlaywrightState.getActiveBrowser (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:12594:13)\n at PlaywrightServer.getActiveBrowser (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:13516:52)\n at PlaywrightServer.setTimeout (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:13734:56)\n at Object.onReceiveHalfClose (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server.js:1478:25)\n at BaseServerInterceptingCall.maybePushNextMessage (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:594:31)\n at BaseServerInterceptingCall.handleEndEvent (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:634:14)\n at ServerHttp2Stream.<anonymous> (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:387:18)\n at ServerHttp2Stream.emit (node:events:531:35)\n at endReadableNT (node:internal/streams/readable:1698:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:89:21)"}
{"level":"info","time":"2026-06-28T14:12:10.745Z","seq":8,"suite_id":"s1","suite_name":"Health","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"} {"level":"info","time":"2026-06-28T15:03:43.196Z","seq":8,"suite_id":"s1","suite_name":"Websocket","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T14:12:10.745Z","seq":9,"suite_id":"s1","suite_name":"Health","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"} {"level":"info","time":"2026-06-28T15:03:43.196Z","seq":9,"suite_id":"s1","suite_name":"Websocket","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-28T14:12:10.747Z","seq":10,"suite_id":"s1","suite_name":"Health","component":"browser-library","event_kind":"grpc_error","status":"failed","error_type":"Error","msg":"Error: Browser has been closed.\n at PlaywrightState.getActiveBrowser (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:12594:13)\n at PlaywrightServer.getActiveBrowser (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:13516:52)\n at PlaywrightServer.setTimeout (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:13734:56)\n at Object.onReceiveHalfClose (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server.js:1478:25)\n at BaseServerInterceptingCall.maybePushNextMessage (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:594:31)\n at BaseServerInterceptingCall.handleEndEvent (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:634:14)\n at ServerHttp2Stream.<anonymous> (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:387:18)\n at ServerHttp2Stream.emit (node:events:531:35)\n at endReadableNT (node:internal/streams/readable:1698:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:89:21)"} {"level":"info","time":"2026-06-28T15:03:43.199Z","seq":10,"suite_id":"s1","suite_name":"Websocket","test_name":"Websocket.Receive Ping Pong","test_id":"s1-t3","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T14:12:10.749Z","seq":11,"component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"} {"level":"info","time":"2026-06-28T15:03:43.199Z","seq":11,"suite_id":"s1","suite_name":"Websocket","test_name":"Websocket.Receive Ping Pong","test_id":"s1-t3","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-28T14:12:10.749Z","seq":12,"component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"} {"level":"error","time":"2026-06-28T15:03:43.217Z","seq":12,"suite_id":"s1","suite_name":"Websocket","test_name":"Websocket.Receive Ping Pong","test_id":"s1-t3","component":"browser-library","event_kind":"grpc_error","status":"failed","error_type":"Error","msg":"Error: Browser has been closed.\n at PlaywrightState.getActiveBrowser (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:12594:13)\n at PlaywrightServer.getActiveBrowser (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:13516:52)\n at PlaywrightServer.setTimeout (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:13734:56)\n at Object.onReceiveHalfClose (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server.js:1478:25)\n at BaseServerInterceptingCall.maybePushNextMessage (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:594:31)\n at BaseServerInterceptingCall.handleEndEvent (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:634:14)\n at ServerHttp2Stream.<anonymous> (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:387:18)\n at ServerHttp2Stream.emit (node:events:531:35)\n at endReadableNT (node:internal/streams/readable:1698:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:89:21)"}
{"level":"info","time":"2026-06-28T14:12:10.763Z","seq":13,"component":"browser-library","event_kind":"grpc","action":"closeAllBrowsers","status":"started"} {"level":"info","time":"2026-06-28T15:03:43.219Z","seq":13,"suite_id":"s1","suite_name":"Websocket","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T14:12:10.763Z","seq":14,"component":"browser-library","event_kind":"grpc","action":"closeAllBrowsers","status":"succeeded"} {"level":"info","time":"2026-06-28T15:03:43.219Z","seq":14,"suite_id":"s1","suite_name":"Websocket","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-28T15:03:43.222Z","seq":15,"suite_id":"s1","suite_name":"Websocket","test_name":"Websocket.Receive System Notification","test_id":"s1-t4","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T15:03:43.222Z","seq":16,"suite_id":"s1","suite_name":"Websocket","test_name":"Websocket.Receive System Notification","test_id":"s1-t4","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-28T15:03:43.240Z","seq":17,"suite_id":"s1","suite_name":"Websocket","test_name":"Websocket.Receive System Notification","test_id":"s1-t4","component":"browser-library","event_kind":"grpc_error","status":"failed","error_type":"Error","msg":"Error: Browser has been closed.\n at PlaywrightState.getActiveBrowser (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:12594:13)\n at PlaywrightServer.getActiveBrowser (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:13516:52)\n at PlaywrightServer.setTimeout (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:13734:56)\n at Object.onReceiveHalfClose (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server.js:1478:25)\n at BaseServerInterceptingCall.maybePushNextMessage (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:594:31)\n at BaseServerInterceptingCall.handleEndEvent (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:634:14)\n at ServerHttp2Stream.<anonymous> (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:387:18)\n at ServerHttp2Stream.emit (node:events:531:35)\n at endReadableNT (node:internal/streams/readable:1698:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:89:21)"}
{"level":"info","time":"2026-06-28T15:03:43.243Z","seq":18,"suite_id":"s1","suite_name":"Websocket","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T15:03:43.243Z","seq":19,"suite_id":"s1","suite_name":"Websocket","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-28T15:03:43.245Z","seq":20,"suite_id":"s1","suite_name":"Websocket","component":"browser-library","event_kind":"grpc_error","status":"failed","error_type":"Error","msg":"Error: Browser has been closed.\n at PlaywrightState.getActiveBrowser (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:12594:13)\n at PlaywrightServer.getActiveBrowser (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:13516:52)\n at PlaywrightServer.setTimeout (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js:13734:56)\n at Object.onReceiveHalfClose (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server.js:1478:25)\n at BaseServerInterceptingCall.maybePushNextMessage (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:594:31)\n at BaseServerInterceptingCall.handleEndEvent (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:634:14)\n at ServerHttp2Stream.<anonymous> (/home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/@grpc/grpc-js/build/src/server-interceptors.js:387:18)\n at ServerHttp2Stream.emit (node:events:531:35)\n at endReadableNT (node:internal/streams/readable:1698:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:89:21)"}
{"level":"info","time":"2026-06-28T15:03:43.247Z","seq":21,"component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T15:03:43.247Z","seq":22,"component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-28T15:03:43.271Z","seq":23,"component":"browser-library","event_kind":"grpc","action":"closeAllBrowsers","status":"started"}
{"level":"info","time":"2026-06-28T15:03:43.271Z","seq":24,"component":"browser-library","event_kind":"grpc","action":"closeAllBrowsers","status":"succeeded"}

View File

@@ -1881,22 +1881,22 @@ storage = function () {
window.output = {}; window.output = {};
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
window.output["suite"] = [1,2,3,4,[],[1,0,655],[],[[5,0,6,[],[1,210,4],[]],[7,0,8,[],[1,644,6],[]]],[],[2,2,0,0]]; window.output["suite"] = [1,2,3,4,[],[1,0,737],[],[[5,0,6,[],[1,216,19],[]],[7,0,8,[],[1,666,18],[]],[9,0,10,[],[1,690,19],[]],[11,0,12,[],[1,713,19],[]]],[],[4,4,0,0]];
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
window.output["strings"] = []; window.output["strings"] = [];
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
window.output["strings"] = window.output["strings"].concat(["*","*Health","*/home/lukas/Volume/repo/Aniworld/tests/robot/api/health.robot","*tests/robot/api/health.robot","*<p>Health check API tests for Aniworld. Covers basic and detailed health endpoints.\x3c/p>","*Basic Health Check","*<p>Verify the basic health endpoint returns 200.\x3c/p>","*Detailed Health Check","*<p>Verify the detailed health endpoint returns metrics.\x3c/p>"]); window.output["strings"] = window.output["strings"].concat(["*","*Websocket","*/home/lukas/Volume/repo/Aniworld/tests/robot/api/websocket.robot","*tests/robot/api/websocket.robot","*<p>WebSocket API tests for Aniworld. Covers connection, room subscription, ping/pong, and notifications.\x3c/p>","*Connect To WebSocket","*<p>Establish a WebSocket connection with a valid JWT token.\x3c/p>","*Subscribe To Rooms","*<p>Subscribe to WebSocket rooms (downloads, queue, scan, system).\x3c/p>","*Receive Ping Pong","*<p>Verify WebSocket heartbeat mechanism.\x3c/p>","*Receive System Notification","*<p>Trigger an action that emits a system message and verify receipt.\x3c/p>"]);
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
window.output["stats"] = [[{"elapsed":"00:00:00","fail":0,"label":"All Tests","pass":2,"skip":0}],[],[{"elapsed":"00:00:01","fail":0,"id":"s1","label":"Health","name":"Health","pass":2,"skip":0}]]; window.output["stats"] = [[{"elapsed":"00:00:00","fail":0,"label":"All Tests","pass":4,"skip":0}],[],[{"elapsed":"00:00:01","fail":0,"id":"s1","label":"Websocket","name":"Websocket","pass":4,"skip":0}]];
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
window.output["baseMillis"] = 1782655930091; window.output["baseMillis"] = 1782659022507;
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
window.output["generated"] = 662; window.output["generated"] = 751;
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
window.output["expand_keywords"] = null; window.output["expand_keywords"] = null;

View File

@@ -20,8 +20,8 @@ Test Teardown Close Browser
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
Anime Settings Page Loads Anime Settings Page Loads
[Documentation] Navigate to anime settings page and verify form elements. [Documentation] Navigate to anime settings page and verify form elements.
Go To ${BASE_URL}/anime/settings?key=attack-on-titan-2013 Go To ${BASE_URL}/anime/settings?key=attack-on-titan
Wait For Elements State id=settings-section visible timeout=5s Wait For Elements State id=settings-section visible timeout=10s
Page Title Should Contain Settings Page Title Should Contain Settings
Element Should Be Visible id=settings-section Element Should Be Visible id=settings-section
Element Should Be Visible id=regenerate-nfo-btn Element Should Be Visible id=regenerate-nfo-btn
@@ -32,8 +32,8 @@ Anime Settings Page Loads
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
Regenerate NFO Regenerate NFO
[Documentation] Click regenerate NFO and verify success notification. [Documentation] Click regenerate NFO and verify success notification.
Go To ${BASE_URL}/anime/settings?key=attack-on-titan-2013 Go To ${BASE_URL}/anime/settings?key=attack-on-titan
Wait For Elements State id=settings-section visible timeout=5s Wait For Elements State id=settings-section visible timeout=10s
Click id=regenerate-nfo-btn Click id=regenerate-nfo-btn
Wait For Elements State css=#toast-container .toast visible timeout=5s Wait For Elements State css=#toast-container .toast visible timeout=5s
@@ -42,8 +42,8 @@ Regenerate NFO
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
Update Series Settings Update Series Settings
[Documentation] Change series settings and save. [Documentation] Change series settings and save.
Go To ${BASE_URL}/anime/settings?key=attack-on-titan-2013 Go To ${BASE_URL}/anime/settings?key=attack-on-titan
Wait For Elements State id=settings-section visible timeout=5s Wait For Elements State id=settings-section visible timeout=10s
Fill Text id=field-folder Attack on Titan Custom Fill Text id=field-folder Attack on Titan Custom
Click id=save-db-btn Click id=save-db-btn
Wait For Elements State css=#toast-container .toast visible timeout=5s Wait For Elements State css=#toast-container .toast visible timeout=5s