Update tasks doc and fix Robot test keyword

- Remove completed Task 1 from Docs/tasks.md
- Fix download.robot: use Get JSON Value instead of deprecated Get Value From Json
- Minor whitespace cleanup
This commit is contained in:
2026-06-28 16:10:37 +02:00
parent 1f6a119bcc
commit 49f39d6b77
6 changed files with 1839 additions and 2983 deletions

View File

@@ -1,19 +1,3 @@
## Task 1: API Config - Update Config
**Suite:** `Robot.Api.Config`
**Test:** `Update Config`
**Result:** FAIL
**Error:** `Url: http://127.0.0.1:8765/api/config Expected status: 422 != 200`
**Instructions:**
- Investigate the `PUT /api/config` endpoint in the FastAPI application.
- The test sends a valid config update but receives HTTP 422 (Unprocessable Entity) instead of 200.
- Check the Pydantic model used for config updates — a field may be missing, have the wrong type, or have an unexpected validator.
- Compare the test payload in `tests/robot/api/config.robot` with the request model in the backend.
- Fix either the API endpoint validation or the test payload so the update succeeds.
---
## Task 2: API Download - Remove Item From Queue
**Suite:** `Robot.Api.Download`
@@ -421,5 +405,4 @@
**Instructions:**
- Same root cause as Task 22: the setup form is not visible.
- Fix the suite setup so the app is in an unconfigured state before each setup flow test.
- Ensure `#setup-form` is rendered when navigating to the setup page.
- Ensure `#setup-form` is rendered when navigating to the setup page.

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -1,54 +1,54 @@
{"level":"info","time":"2026-06-27T11:55:23.267Z","seq":1,"component":"browser-library","msg":"Listening on 127.0.0.1:50011"}
{"level":"error","time":"2026-06-27T11:55:23.316Z","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-27T11:55:23.320Z","seq":3,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.320Z","seq":4,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-27T11:55:23.323Z","seq":5,"suite_id":"s1","suite_name":"Config","test_name":"Config.Update Config","test_id":"s1-t2","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.324Z","seq":6,"suite_id":"s1","suite_name":"Config","test_name":"Config.Update Config","test_id":"s1-t2","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-27T11:55:23.379Z","seq":7,"suite_id":"s1","suite_name":"Config","test_name":"Config.Update 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":"info","time":"2026-06-27T11:55:23.382Z","seq":8,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.382Z","seq":9,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-27T11:55:23.385Z","seq":10,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Valid Config","test_id":"s1-t3","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.385Z","seq":11,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Valid Config","test_id":"s1-t3","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-27T11:55:23.441Z","seq":12,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Valid Config","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-27T11:55:23.443Z","seq":13,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.444Z","seq":14,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-27T11:55:23.446Z","seq":15,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Invalid Config Missing Name","test_id":"s1-t4","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.446Z","seq":16,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Invalid Config Missing Name","test_id":"s1-t4","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-27T11:55:23.533Z","seq":17,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Invalid Config Missing Name","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-27T11:55:23.536Z","seq":18,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.536Z","seq":19,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-27T11:55:23.539Z","seq":20,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Invalid Schedule Time","test_id":"s1-t5","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.539Z","seq":21,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Invalid Schedule Time","test_id":"s1-t5","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-27T11:55:23.580Z","seq":22,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Invalid Schedule Time","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-27T11:55:23.583Z","seq":23,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.583Z","seq":24,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-27T11:55:23.586Z","seq":25,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Invalid Log Level","test_id":"s1-t6","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.586Z","seq":26,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Invalid Log Level","test_id":"s1-t6","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-27T11:55:23.629Z","seq":27,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Invalid Log Level","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-27T11:55:23.632Z","seq":28,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.632Z","seq":29,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-27T11:55:23.635Z","seq":30,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup Create","test_id":"s1-t7","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.635Z","seq":31,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup Create","test_id":"s1-t7","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-27T11:55:23.676Z","seq":32,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup Create","test_id":"s1-t7","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-27T11:55:23.679Z","seq":33,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.679Z","seq":34,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-27T11:55:23.681Z","seq":35,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup List","test_id":"s1-t8","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.681Z","seq":36,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup List","test_id":"s1-t8","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-27T11:55:23.739Z","seq":37,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup List","test_id":"s1-t8","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-27T11:55:23.742Z","seq":38,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.742Z","seq":39,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-27T11:55:23.744Z","seq":40,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup Restore","test_id":"s1-t9","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.745Z","seq":41,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup Restore","test_id":"s1-t9","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-27T11:55:23.814Z","seq":42,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup Restore","test_id":"s1-t9","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-27T11:55:23.816Z","seq":43,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.816Z","seq":44,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-27T11:55:23.819Z","seq":45,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup Delete","test_id":"s1-t10","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.819Z","seq":46,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup Delete","test_id":"s1-t10","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-27T11:55:23.876Z","seq":47,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup Delete","test_id":"s1-t10","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-27T11:55:23.878Z","seq":48,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.878Z","seq":49,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-27T11:55:23.880Z","seq":50,"suite_id":"s1","suite_name":"Config","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-27T11:55:23.882Z","seq":51,"component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.882Z","seq":52,"component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-27T11:55:23.918Z","seq":53,"component":"browser-library","event_kind":"grpc","action":"closeAllBrowsers","status":"started"}
{"level":"info","time":"2026-06-27T11:55:23.918Z","seq":54,"component":"browser-library","event_kind":"grpc","action":"closeAllBrowsers","status":"succeeded"}
{"level":"info","time":"2026-06-28T13:57:34.302Z","seq":1,"component":"browser-library","msg":"Listening on 127.0.0.1:36123"}
{"level":"error","time":"2026-06-28T13:57:34.371Z","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-28T13:57:34.375Z","seq":3,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:34.375Z","seq":4,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-28T13:57:34.379Z","seq":5,"suite_id":"s1","suite_name":"Config","test_name":"Config.Update Config","test_id":"s1-t2","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:34.379Z","seq":6,"suite_id":"s1","suite_name":"Config","test_name":"Config.Update Config","test_id":"s1-t2","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-28T13:57:34.991Z","seq":7,"suite_id":"s1","suite_name":"Config","test_name":"Config.Update 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":"info","time":"2026-06-28T13:57:34.994Z","seq":8,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:34.994Z","seq":9,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-28T13:57:34.997Z","seq":10,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Valid Config","test_id":"s1-t3","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:34.997Z","seq":11,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Valid Config","test_id":"s1-t3","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-28T13:57:35.610Z","seq":12,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Valid Config","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-28T13:57:35.613Z","seq":13,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:35.613Z","seq":14,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-28T13:57:35.615Z","seq":15,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Invalid Config Missing Name","test_id":"s1-t4","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:35.615Z","seq":16,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Invalid Config Missing Name","test_id":"s1-t4","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-28T13:57:36.228Z","seq":17,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Invalid Config Missing Name","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-28T13:57:36.230Z","seq":18,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:36.230Z","seq":19,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-28T13:57:36.233Z","seq":20,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Invalid Schedule Time","test_id":"s1-t5","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:36.233Z","seq":21,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Invalid Schedule Time","test_id":"s1-t5","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-28T13:57:36.845Z","seq":22,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Invalid Schedule Time","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-28T13:57:36.848Z","seq":23,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:36.848Z","seq":24,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-28T13:57:36.850Z","seq":25,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Invalid Log Level","test_id":"s1-t6","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:36.851Z","seq":26,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Invalid Log Level","test_id":"s1-t6","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-28T13:57:37.463Z","seq":27,"suite_id":"s1","suite_name":"Config","test_name":"Config.Validate Invalid Log Level","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-28T13:57:37.465Z","seq":28,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:37.465Z","seq":29,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-28T13:57:37.468Z","seq":30,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup Create","test_id":"s1-t7","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:37.468Z","seq":31,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup Create","test_id":"s1-t7","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-28T13:57:38.080Z","seq":32,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup Create","test_id":"s1-t7","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-28T13:57:38.082Z","seq":33,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:38.083Z","seq":34,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-28T13:57:38.085Z","seq":35,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup List","test_id":"s1-t8","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:38.085Z","seq":36,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup List","test_id":"s1-t8","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-28T13:57:38.699Z","seq":37,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup List","test_id":"s1-t8","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-28T13:57:38.701Z","seq":38,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:38.702Z","seq":39,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-28T13:57:38.704Z","seq":40,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup Restore","test_id":"s1-t9","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:38.704Z","seq":41,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup Restore","test_id":"s1-t9","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-28T13:57:39.317Z","seq":42,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup Restore","test_id":"s1-t9","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-28T13:57:39.320Z","seq":43,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:39.320Z","seq":44,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-28T13:57:39.323Z","seq":45,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup Delete","test_id":"s1-t10","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:39.323Z","seq":46,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup Delete","test_id":"s1-t10","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-28T13:57:39.935Z","seq":47,"suite_id":"s1","suite_name":"Config","test_name":"Config.Config Backup Delete","test_id":"s1-t10","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-28T13:57:39.938Z","seq":48,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:39.938Z","seq":49,"suite_id":"s1","suite_name":"Config","component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"error","time":"2026-06-28T13:57:39.939Z","seq":50,"suite_id":"s1","suite_name":"Config","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-28T13:57:39.942Z","seq":51,"component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"started"}
{"level":"info","time":"2026-06-28T13:57:39.942Z","seq":52,"component":"browser-library","event_kind":"grpc","action":"getBrowserCatalog","status":"succeeded"}
{"level":"info","time":"2026-06-28T13:57:39.966Z","seq":53,"component":"browser-library","event_kind":"grpc","action":"closeAllBrowsers","status":"started"}
{"level":"info","time":"2026-06-28T13:57:39.967Z","seq":54,"component":"browser-library","event_kind":"grpc","action":"closeAllBrowsers","status":"succeeded"}

View File

@@ -1881,22 +1881,22 @@ storage = function () {
window.output = {};
</script>
<script type="text/javascript">
window.output["suite"] = [1,2,3,4,[],[1,0,1272],[],[[5,0,6,[],[1,205,76],[]],[7,0,8,[],[1,713,56],[]],[9,0,10,[],[1,775,57],[]],[11,0,12,[],[1,837,88],[]],[13,0,14,[],[1,929,42],[]],[15,0,16,[],[1,976,45],[]],[17,0,18,[],[1,1026,42],[]],[19,0,20,[],[1,1072,59],[]],[21,0,22,[],[1,1135,70],[]],[23,0,24,[],[1,1209,58],[]]],[],[10,10,0,0]];
window.output["suite"] = [1,2,3,4,[],[0,0,6823],[],[[5,0,6,[],[0,216,614,7],[]],[8,0,9,[],[0,1261,613,7],[]],[10,0,11,[],[0,1880,613,7],[]],[12,0,13,[],[0,2498,613,7],[]],[14,0,15,[],[0,3115,613,7],[]],[16,0,17,[],[0,3733,613,7],[]],[18,0,19,[],[0,4351,613,7],[]],[20,0,21,[],[0,4968,615,7],[]],[22,0,23,[],[0,5587,614,7],[]],[24,0,25,[],[0,6205,614,7],[]]],[],[10,0,10,0]];
</script>
<script type="text/javascript">
window.output["strings"] = [];
</script>
<script type="text/javascript">
window.output["strings"] = window.output["strings"].concat(["*","*Config","*/home/lukas/Volume/repo/Aniworld/tests/robot/api/config.robot","*../tests/robot/api/config.robot","*<p>Configuration API tests for Aniworld. Covers get, update, validate, backup create/list/restore/delete, and export/import.\x3c/p>","*Get Default Config","*<p>Retrieve the current configuration and verify its structure.\x3c/p>","*Update Config","*<p>Update configuration fields and verify they are persisted.\x3c/p>","*Validate Valid Config","*<p>Validate a well-formed configuration.\x3c/p>","*Validate Invalid Config Missing Name","*<p>Validate a config missing the required 'name' field.\x3c/p>","*Validate Invalid Schedule Time","*<p>Validate a config with malformed schedule_time.\x3c/p>","*Validate Invalid Log Level","*<p>Validate a config with an invalid logging level.\x3c/p>","*Config Backup Create","*<p>Create a configuration backup and verify it exists.\x3c/p>","*Config Backup List","*<p>List configuration backups and verify the response structure.\x3c/p>","*Config Backup Restore","*<p>Create a backup, change config, then restore and verify reversion.\x3c/p>","*Config Backup Delete","*<p>Create a backup and then delete it.\x3c/p>"]);
window.output["strings"] = window.output["strings"].concat(["*","*Config","*/home/lukas/Volume/repo/Aniworld/tests/robot/api/config.robot","*../tests/robot/api/config.robot","*<p>Configuration API tests for Aniworld. Covers get, update, validate, backup create/list/restore/delete, and export/import.\x3c/p>","*Get Default Config","*<p>Retrieve the current configuration and verify its structure.\x3c/p>","eNqFjz0LwkAQRHt/xWCTBMR4gh8cWAXFRhG0E4szWclBuA13GxL/vdFC0UamW5b3Zo4kTY2bsRUVepCxc5SLZbf2nr3G9nQ6fI4H5iouOcgqUtPFeNJHRSPU7GW1XMxnicbOdPAk3lIAdTlRQQVaKyUaX2mkprapaaRMw0scZ6YJ/cf1jj21P/p4+K3/o968RkAYFMRcKxtKGDhqkb8RGuce7RhKqQs+6L7z7VlkmCQP3fRcPg==","*Update Config","*<p>Update configuration fields and verify they are persisted.\x3c/p>","*Validate Valid Config","*<p>Validate a well-formed configuration.\x3c/p>","*Validate Invalid Config Missing Name","*<p>Validate a config missing the required 'name' field.\x3c/p>","*Validate Invalid Schedule Time","*<p>Validate a config with malformed schedule_time.\x3c/p>","*Validate Invalid Log Level","*<p>Validate a config with an invalid logging level.\x3c/p>","*Config Backup Create","*<p>Create a configuration backup and verify it exists.\x3c/p>","*Config Backup List","*<p>List configuration backups and verify the response structure.\x3c/p>","*Config Backup Restore","*<p>Create a backup, change config, then restore and verify reversion.\x3c/p>","*Config Backup Delete","*<p>Create a backup and then delete it.\x3c/p>"]);
</script>
<script type="text/javascript">
window.output["stats"] = [[{"elapsed":"00:00:01","fail":0,"label":"All Tests","pass":10,"skip":0}],[],[{"elapsed":"00:00:01","fail":0,"id":"s1","label":"Config","name":"Config","pass":10,"skip":0}]];
window.output["stats"] = [[{"elapsed":"00:00:06","fail":10,"label":"All Tests","pass":0,"skip":0}],[],[{"elapsed":"00:00:07","fail":10,"id":"s1","label":"Config","name":"Config","pass":0,"skip":0}]];
</script>
<script type="text/javascript">
window.output["baseMillis"] = 1782561322608;
window.output["baseMillis"] = 1782655053116;
</script>
<script type="text/javascript">
window.output["generated"] = 1294;
window.output["generated"] = 6838;
</script>
<script type="text/javascript">
window.output["expand_keywords"] = null;

View File

@@ -98,7 +98,7 @@ Remove Item From Queue
... priority=NORMAL
${add_resp}= Add To Queue ${payload}
${json}= Convert String To Json ${add_resp.text}
${ids}= Get Value From Json ${json} $.item_ids
${ids}= Get JSON Value ${add_resp} $.item_ids
${item_id}= Get From List ${ids} 0
${del_resp}= DELETE API /api/queue/item/${item_id}
Response Should Have Status ${del_resp} 200
@@ -114,7 +114,7 @@ Retry Failed Item
... priority=NORMAL
${add_resp}= Add To Queue ${payload}
${json}= Convert String To Json ${add_resp.text}
${ids}= Get Value From Json ${json} $.item_ids
${ids}= Get JSON Value ${add_resp} $.item_ids
${item_id}= Get From List ${ids} 0
# Retry endpoint accepts item_ids list, returns 200 even if no items actually failed
# (retried_count will be 0 if item wasn't in failed state)