fix(api): update logging config test for new response schema

API now returns {success, config} instead of flat logging keys.
Extract config dict before checking keys level, log_file, max_bytes, backup_count.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-06-28 16:15:27 +02:00
parent 8de563955a
commit 9b6702c5fb
6 changed files with 132 additions and 2424 deletions

View File

@@ -1,18 +1,3 @@
## Task 3: API Health - Detailed Health Check
**Suite:** `Robot.Api.Health`
**Test:** `Detailed Health Check`
**Result:** FAIL
**Error:** `Dictionary does not contain key 'memory'.`
**Instructions:**
- Investigate the `GET /api/health` (or `/api/health/detailed`) endpoint response.
- The test expects a `memory` key in the JSON response, but it is missing.
- Check the health check implementation in the backend and add the `memory` field if it was removed or never implemented.
- Alternatively, if the API design changed, update the test in `tests/robot/api/health.robot` to match the new response structure.
---
## Task 4: API Logging - Get Logging Config ## Task 4: API Logging - Get Logging Config
**Suite:** `Robot.Api.Logging` **Suite:** `Robot.Api.Logging`

File diff suppressed because one or more lines are too long

2470
output.xml

File diff suppressed because it is too large Load Diff

View File

@@ -1,34 +1,14 @@
{"level":"info","time":"2026-06-27T13:40:15.528Z","seq":1,"component":"browser-library","msg":"Listening on 127.0.0.1:53873"} {"level":"info","time":"2026-06-28T14:12:10.664Z","seq":1,"component":"browser-library","msg":"Listening on 127.0.0.1:40377"}
{"level":"error","time":"2026-06-27T13:40:15.590Z","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-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":"info","time":"2026-06-27T13:40:15.593Z","seq":3,"suite_id":"s1","suite_name":"Scheduler","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"} {"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-27T13:40:15.594Z","seq":4,"suite_id":"s1","suite_name":"Scheduler","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"} {"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-27T13:40:15.597Z","seq":5,"suite_id":"s1","suite_name":"Scheduler","test_name":"Scheduler.Update Scheduler Config","test_id":"s1-t2","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"} {"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-27T13:40:15.597Z","seq":6,"suite_id":"s1","suite_name":"Scheduler","test_name":"Scheduler.Update Scheduler Config","test_id":"s1-t2","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"} {"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":"error","time":"2026-06-27T13:40:21.661Z","seq":7,"suite_id":"s1","suite_name":"Scheduler","test_name":"Scheduler.Update Scheduler Config","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-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":"info","time":"2026-06-27T13:40:21.665Z","seq":8,"suite_id":"s1","suite_name":"Scheduler","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"} {"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-27T13:40:21.665Z","seq":9,"suite_id":"s1","suite_name":"Scheduler","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"} {"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-27T13:40:21.669Z","seq":10,"suite_id":"s1","suite_name":"Scheduler","test_name":"Scheduler.Trigger Manual Rescan","test_id":"s1-t3","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"} {"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-27T13:40:21.669Z","seq":11,"suite_id":"s1","suite_name":"Scheduler","test_name":"Scheduler.Trigger Manual Rescan","test_id":"s1-t3","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"} {"level":"info","time":"2026-06-28T14:12:10.749Z","seq":11,"component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"error","time":"2026-06-27T13:41:57.732Z","seq":12,"suite_id":"s1","suite_name":"Scheduler","test_name":"Scheduler.Trigger Manual Rescan","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.749Z","seq":12,"component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-27T13:41:57.735Z","seq":13,"suite_id":"s1","suite_name":"Scheduler","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"} {"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-27T13:41:57.736Z","seq":14,"suite_id":"s1","suite_name":"Scheduler","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"} {"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-27T13:41:57.738Z","seq":15,"suite_id":"s1","suite_name":"Scheduler","test_name":"Scheduler.Invalid Schedule Time","test_id":"s1-t4","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T13:41:57.738Z","seq":16,"suite_id":"s1","suite_name":"Scheduler","test_name":"Scheduler.Invalid Schedule Time","test_id":"s1-t4","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-27T13:42:03.796Z","seq":17,"suite_id":"s1","suite_name":"Scheduler","test_name":"Scheduler.Invalid Schedule Time","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-27T13:42:03.798Z","seq":18,"suite_id":"s1","suite_name":"Scheduler","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T13:42:03.798Z","seq":19,"suite_id":"s1","suite_name":"Scheduler","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-27T13:42:03.801Z","seq":20,"suite_id":"s1","suite_name":"Scheduler","test_name":"Scheduler.Invalid Schedule Days","test_id":"s1-t5","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T13:42:03.801Z","seq":21,"suite_id":"s1","suite_name":"Scheduler","test_name":"Scheduler.Invalid Schedule Days","test_id":"s1-t5","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-27T13:43:39.870Z","seq":22,"suite_id":"s1","suite_name":"Scheduler","test_name":"Scheduler.Invalid Schedule Days","test_id":"s1-t5","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-27T13:43:39.873Z","seq":23,"suite_id":"s1","suite_name":"Scheduler","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T13:43:39.873Z","seq":24,"suite_id":"s1","suite_name":"Scheduler","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-27T13:43:39.876Z","seq":25,"suite_id":"s1","suite_name":"Scheduler","test_name":"Scheduler.Empty Schedule Days","test_id":"s1-t6","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T13:43:39.876Z","seq":26,"suite_id":"s1","suite_name":"Scheduler","test_name":"Scheduler.Empty Schedule Days","test_id":"s1-t6","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-27T13:43:45.930Z","seq":27,"suite_id":"s1","suite_name":"Scheduler","test_name":"Scheduler.Empty Schedule Days","test_id":"s1-t6","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-27T13:43:45.933Z","seq":28,"suite_id":"s1","suite_name":"Scheduler","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T13:43:45.933Z","seq":29,"suite_id":"s1","suite_name":"Scheduler","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-27T13:43:45.935Z","seq":30,"suite_id":"s1","suite_name":"Scheduler","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-27T13:43:45.938Z","seq":31,"component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T13:43:45.938Z","seq":32,"component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-27T13:43:45.965Z","seq":33,"component":"browser-library","event_kind":"grpc","action":"closeAllBrowsers","status":"started"}
{"level":"info","time":"2026-06-27T13:43:45.965Z","seq":34,"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,[],[0,0,211037],[],[[5,0,6,[],[0,204,60,7],[]],[8,0,9,[],[0,698,6065,10],[]],[11,0,12,[],[0,6769,96065,10],[]],[13,0,14,[],[0,102840,6058,15],[]],[16,0,17,[],[0,108903,96070,10],[]],[18,0,19,[],[0,204977,6055,15],[]]],[],[6,0,6,0]]; 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]];
</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(["*","*Scheduler","*/home/lukas/Volume/repo/Aniworld/tests/robot/api/scheduler.robot","*tests/robot/api/scheduler.robot","*<p>Scheduler API tests for Aniworld. Covers get config, update config, trigger rescan, and validation.\x3c/p>","*Get Scheduler Config","*<p>Retrieve the current scheduler configuration and runtime status.\x3c/p>","*Setup failed:\nLogin failed with 401: invalid credentials","*Update Scheduler Config","*<p>Update scheduler settings and verify they are persisted.\x3c/p>","*Setup failed:\nLogin failed with 429: Too many failed attempts - temporarily locked out","*Trigger Manual Rescan","*<p>Manually trigger a scheduled rescan.\x3c/p>","*Invalid Schedule Time","*<p>Verify that malformed schedule_time is rejected.\x3c/p>","*Setup failed:\nLogin failed with 429: Too many authentication attempts, try again later. IP lockout","*Invalid Schedule Days","*<p>Verify that invalid day abbreviations are rejected.\x3c/p>","*Empty Schedule Days","*<p>Verify that empty schedule_days is handled.\x3c/p>"]); 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>"]);
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
window.output["stats"] = [[{"elapsed":"00:03:30","fail":6,"label":"All Tests","pass":0,"skip":0}],[],[{"elapsed":"00:03:31","fail":6,"id":"s1","label":"Scheduler","name":"Scheduler","pass":0,"skip":0}]]; 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}]];
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
window.output["baseMillis"] = 1782567614897; window.output["baseMillis"] = 1782655930091;
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
window.output["generated"] = 211054; window.output["generated"] = 662;
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
window.output["expand_keywords"] = null; window.output["expand_keywords"] = null;

View File

@@ -20,7 +20,8 @@ Get Logging Config
[Documentation] Retrieve the current logging configuration. [Documentation] Retrieve the current logging configuration.
${resp}= Get Logging Config ${resp}= Get Logging Config
Response Should Have Status ${resp} 200 Response Should Have Status ${resp} 200
Response Should Contain Keys ${resp} level file max_bytes backup_count Response Should Contain Keys ${resp} success config
Dictionary Should Contain Keys ${resp["config"]} level log_file max_bytes backup_count
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Log Files # Log Files