- 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
2334 lines
92 KiB
XML
2334 lines
92 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<robot generator="Robot 7.4.2 (Python 3.13.5 on linux)" generated="2026-06-28T17:03:42.506501" rpa="false" schemaversion="5">
|
|
<suite id="s1" name="Websocket" source="/home/lukas/Volume/repo/Aniworld/tests/robot/api/websocket.robot">
|
|
<test id="s1-t1" name="Connect To WebSocket" line="21">
|
|
<kw name="Run Keywords" owner="BuiltIn" type="SETUP">
|
|
<kw name="Create Anonymous Session" owner="common">
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>anon</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.724865" elapsed="0.000115"/>
|
|
</kw>
|
|
<doc>Create an unauthenticated HTTP session.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:42.724603" elapsed="0.000452"/>
|
|
</kw>
|
|
<kw name="Setup Master Password" owner="common">
|
|
<kw name="Create Dictionary" owner="BuiltIn">
|
|
<var>${payload}</var>
|
|
<arg>master_password=${SETUP_PASSWORD}</arg>
|
|
<arg>anime_directory=/tmp/aniworld_test_anime</arg>
|
|
<arg>name=AniworldTest</arg>
|
|
<arg>data_dir=data</arg>
|
|
<arg>scheduler_enabled=False</arg>
|
|
<arg>logging_level=INFO</arg>
|
|
<arg>backup_enabled=False</arg>
|
|
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.725512" elapsed="0.000207"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.725819" elapsed="0.000100"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>45s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.726127" elapsed="0.000180"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.726394" elapsed="0.000087"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:42.726008" elapsed="0.000511"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:42.725987" elapsed="0.000567"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>45s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.726717" elapsed="0.000164"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.726960" elapsed="0.000083"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:42.726607" elapsed="0.000473"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:42.726594" elapsed="0.000515"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '400'">
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.727254" elapsed="0.000061"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${detail}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.detail</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.727389" elapsed="0.000086"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${detail}[0]' == 'Master password already configured'">
|
|
<return>
|
|
<status status="PASS" start="2026-06-28T17:03:42.727629" elapsed="0.000047"/>
|
|
</return>
|
|
<status status="PASS" start="2026-06-28T17:03:42.727558" elapsed="0.000155"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:42.727543" elapsed="0.000195"/>
|
|
</if>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Setup failed with 400: ${detail}</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.727802" elapsed="0.000206"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:42.727156" elapsed="0.000882"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:42.727145" elapsed="0.000916"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '201'">
|
|
<kw name="Should Be Equal As Integers" owner="BuiltIn">
|
|
<arg>${resp.status_code}</arg>
|
|
<arg>201</arg>
|
|
<doc>Fails if objects are unequal after converting them to integers.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.728266" elapsed="0.000126"/>
|
|
</kw>
|
|
<return>
|
|
<status status="PASS" start="2026-06-28T17:03:42.728428" elapsed="0.000038"/>
|
|
</return>
|
|
<status status="PASS" start="2026-06-28T17:03:42.728099" elapsed="0.000392"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:42.728089" elapsed="0.000422"/>
|
|
</if>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Unexpected status ${resp.status_code} from /api/auth/setup</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.728565" elapsed="0.000115"/>
|
|
</kw>
|
|
<doc>Configure the master password via the setup endpoint.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:42.725292" elapsed="0.003432"/>
|
|
</kw>
|
|
<kw name="Create Authenticated Session" owner="common">
|
|
<kw name="Create Anonymous Session" owner="common">
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>anon</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.729244" elapsed="0.000081"/>
|
|
</kw>
|
|
<doc>Create an unauthenticated HTTP session.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:42.729088" elapsed="0.000279"/>
|
|
</kw>
|
|
<kw name="Is Auth Configured" owner="common">
|
|
<kw name="GET On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/status</arg>
|
|
<arg>expected_status=200</arg>
|
|
<doc>Sends a GET request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.729606" elapsed="0.000066"/>
|
|
</kw>
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.729764" elapsed="0.000051"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${configured}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.configured</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.729877" elapsed="0.000060"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${configured_val}</var>
|
|
<arg>${configured}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.730002" elapsed="0.000123"/>
|
|
</kw>
|
|
<return>
|
|
<value>${configured_val}</value>
|
|
<status status="PASS" start="2026-06-28T17:03:42.730161" elapsed="0.000039"/>
|
|
</return>
|
|
<var>${configured}</var>
|
|
<doc>Check if the master password has already been configured.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:42.729465" elapsed="0.000767"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="not ${configured}">
|
|
<kw name="Setup Master Password" owner="common">
|
|
<kw name="Create Dictionary" owner="BuiltIn">
|
|
<var>${payload}</var>
|
|
<arg>master_password=${SETUP_PASSWORD}</arg>
|
|
<arg>anime_directory=/tmp/aniworld_test_anime</arg>
|
|
<arg>name=AniworldTest</arg>
|
|
<arg>data_dir=data</arg>
|
|
<arg>scheduler_enabled=False</arg>
|
|
<arg>logging_level=INFO</arg>
|
|
<arg>backup_enabled=False</arg>
|
|
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.730610" elapsed="0.000180"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.730876" elapsed="0.000071"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>45s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.731217" elapsed="0.000154"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.731452" elapsed="0.000101"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:42.731123" elapsed="0.000466"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:42.731111" elapsed="0.000506"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>45s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.731763" elapsed="0.000139"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.731972" elapsed="0.000073"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:42.731659" elapsed="0.000418"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:42.731649" elapsed="0.000452"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '400'">
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.732221" elapsed="0.000048"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${detail}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.detail</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.732333" elapsed="0.000056"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${detail}[0]' == 'Master password already configured'">
|
|
<return>
|
|
<status status="PASS" start="2026-06-28T17:03:42.732481" elapsed="0.000031"/>
|
|
</return>
|
|
<status status="PASS" start="2026-06-28T17:03:42.732437" elapsed="0.000098"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:42.732428" elapsed="0.000126"/>
|
|
</if>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Setup failed with 400: ${detail}</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.732604" elapsed="0.000126"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:42.732140" elapsed="0.000625"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:42.732131" elapsed="0.000664"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '201'">
|
|
<kw name="Should Be Equal As Integers" owner="BuiltIn">
|
|
<arg>${resp.status_code}</arg>
|
|
<arg>201</arg>
|
|
<doc>Fails if objects are unequal after converting them to integers.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.732924" elapsed="0.000136"/>
|
|
</kw>
|
|
<return>
|
|
<status status="PASS" start="2026-06-28T17:03:42.733101" elapsed="0.000040"/>
|
|
</return>
|
|
<status status="PASS" start="2026-06-28T17:03:42.732834" elapsed="0.000337"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:42.732825" elapsed="0.000370"/>
|
|
</if>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Unexpected status ${resp.status_code} from /api/auth/setup</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.733258" elapsed="0.000127"/>
|
|
</kw>
|
|
<doc>Configure the master password via the setup endpoint.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:42.730466" elapsed="0.002956"/>
|
|
</kw>
|
|
<kw name="Login And Get Token" owner="common">
|
|
<kw name="Create Dictionary" owner="BuiltIn">
|
|
<var>${payload}</var>
|
|
<arg>password=${SETUP_PASSWORD}</arg>
|
|
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.733759" elapsed="0.000132"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/login</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.733968" elapsed="0.000075"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>6s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.734191" elapsed="0.000146"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/login</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.734416" elapsed="0.000077"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:42.734103" elapsed="0.000425"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:42.734092" elapsed="0.000464"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' != '200'">
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.734690" elapsed="0.000065"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${detail}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.detail</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.734826" elapsed="0.000063"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${detail_val}</var>
|
|
<arg>${detail}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.734963" elapsed="0.000125"/>
|
|
</kw>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Login failed with ${resp.status_code}: ${detail_val}</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.735159" elapsed="0.000138"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:42.734599" elapsed="0.000727"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:42.734588" elapsed="0.000765"/>
|
|
</if>
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.735410" elapsed="0.000053"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${token}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.access_token</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.735530" elapsed="0.000083"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${token_str}</var>
|
|
<arg>${token}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.735681" elapsed="0.000122"/>
|
|
</kw>
|
|
<kw name="Set Suite Variable" owner="BuiltIn">
|
|
<arg>${TOKEN}</arg>
|
|
<arg>${token_str}</arg>
|
|
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.735880" elapsed="0.000136"/>
|
|
</kw>
|
|
<return>
|
|
<value>${token_str}</value>
|
|
<status status="PASS" start="2026-06-28T17:03:42.736057" elapsed="0.000053"/>
|
|
</return>
|
|
<var>${token}</var>
|
|
<doc>Log in with the master password and return the JWT access token.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:42.733573" elapsed="0.002580"/>
|
|
</kw>
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>auth</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<arg>headers={'Authorization': 'Bearer ${token}'}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.736228" elapsed="0.000090"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:42.730281" elapsed="0.006073"/>
|
|
</branch>
|
|
<branch type="ELSE IF" condition="'${TOKEN}' == '${EMPTY}'">
|
|
<kw name="Login And Get Token" owner="common">
|
|
<kw name="Create Dictionary" owner="BuiltIn">
|
|
<var>${payload}</var>
|
|
<arg>password=${SETUP_PASSWORD}</arg>
|
|
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.736780" elapsed="0.000120"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/login</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.736967" elapsed="0.000071"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>6s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.737169" elapsed="0.000127"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/login</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.737365" elapsed="0.000077"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:42.737092" elapsed="0.000381"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:42.737082" elapsed="0.000416"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' != '200'">
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.737618" elapsed="0.000049"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${detail}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.detail</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.737734" elapsed="0.000056"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${detail_val}</var>
|
|
<arg>${detail}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.737853" elapsed="0.000117"/>
|
|
</kw>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Login failed with ${resp.status_code}: ${detail_val}</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.738033" elapsed="0.000107"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:42.737536" elapsed="0.000629"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:42.737527" elapsed="0.000661"/>
|
|
</if>
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.738238" elapsed="0.000047"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${token}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.access_token</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.738346" elapsed="0.000054"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${token_str}</var>
|
|
<arg>${token}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.738461" elapsed="0.000106"/>
|
|
</kw>
|
|
<kw name="Set Suite Variable" owner="BuiltIn">
|
|
<arg>${TOKEN}</arg>
|
|
<arg>${token_str}</arg>
|
|
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.738634" elapsed="0.000121"/>
|
|
</kw>
|
|
<return>
|
|
<value>${token_str}</value>
|
|
<status status="PASS" start="2026-06-28T17:03:42.738790" elapsed="0.000042"/>
|
|
</return>
|
|
<var>${token}</var>
|
|
<doc>Log in with the master password and return the JWT access token.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:42.736636" elapsed="0.002228"/>
|
|
</kw>
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>auth</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<arg>headers={'Authorization': 'Bearer ${token}'}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.738931" elapsed="0.000081"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:42.736443" elapsed="0.002600"/>
|
|
</branch>
|
|
<branch type="ELSE">
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>auth</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<arg>headers={'Authorization': 'Bearer ${TOKEN}'}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.739171" elapsed="0.000072"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:42.739067" elapsed="0.000204"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:42.730272" elapsed="0.009020"/>
|
|
</if>
|
|
<doc>Create an authenticated HTTP session. Performs setup if needed, then logs in.
|
|
Skips setup/login if already authenticated (suite-level setup done).</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:42.728877" elapsed="0.010435"/>
|
|
</kw>
|
|
<arg>Create Anonymous Session</arg>
|
|
<arg>AND</arg>
|
|
<arg>Setup Master Password</arg>
|
|
<arg>AND</arg>
|
|
<arg>Create Authenticated Session</arg>
|
|
<doc>Executes all the given keywords in a sequence.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:42.724128" elapsed="0.015208"/>
|
|
</kw>
|
|
<kw name="Login And Get Token" owner="common">
|
|
<kw name="Create Dictionary" owner="BuiltIn">
|
|
<var>${payload}</var>
|
|
<arg>password=${SETUP_PASSWORD}</arg>
|
|
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.739677" elapsed="0.000125"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/login</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.739870" elapsed="0.000070"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>6s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.740077" elapsed="0.000132"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/login</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.740281" elapsed="0.000093"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:42.739993" elapsed="0.000412"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:42.739984" elapsed="0.000447"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' != '200'">
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.740548" elapsed="0.000048"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${detail}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.detail</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.740657" elapsed="0.000062"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${detail_val}</var>
|
|
<arg>${detail}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.740782" elapsed="0.000111"/>
|
|
</kw>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Login failed with ${resp.status_code}: ${detail_val}</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.740954" elapsed="0.000128"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:42.740469" elapsed="0.000639"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:42.740459" elapsed="0.000672"/>
|
|
</if>
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.741181" elapsed="0.000051"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${token}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.access_token</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.741384" elapsed="0.000069"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${token_str}</var>
|
|
<arg>${token}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.741532" elapsed="0.000128"/>
|
|
</kw>
|
|
<kw name="Set Suite Variable" owner="BuiltIn">
|
|
<arg>${TOKEN}</arg>
|
|
<arg>${token_str}</arg>
|
|
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.741745" elapsed="0.000131"/>
|
|
</kw>
|
|
<return>
|
|
<value>${token_str}</value>
|
|
<status status="PASS" start="2026-06-28T17:03:42.741914" elapsed="0.000039"/>
|
|
</return>
|
|
<var>${token}</var>
|
|
<doc>Log in with the master password and return the JWT access token.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:42.739519" elapsed="0.002468"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${ws_url}</var>
|
|
<arg>ws://${SERVER_HOST}:${SERVER_PORT}/ws/connect?token=${token}</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.742063" elapsed="0.000134"/>
|
|
</kw>
|
|
<kw name="Connect To WebSocket" owner="websocket_keywords">
|
|
<var>${result}</var>
|
|
<arg>${ws_url}</arg>
|
|
<doc>Establish a WebSocket connection and return connection info.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.742263" elapsed="0.000055"/>
|
|
</kw>
|
|
<kw name="Should Contain" owner="BuiltIn">
|
|
<arg>${result}</arg>
|
|
<arg>${SERVER_HOST}</arg>
|
|
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.742379" elapsed="0.000110"/>
|
|
</kw>
|
|
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
|
|
<doc>Removes all the session objects</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:42.742603" elapsed="0.000051"/>
|
|
</kw>
|
|
<msg time="2026-06-28T17:03:42.746431" level="INFO">Starting Browser process /home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js using at 127.0.0.1:37625</msg>
|
|
<doc>Establish a WebSocket connection with a valid JWT token.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:42.723220" elapsed="0.019467"/>
|
|
</test>
|
|
<test id="s1-t2" name="Subscribe To Rooms" line="31">
|
|
<kw name="Run Keywords" owner="BuiltIn" type="SETUP">
|
|
<kw name="Create Anonymous Session" owner="common">
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>anon</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.177506" elapsed="0.000100"/>
|
|
</kw>
|
|
<doc>Create an unauthenticated HTTP session.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.176960" elapsed="0.000698"/>
|
|
</kw>
|
|
<kw name="Setup Master Password" owner="common">
|
|
<kw name="Create Dictionary" owner="BuiltIn">
|
|
<var>${payload}</var>
|
|
<arg>master_password=${SETUP_PASSWORD}</arg>
|
|
<arg>anime_directory=/tmp/aniworld_test_anime</arg>
|
|
<arg>name=AniworldTest</arg>
|
|
<arg>data_dir=data</arg>
|
|
<arg>scheduler_enabled=False</arg>
|
|
<arg>logging_level=INFO</arg>
|
|
<arg>backup_enabled=False</arg>
|
|
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.178081" elapsed="0.000174"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.178341" elapsed="0.000076"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>45s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.178574" elapsed="0.000154"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.178819" elapsed="0.000075"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.178484" elapsed="0.000443"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.178468" elapsed="0.000488"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>45s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.179077" elapsed="0.000132"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.179277" elapsed="0.000072"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.178997" elapsed="0.000383"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.178986" elapsed="0.000420"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '400'">
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.179532" elapsed="0.000050"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${detail}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.detail</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.179644" elapsed="0.000061"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${detail}[0]' == 'Master password already configured'">
|
|
<return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.179817" elapsed="0.000043"/>
|
|
</return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.179761" elapsed="0.000123"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.179752" elapsed="0.000153"/>
|
|
</if>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Setup failed with 400: ${detail}</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.179955" elapsed="0.000122"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.179447" elapsed="0.000658"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.179438" elapsed="0.000689"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '201'">
|
|
<kw name="Should Be Equal As Integers" owner="BuiltIn">
|
|
<arg>${resp.status_code}</arg>
|
|
<arg>201</arg>
|
|
<doc>Fails if objects are unequal after converting them to integers.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.180243" elapsed="0.000123"/>
|
|
</kw>
|
|
<return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.180401" elapsed="0.000035"/>
|
|
</return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.180163" elapsed="0.000295"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.180155" elapsed="0.000323"/>
|
|
</if>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Unexpected status ${resp.status_code} from /api/auth/setup</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.180529" elapsed="0.000116"/>
|
|
</kw>
|
|
<doc>Configure the master password via the setup endpoint.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.177895" elapsed="0.002787"/>
|
|
</kw>
|
|
<kw name="Create Authenticated Session" owner="common">
|
|
<kw name="Create Anonymous Session" owner="common">
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>anon</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.181146" elapsed="0.000066"/>
|
|
</kw>
|
|
<doc>Create an unauthenticated HTTP session.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.181011" elapsed="0.000236"/>
|
|
</kw>
|
|
<kw name="Is Auth Configured" owner="common">
|
|
<kw name="GET On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/status</arg>
|
|
<arg>expected_status=200</arg>
|
|
<doc>Sends a GET request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.181588" elapsed="0.000067"/>
|
|
</kw>
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.181750" elapsed="0.000053"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${configured}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.configured</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.181868" elapsed="0.000062"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${configured_val}</var>
|
|
<arg>${configured}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.182001" elapsed="0.000123"/>
|
|
</kw>
|
|
<return>
|
|
<value>${configured_val}</value>
|
|
<status status="PASS" start="2026-06-28T17:03:43.182166" elapsed="0.000040"/>
|
|
</return>
|
|
<var>${configured}</var>
|
|
<doc>Check if the master password has already been configured.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.181332" elapsed="0.000908"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="not ${configured}">
|
|
<kw name="Setup Master Password" owner="common">
|
|
<kw name="Create Dictionary" owner="BuiltIn">
|
|
<var>${payload}</var>
|
|
<arg>master_password=${SETUP_PASSWORD}</arg>
|
|
<arg>anime_directory=/tmp/aniworld_test_anime</arg>
|
|
<arg>name=AniworldTest</arg>
|
|
<arg>data_dir=data</arg>
|
|
<arg>scheduler_enabled=False</arg>
|
|
<arg>logging_level=INFO</arg>
|
|
<arg>backup_enabled=False</arg>
|
|
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.182637" elapsed="0.000162"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.182890" elapsed="0.000074"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>45s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.183104" elapsed="0.000138"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.183310" elapsed="0.000089"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.183021" elapsed="0.000409"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.183011" elapsed="0.000445"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>45s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.183570" elapsed="0.000138"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.183783" elapsed="0.000074"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.183493" elapsed="0.000394"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.183484" elapsed="0.000427"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '400'">
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.184049" elapsed="0.000048"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${detail}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.detail</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.184161" elapsed="0.000056"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${detail}[0]' == 'Master password already configured'">
|
|
<return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.184311" elapsed="0.000036"/>
|
|
</return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.184265" elapsed="0.000105"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.184256" elapsed="0.000135"/>
|
|
</if>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Setup failed with 400: ${detail}</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.184445" elapsed="0.000121"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.183948" elapsed="0.000647"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.183940" elapsed="0.000677"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '201'">
|
|
<kw name="Should Be Equal As Integers" owner="BuiltIn">
|
|
<arg>${resp.status_code}</arg>
|
|
<arg>201</arg>
|
|
<doc>Fails if objects are unequal after converting them to integers.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.184749" elapsed="0.000156"/>
|
|
</kw>
|
|
<return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.184940" elapsed="0.000035"/>
|
|
</return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.184652" elapsed="0.000345"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.184643" elapsed="0.000374"/>
|
|
</if>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Unexpected status ${resp.status_code} from /api/auth/setup</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.185068" elapsed="0.000110"/>
|
|
</kw>
|
|
<doc>Configure the master password via the setup endpoint.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.182500" elapsed="0.002710"/>
|
|
</kw>
|
|
<kw name="Login And Get Token" owner="common">
|
|
<kw name="Create Dictionary" owner="BuiltIn">
|
|
<var>${payload}</var>
|
|
<arg>password=${SETUP_PASSWORD}</arg>
|
|
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.185505" elapsed="0.000117"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/login</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.185692" elapsed="0.000095"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>6s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.185944" elapsed="0.000152"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/login</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.186170" elapsed="0.000097"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.185854" elapsed="0.000452"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.185843" elapsed="0.000491"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' != '200'">
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.186462" elapsed="0.000054"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${detail}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.detail</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.186584" elapsed="0.000062"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${detail_val}</var>
|
|
<arg>${detail}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.186726" elapsed="0.000131"/>
|
|
</kw>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Login failed with ${resp.status_code}: ${detail_val}</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.187013" elapsed="0.000130"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.186374" elapsed="0.000800"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.186365" elapsed="0.000835"/>
|
|
</if>
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.187258" elapsed="0.000055"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${token}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.access_token</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.187384" elapsed="0.000087"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${token_str}</var>
|
|
<arg>${token}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.187543" elapsed="0.000130"/>
|
|
</kw>
|
|
<kw name="Set Suite Variable" owner="BuiltIn">
|
|
<arg>${TOKEN}</arg>
|
|
<arg>${token_str}</arg>
|
|
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.187762" elapsed="0.000127"/>
|
|
</kw>
|
|
<return>
|
|
<value>${token_str}</value>
|
|
<status status="PASS" start="2026-06-28T17:03:43.187922" elapsed="0.000037"/>
|
|
</return>
|
|
<var>${token}</var>
|
|
<doc>Log in with the master password and return the JWT access token.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.185345" elapsed="0.002645"/>
|
|
</kw>
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>auth</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<arg>headers={'Authorization': 'Bearer ${token}'}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.188052" elapsed="0.000087"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.182293" elapsed="0.005878"/>
|
|
</branch>
|
|
<branch type="ELSE IF" condition="'${TOKEN}' == '${EMPTY}'">
|
|
<kw name="Login And Get Token" owner="common">
|
|
<kw name="Create Dictionary" owner="BuiltIn">
|
|
<var>${payload}</var>
|
|
<arg>password=${SETUP_PASSWORD}</arg>
|
|
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.188494" elapsed="0.000131"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/login</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.188705" elapsed="0.000083"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>6s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.188936" elapsed="0.000135"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/login</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.189140" elapsed="0.000067"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.188854" elapsed="0.000385"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.188843" elapsed="0.000421"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' != '200'">
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.189381" elapsed="0.000049"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${detail}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.detail</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.189492" elapsed="0.000055"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${detail_val}</var>
|
|
<arg>${detail}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.189611" elapsed="0.000117"/>
|
|
</kw>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Login failed with ${resp.status_code}: ${detail_val}</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.189802" elapsed="0.000125"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.189302" elapsed="0.000654"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.189293" elapsed="0.000688"/>
|
|
</if>
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.190041" elapsed="0.000053"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${token}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.access_token</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.190157" elapsed="0.000057"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${token_str}</var>
|
|
<arg>${token}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.190276" elapsed="0.000108"/>
|
|
</kw>
|
|
<kw name="Set Suite Variable" owner="BuiltIn">
|
|
<arg>${TOKEN}</arg>
|
|
<arg>${token_str}</arg>
|
|
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.190452" elapsed="0.000115"/>
|
|
</kw>
|
|
<return>
|
|
<value>${token_str}</value>
|
|
<status status="PASS" start="2026-06-28T17:03:43.190599" elapsed="0.000035"/>
|
|
</return>
|
|
<var>${token}</var>
|
|
<doc>Log in with the master password and return the JWT access token.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.188356" elapsed="0.002308"/>
|
|
</kw>
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>auth</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<arg>headers={'Authorization': 'Bearer ${token}'}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.190749" elapsed="0.000087"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.188201" elapsed="0.002667"/>
|
|
</branch>
|
|
<branch type="ELSE">
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>auth</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<arg>headers={'Authorization': 'Bearer ${TOKEN}'}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.190985" elapsed="0.000079"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.190894" elapsed="0.000202"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.182284" elapsed="0.008835"/>
|
|
</if>
|
|
<doc>Create an authenticated HTTP session. Performs setup if needed, then logs in.
|
|
Skips setup/login if already authenticated (suite-level setup done).</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.180840" elapsed="0.010301"/>
|
|
</kw>
|
|
<arg>Create Anonymous Session</arg>
|
|
<arg>AND</arg>
|
|
<arg>Setup Master Password</arg>
|
|
<arg>AND</arg>
|
|
<arg>Create Authenticated Session</arg>
|
|
<doc>Executes all the given keywords in a sequence.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.176531" elapsed="0.014636"/>
|
|
</kw>
|
|
<kw name="Pass Execution" owner="BuiltIn">
|
|
<arg>WebSocket room subscription requires custom keyword library</arg>
|
|
<doc>Skips rest of the current test, setup, or teardown with PASS status.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.191252" elapsed="0.000145"/>
|
|
</kw>
|
|
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
|
|
<doc>Removes all the session objects</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.191523" elapsed="0.000055"/>
|
|
</kw>
|
|
<doc>Subscribe to WebSocket rooms (downloads, queue, scan, system).</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.173452" elapsed="0.018158"/>
|
|
</test>
|
|
<test id="s1-t3" name="Receive Ping Pong" line="35">
|
|
<kw name="Run Keywords" owner="BuiltIn" type="SETUP">
|
|
<kw name="Create Anonymous Session" owner="common">
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>anon</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.200994" elapsed="0.000096"/>
|
|
</kw>
|
|
<doc>Create an unauthenticated HTTP session.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.200757" elapsed="0.000389"/>
|
|
</kw>
|
|
<kw name="Setup Master Password" owner="common">
|
|
<kw name="Create Dictionary" owner="BuiltIn">
|
|
<var>${payload}</var>
|
|
<arg>master_password=${SETUP_PASSWORD}</arg>
|
|
<arg>anime_directory=/tmp/aniworld_test_anime</arg>
|
|
<arg>name=AniworldTest</arg>
|
|
<arg>data_dir=data</arg>
|
|
<arg>scheduler_enabled=False</arg>
|
|
<arg>logging_level=INFO</arg>
|
|
<arg>backup_enabled=False</arg>
|
|
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.201562" elapsed="0.000194"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.201852" elapsed="0.000079"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>45s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.202083" elapsed="0.000149"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.202302" elapsed="0.000071"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.201995" elapsed="0.000410"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.201982" elapsed="0.000452"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>45s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.202561" elapsed="0.000151"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.202802" elapsed="0.000082"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.202475" elapsed="0.000445"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.202464" elapsed="0.000485"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '400'">
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.203110" elapsed="0.000055"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${detail}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.detail</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.203236" elapsed="0.000079"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${detail}[0]' == 'Master password already configured'">
|
|
<return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.203422" elapsed="0.000038"/>
|
|
</return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.203370" elapsed="0.000115"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.203360" elapsed="0.000148"/>
|
|
</if>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Setup failed with 400: ${detail}</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.203564" elapsed="0.000127"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.202993" elapsed="0.000736"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.202983" elapsed="0.000771"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '201'">
|
|
<kw name="Should Be Equal As Integers" owner="BuiltIn">
|
|
<arg>${resp.status_code}</arg>
|
|
<arg>201</arg>
|
|
<doc>Fails if objects are unequal after converting them to integers.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.203887" elapsed="0.000122"/>
|
|
</kw>
|
|
<return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.204046" elapsed="0.000040"/>
|
|
</return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.203794" elapsed="0.000317"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.203785" elapsed="0.000348"/>
|
|
</if>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Unexpected status ${resp.status_code} from /api/auth/setup</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.204189" elapsed="0.000145"/>
|
|
</kw>
|
|
<doc>Configure the master password via the setup endpoint.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.201347" elapsed="0.003023"/>
|
|
</kw>
|
|
<kw name="Create Authenticated Session" owner="common">
|
|
<kw name="Create Anonymous Session" owner="common">
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>anon</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.204839" elapsed="0.000073"/>
|
|
</kw>
|
|
<doc>Create an unauthenticated HTTP session.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.204686" elapsed="0.000263"/>
|
|
</kw>
|
|
<kw name="Is Auth Configured" owner="common">
|
|
<kw name="GET On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/status</arg>
|
|
<arg>expected_status=200</arg>
|
|
<doc>Sends a GET request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.205181" elapsed="0.000084"/>
|
|
</kw>
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.205340" elapsed="0.000051"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${configured}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.configured</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.205458" elapsed="0.000062"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${configured_val}</var>
|
|
<arg>${configured}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.205594" elapsed="0.000139"/>
|
|
</kw>
|
|
<return>
|
|
<value>${configured_val}</value>
|
|
<status status="PASS" start="2026-06-28T17:03:43.205774" elapsed="0.000041"/>
|
|
</return>
|
|
<var>${configured}</var>
|
|
<doc>Check if the master password has already been configured.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.205042" elapsed="0.000808"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="not ${configured}">
|
|
<kw name="Setup Master Password" owner="common">
|
|
<kw name="Create Dictionary" owner="BuiltIn">
|
|
<var>${payload}</var>
|
|
<arg>master_password=${SETUP_PASSWORD}</arg>
|
|
<arg>anime_directory=/tmp/aniworld_test_anime</arg>
|
|
<arg>name=AniworldTest</arg>
|
|
<arg>data_dir=data</arg>
|
|
<arg>scheduler_enabled=False</arg>
|
|
<arg>logging_level=INFO</arg>
|
|
<arg>backup_enabled=False</arg>
|
|
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.206290" elapsed="0.000159"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.206535" elapsed="0.000076"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>45s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.206779" elapsed="0.000145"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.207108" elapsed="0.000086"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.206669" elapsed="0.000564"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.206659" elapsed="0.000602"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>45s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.207396" elapsed="0.000166"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.207637" elapsed="0.000083"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.207304" elapsed="0.000455"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.207293" elapsed="0.000493"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '400'">
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.207921" elapsed="0.000053"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${detail}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.detail</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.208044" elapsed="0.000062"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${detail}[0]' == 'Master password already configured'">
|
|
<return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.208208" elapsed="0.000035"/>
|
|
</return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.208160" elapsed="0.000109"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.208150" elapsed="0.000141"/>
|
|
</if>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Setup failed with 400: ${detail}</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.208346" elapsed="0.000121"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.207829" elapsed="0.000668"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.207820" elapsed="0.000701"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '201'">
|
|
<kw name="Should Be Equal As Integers" owner="BuiltIn">
|
|
<arg>${resp.status_code}</arg>
|
|
<arg>201</arg>
|
|
<doc>Fails if objects are unequal after converting them to integers.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.208655" elapsed="0.000174"/>
|
|
</kw>
|
|
<return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.208869" elapsed="0.000041"/>
|
|
</return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.208561" elapsed="0.000374"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.208551" elapsed="0.000406"/>
|
|
</if>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Unexpected status ${resp.status_code} from /api/auth/setup</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.209016" elapsed="0.000127"/>
|
|
</kw>
|
|
<doc>Configure the master password via the setup endpoint.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.206113" elapsed="0.003068"/>
|
|
</kw>
|
|
<kw name="Login And Get Token" owner="common">
|
|
<kw name="Create Dictionary" owner="BuiltIn">
|
|
<var>${payload}</var>
|
|
<arg>password=${SETUP_PASSWORD}</arg>
|
|
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.209512" elapsed="0.000133"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/login</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.209729" elapsed="0.000082"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>6s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.210002" elapsed="0.000166"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/login</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.210250" elapsed="0.000085"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.209871" elapsed="0.000499"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.209861" elapsed="0.000536"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' != '200'">
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.210531" elapsed="0.000056"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${detail}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.detail</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.210658" elapsed="0.000071"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${detail_val}</var>
|
|
<arg>${detail}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.210804" elapsed="0.000120"/>
|
|
</kw>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Login failed with ${resp.status_code}: ${detail_val}</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.210989" elapsed="0.000114"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.210439" elapsed="0.000691"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.210429" elapsed="0.000724"/>
|
|
</if>
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.211205" elapsed="0.000049"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${token}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.access_token</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.211314" elapsed="0.000056"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${token_str}</var>
|
|
<arg>${token}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.211433" elapsed="0.000107"/>
|
|
</kw>
|
|
<kw name="Set Suite Variable" owner="BuiltIn">
|
|
<arg>${TOKEN}</arg>
|
|
<arg>${token_str}</arg>
|
|
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.211613" elapsed="0.000163"/>
|
|
</kw>
|
|
<return>
|
|
<value>${token_str}</value>
|
|
<status status="PASS" start="2026-06-28T17:03:43.211816" elapsed="0.000049"/>
|
|
</return>
|
|
<var>${token}</var>
|
|
<doc>Log in with the master password and return the JWT access token.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.209334" elapsed="0.002565"/>
|
|
</kw>
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>auth</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<arg>headers={'Authorization': 'Bearer ${token}'}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.211968" elapsed="0.000102"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.205905" elapsed="0.006193"/>
|
|
</branch>
|
|
<branch type="ELSE IF" condition="'${TOKEN}' == '${EMPTY}'">
|
|
<kw name="Login And Get Token" owner="common">
|
|
<kw name="Create Dictionary" owner="BuiltIn">
|
|
<var>${payload}</var>
|
|
<arg>password=${SETUP_PASSWORD}</arg>
|
|
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.212421" elapsed="0.000122"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/login</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.212725" elapsed="0.000099"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>6s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.212994" elapsed="0.000162"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/login</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.213236" elapsed="0.000091"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.212892" elapsed="0.000473"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.212881" elapsed="0.000514"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' != '200'">
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.213535" elapsed="0.000061"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${detail}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.detail</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.213668" elapsed="0.000075"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${detail_val}</var>
|
|
<arg>${detail}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.213816" elapsed="0.000123"/>
|
|
</kw>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Login failed with ${resp.status_code}: ${detail_val}</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.214004" elapsed="0.000114"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.213437" elapsed="0.000709"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.213428" elapsed="0.000741"/>
|
|
</if>
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.214222" elapsed="0.000055"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${token}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.access_token</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.214340" elapsed="0.000060"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${token_str}</var>
|
|
<arg>${token}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.214464" elapsed="0.000111"/>
|
|
</kw>
|
|
<kw name="Set Suite Variable" owner="BuiltIn">
|
|
<arg>${TOKEN}</arg>
|
|
<arg>${token_str}</arg>
|
|
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.214646" elapsed="0.000147"/>
|
|
</kw>
|
|
<return>
|
|
<value>${token_str}</value>
|
|
<status status="PASS" start="2026-06-28T17:03:43.214833" elapsed="0.000048"/>
|
|
</return>
|
|
<var>${token}</var>
|
|
<doc>Log in with the master password and return the JWT access token.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.212283" elapsed="0.002633"/>
|
|
</kw>
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>auth</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<arg>headers={'Authorization': 'Bearer ${token}'}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.214989" elapsed="0.000094"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.212122" elapsed="0.002994"/>
|
|
</branch>
|
|
<branch type="ELSE">
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>auth</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<arg>headers={'Authorization': 'Bearer ${TOKEN}'}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.215238" elapsed="0.000086"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.215142" elapsed="0.000215"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.205895" elapsed="0.009485"/>
|
|
</if>
|
|
<doc>Create an authenticated HTTP session. Performs setup if needed, then logs in.
|
|
Skips setup/login if already authenticated (suite-level setup done).</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.204501" elapsed="0.010905"/>
|
|
</kw>
|
|
<arg>Create Anonymous Session</arg>
|
|
<arg>AND</arg>
|
|
<arg>Setup Master Password</arg>
|
|
<arg>AND</arg>
|
|
<arg>Create Authenticated Session</arg>
|
|
<doc>Executes all the given keywords in a sequence.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.200314" elapsed="0.015119"/>
|
|
</kw>
|
|
<kw name="Pass Execution" owner="BuiltIn">
|
|
<arg>WebSocket ping/pong requires custom keyword library</arg>
|
|
<doc>Skips rest of the current test, setup, or teardown with PASS status.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.215516" elapsed="0.000166"/>
|
|
</kw>
|
|
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
|
|
<doc>Removes all the session objects</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.215823" elapsed="0.000066"/>
|
|
</kw>
|
|
<doc>Verify WebSocket heartbeat mechanism.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.197326" elapsed="0.018595"/>
|
|
</test>
|
|
<test id="s1-t4" name="Receive System Notification" line="39">
|
|
<kw name="Run Keywords" owner="BuiltIn" type="SETUP">
|
|
<kw name="Create Anonymous Session" owner="common">
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>anon</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.223647" elapsed="0.000105"/>
|
|
</kw>
|
|
<doc>Create an unauthenticated HTTP session.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.223377" elapsed="0.000431"/>
|
|
</kw>
|
|
<kw name="Setup Master Password" owner="common">
|
|
<kw name="Create Dictionary" owner="BuiltIn">
|
|
<var>${payload}</var>
|
|
<arg>master_password=${SETUP_PASSWORD}</arg>
|
|
<arg>anime_directory=/tmp/aniworld_test_anime</arg>
|
|
<arg>name=AniworldTest</arg>
|
|
<arg>data_dir=data</arg>
|
|
<arg>scheduler_enabled=False</arg>
|
|
<arg>logging_level=INFO</arg>
|
|
<arg>backup_enabled=False</arg>
|
|
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.224243" elapsed="0.000183"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.224524" elapsed="0.000106"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>45s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.224819" elapsed="0.000164"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.225062" elapsed="0.000077"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.224715" elapsed="0.000460"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.224691" elapsed="0.000515"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>45s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.225343" elapsed="0.000170"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.225715" elapsed="0.000096"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.225251" elapsed="0.000600"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.225240" elapsed="0.000641"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '400'">
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.226029" elapsed="0.000081"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${detail}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.detail</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.226184" elapsed="0.000065"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${detail}[0]' == 'Master password already configured'">
|
|
<return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.226358" elapsed="0.000042"/>
|
|
</return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.226305" elapsed="0.000122"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.226295" elapsed="0.000154"/>
|
|
</if>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Setup failed with 400: ${detail}</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.226506" elapsed="0.000134"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.225930" elapsed="0.000742"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.225919" elapsed="0.000778"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '201'">
|
|
<kw name="Should Be Equal As Integers" owner="BuiltIn">
|
|
<arg>${resp.status_code}</arg>
|
|
<arg>201</arg>
|
|
<doc>Fails if objects are unequal after converting them to integers.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.226838" elapsed="0.000138"/>
|
|
</kw>
|
|
<return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.227014" elapsed="0.000039"/>
|
|
</return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.226744" elapsed="0.000335"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.226735" elapsed="0.000366"/>
|
|
</if>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Unexpected status ${resp.status_code} from /api/auth/setup</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.227158" elapsed="0.000144"/>
|
|
</kw>
|
|
<doc>Configure the master password via the setup endpoint.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.224018" elapsed="0.003339"/>
|
|
</kw>
|
|
<kw name="Create Authenticated Session" owner="common">
|
|
<kw name="Create Anonymous Session" owner="common">
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>anon</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.227881" elapsed="0.000075"/>
|
|
</kw>
|
|
<doc>Create an unauthenticated HTTP session.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.227730" elapsed="0.000267"/>
|
|
</kw>
|
|
<kw name="Is Auth Configured" owner="common">
|
|
<kw name="GET On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/status</arg>
|
|
<arg>expected_status=200</arg>
|
|
<doc>Sends a GET request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.228259" elapsed="0.000064"/>
|
|
</kw>
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.228401" elapsed="0.000054"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${configured}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.configured</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.228531" elapsed="0.000099"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${configured_val}</var>
|
|
<arg>${configured}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.228748" elapsed="0.000154"/>
|
|
</kw>
|
|
<return>
|
|
<value>${configured_val}</value>
|
|
<status status="PASS" start="2026-06-28T17:03:43.228945" elapsed="0.000044"/>
|
|
</return>
|
|
<var>${configured}</var>
|
|
<doc>Check if the master password has already been configured.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.228094" elapsed="0.000932"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="not ${configured}">
|
|
<kw name="Setup Master Password" owner="common">
|
|
<kw name="Create Dictionary" owner="BuiltIn">
|
|
<var>${payload}</var>
|
|
<arg>master_password=${SETUP_PASSWORD}</arg>
|
|
<arg>anime_directory=/tmp/aniworld_test_anime</arg>
|
|
<arg>name=AniworldTest</arg>
|
|
<arg>data_dir=data</arg>
|
|
<arg>scheduler_enabled=False</arg>
|
|
<arg>logging_level=INFO</arg>
|
|
<arg>backup_enabled=False</arg>
|
|
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.229471" elapsed="0.000170"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.229740" elapsed="0.000084"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>45s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.229985" elapsed="0.000163"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.230226" elapsed="0.000077"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.229889" elapsed="0.000449"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.229876" elapsed="0.000489"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>45s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.230497" elapsed="0.000151"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/setup</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.230728" elapsed="0.000076"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.230406" elapsed="0.000433"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.230396" elapsed="0.000469"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '400'">
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.230997" elapsed="0.000053"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${detail}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.detail</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.231119" elapsed="0.000063"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${detail}[0]' == 'Master password already configured'">
|
|
<return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.231285" elapsed="0.000034"/>
|
|
</return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.231236" elapsed="0.000108"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.231227" elapsed="0.000138"/>
|
|
</if>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Setup failed with 400: ${detail}</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.231420" elapsed="0.000125"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.230909" elapsed="0.000783"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.230899" elapsed="0.000833"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '201'">
|
|
<kw name="Should Be Equal As Integers" owner="BuiltIn">
|
|
<arg>${resp.status_code}</arg>
|
|
<arg>201</arg>
|
|
<doc>Fails if objects are unequal after converting them to integers.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.231886" elapsed="0.000144"/>
|
|
</kw>
|
|
<return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.232071" elapsed="0.000064"/>
|
|
</return>
|
|
<status status="PASS" start="2026-06-28T17:03:43.231778" elapsed="0.000383"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.231767" elapsed="0.000417"/>
|
|
</if>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Unexpected status ${resp.status_code} from /api/auth/setup</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.232245" elapsed="0.000127"/>
|
|
</kw>
|
|
<doc>Configure the master password via the setup endpoint.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.229304" elapsed="0.003106"/>
|
|
</kw>
|
|
<kw name="Login And Get Token" owner="common">
|
|
<kw name="Create Dictionary" owner="BuiltIn">
|
|
<var>${payload}</var>
|
|
<arg>password=${SETUP_PASSWORD}</arg>
|
|
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.232764" elapsed="0.000135"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/login</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.232977" elapsed="0.000076"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>6s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.233222" elapsed="0.000145"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/login</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.233446" elapsed="0.000077"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.233113" elapsed="0.000446"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.233103" elapsed="0.000486"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' != '200'">
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.233731" elapsed="0.000056"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${detail}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.detail</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.233857" elapsed="0.000062"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${detail_val}</var>
|
|
<arg>${detail}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.233991" elapsed="0.000120"/>
|
|
</kw>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Login failed with ${resp.status_code}: ${detail_val}</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.234180" elapsed="0.000116"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.233633" elapsed="0.000692"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.233623" elapsed="0.000728"/>
|
|
</if>
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.234407" elapsed="0.000054"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${token}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.access_token</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.234528" elapsed="0.000059"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${token_str}</var>
|
|
<arg>${token}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.234657" elapsed="0.000122"/>
|
|
</kw>
|
|
<kw name="Set Suite Variable" owner="BuiltIn">
|
|
<arg>${TOKEN}</arg>
|
|
<arg>${token_str}</arg>
|
|
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.234869" elapsed="0.000164"/>
|
|
</kw>
|
|
<return>
|
|
<value>${token_str}</value>
|
|
<status status="PASS" start="2026-06-28T17:03:43.235071" elapsed="0.000039"/>
|
|
</return>
|
|
<var>${token}</var>
|
|
<doc>Log in with the master password and return the JWT access token.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.232572" elapsed="0.002574"/>
|
|
</kw>
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>auth</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<arg>headers={'Authorization': 'Bearer ${token}'}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.235218" elapsed="0.000090"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.229084" elapsed="0.006256"/>
|
|
</branch>
|
|
<branch type="ELSE IF" condition="'${TOKEN}' == '${EMPTY}'">
|
|
<kw name="Login And Get Token" owner="common">
|
|
<kw name="Create Dictionary" owner="BuiltIn">
|
|
<var>${payload}</var>
|
|
<arg>password=${SETUP_PASSWORD}</arg>
|
|
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.235813" elapsed="0.000181"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/login</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.236071" elapsed="0.000124"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '429'">
|
|
<kw name="Sleep" owner="BuiltIn">
|
|
<arg>6s</arg>
|
|
<doc>Pauses the test executed for the given time.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.236403" elapsed="0.000194"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<var>${resp}</var>
|
|
<arg>anon</arg>
|
|
<arg>/api/auth/login</arg>
|
|
<arg>json=${payload}</arg>
|
|
<arg>expected_status=any</arg>
|
|
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.236673" elapsed="0.000166"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.236258" elapsed="0.000618"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.236247" elapsed="0.000657"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' != '200'">
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.237080" elapsed="0.000096"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${detail}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.detail</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.237245" elapsed="0.000110"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${detail_val}</var>
|
|
<arg>${detail}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.237425" elapsed="0.000168"/>
|
|
</kw>
|
|
<kw name="Fail" owner="BuiltIn">
|
|
<arg>Login failed with ${resp.status_code}: ${detail_val}</arg>
|
|
<doc>Fails the test with the given message and optionally alters its tags.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.237662" elapsed="0.000127"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.236945" elapsed="0.000874"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.236936" elapsed="0.001007"/>
|
|
</if>
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.238021" elapsed="0.000065"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<var>${token}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.access_token</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.238162" elapsed="0.000066"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${token_str}</var>
|
|
<arg>${token}[0]</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.238304" elapsed="0.000132"/>
|
|
</kw>
|
|
<kw name="Set Suite Variable" owner="BuiltIn">
|
|
<arg>${TOKEN}</arg>
|
|
<arg>${token_str}</arg>
|
|
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.238516" elapsed="0.000135"/>
|
|
</kw>
|
|
<return>
|
|
<value>${token_str}</value>
|
|
<status status="PASS" start="2026-06-28T17:03:43.238690" elapsed="0.000049"/>
|
|
</return>
|
|
<var>${token}</var>
|
|
<doc>Log in with the master password and return the JWT access token.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.235545" elapsed="0.003230"/>
|
|
</kw>
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>auth</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<arg>headers={'Authorization': 'Bearer ${token}'}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.238847" elapsed="0.000087"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.235367" elapsed="0.003600"/>
|
|
</branch>
|
|
<branch type="ELSE">
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<arg>auth</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<arg>headers={'Authorization': 'Bearer ${TOKEN}'}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.239081" elapsed="0.000080"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:03:43.238993" elapsed="0.000200"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:03:43.229073" elapsed="0.010143"/>
|
|
</if>
|
|
<doc>Create an authenticated HTTP session. Performs setup if needed, then logs in.
|
|
Skips setup/login if already authenticated (suite-level setup done).</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.227512" elapsed="0.011726"/>
|
|
</kw>
|
|
<arg>Create Anonymous Session</arg>
|
|
<arg>AND</arg>
|
|
<arg>Setup Master Password</arg>
|
|
<arg>AND</arg>
|
|
<arg>Create Authenticated Session</arg>
|
|
<doc>Executes all the given keywords in a sequence.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.222937" elapsed="0.016327"/>
|
|
</kw>
|
|
<kw name="Pass Execution" owner="BuiltIn">
|
|
<arg>WebSocket notification requires custom keyword library</arg>
|
|
<doc>Skips rest of the current test, setup, or teardown with PASS status.</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.239346" elapsed="0.000142"/>
|
|
</kw>
|
|
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
|
|
<doc>Removes all the session objects</doc>
|
|
<status status="NOT RUN" start="2026-06-28T17:03:43.239610" elapsed="0.000060"/>
|
|
</kw>
|
|
<doc>Trigger an action that emits a system message and verify receipt.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:43.220498" elapsed="0.019212"/>
|
|
</test>
|
|
<doc>WebSocket API tests for Aniworld.
|
|
Covers connection, room subscription, ping/pong, and notifications.</doc>
|
|
<status status="PASS" start="2026-06-28T17:03:42.507180" elapsed="0.737242"/>
|
|
</suite>
|
|
<statistics>
|
|
<total>
|
|
<stat pass="4" fail="0" skip="0">All Tests</stat>
|
|
</total>
|
|
<tag>
|
|
</tag>
|
|
<suite>
|
|
<stat name="Websocket" id="s1" pass="4" fail="0" skip="0">Websocket</stat>
|
|
</suite>
|
|
</statistics>
|
|
<errors>
|
|
</errors>
|
|
</robot>
|