2023-12-19 12:22:15 +00:00
import pytest
from playwright . sync_api import Page , expect
2023-12-27 08:17:20 +00:00
from vega_sim . null_service import VegaServiceNull
2023-12-19 12:22:15 +00:00
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 )
2023-12-27 08:17:20 +00:00
def setup_market_with_volume_discount_program ( vega : VegaServiceNull , tier : int ) :
2023-12-19 12:22:15 +00:00
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
2023-12-27 08:17:20 +00:00
def setup_market_with_referral_discount_program ( vega : VegaServiceNull , tier : int ) :
2023-12-19 12:22:15 +00:00
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
2023-12-27 08:17:20 +00:00
def setup_combined_market ( vega : VegaServiceNull ) :
2023-12-19 12:22:15 +00:00
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
2023-12-29 15:25:33 +00:00
# tbd - tooltip is not visible without this wait
page . wait_for_timeout ( 1000 )
2023-12-19 12:22:15 +00:00
row . locator ( COL_FEE ) . hover ( )
expect ( page . get_by_test_id ( FEE_BREAKDOWN_TOOLTIP ) ) . to_have_text (
2023-12-21 13:51:34 +00:00
f " If the market was activeFee revenue to be received by the maker, takers ' fee discounts already applied.During continuous trading the maker pays no infrastructure and liquidity fees.Infrastructure fee0.00 tDAILiquidity fee0.00 tDAIMaker fee- { fee } tDAITotal fees- { fee } tDAI "
2023-12-19 12:22:15 +00:00
)
@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
2023-12-29 15:25:33 +00:00
# tbd - tooltip is not visible without this wait
page . wait_for_timeout ( 1000 )
2023-12-19 12:22:15 +00:00
row . locator ( COL_FEE ) . hover ( )
expect ( page . get_by_test_id ( FEE_BREAKDOWN_TOOLTIP ) ) . to_have_text (
2023-12-21 13:51:34 +00:00
f " If the market was activeFees to be paid by the taker; discounts are already applied.Infrastructure fee { infra_fee } tDAILiquidity fee0.00 tDAIMaker fee { maker_fee } tDAITotal fees { total_fee } tDAI "
2023-12-19 12:22:15 +00:00
)