<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.0.1 (Python 3.12.4 on linux)" generated="2026-08-07T09:14:22.031" rpa="false" schemaversion="5">
<suite id="s1" name="Checkout" source="/builds/novus/tests/checkout.robot">
<test id="s1-t1" name="Applies Unit Price" line="12">
<kw name="Given The Cart Is Ready" library="CartLibrary"><status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.010"/></kw>
<kw name="Then Applies Unit Price" library="CartLibrary"><arg>cart.PricingTest</arg><status status="PASS" start="2026-08-07T09:14:22.041" elapsed="0.643"/></kw>
<tag>cart</tag>
<status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.643"/>
</test>
<test id="s1-t2" name="Applies Quantity Multiplier" line="18">
<kw name="Given The Cart Is Ready" library="CartLibrary"><status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.010"/></kw>
<kw name="Then Applies Quantity Multiplier" library="CartLibrary"><arg>cart.PricingTest</arg><status status="PASS" start="2026-08-07T09:14:22.041" elapsed="0.659"/></kw>
<tag>cart</tag>
<status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.659"/>
</test>
<test id="s1-t3" name="Rounds Half Up At Two Decimals" line="24">
<kw name="Given The Cart Is Ready" library="CartLibrary"><status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.010"/></kw>
<kw name="Then Rounds Half Up At Two Decimals" library="CartLibrary"><arg>cart.PricingTest</arg><status status="PASS" start="2026-08-07T09:14:22.041" elapsed="1.042"/></kw>
<tag>cart</tag>
<status status="PASS" start="2026-08-07T09:14:22.031" elapsed="1.042"/>
</test>
<test id="s1-t4" name="Rejects Negative Quantity" line="30">
<kw name="Given The Cart Is Ready" library="CartLibrary"><status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.010"/></kw>
<kw name="Then Rejects Negative Quantity" library="CartLibrary"><arg>cart.PricingTest</arg><status status="PASS" start="2026-08-07T09:14:22.041" elapsed="1.048"/></kw>
<tag>cart</tag>
<status status="PASS" start="2026-08-07T09:14:22.031" elapsed="1.048"/>
</test>
<test id="s1-t5" name="Applies Tax To Subtotal" line="36">
<kw name="Given The Cart Is Ready" library="CartLibrary"><status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.010"/></kw>
<kw name="Then Applies Tax To Subtotal" library="CartLibrary"><arg>cart.PricingTest</arg><status status="FAIL" start="2026-08-07T09:14:22.041" elapsed="0.352"/></kw>
<tag>cart</tag>
<status status="FAIL" start="2026-08-07T09:14:22.031" elapsed="0.352">expected:&lt;12.60&gt; but was:&lt;12.59&gt;</status>
</test>
<test id="s1-t6" name="Applies Percentage Discount" line="42">
<kw name="Given The Cart Is Ready" library="CartLibrary"><status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.010"/></kw>
<kw name="Then Applies Percentage Discount" library="CartLibrary"><arg>cart.DiscountTest</arg><status status="PASS" start="2026-08-07T09:14:22.041" elapsed="0.147"/></kw>
<tag>cart</tag>
<status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.147"/>
</test>
<test id="s1-t7" name="Stacks Discounts In Declared Order" line="48">
<kw name="Given The Cart Is Ready" library="CartLibrary"><status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.010"/></kw>
<kw name="Then Stacks Discounts In Declared Order" library="CartLibrary"><arg>cart.DiscountTest</arg><status status="PASS" start="2026-08-07T09:14:22.041" elapsed="0.327"/></kw>
<tag>cart</tag>
<status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.327"/>
</test>
<test id="s1-t8" name="Ignores Expired Coupon" line="54">
<kw name="Given The Cart Is Ready" library="CartLibrary"><status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.010"/></kw>
<kw name="Then Ignores Expired Coupon" library="CartLibrary"><arg>cart.DiscountTest</arg><status status="PASS" start="2026-08-07T09:14:22.041" elapsed="0.893"/></kw>
<tag>cart</tag>
<status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.893"/>
</test>
<test id="s1-t9" name="Applies Loyalty Tier" line="60">
<kw name="Given The Cart Is Ready" library="CartLibrary"><status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.010"/></kw>
<kw name="Then Applies Loyalty Tier" library="CartLibrary"><arg>cart.DiscountTest</arg><status status="SKIP" start="2026-08-07T09:14:22.041" elapsed="0.700"/></kw>
<tag>cart</tag>
<status status="SKIP" start="2026-08-07T09:14:22.031" elapsed="0.700">loyalty tiers are disabled in the CI profile</status>
</test>
<test id="s1-t10" name="Creates Session For New Cart" line="66">
<kw name="Given The Cart Is Ready" library="CartLibrary"><status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.010"/></kw>
<kw name="Then Creates Session For New Cart" library="CartLibrary"><arg>checkout.SessionTest</arg><status status="PASS" start="2026-08-07T09:14:22.041" elapsed="0.783"/></kw>
<tag>checkout</tag>
<status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.783"/>
</test>
<test id="s1-t11" name="Expires Session After Timeout" line="72">
<kw name="Given The Cart Is Ready" library="CartLibrary"><status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.010"/></kw>
<kw name="Then Expires Session After Timeout" library="CartLibrary"><arg>checkout.SessionTest</arg><status status="FAIL" start="2026-08-07T09:14:22.041" elapsed="0.695"/></kw>
<tag>checkout</tag>
<status status="FAIL" start="2026-08-07T09:14:22.031" elapsed="0.695">Connection refused: sessions.example.com:5432</status>
</test>
<test id="s1-t12" name="Restores Cart On Resume" line="78">
<kw name="Given The Cart Is Ready" library="CartLibrary"><status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.010"/></kw>
<kw name="Then Restores Cart On Resume" library="CartLibrary"><arg>checkout.SessionTest</arg><status status="PASS" start="2026-08-07T09:14:22.041" elapsed="0.161"/></kw>
<tag>checkout</tag>
<status status="PASS" start="2026-08-07T09:14:22.031" elapsed="0.161"/>
</test>
<status status="FAIL" start="2026-08-07T09:14:22.031" elapsed="7.450"/>
</suite>
<statistics>
<total><stat pass="9" fail="2" skip="1">All Tests</stat></total>
<tag><stat pass="7" fail="1" skip="1">cart</stat><stat pass="2" fail="1" skip="0">checkout</stat></tag>
<suite><stat pass="9" fail="2" skip="1" id="s1" name="Checkout">Checkout</stat></suite>
</statistics>
<errors/>
</robot>
