chore(trading): remove wait for graphql (#5265)
This commit is contained in:
parent
f377e07996
commit
8e898cfd78
@ -1,5 +1,4 @@
|
|||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
from playwright.sync_api import Page
|
from playwright.sync_api import Page
|
||||||
from vega_sim.null_service import VegaServiceNull
|
from vega_sim.null_service import VegaServiceNull
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import pytest
|
import pytest
|
||||||
from playwright.sync_api import expect, Page
|
from playwright.sync_api import expect, Page
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.usefixtures("page", "continuous_market", "risk_accepted")
|
@pytest.mark.usefixtures("page", "continuous_market", "risk_accepted")
|
||||||
def test_see_market_depth_chart(continuous_market, page: Page):
|
def test_see_market_depth_chart(continuous_market, page: Page):
|
||||||
page.goto(f"/#/markets/{continuous_market}")
|
page.goto(f"/#/markets/{continuous_market}")
|
||||||
|
@ -48,32 +48,6 @@ updatedAt_col = '[col-id="updatedAt"]'
|
|||||||
close_toast = "toast-close"
|
close_toast = "toast-close"
|
||||||
|
|
||||||
|
|
||||||
def wait_for_graphql_response(page, query_name, timeout=5000):
|
|
||||||
response_data = {}
|
|
||||||
|
|
||||||
def handle_response(route, request):
|
|
||||||
if "graphql" in request.url:
|
|
||||||
response = request.response()
|
|
||||||
if response is not None:
|
|
||||||
json_response = response.json()
|
|
||||||
if json_response and "data" in json_response:
|
|
||||||
data = json_response["data"]
|
|
||||||
if query_name in data:
|
|
||||||
response_data["data"] = data
|
|
||||||
route.continue_()
|
|
||||||
return
|
|
||||||
route.continue_()
|
|
||||||
|
|
||||||
# Register the route handler
|
|
||||||
page.route("**", handle_response)
|
|
||||||
|
|
||||||
# Wait for the response data to be populated
|
|
||||||
page.wait_for_timeout(timeout)
|
|
||||||
|
|
||||||
# Unregister the route handler
|
|
||||||
page.unroute("**", handle_response)
|
|
||||||
|
|
||||||
|
|
||||||
def create_position(vega: VegaService, market_id):
|
def create_position(vega: VegaService, market_id):
|
||||||
submit_order(vega, "Key 1", market_id, "SIDE_SELL", 100, 110)
|
submit_order(vega, "Key 1", market_id, "SIDE_SELL", 100, 110)
|
||||||
submit_order(vega, "Key 1", market_id, "SIDE_BUY", 100, 110)
|
submit_order(vega, "Key 1", market_id, "SIDE_BUY", 100, 110)
|
||||||
@ -118,7 +92,6 @@ def test_submit_stop_order_rejected(continuous_market, vega: VegaService, page:
|
|||||||
vega.wait_fn(1)
|
vega.wait_fn(1)
|
||||||
vega.wait_for_total_catchup()
|
vega.wait_for_total_catchup()
|
||||||
page.get_by_test_id(close_toast).click()
|
page.get_by_test_id(close_toast).click()
|
||||||
wait_for_graphql_response(page, "stopOrders")
|
|
||||||
page.get_by_role(row_table).locator(market_name_col).nth(1).is_visible()
|
page.get_by_role(row_table).locator(market_name_col).nth(1).is_visible()
|
||||||
expect((page.get_by_role(row_table).locator(market_name_col)).nth(1)).to_have_text(
|
expect((page.get_by_role(row_table).locator(market_name_col)).nth(1)).to_have_text(
|
||||||
"BTC:DAI_2023Futr"
|
"BTC:DAI_2023Futr"
|
||||||
@ -174,7 +147,6 @@ def test_submit_stop_market_order_triggered(
|
|||||||
vega.wait_for_total_catchup()
|
vega.wait_for_total_catchup()
|
||||||
page.wait_for_selector('[data-testid="toast-close"]', state="visible")
|
page.wait_for_selector('[data-testid="toast-close"]', state="visible")
|
||||||
page.get_by_test_id(close_toast).click()
|
page.get_by_test_id(close_toast).click()
|
||||||
wait_for_graphql_response(page, "stopOrders")
|
|
||||||
|
|
||||||
page.get_by_role(row_table).locator(market_name_col).nth(1).is_visible()
|
page.get_by_role(row_table).locator(market_name_col).nth(1).is_visible()
|
||||||
expect((page.get_by_role(row_table).locator(market_name_col)).nth(1)).to_have_text(
|
expect((page.get_by_role(row_table).locator(market_name_col)).nth(1)).to_have_text(
|
||||||
@ -235,7 +207,6 @@ def test_submit_stop_limit_order_pending(
|
|||||||
|
|
||||||
page.wait_for_selector('[data-testid="toast-close"]', state="visible")
|
page.wait_for_selector('[data-testid="toast-close"]', state="visible")
|
||||||
page.get_by_test_id(close_toast).click()
|
page.get_by_test_id(close_toast).click()
|
||||||
wait_for_graphql_response(page, "stopOrders")
|
|
||||||
page.get_by_role(row_table).locator(market_name_col).nth(1).is_visible()
|
page.get_by_role(row_table).locator(market_name_col).nth(1).is_visible()
|
||||||
expect((page.get_by_role(row_table).locator(market_name_col)).nth(1)).to_have_text(
|
expect((page.get_by_role(row_table).locator(market_name_col)).nth(1)).to_have_text(
|
||||||
"BTC:DAI_2023Futr"
|
"BTC:DAI_2023Futr"
|
||||||
@ -287,7 +258,6 @@ def test_submit_stop_limit_order_cancel(
|
|||||||
vega.wait_for_total_catchup()
|
vega.wait_for_total_catchup()
|
||||||
|
|
||||||
page.get_by_test_id(close_toast).first.click()
|
page.get_by_test_id(close_toast).first.click()
|
||||||
wait_for_graphql_response(page, "stopOrders")
|
|
||||||
page.get_by_test_id(cancel).click()
|
page.get_by_test_id(cancel).click()
|
||||||
vega.forward("10s")
|
vega.forward("10s")
|
||||||
vega.wait_fn(1)
|
vega.wait_fn(1)
|
||||||
@ -409,7 +379,6 @@ class TestStopOcoValidation:
|
|||||||
vega.wait_for_total_catchup()
|
vega.wait_for_total_catchup()
|
||||||
if page.get_by_test_id(close_toast).is_visible():
|
if page.get_by_test_id(close_toast).is_visible():
|
||||||
page.get_by_test_id(close_toast).click()
|
page.get_by_test_id(close_toast).click()
|
||||||
wait_for_graphql_response(page, "stopOrders")
|
|
||||||
# 7002-SORD-011
|
# 7002-SORD-011
|
||||||
expect(page.get_by_test_id("stop-order-warning-limit")).to_have_text(
|
expect(page.get_by_test_id("stop-order-warning-limit")).to_have_text(
|
||||||
"There is a limit of 4 active stop orders per market. Orders submitted above the limit will be immediately rejected."
|
"There is a limit of 4 active stop orders per market. Orders submitted above the limit will be immediately rejected."
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
from math import exp
|
|
||||||
import pytest
|
import pytest
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from playwright.sync_api import Page, expect
|
from playwright.sync_api import Page, expect
|
||||||
from vega_sim.service import VegaService
|
from vega_sim.service import VegaService
|
||||||
from actions.vega import submit_order
|
from actions.vega import submit_order
|
||||||
from conftest import init_vega, page
|
from conftest import init_vega
|
||||||
from fixtures.market import setup_continuous_market
|
from fixtures.market import setup_continuous_market
|
||||||
from actions.utils import wait_for_toast_confirmation
|
from actions.utils import wait_for_toast_confirmation
|
||||||
|
|
||||||
@ -54,37 +53,9 @@ trigger_price_oco = "triggerPrice-oco"
|
|||||||
order_size_oco = "order-size-oco"
|
order_size_oco = "order-size-oco"
|
||||||
order_limit_price_oco = "order-price-oco"
|
order_limit_price_oco = "order-price-oco"
|
||||||
|
|
||||||
|
|
||||||
def wait_for_graphql_response(page, query_name, timeout=5000):
|
|
||||||
response_data = {}
|
|
||||||
|
|
||||||
def handle_response(route, request):
|
|
||||||
if "graphql" in request.url:
|
|
||||||
response = request.response()
|
|
||||||
if response is not None:
|
|
||||||
json_response = response.json()
|
|
||||||
if json_response and "data" in json_response:
|
|
||||||
data = json_response["data"]
|
|
||||||
if query_name in data:
|
|
||||||
response_data["data"] = data
|
|
||||||
route.continue_()
|
|
||||||
return
|
|
||||||
route.continue_()
|
|
||||||
|
|
||||||
# Register the route handler
|
|
||||||
page.route("**", handle_response)
|
|
||||||
|
|
||||||
# Wait for the response data to be populated
|
|
||||||
page.wait_for_timeout(timeout)
|
|
||||||
|
|
||||||
# Unregister the route handler
|
|
||||||
page.unroute("**", handle_response)
|
|
||||||
|
|
||||||
|
|
||||||
def create_position(vega: VegaService, market_id):
|
def create_position(vega: VegaService, market_id):
|
||||||
submit_order(vega, "Key 1", market_id, "SIDE_SELL", 100, 110)
|
submit_order(vega, "Key 1", market_id, "SIDE_SELL", 100, 110)
|
||||||
submit_order(vega, "Key 1", market_id, "SIDE_BUY", 100, 110)
|
submit_order(vega, "Key 1", market_id, "SIDE_BUY", 100, 110)
|
||||||
vega.forward("10s")
|
|
||||||
vega.wait_fn(1)
|
vega.wait_fn(1)
|
||||||
vega.wait_for_total_catchup
|
vega.wait_for_total_catchup
|
||||||
|
|
||||||
@ -93,10 +64,8 @@ def create_position(vega: VegaService, market_id):
|
|||||||
def test_submit_stop_order_market_oco_rejected(
|
def test_submit_stop_order_market_oco_rejected(
|
||||||
continuous_market, vega: VegaService, page: Page
|
continuous_market, vega: VegaService, page: Page
|
||||||
):
|
):
|
||||||
market_id = continuous_market
|
page.goto(f"/#/markets/{continuous_market}")
|
||||||
page.goto(f"/#/markets/{market_id}")
|
|
||||||
page.get_by_test_id(stop_orders_tab).click()
|
page.get_by_test_id(stop_orders_tab).click()
|
||||||
wait_for_graphql_response(page, "stopOrders")
|
|
||||||
page.get_by_test_id(stop_order_btn).click()
|
page.get_by_test_id(stop_order_btn).click()
|
||||||
page.get_by_test_id(stop_market_order_btn).is_visible()
|
page.get_by_test_id(stop_market_order_btn).is_visible()
|
||||||
page.get_by_test_id(stop_market_order_btn).click()
|
page.get_by_test_id(stop_market_order_btn).click()
|
||||||
@ -116,12 +85,8 @@ def test_submit_stop_order_market_oco_rejected(
|
|||||||
page.get_by_test_id(order_size_oco).fill("3")
|
page.get_by_test_id(order_size_oco).fill("3")
|
||||||
page.get_by_test_id(submit_stop_order).click()
|
page.get_by_test_id(submit_stop_order).click()
|
||||||
wait_for_toast_confirmation(page)
|
wait_for_toast_confirmation(page)
|
||||||
vega.forward("10s")
|
|
||||||
vega.wait_fn(1)
|
vega.wait_fn(1)
|
||||||
vega.wait_for_total_catchup()
|
vega.wait_for_total_catchup()
|
||||||
|
|
||||||
page.get_by_test_id(close_toast).click()
|
|
||||||
wait_for_graphql_response(page, "stopOrders")
|
|
||||||
page.get_by_role(row_table).locator(market_name_col).nth(1).is_visible()
|
page.get_by_role(row_table).locator(market_name_col).nth(1).is_visible()
|
||||||
|
|
||||||
expect((page.get_by_role(row_table).locator(market_name_col)).nth(1)).to_have_text(
|
expect((page.get_by_role(row_table).locator(market_name_col)).nth(1)).to_have_text(
|
||||||
@ -176,11 +141,10 @@ def test_submit_stop_order_market_oco_rejected(
|
|||||||
def test_submit_stop_oco_market_order_triggered(
|
def test_submit_stop_oco_market_order_triggered(
|
||||||
continuous_market, vega: VegaService, page: Page
|
continuous_market, vega: VegaService, page: Page
|
||||||
):
|
):
|
||||||
market_id = continuous_market
|
create_position(vega, continuous_market)
|
||||||
page.goto(f"/#/markets/{market_id}")
|
page.goto(f"/#/markets/{continuous_market}")
|
||||||
page.get_by_test_id(stop_orders_tab).click()
|
page.get_by_test_id(stop_orders_tab).click()
|
||||||
create_position(vega, market_id)
|
|
||||||
wait_for_graphql_response(page, "stopOrders")
|
|
||||||
page.get_by_test_id(stop_order_btn).click()
|
page.get_by_test_id(stop_order_btn).click()
|
||||||
page.get_by_test_id(stop_market_order_btn).is_visible()
|
page.get_by_test_id(stop_market_order_btn).is_visible()
|
||||||
page.get_by_test_id(stop_market_order_btn).click()
|
page.get_by_test_id(stop_market_order_btn).click()
|
||||||
@ -198,12 +162,8 @@ def test_submit_stop_oco_market_order_triggered(
|
|||||||
page.get_by_test_id(order_size_oco).fill("3")
|
page.get_by_test_id(order_size_oco).fill("3")
|
||||||
page.get_by_test_id(submit_stop_order).click()
|
page.get_by_test_id(submit_stop_order).click()
|
||||||
wait_for_toast_confirmation(page)
|
wait_for_toast_confirmation(page)
|
||||||
vega.forward("10s")
|
|
||||||
vega.wait_fn(1)
|
vega.wait_fn(1)
|
||||||
vega.wait_for_total_catchup()
|
vega.wait_for_total_catchup()
|
||||||
|
|
||||||
page.get_by_test_id(close_toast).click()
|
|
||||||
wait_for_graphql_response(page, "stopOrders")
|
|
||||||
page.get_by_role(row_table).locator(market_name_col).nth(1).is_visible()
|
page.get_by_role(row_table).locator(market_name_col).nth(1).is_visible()
|
||||||
|
|
||||||
expect((page.get_by_role(row_table).locator(market_name_col)).nth(1)).to_have_text(
|
expect((page.get_by_role(row_table).locator(market_name_col)).nth(1)).to_have_text(
|
||||||
@ -258,11 +218,9 @@ def test_submit_stop_oco_market_order_triggered(
|
|||||||
def test_submit_stop_oco_market_order_pending(
|
def test_submit_stop_oco_market_order_pending(
|
||||||
continuous_market, vega: VegaService, page: Page
|
continuous_market, vega: VegaService, page: Page
|
||||||
):
|
):
|
||||||
market_id = continuous_market
|
create_position(vega, continuous_market)
|
||||||
page.goto(f"/#/markets/{market_id}")
|
page.goto(f"/#/markets/{continuous_market}")
|
||||||
page.get_by_test_id(stop_orders_tab).click()
|
page.get_by_test_id(stop_orders_tab).click()
|
||||||
create_position(vega, market_id)
|
|
||||||
wait_for_graphql_response(page, "stopOrders")
|
|
||||||
page.get_by_test_id(stop_order_btn).click()
|
page.get_by_test_id(stop_order_btn).click()
|
||||||
page.get_by_test_id(stop_market_order_btn).is_visible()
|
page.get_by_test_id(stop_market_order_btn).is_visible()
|
||||||
page.get_by_test_id(stop_market_order_btn).click()
|
page.get_by_test_id(stop_market_order_btn).click()
|
||||||
@ -276,11 +234,9 @@ def test_submit_stop_oco_market_order_pending(
|
|||||||
page.get_by_test_id(order_size_oco).fill("2")
|
page.get_by_test_id(order_size_oco).fill("2")
|
||||||
page.get_by_test_id(submit_stop_order).click()
|
page.get_by_test_id(submit_stop_order).click()
|
||||||
wait_for_toast_confirmation(page)
|
wait_for_toast_confirmation(page)
|
||||||
vega.forward("10s")
|
|
||||||
vega.wait_fn(1)
|
vega.wait_fn(1)
|
||||||
vega.wait_for_total_catchup()
|
vega.wait_for_total_catchup()
|
||||||
page.get_by_test_id(close_toast).click()
|
page.get_by_test_id(close_toast).click()
|
||||||
wait_for_graphql_response(page, "stopOrders")
|
|
||||||
page.get_by_role(row_table).locator(market_name_col).nth(1).is_visible()
|
page.get_by_role(row_table).locator(market_name_col).nth(1).is_visible()
|
||||||
|
|
||||||
expect((page.get_by_role(row_table).locator(status_col)).nth(1)).to_have_text(
|
expect((page.get_by_role(row_table).locator(status_col)).nth(1)).to_have_text(
|
||||||
@ -290,16 +246,13 @@ def test_submit_stop_oco_market_order_pending(
|
|||||||
"PendingOCO"
|
"PendingOCO"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.usefixtures("page", "vega", "continuous_market", "auth", "risk_accepted")
|
@pytest.mark.usefixtures("page", "vega", "continuous_market", "auth", "risk_accepted")
|
||||||
def test_submit_stop_oco_limit_order_pending(
|
def test_submit_stop_oco_limit_order_pending(
|
||||||
continuous_market, vega: VegaService, page: Page
|
continuous_market, vega: VegaService, page: Page
|
||||||
):
|
):
|
||||||
market_id = continuous_market
|
create_position(vega, continuous_market)
|
||||||
page.goto(f"/#/markets/{market_id}")
|
page.goto(f"/#/markets/{continuous_market}")
|
||||||
page.get_by_test_id(stop_orders_tab).click()
|
page.get_by_test_id(stop_orders_tab).click()
|
||||||
create_position(vega, market_id)
|
|
||||||
wait_for_graphql_response(page, "stopOrders")
|
|
||||||
page.get_by_test_id(stop_order_btn).click()
|
page.get_by_test_id(stop_order_btn).click()
|
||||||
page.get_by_test_id(stop_limit_order_btn).is_visible()
|
page.get_by_test_id(stop_limit_order_btn).is_visible()
|
||||||
page.get_by_test_id(stop_limit_order_btn).click()
|
page.get_by_test_id(stop_limit_order_btn).click()
|
||||||
@ -317,12 +270,10 @@ def test_submit_stop_oco_limit_order_pending(
|
|||||||
page.get_by_test_id(order_limit_price_oco).fill("99")
|
page.get_by_test_id(order_limit_price_oco).fill("99")
|
||||||
page.get_by_test_id(submit_stop_order).click()
|
page.get_by_test_id(submit_stop_order).click()
|
||||||
wait_for_toast_confirmation(page)
|
wait_for_toast_confirmation(page)
|
||||||
vega.forward("10s")
|
|
||||||
vega.wait_fn(1)
|
vega.wait_fn(1)
|
||||||
vega.wait_for_total_catchup()
|
vega.wait_for_total_catchup()
|
||||||
|
|
||||||
page.get_by_test_id(close_toast).click()
|
page.get_by_test_id(close_toast).click()
|
||||||
wait_for_graphql_response(page, "stopOrders")
|
|
||||||
page.get_by_role(row_table).locator(market_name_col).nth(1).is_visible()
|
page.get_by_role(row_table).locator(market_name_col).nth(1).is_visible()
|
||||||
|
|
||||||
expect((page.get_by_role(row_table).locator(submission_type)).nth(1)).to_have_text(
|
expect((page.get_by_role(row_table).locator(submission_type)).nth(1)).to_have_text(
|
||||||
@ -350,11 +301,8 @@ def test_submit_stop_oco_limit_order_pending(
|
|||||||
def test_submit_stop_oco_limit_order_cancel(
|
def test_submit_stop_oco_limit_order_cancel(
|
||||||
continuous_market, vega: VegaService, page: Page
|
continuous_market, vega: VegaService, page: Page
|
||||||
):
|
):
|
||||||
market_id = continuous_market
|
create_position(vega, continuous_market)
|
||||||
page.goto(f"/#/markets/{market_id}")
|
page.goto(f"/#/markets/{continuous_market}")
|
||||||
page.get_by_test_id(stop_orders_tab).click()
|
|
||||||
create_position(vega, market_id)
|
|
||||||
wait_for_graphql_response(page, "stopOrders")
|
|
||||||
page.get_by_test_id(stop_order_btn).click()
|
page.get_by_test_id(stop_order_btn).click()
|
||||||
page.get_by_test_id(stop_limit_order_btn).is_visible()
|
page.get_by_test_id(stop_limit_order_btn).is_visible()
|
||||||
page.get_by_test_id(stop_limit_order_btn).click()
|
page.get_by_test_id(stop_limit_order_btn).click()
|
||||||
@ -373,19 +321,14 @@ def test_submit_stop_oco_limit_order_cancel(
|
|||||||
page.get_by_test_id(order_limit_price_oco).fill("99")
|
page.get_by_test_id(order_limit_price_oco).fill("99")
|
||||||
page.get_by_test_id(submit_stop_order).click()
|
page.get_by_test_id(submit_stop_order).click()
|
||||||
wait_for_toast_confirmation(page)
|
wait_for_toast_confirmation(page)
|
||||||
vega.forward("10s")
|
|
||||||
vega.wait_fn(1)
|
vega.wait_fn(1)
|
||||||
vega.wait_for_total_catchup()
|
vega.wait_for_total_catchup()
|
||||||
|
|
||||||
page.get_by_test_id(close_toast).click()
|
page.get_by_test_id(close_toast).click()
|
||||||
wait_for_graphql_response(page, "stopOrders")
|
page.get_by_test_id(stop_orders_tab).click()
|
||||||
page.get_by_test_id(cancel).first.click()
|
page.get_by_test_id(cancel).first.click()
|
||||||
wait_for_toast_confirmation(page)
|
wait_for_toast_confirmation(page)
|
||||||
vega.forward("10s")
|
|
||||||
vega.wait_fn(1)
|
vega.wait_fn(1)
|
||||||
vega.wait_for_total_catchup()
|
vega.wait_for_total_catchup()
|
||||||
page.get_by_test_id(close_toast).first.click()
|
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
page.locator(".ag-center-cols-container").locator('[col-id="status"]').first
|
page.locator(".ag-center-cols-container").locator('[col-id="status"]').first
|
||||||
).to_have_text("CancelledOCO")
|
).to_have_text("CancelledOCO")
|
||||||
@ -393,7 +336,6 @@ def test_submit_stop_oco_limit_order_cancel(
|
|||||||
page.locator(".ag-center-cols-container").locator('[col-id="status"]').last
|
page.locator(".ag-center-cols-container").locator('[col-id="status"]').last
|
||||||
).to_have_text("CancelledOCO")
|
).to_have_text("CancelledOCO")
|
||||||
|
|
||||||
|
|
||||||
class TestStopOcoValidation:
|
class TestStopOcoValidation:
|
||||||
@pytest.fixture(scope="class")
|
@pytest.fixture(scope="class")
|
||||||
def vega(self, request):
|
def vega(self, request):
|
||||||
@ -406,8 +348,7 @@ class TestStopOcoValidation:
|
|||||||
|
|
||||||
@pytest.mark.usefixtures("page", "auth", "risk_accepted")
|
@pytest.mark.usefixtures("page", "auth", "risk_accepted")
|
||||||
def test_stop_market_order_oco_form_validation(self, continuous_market, page: Page):
|
def test_stop_market_order_oco_form_validation(self, continuous_market, page: Page):
|
||||||
market_id = continuous_market
|
page.goto(f"/#/markets/{continuous_market}")
|
||||||
page.goto(f"/#/markets/{market_id}")
|
|
||||||
page.get_by_test_id(stop_order_btn).click()
|
page.get_by_test_id(stop_order_btn).click()
|
||||||
page.get_by_test_id(stop_market_order_btn).is_visible()
|
page.get_by_test_id(stop_market_order_btn).is_visible()
|
||||||
page.get_by_test_id(stop_market_order_btn).click()
|
page.get_by_test_id(stop_market_order_btn).click()
|
||||||
@ -434,8 +375,7 @@ class TestStopOcoValidation:
|
|||||||
|
|
||||||
@pytest.mark.usefixtures("page", "auth", "risk_accepted")
|
@pytest.mark.usefixtures("page", "auth", "risk_accepted")
|
||||||
def test_stop_limit_order_oco_form_validation(self, continuous_market, page: Page):
|
def test_stop_limit_order_oco_form_validation(self, continuous_market, page: Page):
|
||||||
market_id = continuous_market
|
page.goto(f"/#/markets/{continuous_market}")
|
||||||
page.goto(f"/#/markets/{market_id}")
|
|
||||||
page.get_by_test_id(stop_order_btn).click()
|
page.get_by_test_id(stop_order_btn).click()
|
||||||
page.get_by_test_id(stop_market_order_btn).is_visible()
|
page.get_by_test_id(stop_market_order_btn).is_visible()
|
||||||
page.get_by_test_id(stop_limit_order_btn).click()
|
page.get_by_test_id(stop_limit_order_btn).click()
|
||||||
@ -466,11 +406,7 @@ class TestStopOcoValidation:
|
|||||||
def test_maximum_number_of_active_stop_orders_oco(
|
def test_maximum_number_of_active_stop_orders_oco(
|
||||||
self, continuous_market, vega: VegaService, page: Page
|
self, continuous_market, vega: VegaService, page: Page
|
||||||
):
|
):
|
||||||
market_id = continuous_market
|
page.goto(f"/#/markets/{continuous_market}")
|
||||||
page.goto(f"/#/markets/{market_id}")
|
|
||||||
page.get_by_test_id(stop_orders_tab).click()
|
|
||||||
create_position(vega, market_id)
|
|
||||||
wait_for_graphql_response(page, "stopOrders")
|
|
||||||
page.get_by_test_id(stop_order_btn).click()
|
page.get_by_test_id(stop_order_btn).click()
|
||||||
page.get_by_test_id(stop_limit_order_btn).is_visible()
|
page.get_by_test_id(stop_limit_order_btn).is_visible()
|
||||||
page.get_by_test_id(stop_limit_order_btn).click()
|
page.get_by_test_id(stop_limit_order_btn).click()
|
||||||
@ -486,12 +422,11 @@ class TestStopOcoValidation:
|
|||||||
for i in range(2):
|
for i in range(2):
|
||||||
page.get_by_test_id(submit_stop_order).click()
|
page.get_by_test_id(submit_stop_order).click()
|
||||||
wait_for_toast_confirmation(page)
|
wait_for_toast_confirmation(page)
|
||||||
vega.forward("10s")
|
|
||||||
vega.wait_fn(1)
|
vega.wait_fn(1)
|
||||||
|
vega.forward("20s")
|
||||||
vega.wait_for_total_catchup()
|
vega.wait_for_total_catchup()
|
||||||
if page.get_by_test_id(close_toast).is_visible():
|
if page.get_by_test_id(close_toast).is_visible():
|
||||||
page.get_by_test_id(close_toast).click()
|
page.get_by_test_id(close_toast).click()
|
||||||
wait_for_graphql_response(page, "stopOrders")
|
|
||||||
# 7002-SORD-011
|
# 7002-SORD-011
|
||||||
expect(page.get_by_test_id("stop-order-warning-limit")).to_have_text(
|
expect(page.get_by_test_id("stop-order-warning-limit")).to_have_text(
|
||||||
"There is a limit of 4 active stop orders per market. Orders submitted above the limit will be immediately rejected."
|
"There is a limit of 4 active stop orders per market. Orders submitted above the limit will be immediately rejected."
|
||||||
|
@ -1,22 +1,17 @@
|
|||||||
import pytest
|
import pytest
|
||||||
import re
|
import re
|
||||||
|
import logging
|
||||||
from playwright.sync_api import expect, Page
|
from playwright.sync_api import expect, Page
|
||||||
from vega_sim.service import VegaService
|
from vega_sim.service import VegaService
|
||||||
|
|
||||||
from playwright.sync_api import expect
|
from playwright.sync_api import expect
|
||||||
from actions.vega import submit_order
|
from actions.vega import submit_order
|
||||||
|
|
||||||
import logging
|
|
||||||
|
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
|
|
||||||
|
|
||||||
# Could be turned into a helper function in the future.
|
# Could be turned into a helper function in the future.
|
||||||
def verify_data_grid(page, data_test_id, expected_pattern):
|
def verify_data_grid(page: Page, data_test_id, expected_pattern):
|
||||||
page.get_by_test_id(data_test_id).click()
|
page.get_by_test_id(data_test_id).click()
|
||||||
# Required so that we can get liquidation price
|
# Required so that we can get liquidation price
|
||||||
if data_test_id == "Positions":
|
|
||||||
wait_for_graphql_response(page, "EstimatePosition")
|
|
||||||
expect(
|
expect(
|
||||||
page.locator(
|
page.locator(
|
||||||
f'[data-testid^="tab-{data_test_id.lower()}"] >> .ag-center-cols-container .ag-row-first'
|
f'[data-testid^="tab-{data_test_id.lower()}"] >> .ag-center-cols-container .ag-row-first'
|
||||||
@ -42,34 +37,7 @@ def verify_data_grid(page, data_test_id, expected_pattern):
|
|||||||
raise AssertionError(f"Pattern does not match: {expected} != {actual}")
|
raise AssertionError(f"Pattern does not match: {expected} != {actual}")
|
||||||
|
|
||||||
|
|
||||||
# Required so that we can get liquidation price - Could also become a helper
|
def submit_order(vega: VegaService, wallet_name, market_id, side, volume, price):
|
||||||
def wait_for_graphql_response(page, query_name, timeout=5000):
|
|
||||||
response_data = {}
|
|
||||||
|
|
||||||
def handle_response(route, request):
|
|
||||||
if "graphql" in request.url:
|
|
||||||
response = request.response()
|
|
||||||
if response is not None:
|
|
||||||
json_response = response.json()
|
|
||||||
if json_response and "data" in json_response:
|
|
||||||
data = json_response["data"]
|
|
||||||
if query_name in data:
|
|
||||||
response_data["data"] = data
|
|
||||||
route.continue_()
|
|
||||||
return
|
|
||||||
route.continue_()
|
|
||||||
|
|
||||||
# Register the route handler
|
|
||||||
page.route("**", handle_response)
|
|
||||||
|
|
||||||
# Wait for the response data to be populated
|
|
||||||
page.wait_for_timeout(timeout)
|
|
||||||
|
|
||||||
# Unregister the route handler
|
|
||||||
page.unroute("**", handle_response)
|
|
||||||
|
|
||||||
|
|
||||||
def submit_order(vega, wallet_name, market_id, side, volume, price):
|
|
||||||
vega.submit_order(
|
vega.submit_order(
|
||||||
trading_key=wallet_name,
|
trading_key=wallet_name,
|
||||||
market_id=market_id,
|
market_id=market_id,
|
||||||
@ -91,7 +59,6 @@ def test_limit_order_trade_open_order(
|
|||||||
submit_order(vega, "Key 1", market_id, "SIDE_BUY", 1, 110)
|
submit_order(vega, "Key 1", market_id, "SIDE_BUY", 1, 110)
|
||||||
|
|
||||||
page.goto(f"/#/markets/{market_id}")
|
page.goto(f"/#/markets/{market_id}")
|
||||||
|
|
||||||
# Assert that the user order is displayed on the orderbook
|
# Assert that the user order is displayed on the orderbook
|
||||||
orderbook_trade = page.get_by_test_id("price-11000000").nth(1)
|
orderbook_trade = page.get_by_test_id("price-11000000").nth(1)
|
||||||
# 6003-ORDB-001
|
# 6003-ORDB-001
|
||||||
@ -188,4 +155,5 @@ def test_limit_order_trade_order_trade_away(continuous_market, page: Page):
|
|||||||
page.get_by_test_id("Orderbook").click()
|
page.get_by_test_id("Orderbook").click()
|
||||||
price_element = page.get_by_test_id("price-11000000").nth(1)
|
price_element = page.get_by_test_id("price-11000000").nth(1)
|
||||||
# 6003-ORDB-010
|
# 6003-ORDB-010
|
||||||
|
print(price_element)
|
||||||
expect(price_element).to_be_hidden()
|
expect(price_element).to_be_hidden()
|
||||||
|
@ -3,33 +3,6 @@ from playwright.sync_api import Page
|
|||||||
from vega_sim.service import VegaService
|
from vega_sim.service import VegaService
|
||||||
from actions.vega import submit_order
|
from actions.vega import submit_order
|
||||||
|
|
||||||
|
|
||||||
def wait_for_graphql_response(page, query_name, timeout=5000):
|
|
||||||
response_data = {}
|
|
||||||
|
|
||||||
def handle_response(route, request):
|
|
||||||
if "graphql" in request.url:
|
|
||||||
response = request.response()
|
|
||||||
if response is not None:
|
|
||||||
json_response = response.json()
|
|
||||||
if json_response and "data" in json_response:
|
|
||||||
data = json_response["data"]
|
|
||||||
if query_name in data:
|
|
||||||
response_data["data"] = data
|
|
||||||
route.continue_()
|
|
||||||
return
|
|
||||||
route.continue_()
|
|
||||||
|
|
||||||
# Register the route handler
|
|
||||||
page.route("**", handle_response)
|
|
||||||
|
|
||||||
# Wait for the response data to be populated
|
|
||||||
page.wait_for_timeout(timeout)
|
|
||||||
|
|
||||||
# Unregister the route handler
|
|
||||||
page.unroute("**", handle_response)
|
|
||||||
|
|
||||||
|
|
||||||
def check_pnl_color_value(element, expected_color, expected_value):
|
def check_pnl_color_value(element, expected_color, expected_value):
|
||||||
color = element.evaluate("element => getComputedStyle(element).color")
|
color = element.evaluate("element => getComputedStyle(element).color")
|
||||||
value = element.inner_text()
|
value = element.inner_text()
|
||||||
@ -40,7 +13,6 @@ def check_pnl_color_value(element, expected_color, expected_value):
|
|||||||
def test_pnl(continuous_market, vega: VegaService, page: Page):
|
def test_pnl(continuous_market, vega: VegaService, page: Page):
|
||||||
page.set_viewport_size({"width": 1748, "height": 977})
|
page.set_viewport_size({"width": 1748, "height": 977})
|
||||||
submit_order(vega, "Key 1", continuous_market, "SIDE_BUY", 1, 104.50000)
|
submit_order(vega, "Key 1", continuous_market, "SIDE_BUY", 1, 104.50000)
|
||||||
vega.forward("10s")
|
|
||||||
vega.wait_fn(1)
|
vega.wait_fn(1)
|
||||||
vega.wait_for_total_catchup()
|
vega.wait_for_total_catchup()
|
||||||
page.goto(f"/#/markets/{continuous_market}")
|
page.goto(f"/#/markets/{continuous_market}")
|
||||||
@ -71,7 +43,6 @@ def test_pnl(continuous_market, vega: VegaService, page: Page):
|
|||||||
page.get_by_test_id("manage-vega-wallet").click(force=True)
|
page.get_by_test_id("manage-vega-wallet").click(force=True)
|
||||||
page.get_by_role("link", name="Portfolio").click()
|
page.get_by_role("link", name="Portfolio").click()
|
||||||
page.get_by_test_id("Positions").click()
|
page.get_by_test_id("Positions").click()
|
||||||
wait_for_graphql_response(page, "EstimatePosition")
|
|
||||||
page.wait_for_selector(
|
page.wait_for_selector(
|
||||||
'[data-testid="tab-positions"] .ag-center-cols-container .ag-row',
|
'[data-testid="tab-positions"] .ag-center-cols-container .ag-row',
|
||||||
state="visible",
|
state="visible",
|
||||||
@ -103,10 +74,8 @@ def test_pnl(continuous_market, vega: VegaService, page: Page):
|
|||||||
check_pnl_color_value(key_mm2_unrealised_pnl, "rgb(0, 0, 0)", "0.00")
|
check_pnl_color_value(key_mm2_unrealised_pnl, "rgb(0, 0, 0)", "0.00")
|
||||||
|
|
||||||
submit_order(vega, "Key 1", continuous_market, "SIDE_SELL", 2, 101.50000)
|
submit_order(vega, "Key 1", continuous_market, "SIDE_SELL", 2, 101.50000)
|
||||||
vega.forward("10s")
|
|
||||||
vega.wait_fn(1)
|
vega.wait_fn(1)
|
||||||
vega.wait_for_total_catchup()
|
vega.wait_for_total_catchup()
|
||||||
wait_for_graphql_response(page, "EstimatePosition")
|
|
||||||
|
|
||||||
check_pnl_color_value(key_1_realised_pnl, "rgb(236, 0, 60)", "-8.00")
|
check_pnl_color_value(key_1_realised_pnl, "rgb(236, 0, 60)", "-8.00")
|
||||||
check_pnl_color_value(key_1_unrealised_pnl, "rgb(0, 0, 0)", "0.00")
|
check_pnl_color_value(key_1_unrealised_pnl, "rgb(0, 0, 0)", "0.00")
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
import pytest
|
import pytest
|
||||||
import re
|
import re
|
||||||
|
import logging
|
||||||
from playwright.sync_api import expect
|
from playwright.sync_api import expect
|
||||||
from actions.vega import submit_order
|
from actions.vega import submit_order
|
||||||
from conftest import init_vega
|
from conftest import init_vega
|
||||||
import logging
|
from playwright.sync_api import Page
|
||||||
|
from vega_sim.null_service import VegaService
|
||||||
|
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
|
|
||||||
@ -15,11 +17,9 @@ def vega():
|
|||||||
|
|
||||||
|
|
||||||
# Could be turned into a helper function in the future.
|
# Could be turned into a helper function in the future.
|
||||||
def verify_data_grid(page, data_test_id, expected_pattern):
|
def verify_data_grid(page: Page, data_test_id, expected_pattern):
|
||||||
page.get_by_test_id(data_test_id).click()
|
page.get_by_test_id(data_test_id).click()
|
||||||
# Required so that we can get liquidation price
|
# Required so that we can get liquidation price
|
||||||
if data_test_id == "Positions":
|
|
||||||
wait_for_graphql_response(page, "EstimatePosition")
|
|
||||||
expect(
|
expect(
|
||||||
page.locator(
|
page.locator(
|
||||||
f'[data-testid^="tab-{data_test_id.lower()}"] >> .ag-center-cols-container .ag-row-first'
|
f'[data-testid^="tab-{data_test_id.lower()}"] >> .ag-center-cols-container .ag-row-first'
|
||||||
@ -45,41 +45,12 @@ def verify_data_grid(page, data_test_id, expected_pattern):
|
|||||||
raise AssertionError(f"Pattern does not match: {expected} != {actual}")
|
raise AssertionError(f"Pattern does not match: {expected} != {actual}")
|
||||||
|
|
||||||
|
|
||||||
# Required so that we can get liquidation price - Could also become a helper
|
|
||||||
def wait_for_graphql_response(page, query_name, timeout=5000):
|
|
||||||
response_data = {}
|
|
||||||
|
|
||||||
def handle_response(route, request):
|
|
||||||
if "graphql" in request.url:
|
|
||||||
response = request.response()
|
|
||||||
if response is not None:
|
|
||||||
json_response = response.json()
|
|
||||||
if json_response and "data" in json_response:
|
|
||||||
data = json_response["data"]
|
|
||||||
if query_name in data:
|
|
||||||
response_data["data"] = data
|
|
||||||
route.continue_()
|
|
||||||
return
|
|
||||||
route.continue_()
|
|
||||||
|
|
||||||
# Register the route handler
|
|
||||||
page.route("**", handle_response)
|
|
||||||
|
|
||||||
# Wait for the response data to be populated
|
|
||||||
page.wait_for_timeout(timeout)
|
|
||||||
|
|
||||||
# Unregister the route handler
|
|
||||||
page.unroute("**", handle_response)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.usefixtures("page", "continuous_market", "auth", "risk_accepted")
|
@pytest.mark.usefixtures("page", "continuous_market", "auth", "risk_accepted")
|
||||||
def test_limit_order_new_trade_top_of_list(continuous_market, vega, page):
|
def test_limit_order_new_trade_top_of_list(continuous_market, vega: VegaService, page: Page):
|
||||||
submit_order(vega, "Key 1", continuous_market, "SIDE_BUY", 1, 110)
|
submit_order(vega, "Key 1", continuous_market, "SIDE_BUY", 1, 110)
|
||||||
page.goto(f"/#/markets/{continuous_market}")
|
vega.wait_fn(1)
|
||||||
|
|
||||||
vega.forward("10s")
|
|
||||||
vega.wait_fn(10)
|
|
||||||
vega.wait_for_total_catchup()
|
vega.wait_for_total_catchup()
|
||||||
|
page.goto(f"/#/markets/{continuous_market}")
|
||||||
expected_trade = [
|
expected_trade = [
|
||||||
"103.50",
|
"103.50",
|
||||||
"1",
|
"1",
|
||||||
@ -97,10 +68,9 @@ def test_limit_order_new_trade_top_of_list(continuous_market, vega, page):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.usefixtures("page", "continuous_market", "auth", "risk_accepted")
|
@pytest.mark.usefixtures("page", "continuous_market", "auth", "risk_accepted")
|
||||||
def test_price_copied_to_deal_ticket(continuous_market, page):
|
def test_price_copied_to_deal_ticket(continuous_market, page: Page):
|
||||||
page.goto(f"/#/markets/{continuous_market}")
|
page.goto(f"/#/markets/{continuous_market}")
|
||||||
page.get_by_test_id("Trades").click()
|
page.get_by_test_id("Trades").click()
|
||||||
wait_for_graphql_response(page, "Trades")
|
|
||||||
page.locator("[col-id=price]").last.click()
|
page.locator("[col-id=price]").last.click()
|
||||||
# 6005-THIS-007
|
# 6005-THIS-007
|
||||||
expect(page.get_by_test_id("order-price")).to_have_value("107.50000")
|
expect(page.get_by_test_id("order-price")).to_have_value("107.50000")
|
||||||
|
Loading…
Reference in New Issue
Block a user