import pytest from playwright.sync_api import Page, expect from vega_sim.service import VegaService from conftest import init_vega from fixtures.market import setup_continuous_market TOOLTIP_LABEL = "margin-health-tooltip-label" TOOLTIP_VALUE = "margin-health-tooltip-value" COL_ID_USED = ".ag-center-cols-container [col-id='used'] .ag-cell-value" @pytest.fixture(scope="module") def vega(request): with init_vega(request) as vega: yield vega @pytest.fixture(scope="module") def continuous_market(vega: VegaService): return setup_continuous_market(vega) @pytest.mark.usefixtures("auth", "risk_accepted") def test_usage_breakdown(continuous_market, page: Page): page.goto(f"/#/markets/{continuous_market}") page.get_by_test_id("Collateral").click() page.locator(".ag-floating-top-container .ag-row [col-id='used']").click() usage_breakdown = page.get_by_test_id("usage-breakdown") # Verify headers headers = ["Market", "Account type", "Balance", "Margin health"] ag_headers = usage_breakdown.locator(".ag-header-cell-text").element_handles() for i, header_element in enumerate(ag_headers): header_text = header_element.text_content() assert header_text == headers[i] # Other expectations expect(usage_breakdown.locator('[class="mb-2 text-sm"]')).to_have_text( "You have 1,000,000.00 tDAI in total." ) expect(usage_breakdown.locator(COL_ID_USED).first).to_have_text("8.50269 (0%)") expect(usage_breakdown.locator(COL_ID_USED).nth(1)).to_have_text( "999,991.49731 (99%)" ) # Maintenance Level expect( usage_breakdown.locator( ".ag-center-cols-container [col-id='market.id'] .ag-cell-value" ).first ).to_have_text("2.85556 above maintenance level") # Margin health tooltip usage_breakdown.get_by_test_id("margin-health-chart-track").hover() tooltip_data = [ ("maintenance level", "5.64713"), ("search level", "6.21184"), ("initial level", "8.47069"), ("balance", "8.50269"), ("release level", "9.60012"), ] for index, (label, value) in enumerate(tooltip_data): expect(page.get_by_test_id(TOOLTIP_LABEL).nth(index)).to_have_text(label) expect(page.get_by_test_id(TOOLTIP_VALUE).nth(index)).to_have_text(value) page.get_by_test_id("dialog-close").click()