683 lines
24 KiB
Python
683 lines
24 KiB
Python
import pytest
|
|
|
|
from playwright.sync_api import Page, expect
|
|
from vega_sim.service import VegaService
|
|
from actions.vega import submit_order
|
|
from wallet_config import MM_WALLET
|
|
from conftest import init_vega, init_page, auth_setup
|
|
from actions.utils import next_epoch, change_keys, forward_time
|
|
from fixtures.market import market_exists, setup_continuous_market
|
|
|
|
# region Constants for test IDs
|
|
ADJUSTED_FEES = "adjusted-fees"
|
|
TOTAL_FEE_BEFORE_DISCOUNT = "total-fee-before-discount"
|
|
INFRASTRUCTURE_FEES = "infrastructure-fees"
|
|
MAKER_FEES = "maker-fees"
|
|
LIQUIDITY_FEES = "liquidity-fees"
|
|
TOTAL_DISCOUNT = "total-discount"
|
|
VOLUME_DISCOUNT_ROW = "volume-discount-row"
|
|
REFERRAL_DISCOUNT_ROW = "referral-discount-row"
|
|
PAST_EPOCHS_VOLUME = "past-epochs-volume"
|
|
REQUIRED_FOR_NEXT_TIER = "required-for-next-tier"
|
|
TIER_VALUE_0 = "tier-value-0"
|
|
TIER_VALUE_1 = "tier-value-1"
|
|
DISCOUNT_VALUE_0 = "discount-value-0"
|
|
DISCOUNT_VALUE_1 = "discount-value-1"
|
|
MIN_VOLUME_VALUE_0 = "min-volume-value-0"
|
|
MIN_VOLUME_VALUE_1 = "min-volume-value-1"
|
|
MY_VOLUME_VALUE_0 = "my-volume-value-0"
|
|
MY_VOLUME_VALUE_1 = "my-volume-value-1"
|
|
YOUR_TIER_0 = "your-tier-0"
|
|
YOUR_TIER_1 = "your-tier-1"
|
|
ORDER_SIZE = "order-size"
|
|
ORDER_PRICE = "order-price"
|
|
DISCOUNT_PILL = "discount-pill"
|
|
FEES_TEXT = "fees-text"
|
|
TOOLTIP_CONTENT = "tooltip-content"
|
|
INFRASTRUCTURE_FEE_FACTOR = "infrastructure-fee-factor"
|
|
INFRASTRUCTURE_FEE_VALUE = "infrastructure-fee-value"
|
|
LIQUIDITY_FEE_FACTOR = "liquidity-fee-factor"
|
|
LIQUIDITY_FEE_VALUE = "liquidity-fee-value"
|
|
MAKER_FEE_FACTOR = "maker-fee-factor"
|
|
MAKER_FEE_VALUE = "maker-fee-value"
|
|
SUBTOTAL_FEE_FACTOR = "subtotal-fee-factor"
|
|
SUBTOTAL_FEE_VALUE = "subtotal-fee-value"
|
|
DISCOUNT_FEE_FACTOR = "discount-fee-factor"
|
|
DISCOUNT_FEE_VALUE = "discount-fee-value"
|
|
TOTAL_FEE_VALUE = "total-fee-value"
|
|
RUNNING_NOTIONAL_TAKER_VOLUME = "running-notional-taker-volume"
|
|
EPOCHS_IN_REFERRAL_SET = "epochs-in-referral-set"
|
|
REQUIRED_EPOCHS_VALUE_0 = "required-epochs-value-0"
|
|
REQUIRED_EPOCHS_VALUE_1 = "required-epochs-value-1"
|
|
FILLS = "Fills"
|
|
TAB_FILLS = "tab-fills"
|
|
FEE_BREAKDOWN_TOOLTIP = "fee-breakdown-tooltip"
|
|
ROW_LOCATOR = ".ag-center-cols-container .ag-row"
|
|
# Col-Ids:
|
|
COL_INSTRUMENT_CODE = '[col-id="market.tradableInstrument.instrument.code"]'
|
|
COL_CODE = '[col-id="code"]'
|
|
COL_SIZE = '[col-id="size"]'
|
|
COL_PRICE = '[col-id="price"]'
|
|
COL_PRICE_1 = '[col-id="price_1"]'
|
|
COL_AGGRESSOR = '[col-id="aggressor"]'
|
|
COL_FEE = '[col-id="fee"]'
|
|
COL_FEE_DISCOUNT = '[col-id="fee-discount"]'
|
|
COL_FEE_AFTER_DISCOUNT = '[col-id="feeAfterDiscount"]'
|
|
COL_INFRA_FEE = '[col-id="infraFee"]'
|
|
COL_MAKER_FEE = '[col-id="makerFee"]'
|
|
COL_LIQUIDITY_FEE = '[col-id="liquidityFee"]'
|
|
COL_TOTAL_FEE = '[col-id="totalFee"]'
|
|
# endregion
|
|
|
|
@pytest.fixture(scope="module")
|
|
def market_ids():
|
|
return {
|
|
"tier_1_volume": "default_id",
|
|
"tier_2_volume": "default_id",
|
|
"tier_1_referral": "default_id",
|
|
"tier_2_referral": "default_id",
|
|
"combo": "default_id",
|
|
}
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def vega_volume_discount_tier_1(request):
|
|
with init_vega(request) as vega_volume_discount_tier_1:
|
|
yield vega_volume_discount_tier_1
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def vega_volume_discount_tier_2(request):
|
|
with init_vega(request) as vega_volume_discount_tier_2:
|
|
yield vega_volume_discount_tier_2
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def vega_referral_discount_tier_1(request):
|
|
with init_vega(request) as vega_referral_discount_tier_1:
|
|
yield vega_referral_discount_tier_1
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def vega_referral_discount_tier_2(request):
|
|
with init_vega(request) as vega_referral_discount_tier_2:
|
|
yield vega_referral_discount_tier_2
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def vega_referral_and_volume_discount(request):
|
|
with init_vega(request) as vega_referral_and_volume_discount:
|
|
yield vega_referral_and_volume_discount
|
|
|
|
|
|
@pytest.fixture
|
|
def page(vega_instance, browser, request):
|
|
with init_page(vega_instance, browser, request) as page_instance:
|
|
yield page_instance
|
|
|
|
|
|
@pytest.fixture
|
|
def vega_instance(
|
|
tier,
|
|
discount_program,
|
|
vega_volume_discount_tier_1,
|
|
vega_volume_discount_tier_2,
|
|
vega_referral_discount_tier_1,
|
|
vega_referral_discount_tier_2,
|
|
vega_referral_and_volume_discount,
|
|
):
|
|
if discount_program == "volume":
|
|
return vega_volume_discount_tier_1 if tier == 1 else vega_volume_discount_tier_2
|
|
elif discount_program == "referral":
|
|
return (
|
|
vega_referral_discount_tier_1
|
|
if tier == 1
|
|
else vega_referral_discount_tier_2
|
|
)
|
|
elif discount_program == "combo":
|
|
return vega_referral_and_volume_discount
|
|
|
|
|
|
@pytest.fixture
|
|
def auth(vega_instance, page):
|
|
return auth_setup(vega_instance, page)
|
|
|
|
|
|
def setup_market_with_volume_discount_program(vega: VegaService, tier: int):
|
|
market = setup_continuous_market(vega, custom_quantum=100000)
|
|
vega.update_volume_discount_program(
|
|
proposal_key=MM_WALLET.name,
|
|
benefit_tiers=[
|
|
{
|
|
"minimum_running_notional_taker_volume": 100,
|
|
"volume_discount_factor": 0.1,
|
|
},
|
|
{
|
|
"minimum_running_notional_taker_volume": 200,
|
|
"volume_discount_factor": 0.2,
|
|
},
|
|
],
|
|
window_length=7,
|
|
)
|
|
next_epoch(vega=vega)
|
|
|
|
order_count = 2 if tier == 1 else 3
|
|
for _ in range(order_count):
|
|
submit_order(vega, "Key 1", market, "SIDE_BUY", 1, 110)
|
|
forward_time(vega, True if _ < order_count - 1 else False)
|
|
|
|
return market
|
|
|
|
|
|
def setup_market_with_referral_discount_program(vega: VegaService, tier: int):
|
|
market = setup_continuous_market(vega, custom_quantum=100000)
|
|
vega.update_referral_program(
|
|
proposal_key=MM_WALLET.name,
|
|
benefit_tiers=[
|
|
{
|
|
"minimum_running_notional_taker_volume": 100,
|
|
"minimum_epochs": 1,
|
|
"referral_reward_factor": 0.1,
|
|
"referral_discount_factor": 0.1,
|
|
},
|
|
{
|
|
"minimum_running_notional_taker_volume": 200,
|
|
"minimum_epochs": 2,
|
|
"referral_reward_factor": 0.2,
|
|
"referral_discount_factor": 0.2,
|
|
},
|
|
],
|
|
staking_tiers=[
|
|
{"minimum_staked_tokens": 100, "referral_reward_multiplier": 1.1},
|
|
{"minimum_staked_tokens": 200, "referral_reward_multiplier": 1.2},
|
|
],
|
|
window_length=1,
|
|
)
|
|
vega.create_referral_set(key_name=MM_WALLET.name)
|
|
next_epoch(vega=vega)
|
|
referral_set_id = list(vega.list_referral_sets().keys())[0]
|
|
vega.apply_referral_code(key_name="Key 1", id=referral_set_id)
|
|
next_epoch(vega=vega)
|
|
|
|
order_count = 2
|
|
order_size = 1 if tier == 1 else 2
|
|
for _ in range(order_count):
|
|
submit_order(vega, "Key 1", market, "SIDE_BUY", order_size, 110)
|
|
forward_time(vega, True if _ < order_count - 1 else False)
|
|
|
|
return market
|
|
|
|
|
|
def setup_combined_market(vega: VegaService):
|
|
market = setup_continuous_market(vega, custom_quantum=100000)
|
|
vega.update_volume_discount_program(
|
|
proposal_key=MM_WALLET.name,
|
|
benefit_tiers=[
|
|
{
|
|
"minimum_running_notional_taker_volume": 100,
|
|
"volume_discount_factor": 0.1,
|
|
},
|
|
{
|
|
"minimum_running_notional_taker_volume": 200,
|
|
"volume_discount_factor": 0.2,
|
|
},
|
|
],
|
|
window_length=7,
|
|
)
|
|
next_epoch(vega=vega)
|
|
|
|
vega.update_referral_program(
|
|
proposal_key=MM_WALLET.name,
|
|
benefit_tiers=[
|
|
{
|
|
"minimum_running_notional_taker_volume": 100,
|
|
"minimum_epochs": 1,
|
|
"referral_reward_factor": 0.1,
|
|
"referral_discount_factor": 0.1,
|
|
},
|
|
{
|
|
"minimum_running_notional_taker_volume": 200,
|
|
"minimum_epochs": 2,
|
|
"referral_reward_factor": 0.2,
|
|
"referral_discount_factor": 0.2,
|
|
},
|
|
],
|
|
staking_tiers=[
|
|
{"minimum_staked_tokens": 100, "referral_reward_multiplier": 1.1},
|
|
{"minimum_staked_tokens": 200, "referral_reward_multiplier": 1.2},
|
|
],
|
|
window_length=1,
|
|
)
|
|
vega.create_referral_set(key_name=MM_WALLET.name)
|
|
next_epoch(vega=vega)
|
|
referral_set_id = list(vega.list_referral_sets().keys())[0]
|
|
vega.apply_referral_code(key_name="Key 1", id=referral_set_id)
|
|
next_epoch(vega=vega)
|
|
|
|
order_count = 2
|
|
order_size = 2
|
|
for _ in range(order_count):
|
|
submit_order(vega, "Key 1", market, "SIDE_BUY", order_size, 110)
|
|
forward_time(vega, True if _ < order_count - 1 else False)
|
|
return market
|
|
|
|
|
|
def set_market_volume_discount(vega, tier, discount_program, market_ids):
|
|
market_id_key = f"tier_{tier}_{discount_program}"
|
|
if discount_program == "combo":
|
|
market_id_key = "combo"
|
|
|
|
market_id = market_ids.get(market_id_key, "default_id")
|
|
|
|
print(f"Checking if market exists: {market_id}")
|
|
if not market_exists(vega, market_id):
|
|
print(
|
|
f"Market doesn't exist for {discount_program} tier {tier}. Setting up new market."
|
|
)
|
|
|
|
if discount_program == "volume":
|
|
market_id = setup_market_with_volume_discount_program(vega, tier)
|
|
elif discount_program == "referral":
|
|
market_id = setup_market_with_referral_discount_program(vega, tier)
|
|
elif discount_program == "combo":
|
|
market_id = setup_combined_market(vega)
|
|
|
|
market_ids[market_id_key] = market_id
|
|
|
|
print(f"Using market ID: {market_id}")
|
|
return market_ids
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"tier, discount_program, expected_text",
|
|
[
|
|
(1, "volume", "9.045%-9.045%"),
|
|
(2, "volume", "8.04%-8.04%"),
|
|
(1, "referral", "9.045%-9.045%"),
|
|
(2, "referral", "8.04%-8.04%"),
|
|
(2, "combo", "6.432%-6.432%"),
|
|
],
|
|
)
|
|
@pytest.mark.usefixtures("risk_accepted", "auth", "market_ids")
|
|
def test_fees_page_discount_program_my_trading_fees(
|
|
tier, expected_text, discount_program, vega_instance, page: Page, market_ids
|
|
):
|
|
market_ids = set_market_volume_discount(
|
|
vega_instance, tier, discount_program, market_ids
|
|
)
|
|
|
|
page.goto("/#/fees")
|
|
expect(page.get_by_test_id(ADJUSTED_FEES)).to_have_text(expected_text)
|
|
expect(page.get_by_test_id(TOTAL_FEE_BEFORE_DISCOUNT)).to_have_text(
|
|
"Total fee before discount10.05%-10.05%"
|
|
)
|
|
expect(page.get_by_test_id(INFRASTRUCTURE_FEES)).to_have_text("Infrastructure0.05%")
|
|
expect(page.get_by_test_id(MAKER_FEES)).to_have_text("Maker10%")
|
|
expect(page.get_by_test_id(LIQUIDITY_FEES)).to_have_text("Liquidity0%-0%")
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"tier, discount_program, volume_discount, total_discount, referral_discount",
|
|
[
|
|
(1, "volume", "Volume discount10%", "10%", "Referral discount0%"),
|
|
(2, "volume", "Volume discount20%", "20%", "Referral discount0%"),
|
|
(1, "referral", "Volume discount0%", "10%", "Referral discount10%"),
|
|
(2, "referral", "Volume discount0%", "20%", "Referral discount20%"),
|
|
(2, "combo", "Volume discount20%", "36%", "Referral discount20%"),
|
|
],
|
|
)
|
|
@pytest.mark.usefixtures("risk_accepted", "auth", "market_ids")
|
|
def test_fees_page_discount_program_total_discount(
|
|
tier,
|
|
discount_program,
|
|
volume_discount,
|
|
referral_discount,
|
|
total_discount,
|
|
vega_instance,
|
|
page: Page,
|
|
market_ids,
|
|
):
|
|
market_ids = set_market_volume_discount(
|
|
vega_instance, tier, discount_program, market_ids
|
|
)
|
|
page.goto("/#/fees")
|
|
expect(page.get_by_test_id(TOTAL_DISCOUNT)).to_have_text(total_discount)
|
|
expect(page.get_by_test_id(VOLUME_DISCOUNT_ROW)).to_have_text(volume_discount)
|
|
expect(page.get_by_test_id(REFERRAL_DISCOUNT_ROW)).to_have_text(referral_discount)
|
|
page.get_by_test_id(TOTAL_DISCOUNT).hover()
|
|
expect(page.get_by_test_id(TOOLTIP_CONTENT).nth(0)).to_have_text(
|
|
"The total discount is calculated according to the following formula: 1 - (1 - dvolume) ⋇ (1 - dreferral)"
|
|
)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"tier, discount_program, past_epochs_volume, required_for_next_tier",
|
|
[(1, "volume", "103", "97"), (2, "volume", "206", "")],
|
|
)
|
|
@pytest.mark.usefixtures("risk_accepted", "auth", "market_ids")
|
|
def test_fees_page_volume_discount_program_my_current_volume(
|
|
tier,
|
|
discount_program,
|
|
past_epochs_volume,
|
|
required_for_next_tier,
|
|
vega_instance,
|
|
page: Page,
|
|
market_ids,
|
|
):
|
|
market_ids = set_market_volume_discount(
|
|
vega_instance, tier, discount_program, market_ids
|
|
)
|
|
page.goto("/#/fees")
|
|
expect(page.get_by_test_id(PAST_EPOCHS_VOLUME)).to_have_text(past_epochs_volume)
|
|
|
|
if tier == 1:
|
|
expect(page.get_by_test_id(REQUIRED_FOR_NEXT_TIER)).to_have_text(
|
|
required_for_next_tier
|
|
)
|
|
else:
|
|
expect(page.get_by_test_id(REQUIRED_FOR_NEXT_TIER)).not_to_be_visible()
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"tier, discount_program, notional_taker_volume, epochs_in_set",
|
|
[(1, "referral", "103", "1"), (2, "referral", "207", "1")],
|
|
)
|
|
@pytest.mark.usefixtures("risk_accepted", "auth", "market_ids")
|
|
def test_fees_page_referral_discount_program_referral_benefits(
|
|
tier,
|
|
vega_instance,
|
|
discount_program,
|
|
notional_taker_volume,
|
|
epochs_in_set,
|
|
page: Page,
|
|
market_ids,
|
|
):
|
|
market_ids = set_market_volume_discount(
|
|
vega_instance, tier, discount_program, market_ids
|
|
)
|
|
page.goto("/#/fees")
|
|
expect(page.get_by_test_id(RUNNING_NOTIONAL_TAKER_VOLUME)).to_have_text(
|
|
notional_taker_volume
|
|
)
|
|
expect(page.get_by_test_id(EPOCHS_IN_REFERRAL_SET)).to_have_text(epochs_in_set)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"tier, discount_program, my_volume_test_id, my_volume_value, your_tier",
|
|
[
|
|
(1, "volume", "my-volume-value-0", "103", "your-tier-0"),
|
|
(2, "volume", "my-volume-value-1", "206", "your-tier-1"),
|
|
(1, "referral", "my-volume-value-0", "103", "your-tier-0"),
|
|
(2, "referral", "my-volume-value-1", "206", "your-tier-1"),
|
|
],
|
|
)
|
|
@pytest.mark.usefixtures("risk_accepted", "auth", "market_ids")
|
|
def test_fees_page_discount_program_discount(
|
|
tier,
|
|
discount_program,
|
|
my_volume_test_id,
|
|
my_volume_value,
|
|
your_tier,
|
|
vega_instance,
|
|
page: Page,
|
|
market_ids,
|
|
):
|
|
market_ids = set_market_volume_discount(
|
|
vega_instance, tier, discount_program, market_ids
|
|
)
|
|
page.goto("/#/fees")
|
|
expect(page.get_by_test_id(TIER_VALUE_0)).to_have_text("1")
|
|
expect(page.get_by_test_id(TIER_VALUE_1)).to_have_text("2")
|
|
expect(page.get_by_test_id(DISCOUNT_VALUE_0)).to_have_text("10%")
|
|
expect(page.get_by_test_id(DISCOUNT_VALUE_1)).to_have_text("20%")
|
|
expect(page.get_by_test_id(MIN_VOLUME_VALUE_0)).to_have_text("100")
|
|
expect(page.get_by_test_id(MIN_VOLUME_VALUE_1)).to_have_text("200")
|
|
|
|
if discount_program == "volume":
|
|
expect(page.get_by_test_id(my_volume_test_id)).to_have_text(my_volume_value)
|
|
else:
|
|
expect(page.get_by_test_id(REQUIRED_EPOCHS_VALUE_0)).to_have_text("1")
|
|
expect(page.get_by_test_id(REQUIRED_EPOCHS_VALUE_1)).to_have_text("2")
|
|
|
|
expect(page.get_by_test_id(your_tier)).to_be_visible()
|
|
expect(page.get_by_test_id(your_tier)).to_have_text("Your tier")
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"tier, discount_program, fees_after_discount",
|
|
[
|
|
(1, "volume", "9.045%"),
|
|
(2, "volume", "8.04%"),
|
|
(1, "referral", "9.045%"),
|
|
(2, "referral", "8.04%"),
|
|
(2, "combo", "6.432%"),
|
|
],
|
|
)
|
|
@pytest.mark.usefixtures("risk_accepted", "auth", "market_ids")
|
|
def test_fees_page_discount_program_fees_by_market(
|
|
tier, discount_program, fees_after_discount, vega_instance, page: Page, market_ids
|
|
):
|
|
market_ids = set_market_volume_discount(
|
|
vega_instance, tier, discount_program, market_ids
|
|
)
|
|
page.goto("/#/fees")
|
|
row = page.locator(ROW_LOCATOR)
|
|
expect(row.locator(COL_CODE)).to_have_text("BTC:DAI_2023Futr")
|
|
expect(row.locator(COL_FEE_AFTER_DISCOUNT)).to_have_text(fees_after_discount)
|
|
expect(row.locator(COL_INFRA_FEE)).to_have_text("0.05%")
|
|
expect(row.locator(COL_MAKER_FEE)).to_have_text("10%")
|
|
expect(row.locator(COL_LIQUIDITY_FEE)).to_have_text("0%")
|
|
expect(row.locator(COL_TOTAL_FEE)).to_have_text("10.05%")
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"tier, discount_program, discount, discount_value, total_fee",
|
|
[
|
|
(1, "volume", "-10%", "-0.01005 tDAI", "0.09045 tDAI"),
|
|
(2, "volume", "-20%", "-0.0201 tDAI", "0.0804 tDAI"),
|
|
(1, "referral", "-10%", "-0.01005 tDAI", "0.09045 tDAI"),
|
|
(2, "referral", "-20%", "-0.0201 tDAI", "0.0804 tDAI"),
|
|
(2, "combo", "-36%", "-0.03618 tDAI", "0.06432 tDAI"),
|
|
],
|
|
)
|
|
@pytest.mark.usefixtures("risk_accepted", "auth", "market_ids")
|
|
def test_deal_ticket_discount_program(
|
|
tier,
|
|
discount_program,
|
|
discount,
|
|
discount_value,
|
|
total_fee,
|
|
vega_instance,
|
|
page: Page,
|
|
market_ids,
|
|
):
|
|
market_ids = set_market_volume_discount(
|
|
vega_instance, tier, discount_program, market_ids
|
|
)
|
|
market_id_key = f"tier_{tier}_{discount_program}"
|
|
if discount_program == "combo":
|
|
market_id_key = "combo"
|
|
market_id = market_ids.get(market_id_key)
|
|
page.goto(f"/#/markets/{market_id}")
|
|
page.get_by_test_id(ORDER_SIZE).fill("1")
|
|
page.get_by_test_id(ORDER_PRICE).fill("1")
|
|
expect(page.get_by_test_id(DISCOUNT_PILL)).to_have_text(discount)
|
|
page.get_by_test_id(FEES_TEXT).hover()
|
|
tooltip = page.get_by_test_id(TOOLTIP_CONTENT).first
|
|
expect(tooltip.get_by_test_id(INFRASTRUCTURE_FEE_FACTOR)).to_have_text("0.05%")
|
|
expect(tooltip.get_by_test_id(INFRASTRUCTURE_FEE_VALUE)).to_have_text("0.0005 tDAI")
|
|
expect(tooltip.get_by_test_id(LIQUIDITY_FEE_FACTOR)).to_have_text("0%")
|
|
expect(tooltip.get_by_test_id(LIQUIDITY_FEE_VALUE)).to_have_text("0.00 tDAI")
|
|
expect(tooltip.get_by_test_id(MAKER_FEE_FACTOR)).to_have_text("10%")
|
|
expect(tooltip.get_by_test_id(MAKER_FEE_VALUE)).to_have_text("0.10 tDAI")
|
|
expect(tooltip.get_by_test_id(SUBTOTAL_FEE_FACTOR)).to_have_text("10.05%")
|
|
expect(tooltip.get_by_test_id(SUBTOTAL_FEE_VALUE)).to_have_text("0.1005 tDAI")
|
|
expect(tooltip.get_by_test_id(DISCOUNT_FEE_FACTOR)).to_have_text(discount)
|
|
expect(tooltip.get_by_test_id(DISCOUNT_FEE_VALUE)).to_have_text(discount_value)
|
|
expect(tooltip.get_by_test_id(TOTAL_FEE_VALUE)).to_have_text(total_fee)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"tier, discount_program, fee, fee_discount, price_1, size",
|
|
[
|
|
(1, "volume", "9.36158 tDAI", "1.04017 tDAI", "103.50 tDAI", "+1"),
|
|
(2, "volume", "8.3214 tDAI", "2.08035 tDAI", "103.50 tDAI", "+1"),
|
|
(
|
|
1,
|
|
"referral",
|
|
"8.42543 tDAI ",
|
|
"1.04017 tDAI",
|
|
"103.50 tDAI",
|
|
"+1",
|
|
),
|
|
(
|
|
2,
|
|
"referral",
|
|
"13.31424 tDAI",
|
|
"4.1607 tDAI",
|
|
"207.00 tDAI",
|
|
"+2",
|
|
),
|
|
(2, "combo", "10.6514 tDAI ", "7.48926 tDAI", "207.00 tDAI", "+2"),
|
|
],
|
|
)
|
|
@pytest.mark.usefixtures("risk_accepted", "auth", "market_ids")
|
|
def test_fills_taker_discount_program(
|
|
tier,
|
|
discount_program,
|
|
fee,
|
|
fee_discount,
|
|
price_1,
|
|
size,
|
|
vega_instance,
|
|
page: Page,
|
|
market_ids,
|
|
):
|
|
market_ids = set_market_volume_discount(
|
|
vega_instance, tier, discount_program, market_ids
|
|
)
|
|
market_id_key = f"tier_{tier}_{discount_program}"
|
|
if discount_program == "combo":
|
|
market_id_key = "combo"
|
|
market_id = market_ids.get(market_id_key)
|
|
page.goto(f"/#/markets/{market_id}")
|
|
page.get_by_test_id(FILLS).click()
|
|
row = page.get_by_test_id(TAB_FILLS).locator(ROW_LOCATOR).first
|
|
expect(row.locator(COL_INSTRUMENT_CODE)).to_have_text("BTC:DAI_2023Futr")
|
|
expect(row.locator(COL_SIZE)).to_have_text(size)
|
|
expect(row.locator(COL_PRICE)).to_have_text("103.50 tDAI")
|
|
expect(row.locator(COL_PRICE_1)).to_have_text(price_1)
|
|
expect(row.locator(COL_AGGRESSOR)).to_have_text("Taker")
|
|
expect(row.locator(COL_FEE)).to_have_text(fee)
|
|
expect(row.locator(COL_FEE_DISCOUNT)).to_have_text(fee_discount)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"tier, discount_program, fee, fee_discount, size, price_1",
|
|
[
|
|
(1, "volume", "-9.315 tDAI", "1.035 tDAI", "-1", "103.50 tDAI"),
|
|
(2, "volume", "-8.28 tDAI", "2.07 tDAI", "-1", "103.50 tDAI"),
|
|
(1, "referral", "-8.3835 tDAI", "1.035 tDAI", "-1", "103.50 tDAI"),
|
|
(2, "referral", "-13.248 tDAI", "4.14 tDAI", "-2", "207.00 tDAI"),
|
|
(2, "combo", "-10.5984 tDAI ", "7.452 tDAI", "-2", "207.00 tDAI"),
|
|
],
|
|
)
|
|
@pytest.mark.usefixtures("risk_accepted", "auth", "market_ids")
|
|
def test_fills_maker_discount_program(
|
|
tier,
|
|
discount_program,
|
|
vega_instance,
|
|
fee,
|
|
fee_discount,
|
|
size,
|
|
price_1,
|
|
page: Page,
|
|
market_ids,
|
|
):
|
|
market_ids = set_market_volume_discount(
|
|
vega_instance, tier, discount_program, market_ids
|
|
)
|
|
market_id_key = f"tier_{tier}_{discount_program}"
|
|
if discount_program == "combo":
|
|
market_id_key = "combo"
|
|
market_id = market_ids.get(market_id_key)
|
|
page.goto(f"/#/markets/{market_id}")
|
|
change_keys(page, vega_instance, MM_WALLET.name)
|
|
page.get_by_test_id(FILLS).click()
|
|
row = page.get_by_test_id(TAB_FILLS).locator(ROW_LOCATOR).first
|
|
expect(row.locator(COL_INSTRUMENT_CODE)).to_have_text("BTC:DAI_2023Futr")
|
|
expect(row.locator(COL_SIZE)).to_have_text(size)
|
|
expect(row.locator(COL_PRICE)).to_have_text("103.50 tDAI")
|
|
expect(row.locator(COL_PRICE_1)).to_have_text(price_1)
|
|
expect(row.locator(COL_AGGRESSOR)).to_have_text("Maker")
|
|
expect(row.locator(COL_FEE)).to_have_text(fee)
|
|
expect(row.locator(COL_FEE_DISCOUNT)).to_have_text(fee_discount)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"tier, discount_program, fee",
|
|
[
|
|
(1, "volume", "9.315"),
|
|
(2, "volume", "8.28"),
|
|
(1, "referral", "8.3835"),
|
|
(2, "referral", "13.248"),
|
|
(2, "combo", "10.5984"),
|
|
],
|
|
)
|
|
@pytest.mark.usefixtures("risk_accepted", "auth", "market_ids")
|
|
def test_fills_maker_fee_tooltip_discount_program(
|
|
tier, discount_program, fee, vega_instance, page: Page, market_ids
|
|
):
|
|
market_ids = set_market_volume_discount(
|
|
vega_instance, tier, discount_program, market_ids
|
|
)
|
|
market_id_key = f"tier_{tier}_{discount_program}"
|
|
if discount_program == "combo":
|
|
market_id_key = "combo"
|
|
market_id = market_ids.get(market_id_key)
|
|
page.goto(f"/#/markets/{market_id}")
|
|
change_keys(page, vega_instance, MM_WALLET.name)
|
|
page.get_by_test_id(FILLS).click()
|
|
row = page.get_by_test_id(TAB_FILLS).locator(ROW_LOCATOR).first
|
|
row.locator(COL_FEE).hover()
|
|
expect(page.get_by_test_id(FEE_BREAKDOWN_TOOLTIP)).to_have_text(
|
|
f"If the market was activeThe maker will receive the maker fee.If the market is active the maker will pay zero infrastructure and liquidity fees.Infrastructure fee0.00 tDAILiquidity fee0.00 tDAIMaker fee-{fee} tDAITotal fees-{fee} tDAI"
|
|
)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"tier, discount_program, maker_fee, total_fee, infra_fee",
|
|
[
|
|
(1, "volume", "9.315", "9.36158", "0.04658"),
|
|
(2, "volume", "8.28", "8.3214", "0.0414"),
|
|
(1, "referral", "8.3835", "8.42543", "0.04193"),
|
|
(2, "referral", "13.248", "13.31424", "0.06624"),
|
|
(2, "combo", "10.5984", "10.6514", "0.053"),
|
|
],
|
|
)
|
|
@pytest.mark.usefixtures("risk_accepted", "auth", "market_ids")
|
|
def test_fills_taker_fee_tooltip_discount_program(
|
|
tier,
|
|
discount_program,
|
|
vega_instance,
|
|
maker_fee,
|
|
total_fee,
|
|
infra_fee,
|
|
page: Page,
|
|
market_ids,
|
|
):
|
|
market_ids = set_market_volume_discount(
|
|
vega_instance, tier, discount_program, market_ids
|
|
)
|
|
market_id_key = f"tier_{tier}_{discount_program}"
|
|
if discount_program == "combo":
|
|
market_id_key = "combo"
|
|
market_id = market_ids.get(market_id_key)
|
|
page.goto(f"/#/markets/{market_id}")
|
|
page.get_by_test_id(FILLS).click()
|
|
row = page.get_by_test_id(TAB_FILLS).locator(ROW_LOCATOR).first
|
|
row.locator(COL_FEE).hover()
|
|
expect(page.get_by_test_id(FEE_BREAKDOWN_TOOLTIP)).to_have_text(
|
|
f"If the market was activeFees to be paid by the taker.Infrastructure fee{infra_fee} tDAILiquidity fee0.00 tDAIMaker fee{maker_fee} tDAITotal fees{total_fee} tDAI"
|
|
)
|