Prevents leftover env vars from previous runs causing auth issues. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
255 lines
15 KiB
XML
255 lines
15 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:43:54.898428" rpa="false" schemaversion="5">
|
|
<suite id="s1" name="Settings Modal" source="/home/lukas/Volume/repo/Aniworld/tests/robot/ui/settings_modal.robot">
|
|
<test id="s1-t1" name="Disable Scheduler" line="68">
|
|
<kw name="Run Keywords" owner="BuiltIn" type="SETUP">
|
|
<kw name="Create Anonymous Session" owner="common">
|
|
<kw name="Create Session" owner="RequestsLibrary">
|
|
<msg time="2026-06-28T17:43:55.119057" level="INFO">Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg>
|
|
<arg>anon</arg>
|
|
<arg>${BASE_URL}</arg>
|
|
<doc>Create Session: create a HTTP session to a server</doc>
|
|
<status status="PASS" start="2026-06-28T17:43:55.118904" elapsed="0.000293"/>
|
|
</kw>
|
|
<doc>Create an unauthenticated HTTP session.</doc>
|
|
<status status="PASS" start="2026-06-28T17:43:55.118644" elapsed="0.000627"/>
|
|
</kw>
|
|
<kw name="Setup Master Password" owner="common">
|
|
<kw name="Create Dictionary" owner="BuiltIn">
|
|
<msg time="2026-06-28T17:43:55.120120" level="INFO">${payload} = {'master_password': 'TestPass123!', 'anime_directory': '/tmp/aniworld_test_anime', 'name': 'AniworldTest', 'data_dir': 'data', 'scheduler_enabled': 'False', 'logging_level': 'INFO', 'backup_enabled': ...</msg>
|
|
<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="PASS" start="2026-06-28T17:43:55.119706" elapsed="0.000441"/>
|
|
</kw>
|
|
<kw name="POST On Session" owner="RequestsLibrary">
|
|
<msg time="2026-06-28T17:43:55.122897" level="INFO">POST Request : url=http://127.0.0.1:8765/api/auth/setup
|
|
path_url=/api/auth/setup
|
|
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '208', 'Content-Type': 'application/json'}
|
|
body=b'{"master_password": "TestPass123!", "anime_directory": "/tmp/aniworld_test_anime", "name": "AniworldTest", "data_dir": "data", "scheduler_enabled": "False", "logging_level": "INFO", "backup_enabled": "False"}'
|
|
</msg>
|
|
<msg time="2026-06-28T17:43:55.122964" level="INFO">POST Response : url=http://127.0.0.1:8765/api/auth/setup
|
|
status=400, reason=Bad Request
|
|
headers={'date': 'Sun, 28 Jun 2026 15:43:54 GMT', 'server': 'uvicorn', 'content-length': '47', 'content-type': 'application/json'}
|
|
body={"detail":"Master password already configured"}
|
|
</msg>
|
|
<msg time="2026-06-28T17:43:55.123047" level="INFO">${resp} = <Response [400]></msg>
|
|
<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="PASS" start="2026-06-28T17:43:55.120245" elapsed="0.002822"/>
|
|
</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:43:55.123626" elapsed="0.000065"/>
|
|
</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:43:55.123800" elapsed="0.000049"/>
|
|
</kw>
|
|
<status status="NOT RUN" start="2026-06-28T17:43:55.123161" elapsed="0.000722"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:43:55.123139" elapsed="0.000778"/>
|
|
</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:43:55.124296" elapsed="0.000047"/>
|
|
</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:43:55.124413" elapsed="0.000042"/>
|
|
</kw>
|
|
<status status="NOT RUN" start="2026-06-28T17:43:55.123961" elapsed="0.000525"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:43:55.123949" elapsed="0.000565"/>
|
|
</if>
|
|
<if>
|
|
<branch type="IF" condition="'${resp.status_code}' == '400'">
|
|
<kw name="Convert String To Json" owner="JSONLibrary">
|
|
<msg time="2026-06-28T17:43:55.125249" level="INFO">${json} = {'detail': 'Master password already configured'}</msg>
|
|
<var>${json}</var>
|
|
<arg>${resp.text}</arg>
|
|
<doc>Convert String to JSON object</doc>
|
|
<status status="PASS" start="2026-06-28T17:43:55.124893" elapsed="0.000378"/>
|
|
</kw>
|
|
<kw name="Get Value From Json" owner="JSONLibrary">
|
|
<msg time="2026-06-28T17:43:55.137071" level="INFO">${detail} = ['Master password already configured']</msg>
|
|
<var>${detail}</var>
|
|
<arg>${json}</arg>
|
|
<arg>$.detail</arg>
|
|
<doc>Get Value From JSON using JSONPath</doc>
|
|
<status status="PASS" start="2026-06-28T17:43:55.125355" elapsed="0.011747"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${detail}[0]' == 'Master password already configured'">
|
|
<return>
|
|
<status status="PASS" start="2026-06-28T17:43:55.137373" elapsed="0.000073"/>
|
|
</return>
|
|
<status status="PASS" start="2026-06-28T17:43:55.137188" elapsed="0.000299"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:43:55.137170" elapsed="0.000345"/>
|
|
</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:43:55.137599" elapsed="0.000056"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-06-28T17:43:55.124550" elapsed="0.013138"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-06-28T17:43:55.124539" elapsed="0.013180"/>
|
|
</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:43:55.137860" elapsed="0.000045"/>
|
|
</kw>
|
|
<return>
|
|
<status status="NOT RUN" start="2026-06-28T17:43:55.137946" elapsed="0.000043"/>
|
|
</return>
|
|
<status status="NOT RUN" start="2026-06-28T17:43:55.137758" elapsed="0.000255"/>
|
|
</branch>
|
|
<status status="NOT RUN" start="2026-06-28T17:43:55.137746" elapsed="0.000288"/>
|
|
</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:43:55.138086" elapsed="0.000041"/>
|
|
</kw>
|
|
<doc>Configure the master password via the setup endpoint.</doc>
|
|
<status status="PASS" start="2026-06-28T17:43:55.119498" elapsed="0.018686"/>
|
|
</kw>
|
|
<kw name="Open Browser To Page" owner="common">
|
|
<kw name="New Page" owner="Browser">
|
|
<msg time="2026-06-28T17:43:55.144109" level="INFO">Starting Browser process /home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js using at 127.0.0.1:38387</msg>
|
|
<msg time="2026-06-28T17:43:55.580832" level="INFO">Keyword 'Take Screenshot fail-screenshot-{index}' could not be run on failure:
|
|
Error: Tried to take screenshot, but no page was open.</msg>
|
|
<msg time="2026-06-28T17:43:55.580915" level="INFO">See also file:///home/lukas/Volume/repo/Aniworld/playwright-log.txt for additional details.</msg>
|
|
<msg time="2026-06-28T17:43:55.581190" level="FAIL">Error: browserType.launch: Executable doesn't exist at /home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/playwright-core/.local-browsers/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell
|
|
╔════════════════════════════════════════════════════════════╗
|
|
║ Looks like Playwright was just installed or updated. ║
|
|
║ Please run the following command to download new browsers: ║
|
|
║ ║
|
|
║ npx playwright install ║
|
|
║ ║
|
|
║ <3 Playwright Team ║
|
|
╚════════════════════════════════════════════════════════════╝</msg>
|
|
<arg>${BASE_URL}${path}</arg>
|
|
<tag>BrowserControl</tag>
|
|
<tag>Setter</tag>
|
|
<doc>Open a new Page.</doc>
|
|
<status status="FAIL" start="2026-06-28T17:43:55.138549" elapsed="0.464616">Error: browserType.launch: Executable doesn't exist at /home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/playwright-core/.local-browsers/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell
|
|
╔════════════════════════════════════════════════════════════╗
|
|
║ Looks like Playwright was just installed or updated. ║
|
|
║ Please run the following command to download new browsers: ║
|
|
║ ║
|
|
║ npx playwright install ║
|
|
║ ║
|
|
║ <3 Playwright Team ║
|
|
╚════════════════════════════════════════════════════════════╝</status>
|
|
</kw>
|
|
<arg>/login</arg>
|
|
<doc>Open a new page at the given path relative to BASE_URL.</doc>
|
|
<status status="FAIL" start="2026-06-28T17:43:55.138300" elapsed="0.465112">Error: browserType.launch: Executable doesn't exist at /home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/playwright-core/.local-browsers/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell
|
|
╔════════════════════════════════════════════════════════════╗
|
|
║ Looks like Playwright was just installed or updated. ║
|
|
║ Please run the following command to download new browsers: ║
|
|
║ ║
|
|
║ npx playwright install ║
|
|
║ ║
|
|
║ <3 Playwright Team ║
|
|
╚════════════════════════════════════════════════════════════╝</status>
|
|
</kw>
|
|
<arg>Create Anonymous Session</arg>
|
|
<arg>AND</arg>
|
|
<arg>Setup Master Password</arg>
|
|
<arg>AND</arg>
|
|
<arg>Open Browser To Page</arg>
|
|
<arg>/login</arg>
|
|
<arg>AND</arg>
|
|
<arg>Perform Login</arg>
|
|
<arg>AND</arg>
|
|
<arg>Wait For Elements State</arg>
|
|
<arg>id=search-input</arg>
|
|
<arg>visible</arg>
|
|
<arg>timeout=5s</arg>
|
|
<doc>Executes all the given keywords in a sequence.</doc>
|
|
<status status="FAIL" start="2026-06-28T17:43:55.118090" elapsed="0.485444">Error: browserType.launch: Executable doesn't exist at /home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/playwright-core/.local-browsers/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell
|
|
╔════════════════════════════════════════════════════════════╗
|
|
║ Looks like Playwright was just installed or updated. ║
|
|
║ Please run the following command to download new browsers: ║
|
|
║ ║
|
|
║ npx playwright install ║
|
|
║ ║
|
|
║ <3 Playwright Team ║
|
|
╚════════════════════════════════════════════════════════════╝</status>
|
|
</kw>
|
|
<kw name="Close Browser" owner="common" type="TEARDOWN">
|
|
<kw name="Close Browser" owner="Browser">
|
|
<msg time="2026-06-28T17:43:55.607970" level="INFO">Closed all browsers</msg>
|
|
<arg>ALL</arg>
|
|
<tag>BrowserControl</tag>
|
|
<tag>Setter</tag>
|
|
<doc>Closes the current browser.</doc>
|
|
<status status="PASS" start="2026-06-28T17:43:55.604303" elapsed="0.003796"/>
|
|
</kw>
|
|
<doc>Close all browser contexts and the browser itself.</doc>
|
|
<status status="PASS" start="2026-06-28T17:43:55.603913" elapsed="0.004272"/>
|
|
</kw>
|
|
<doc>Uncheck scheduler enabled and save.</doc>
|
|
<status status="FAIL" start="2026-06-28T17:43:55.117192" elapsed="0.491042">Setup failed:
|
|
Error: browserType.launch: Executable doesn't exist at /home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/node_modules/playwright-core/.local-browsers/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell
|
|
╔════════════════════════════════════════════════════════════╗
|
|
║ Looks like Playwright was just installed or updated. ║
|
|
║ Please run the following command to download new browsers: ║
|
|
║ ║
|
|
║ npx playwright install ║
|
|
║ ║
|
|
║ <3 Playwright Team ║
|
|
╚════════════════════════════════════════════════════════════╝</status>
|
|
</test>
|
|
<doc>Settings modal UI tests for Aniworld.
|
|
Covers open/close, edit all config sections, save, backup/restore, and export/import.</doc>
|
|
<status status="FAIL" start="2026-06-28T17:43:54.899295" elapsed="0.715631"/>
|
|
</suite>
|
|
<statistics>
|
|
<total>
|
|
<stat pass="0" fail="1" skip="0">All Tests</stat>
|
|
</total>
|
|
<tag>
|
|
</tag>
|
|
<suite>
|
|
<stat name="Settings Modal" id="s1" pass="0" fail="1" skip="0">Settings Modal</stat>
|
|
</suite>
|
|
</statistics>
|
|
<errors>
|
|
</errors>
|
|
</robot>
|