Update test output files and screenshots
This commit is contained in:
512
output.xml
512
output.xml
@@ -1,22 +1,22 @@
|
||||
<?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">
|
||||
<robot generator="Robot 7.4.2 (Python 3.13.5 on linux)" generated="2026-07-02T21:15:17.624260" rpa="false" schemaversion="5">
|
||||
<suite id="s1" name="Anime Settings" source="/home/lukas/Volume/repo/Aniworld/tests/robot/ui/anime_settings.robot">
|
||||
<test id="s1-t1" name="Anime Settings Page Loads" line="24">
|
||||
<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>
|
||||
<msg time="2026-07-02T21:15:17.869883" 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"/>
|
||||
<status status="PASS" start="2026-07-02T21:15:17.869702" elapsed="0.000384"/>
|
||||
</kw>
|
||||
<doc>Create an unauthenticated HTTP session.</doc>
|
||||
<status status="PASS" start="2026-06-28T17:43:55.118644" elapsed="0.000627"/>
|
||||
<status status="PASS" start="2026-07-02T21:15:17.869324" elapsed="0.000858"/>
|
||||
</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>
|
||||
<msg time="2026-07-02T21:15:17.871190" 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>
|
||||
@@ -26,34 +26,34 @@
|
||||
<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"/>
|
||||
<status status="PASS" start="2026-07-02T21:15:17.870736" elapsed="0.000484"/>
|
||||
</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
|
||||
<msg time="2026-07-02T21:15:17.874734" 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
|
||||
<msg time="2026-07-02T21:15:17.874815" 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'}
|
||||
headers={'date': 'Thu, 02 Jul 2026 19:15:17 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>
|
||||
<msg time="2026-07-02T21:15:17.874922" 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"/>
|
||||
<status status="PASS" start="2026-07-02T21:15:17.871343" elapsed="0.003607"/>
|
||||
</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"/>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:17.875597" elapsed="0.000057"/>
|
||||
</kw>
|
||||
<kw name="POST On Session" owner="RequestsLibrary">
|
||||
<var>${resp}</var>
|
||||
@@ -62,18 +62,18 @@
|
||||
<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"/>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:17.875743" elapsed="0.000045"/>
|
||||
</kw>
|
||||
<status status="NOT RUN" start="2026-06-28T17:43:55.123161" elapsed="0.000722"/>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:17.875066" elapsed="0.000759"/>
|
||||
</branch>
|
||||
<status status="PASS" start="2026-06-28T17:43:55.123139" elapsed="0.000778"/>
|
||||
<status status="PASS" start="2026-07-02T21:15:17.875037" elapsed="0.000823"/>
|
||||
</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"/>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:17.876636" elapsed="0.000075"/>
|
||||
</kw>
|
||||
<kw name="POST On Session" owner="RequestsLibrary">
|
||||
<var>${resp}</var>
|
||||
@@ -82,46 +82,46 @@
|
||||
<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"/>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:17.876799" elapsed="0.000054"/>
|
||||
</kw>
|
||||
<status status="NOT RUN" start="2026-06-28T17:43:55.123961" elapsed="0.000525"/>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:17.875909" elapsed="0.000978"/>
|
||||
</branch>
|
||||
<status status="PASS" start="2026-06-28T17:43:55.123949" elapsed="0.000565"/>
|
||||
<status status="PASS" start="2026-07-02T21:15:17.875896" elapsed="0.001032"/>
|
||||
</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>
|
||||
<msg time="2026-07-02T21:15:17.877811" 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"/>
|
||||
<status status="PASS" start="2026-07-02T21:15:17.877430" elapsed="0.000406"/>
|
||||
</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>
|
||||
<msg time="2026-07-02T21:15:17.890380" 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"/>
|
||||
<status status="PASS" start="2026-07-02T21:15:17.877940" elapsed="0.012488"/>
|
||||
</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"/>
|
||||
<status status="PASS" start="2026-07-02T21:15:17.890956" elapsed="0.000104"/>
|
||||
</return>
|
||||
<status status="PASS" start="2026-06-28T17:43:55.137188" elapsed="0.000299"/>
|
||||
<status status="PASS" start="2026-07-02T21:15:17.890604" elapsed="0.000505"/>
|
||||
</branch>
|
||||
<status status="PASS" start="2026-06-28T17:43:55.137170" elapsed="0.000345"/>
|
||||
<status status="PASS" start="2026-07-02T21:15:17.890579" elapsed="0.000563"/>
|
||||
</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"/>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:17.891262" elapsed="0.000074"/>
|
||||
</kw>
|
||||
<status status="PASS" start="2026-06-28T17:43:55.124550" elapsed="0.013138"/>
|
||||
<status status="PASS" start="2026-07-02T21:15:17.876987" elapsed="0.014384"/>
|
||||
</branch>
|
||||
<status status="PASS" start="2026-06-28T17:43:55.124539" elapsed="0.013180"/>
|
||||
<status status="PASS" start="2026-07-02T21:15:17.876966" elapsed="0.014434"/>
|
||||
</if>
|
||||
<if>
|
||||
<branch type="IF" condition="'${resp.status_code}' == '201'">
|
||||
@@ -129,63 +129,200 @@
|
||||
<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"/>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:17.891563" elapsed="0.000049"/>
|
||||
</kw>
|
||||
<return>
|
||||
<status status="NOT RUN" start="2026-06-28T17:43:55.137946" elapsed="0.000043"/>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:17.891652" elapsed="0.000044"/>
|
||||
</return>
|
||||
<status status="NOT RUN" start="2026-06-28T17:43:55.137758" elapsed="0.000255"/>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:17.891446" elapsed="0.000275"/>
|
||||
</branch>
|
||||
<status status="NOT RUN" start="2026-06-28T17:43:55.137746" elapsed="0.000288"/>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:17.891434" elapsed="0.000309"/>
|
||||
</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"/>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:17.891803" elapsed="0.000047"/>
|
||||
</kw>
|
||||
<doc>Configure the master password via the setup endpoint.</doc>
|
||||
<status status="PASS" start="2026-06-28T17:43:55.119498" elapsed="0.018686"/>
|
||||
<status status="PASS" start="2026-07-02T21:15:17.870462" elapsed="0.021466"/>
|
||||
</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>
|
||||
<msg time="2026-07-02T21:15:17.897413" level="INFO">Starting Browser process /home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js using at 127.0.0.1:34865</msg>
|
||||
<msg time="2026-07-02T21:15:18.880478" level="INFO">Successfully initialized new page object and opened url: http://127.0.0.1:8765/login</msg>
|
||||
<msg time="2026-07-02T21:15:18.880558" level="INFO">No browser and context was open. New browser and context was automatically opened when page is created.</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>
|
||||
<status status="PASS" start="2026-07-02T21:15:17.892425" elapsed="0.988268"/>
|
||||
</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>
|
||||
<status status="PASS" start="2026-07-02T21:15:17.892075" elapsed="0.988717"/>
|
||||
</kw>
|
||||
<kw name="Perform Login" owner="ui_keywords">
|
||||
<kw name="Fill Text" owner="Browser">
|
||||
<msg time="2026-07-02T21:15:18.882711" level="INFO">Fills the text 'TestPass123!' in the given field.</msg>
|
||||
<arg>id=password-input</arg>
|
||||
<arg>${password}</arg>
|
||||
<tag>PageContent</tag>
|
||||
<tag>Setter</tag>
|
||||
<doc>Clears and fills the given ``txt`` into the text field found by ``selector``.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:18.881750" elapsed="0.039843"/>
|
||||
</kw>
|
||||
<kw name="Click" owner="Browser">
|
||||
<msg time="2026-07-02T21:15:18.922227" level="INFO">Clicks the element 'id=login-submit-btn'.</msg>
|
||||
<arg>id=login-submit-btn</arg>
|
||||
<tag>PageContent</tag>
|
||||
<tag>Setter</tag>
|
||||
<doc>Simulates mouse click on the element found by ``selector``.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:18.921782" elapsed="0.052200"/>
|
||||
</kw>
|
||||
<kw name="Wait For Elements State" owner="Browser">
|
||||
<msg time="2026-07-02T21:15:20.274838" level="INFO">Waited for Element with selector id=search-input at state visible</msg>
|
||||
<arg>id=search-input</arg>
|
||||
<arg>visible</arg>
|
||||
<arg>timeout=5s</arg>
|
||||
<tag>PageContent</tag>
|
||||
<tag>Wait</tag>
|
||||
<doc>Waits for the element found by ``selector`` to satisfy state option.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:18.974188" elapsed="1.300795"/>
|
||||
</kw>
|
||||
<doc>Fill the login form and submit it.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:18.881328" elapsed="1.393753"/>
|
||||
</kw>
|
||||
<kw name="Wait For Elements State" owner="Browser">
|
||||
<msg time="2026-07-02T21:15:20.285081" level="INFO">Waited for Element with selector id=search-input at state visible</msg>
|
||||
<arg>id=search-input</arg>
|
||||
<arg>visible</arg>
|
||||
<arg>timeout=5s</arg>
|
||||
<tag>PageContent</tag>
|
||||
<tag>Wait</tag>
|
||||
<doc>Waits for the element found by ``selector`` to satisfy state option.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.275231" elapsed="0.010015"/>
|
||||
</kw>
|
||||
<kw name="Login And Get Token" owner="common">
|
||||
<kw name="Create Dictionary" owner="BuiltIn">
|
||||
<msg time="2026-07-02T21:15:20.286401" level="INFO">${payload} = {'password': 'TestPass123!'}</msg>
|
||||
<var>${payload}</var>
|
||||
<arg>password=${SETUP_PASSWORD}</arg>
|
||||
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.285956" elapsed="0.000472"/>
|
||||
</kw>
|
||||
<kw name="POST On Session" owner="RequestsLibrary">
|
||||
<msg time="2026-07-02T21:15:20.296852" level="INFO">POST Request : url=http://127.0.0.1:8765/api/auth/login
|
||||
path_url=/api/auth/login
|
||||
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '28', 'Content-Type': 'application/json'}
|
||||
body=b'{"password": "TestPass123!"}'
|
||||
</msg>
|
||||
<msg time="2026-07-02T21:15:20.296923" level="INFO">POST Response : url=http://127.0.0.1:8765/api/auth/login
|
||||
status=200, reason=OK
|
||||
headers={'date': 'Thu, 02 Jul 2026 19:15:19 GMT', 'server': 'uvicorn', 'content-length': '232', 'content-type': 'application/json'}
|
||||
body={"access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODMxMDYxMjAsImlhdCI6MTc4MzAxOTcyMH0.3lTBRZRfwrf3WmkoccB95LHtGASRwoG4SUqCpIwCehU","token_type":"bearer","expires_at":"2026-07-03T19:15:20.295776Z"}
|
||||
</msg>
|
||||
<msg time="2026-07-02T21:15:20.297070" level="INFO">${resp} = <Response [200]></msg>
|
||||
<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="PASS" start="2026-07-02T21:15:20.286543" elapsed="0.010548"/>
|
||||
</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-07-02T21:15:20.297656" elapsed="0.000067"/>
|
||||
</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-07-02T21:15:20.297807" elapsed="0.000047"/>
|
||||
</kw>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:20.297195" elapsed="0.000693"/>
|
||||
</branch>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.297174" elapsed="0.000747"/>
|
||||
</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-07-02T21:15:20.298315" elapsed="0.000047"/>
|
||||
</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-07-02T21:15:20.298432" elapsed="0.000041"/>
|
||||
</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-07-02T21:15:20.298542" elapsed="0.000039"/>
|
||||
</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-07-02T21:15:20.298645" elapsed="0.000039"/>
|
||||
</kw>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:20.297979" elapsed="0.000732"/>
|
||||
</branch>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.297967" elapsed="0.000768"/>
|
||||
</if>
|
||||
<kw name="Convert String To Json" owner="JSONLibrary">
|
||||
<msg time="2026-07-02T21:15:20.299175" level="INFO">${json} = {'access_token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODMxMDYxMjAsImlhdCI6MTc4MzAxOTcyMH0.3lTBRZRfwrf3WmkoccB95LHtGASRwoG4SUqCpIwCehU', 'token_type': 'bearer', 'expire...</msg>
|
||||
<var>${json}</var>
|
||||
<arg>${resp.text}</arg>
|
||||
<doc>Convert String to JSON object</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.298793" elapsed="0.000403"/>
|
||||
</kw>
|
||||
<kw name="Get Value From Json" owner="JSONLibrary">
|
||||
<msg time="2026-07-02T21:15:20.310663" level="INFO">${token} = ['eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODMxMDYxMjAsImlhdCI6MTc4MzAxOTcyMH0.3lTBRZRfwrf3WmkoccB95LHtGASRwoG4SUqCpIwCehU']</msg>
|
||||
<var>${token}</var>
|
||||
<arg>${json}</arg>
|
||||
<arg>$.access_token</arg>
|
||||
<doc>Get Value From JSON using JSONPath</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.299271" elapsed="0.011433"/>
|
||||
</kw>
|
||||
<kw name="Set Variable" owner="BuiltIn">
|
||||
<msg time="2026-07-02T21:15:20.311266" level="INFO">${token_str} = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODMxMDYxMjAsImlhdCI6MTc4MzAxOTcyMH0.3lTBRZRfwrf3WmkoccB95LHtGASRwoG4SUqCpIwCehU</msg>
|
||||
<var>${token_str}</var>
|
||||
<arg>${token}[0]</arg>
|
||||
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.310861" elapsed="0.000428"/>
|
||||
</kw>
|
||||
<kw name="Set Suite Variable" owner="BuiltIn">
|
||||
<msg time="2026-07-02T21:15:20.311670" level="INFO">${TOKEN} = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODMxMDYxMjAsImlhdCI6MTc4MzAxOTcyMH0.3lTBRZRfwrf3WmkoccB95LHtGASRwoG4SUqCpIwCehU</msg>
|
||||
<arg>${TOKEN}</arg>
|
||||
<arg>${token_str}</arg>
|
||||
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.311398" elapsed="0.000301"/>
|
||||
</kw>
|
||||
<return>
|
||||
<value>${token_str}</value>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.311743" elapsed="0.000077"/>
|
||||
</return>
|
||||
<doc>Log in with the master password and return the JWT access token.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.285582" elapsed="0.026323"/>
|
||||
</kw>
|
||||
<kw name="Create Session" owner="RequestsLibrary">
|
||||
<msg time="2026-07-02T21:15:20.312289" level="INFO">Creating Session using : alias=auth, url=http://127.0.0.1:8765, headers={'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODMxMDYxMjAsImlhdCI6MTc4MzAxOTcyMH0.3lTBRZRfwrf3WmkoccB95LHtGASRwoG4SUqCpIwCehU'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0 </msg>
|
||||
<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="PASS" start="2026-07-02T21:15:20.312027" elapsed="0.000548"/>
|
||||
</kw>
|
||||
<arg>Create Anonymous Session</arg>
|
||||
<arg>AND</arg>
|
||||
@@ -200,44 +337,229 @@ Error: Tried to take screenshot, but no page was open.</msg>
|
||||
<arg>id=search-input</arg>
|
||||
<arg>visible</arg>
|
||||
<arg>timeout=5s</arg>
|
||||
<arg>AND</arg>
|
||||
<arg>Login And Get Token</arg>
|
||||
<arg>AND</arg>
|
||||
<arg>Create Session</arg>
|
||||
<arg>auth</arg>
|
||||
<arg>${BASE_URL}</arg>
|
||||
<arg>headers={'Authorization': 'Bearer ${TOKEN}'}</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>
|
||||
<status status="PASS" start="2026-07-02T21:15:17.868516" elapsed="2.444128"/>
|
||||
</kw>
|
||||
<kw name="Add Series" owner="api_keywords">
|
||||
<kw name="Create Dictionary" owner="BuiltIn">
|
||||
<msg time="2026-07-02T21:15:20.313678" level="INFO">${payload} = {'link': 'https://aniworld.to/anime/stream/attack-on-titan', 'name': 'Attack on Titan'}</msg>
|
||||
<var>${payload}</var>
|
||||
<arg>link=${link}</arg>
|
||||
<arg>name=${name}</arg>
|
||||
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.313183" elapsed="0.000518"/>
|
||||
</kw>
|
||||
<if>
|
||||
<branch type="IF" condition="'${year}' != '${EMPTY}'">
|
||||
<kw name="Set To Dictionary" owner="Collections">
|
||||
<arg>${payload}</arg>
|
||||
<arg>year=${year}</arg>
|
||||
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.314226" elapsed="0.000262"/>
|
||||
</kw>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.313784" elapsed="0.000744"/>
|
||||
</branch>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.313762" elapsed="0.000798"/>
|
||||
</if>
|
||||
<kw name="POST API" owner="api_keywords">
|
||||
<if>
|
||||
<branch type="IF" condition="$payload is ${NONE}">
|
||||
<kw name="POST On Session" owner="RequestsLibrary">
|
||||
<var>${resp}</var>
|
||||
<arg>${session}</arg>
|
||||
<arg>${endpoint}</arg>
|
||||
<arg>expected_status=${expected_status}</arg>
|
||||
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:20.315258" elapsed="0.000049"/>
|
||||
</kw>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:20.314993" elapsed="0.000360"/>
|
||||
</branch>
|
||||
<branch type="ELSE">
|
||||
<kw name="POST On Session" owner="RequestsLibrary">
|
||||
<msg time="2026-07-02T21:15:20.354762" level="INFO">POST Request : url=http://127.0.0.1:8765/api/anime/add
|
||||
path_url=/api/anime/add
|
||||
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODMxMDYxMjAsImlhdCI6MTc4MzAxOTcyMH0.3lTBRZRfwrf3WmkoccB95LHtGASRwoG4SUqCpIwCehU', 'Content-Length': '103', 'Content-Type': 'application/json'}
|
||||
body=b'{"link": "https://aniworld.to/anime/stream/attack-on-titan", "name": "Attack on Titan", "year": "2013"}'
|
||||
</msg>
|
||||
<msg time="2026-07-02T21:15:20.354833" level="INFO">POST Response : url=http://127.0.0.1:8765/api/anime/add
|
||||
status=202, reason=Accepted
|
||||
headers={'date': 'Thu, 02 Jul 2026 19:15:19 GMT', 'server': 'uvicorn', 'content-length': '243', 'content-type': 'application/json'}
|
||||
body={"status":"exists","message":"Series already exists: Attack on Titan","key":"attack-on-titan","folder":"Attack on Titan (2013)","db_id":1,"loading_status":"completed","loading_progress":{"episodes":true,"nfo":true,"logo":false,"images":false}}
|
||||
</msg>
|
||||
<msg time="2026-07-02T21:15:20.354940" level="INFO">${resp} = <Response [202]></msg>
|
||||
<var>${resp}</var>
|
||||
<arg>${session}</arg>
|
||||
<arg>${endpoint}</arg>
|
||||
<arg>json=${payload}</arg>
|
||||
<arg>expected_status=${expected_status}</arg>
|
||||
<doc>Sends a POST request on a previously created HTTP Session.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.315487" elapsed="0.039474"/>
|
||||
</kw>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.315387" elapsed="0.039639"/>
|
||||
</branch>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.314979" elapsed="0.040078"/>
|
||||
</if>
|
||||
<return>
|
||||
<value>${resp}</value>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.355092" elapsed="0.000126"/>
|
||||
</return>
|
||||
<msg time="2026-07-02T21:15:20.355341" level="INFO">${resp} = <Response [202]></msg>
|
||||
<var>${resp}</var>
|
||||
<arg>/api/anime/add</arg>
|
||||
<arg>${payload}</arg>
|
||||
<arg>202</arg>
|
||||
<doc>Perform an authenticated POST request with optional JSON payload.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.314697" elapsed="0.040664"/>
|
||||
</kw>
|
||||
<return>
|
||||
<value>${resp}</value>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.355405" elapsed="0.000054"/>
|
||||
</return>
|
||||
<msg time="2026-07-02T21:15:20.355545" level="INFO">${resp} = <Response [202]></msg>
|
||||
<var>${resp}</var>
|
||||
<arg>https://aniworld.to/anime/stream/attack-on-titan</arg>
|
||||
<arg>Attack on Titan</arg>
|
||||
<arg>2013</arg>
|
||||
<doc>POST /api/anime/add with series details.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.312847" elapsed="0.042717"/>
|
||||
</kw>
|
||||
<kw name="Response Should Have Status" owner="common">
|
||||
<kw name="Should Be Equal As Integers" owner="BuiltIn">
|
||||
<msg time="2026-07-02T21:15:20.356474" level="INFO">Argument types are:
|
||||
<class 'int'>
|
||||
<class 'str'></msg>
|
||||
<arg>${response.status_code}</arg>
|
||||
<arg>${expected_status}</arg>
|
||||
<doc>Fails if objects are unequal after converting them to integers.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.355989" elapsed="0.000537"/>
|
||||
</kw>
|
||||
<arg>${resp}</arg>
|
||||
<arg>202</arg>
|
||||
<doc>Assert that the response status code matches the expected value.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.355700" elapsed="0.000881"/>
|
||||
</kw>
|
||||
<kw name="Get JSON Value" owner="api_keywords">
|
||||
<kw name="Convert String To Json" owner="JSONLibrary">
|
||||
<msg time="2026-07-02T21:15:20.357377" level="INFO">${json} = {'status': 'exists', 'message': 'Series already exists: Attack on Titan', 'key': 'attack-on-titan', 'folder': 'Attack on Titan (2013)', 'db_id': 1, 'loading_status': 'completed', 'loading_progress': {...</msg>
|
||||
<var>${json}</var>
|
||||
<arg>${response.text}</arg>
|
||||
<doc>Convert String to JSON object</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.356990" elapsed="0.000409"/>
|
||||
</kw>
|
||||
<kw name="Get Value From Json" owner="JSONLibrary">
|
||||
<msg time="2026-07-02T21:15:20.368609" level="INFO">${values} = ['attack-on-titan']</msg>
|
||||
<var>${values}</var>
|
||||
<arg>${json}</arg>
|
||||
<arg>${json_path}</arg>
|
||||
<doc>Get Value From JSON using JSONPath</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.357488" elapsed="0.011162"/>
|
||||
</kw>
|
||||
<kw name="Set Variable" owner="BuiltIn">
|
||||
<msg time="2026-07-02T21:15:20.369238" level="INFO">${value} = attack-on-titan</msg>
|
||||
<var>${value}</var>
|
||||
<arg>${values}[0]</arg>
|
||||
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.368805" elapsed="0.000462"/>
|
||||
</kw>
|
||||
<return>
|
||||
<value>${value}</value>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.369333" elapsed="0.000119"/>
|
||||
</return>
|
||||
<msg time="2026-07-02T21:15:20.369570" level="INFO">${key} = attack-on-titan</msg>
|
||||
<var>${key}</var>
|
||||
<arg>${resp}</arg>
|
||||
<arg>$.key</arg>
|
||||
<doc>Extract a value from a JSON response using JSONPath.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.356701" elapsed="0.012889"/>
|
||||
</kw>
|
||||
<kw name="Should Not Be Empty" owner="BuiltIn">
|
||||
<msg time="2026-07-02T21:15:20.370113" level="INFO">Length is 15.</msg>
|
||||
<arg>${key}</arg>
|
||||
<doc>Verifies that the given item is not empty.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.369706" elapsed="0.000444"/>
|
||||
</kw>
|
||||
<kw name="Go To" owner="Browser">
|
||||
<msg time="2026-07-02T21:15:20.565033" level="INFO">Successfully opened URL http://127.0.0.1:8765/anime/settings?key=attack-on-titan</msg>
|
||||
<arg>${BASE_URL}/anime/settings?key=${key}</arg>
|
||||
<tag>BrowserControl</tag>
|
||||
<tag>Setter</tag>
|
||||
<doc>Navigates to the given ``url``.</doc>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.370255" elapsed="0.195106"/>
|
||||
</kw>
|
||||
<kw name="Evaluate JavaScript" owner="Browser">
|
||||
<msg time="2026-07-02T21:15:20.655706" level="INFO" html="true"></td></tr><tr><td colspan="3"><a href="browser/screenshot/fail-screenshot-1.png" target="_blank"><img src="browser/screenshot/fail-screenshot-1.png" width="800px"/></a></msg>
|
||||
<msg time="2026-07-02T21:15:20.655954" level="INFO">See also file:///home/lukas/Volume/repo/Aniworld/playwright-log.txt for additional details.</msg>
|
||||
<msg time="2026-07-02T21:15:20.656218" level="FAIL">Error: locator.evaluate: Unexpected token "&" while parsing css selector "window.AniWorld && window.AniWorld.AnimeSettingsManager && window.AniWorld.AnimeSettingsManager.init()". Did you mean to CSS.escape it?
|
||||
Call log:
|
||||
- waiting for window.AniWorld && window.AniWorld.AnimeSettingsManager && window.AniWorld.AnimeSettingsManager.init()
|
||||
</msg>
|
||||
<arg>window.AniWorld && window.AniWorld.AnimeSettingsManager && window.AniWorld.AnimeSettingsManager.init()</arg>
|
||||
<tag>Getter</tag>
|
||||
<tag>PageContent</tag>
|
||||
<tag>Setter</tag>
|
||||
<doc>Executes given javascript on the selected element(s) or on page.</doc>
|
||||
<status status="FAIL" start="2026-07-02T21:15:20.565608" elapsed="0.092655">Error: locator.evaluate: Unexpected token "&" while parsing css selector "window.AniWorld && window.AniWorld.AnimeSettingsManager && window.AniWorld.AnimeSettingsManager.init()". Did you mean to CSS.escape it?
|
||||
Call log:
|
||||
- waiting for window.AniWorld && window.AniWorld.AnimeSettingsManager && window.AniWorld.AnimeSettingsManager.init()
|
||||
</status>
|
||||
</kw>
|
||||
<kw name="Wait For Elements State" owner="Browser">
|
||||
<arg>id=settings-section</arg>
|
||||
<arg>visible</arg>
|
||||
<arg>timeout=10s</arg>
|
||||
<tag>PageContent</tag>
|
||||
<tag>Wait</tag>
|
||||
<doc>Waits for the element found by ``selector`` to satisfy state option.</doc>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:20.658436" elapsed="0.000096"/>
|
||||
</kw>
|
||||
<kw name="Page Title Should Contain" owner="ui_keywords">
|
||||
<arg>Settings</arg>
|
||||
<doc>Assert that the page title contains the given text.</doc>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:20.658674" elapsed="0.000052"/>
|
||||
</kw>
|
||||
<kw name="Element Should Be Visible" owner="ui_keywords">
|
||||
<arg>id=settings-section</arg>
|
||||
<doc>Assert that the element matching the selector is visible.</doc>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:20.658817" elapsed="0.000049"/>
|
||||
</kw>
|
||||
<kw name="Element Should Be Visible" owner="ui_keywords">
|
||||
<arg>id=regenerate-nfo-btn</arg>
|
||||
<doc>Assert that the element matching the selector is visible.</doc>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:20.658961" elapsed="0.000056"/>
|
||||
</kw>
|
||||
<kw name="Element Should Be Visible" owner="ui_keywords">
|
||||
<arg>id=save-db-btn</arg>
|
||||
<doc>Assert that the element matching the selector is visible.</doc>
|
||||
<status status="NOT RUN" start="2026-07-02T21:15:20.659098" elapsed="0.000048"/>
|
||||
</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>
|
||||
<msg time="2026-07-02T21:15:20.690093" 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"/>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.659558" elapsed="0.030681"/>
|
||||
</kw>
|
||||
<doc>Close all browser contexts and the browser itself.</doc>
|
||||
<status status="PASS" start="2026-06-28T17:43:55.603913" elapsed="0.004272"/>
|
||||
<status status="PASS" start="2026-07-02T21:15:20.659333" elapsed="0.031009"/>
|
||||
</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>
|
||||
<doc>Navigate to anime settings page and verify form elements.</doc>
|
||||
<status status="FAIL" start="2026-07-02T21:15:17.867367" elapsed="2.823025">Error: locator.evaluate: Unexpected token "&" while parsing css selector "window.AniWorld && window.AniWorld.AnimeSettingsManager && window.AniWorld.AnimeSettingsManager.init()". Did you mean to CSS.escape it?
|
||||
Call log:
|
||||
- waiting for window.AniWorld && window.AniWorld.AnimeSettingsManager && window.AniWorld.AnimeSettingsManager.init()
|
||||
</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"/>
|
||||
<doc>Anime settings page UI tests for Aniworld.
|
||||
Covers page load, regenerate NFO, and update series settings.</doc>
|
||||
<status status="FAIL" start="2026-07-02T21:15:17.624987" elapsed="3.072867"/>
|
||||
</suite>
|
||||
<statistics>
|
||||
<total>
|
||||
@@ -246,7 +568,7 @@ Covers open/close, edit all config sections, save, backup/restore, and export/im
|
||||
<tag>
|
||||
</tag>
|
||||
<suite>
|
||||
<stat name="Settings Modal" id="s1" pass="0" fail="1" skip="0">Settings Modal</stat>
|
||||
<stat name="Anime Settings" id="s1" pass="0" fail="1" skip="0">Anime Settings</stat>
|
||||
</suite>
|
||||
</statistics>
|
||||
<errors>
|
||||
|
||||
Reference in New Issue
Block a user