chore(trading): remove some redundant capsule tests (#5281)
This commit is contained in:
parent
8e898cfd78
commit
f315917094
@ -1,23 +1,6 @@
|
|||||||
import { removeDecimal } from '@vegaprotocol/cypress';
|
|
||||||
import * as Schema from '@vegaprotocol/types';
|
|
||||||
import {
|
|
||||||
OrderStatusMapping,
|
|
||||||
OrderTypeMapping,
|
|
||||||
Side,
|
|
||||||
} from '@vegaprotocol/types';
|
|
||||||
import { isBefore, isAfter, addSeconds, subSeconds } from 'date-fns';
|
|
||||||
import { createOrder } from '../support/create-order';
|
|
||||||
import { connectEthereumWallet } from '../support/ethereum-wallet';
|
import { connectEthereumWallet } from '../support/ethereum-wallet';
|
||||||
import { selectAsset } from '../support/helpers';
|
import { selectAsset } from '../support/helpers';
|
||||||
|
|
||||||
const orderSize = 'size';
|
|
||||||
const orderType = 'type';
|
|
||||||
const orderStatus = 'status';
|
|
||||||
const orderRemaining = 'remaining';
|
|
||||||
const orderPrice = 'price';
|
|
||||||
const orderTimeInForce = 'timeInForce';
|
|
||||||
const orderUpdatedAt = 'updatedAt';
|
|
||||||
const assetSelectField = 'select[name="asset"]';
|
|
||||||
const amountField = 'input[name="amount"]';
|
const amountField = 'input[name="amount"]';
|
||||||
const txTimeout = Cypress.env('txTimeout');
|
const txTimeout = Cypress.env('txTimeout');
|
||||||
const sepoliaUrl = Cypress.env('ETHERSCAN_URL');
|
const sepoliaUrl = Cypress.env('ETHERSCAN_URL');
|
||||||
@ -25,18 +8,10 @@ const btcName = 0;
|
|||||||
const vegaName = 4;
|
const vegaName = 4;
|
||||||
const btcSymbol = 'tBTC';
|
const btcSymbol = 'tBTC';
|
||||||
const vegaSymbol = 'VEGA';
|
const vegaSymbol = 'VEGA';
|
||||||
const usdcSymbol = 'fUSDC';
|
|
||||||
const toastContent = 'toast-content';
|
const toastContent = 'toast-content';
|
||||||
const openOrdersTab = 'Open';
|
|
||||||
const depositsTab = 'Deposits';
|
const depositsTab = 'Deposits';
|
||||||
const collateralTab = 'Collateral';
|
|
||||||
const toastCloseBtn = 'toast-close';
|
const toastCloseBtn = 'toast-close';
|
||||||
const price = '390';
|
|
||||||
const size = '0.0005';
|
|
||||||
const newPrice = '200';
|
|
||||||
const completeWithdrawalBtn = 'complete-withdrawal';
|
const completeWithdrawalBtn = 'complete-withdrawal';
|
||||||
const submitTransferBtn = '[type="submit"]';
|
|
||||||
const transferForm = 'transfer-form';
|
|
||||||
const depositSubmit = 'deposit-submit';
|
const depositSubmit = 'deposit-submit';
|
||||||
const approveSubmit = 'approve-submit';
|
const approveSubmit = 'approve-submit';
|
||||||
const dialogContent = 'dialog-content';
|
const dialogContent = 'dialog-content';
|
||||||
@ -116,33 +91,6 @@ describe('capsule - without MultiSign', { tags: '@slow' }, () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('can key to key transfers', function () {
|
|
||||||
// 1003-TRAN-023
|
|
||||||
// 1003-TRAN-006
|
|
||||||
cy.get('[data-testid="pathname-/portfolio"]').should('exist');
|
|
||||||
|
|
||||||
cy.getByTestId(collateralTab).click();
|
|
||||||
cy.getByTestId('open-transfer').eq(1).click();
|
|
||||||
cy.getByTestId('transfer-form').should('be.visible');
|
|
||||||
cy.getByTestId('transfer-form').find('[name="toAddress"]').select(1);
|
|
||||||
cy.get('select option')
|
|
||||||
.contains('BTC')
|
|
||||||
.invoke('index')
|
|
||||||
.then((index) => {
|
|
||||||
cy.get(assetSelectField).select(index, { force: true });
|
|
||||||
});
|
|
||||||
cy.getByTestId(transferForm)
|
|
||||||
.find(amountField)
|
|
||||||
.focus()
|
|
||||||
.type('1', { delay: 100 });
|
|
||||||
cy.getByTestId(transferForm).find(submitTransferBtn).click();
|
|
||||||
cy.getByTestId(toastContent).should(
|
|
||||||
'contain.text',
|
|
||||||
'Transfer completeYour transaction has been confirmed View in block explorerTransferTo 7f9cf0…c255351.00 tBTC'
|
|
||||||
);
|
|
||||||
cy.getByTestId(toastCloseBtn).click();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('can not withdrawal because of no MultiSign', function () {
|
it('can not withdrawal because of no MultiSign', function () {
|
||||||
// 1002-WITH-022
|
// 1002-WITH-022
|
||||||
// 1002-WITH-023
|
// 1002-WITH-023
|
||||||
@ -187,143 +135,6 @@ describe('capsule', { tags: '@slow', testIsolation: true }, () => {
|
|||||||
cy.setVegaWallet();
|
cy.setVegaWallet();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('shows node health', function () {
|
|
||||||
// 0006-NETW-010
|
|
||||||
const regex = /^Operational\d+$/;
|
|
||||||
const market = this.market;
|
|
||||||
cy.visit(`/#/markets/${market.id}`);
|
|
||||||
cy.getByTestId('node-health-trigger').realHover();
|
|
||||||
cy.getByTestId('node-health')
|
|
||||||
.children()
|
|
||||||
.first()
|
|
||||||
.invoke('text')
|
|
||||||
.should('match', regex);
|
|
||||||
cy.getByTestId('node-health')
|
|
||||||
.children()
|
|
||||||
.eq(1)
|
|
||||||
.should('contain.text', new URL(Cypress.env('VEGA_URL')).hostname);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('can place and receive an order', function () {
|
|
||||||
const market = this.market;
|
|
||||||
cy.visit(`/#/markets/${market.id}`);
|
|
||||||
const order = {
|
|
||||||
marketId: market.id,
|
|
||||||
type: Schema.OrderType.TYPE_LIMIT,
|
|
||||||
side: Schema.Side.SIDE_BUY,
|
|
||||||
size: size,
|
|
||||||
price: price,
|
|
||||||
timeInForce: Schema.OrderTimeInForce.TIME_IN_FORCE_GTC,
|
|
||||||
};
|
|
||||||
const rawPrice = removeDecimal(order.price, market.decimalPlaces);
|
|
||||||
cy.getByTestId(toastCloseBtn, txTimeout).click();
|
|
||||||
cy.getByTestId('Collateral').click();
|
|
||||||
cy.get('[col-id="asset.symbol"]', txTimeout).should(
|
|
||||||
'contain.text',
|
|
||||||
usdcSymbol
|
|
||||||
);
|
|
||||||
|
|
||||||
createOrder(order);
|
|
||||||
|
|
||||||
cy.getByTestId(toastContent).should(
|
|
||||||
'contain.text',
|
|
||||||
`Order submittedYour transaction has been confirmed View in block explorerSubmit order - activeTEST.24h+${order.size} @ ${order.price}.00 ${usdcSymbol}`,
|
|
||||||
{ matchCase: false }
|
|
||||||
);
|
|
||||||
cy.getByTestId(toastCloseBtn).click();
|
|
||||||
// orderbook cells are keyed by price level
|
|
||||||
cy.getByTestId('tab-orderbook')
|
|
||||||
.get(`[data-testid="price-${rawPrice}"]`)
|
|
||||||
.should('contain.text', order.price)
|
|
||||||
.get(`[data-testid="bid-vol-${rawPrice}"]`)
|
|
||||||
.should('contain.text', order.size);
|
|
||||||
|
|
||||||
cy.getByTestId(openOrdersTab).click();
|
|
||||||
cy.getByTestId('tab-open-orders').within(() => {
|
|
||||||
cy.get('.ag-center-cols-container')
|
|
||||||
.children()
|
|
||||||
.first()
|
|
||||||
.within(() => {
|
|
||||||
cy.get(`[col-id='${orderSize}']`).should(
|
|
||||||
'contain.text',
|
|
||||||
order.side === Side.SIDE_BUY ? '+' : '-' + order.size
|
|
||||||
);
|
|
||||||
|
|
||||||
cy.get(`[col-id='${orderType}']`).should(
|
|
||||||
'contain.text',
|
|
||||||
OrderTypeMapping[order.type]
|
|
||||||
);
|
|
||||||
|
|
||||||
cy.get(`[col-id='${orderStatus}']`).should(
|
|
||||||
'contain.text',
|
|
||||||
OrderStatusMapping.STATUS_ACTIVE
|
|
||||||
);
|
|
||||||
|
|
||||||
cy.get(`[col-id='${orderRemaining}']`).should('contain.text', '0.00');
|
|
||||||
|
|
||||||
cy.get(`[col-id='${orderPrice}']`).then(($price) => {
|
|
||||||
expect(parseFloat($price.text())).to.equal(parseFloat(order.price));
|
|
||||||
});
|
|
||||||
|
|
||||||
cy.get(`[col-id='${orderTimeInForce}']`).should(
|
|
||||||
'contain.text',
|
|
||||||
'GTC'
|
|
||||||
);
|
|
||||||
|
|
||||||
checkIfDataAndTimeOfCreationAndUpdateIsEqual(orderUpdatedAt);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
it('can edit order', function () {
|
|
||||||
const market = this.market;
|
|
||||||
cy.visit(`/#/markets/${market.id}`);
|
|
||||||
cy.getByTestId(toastCloseBtn, txTimeout).click();
|
|
||||||
cy.getByTestId(openOrdersTab).click();
|
|
||||||
cy.getByTestId('edit').first().click();
|
|
||||||
cy.getByTestId('dialog-title').should('contain.text', 'Edit order');
|
|
||||||
cy.get('#limitPrice').focus().clear().type(newPrice);
|
|
||||||
cy.getByTestId('edit-order').find('[type="submit"]').click();
|
|
||||||
|
|
||||||
cy.getByTestId(toastContent).should(
|
|
||||||
'contain.text',
|
|
||||||
`Order submittedYour transaction has been confirmed View in block explorerEdit order - activeTEST.24h+${size} @ ${price}.00 ${usdcSymbol}+${size} @ ${newPrice}.00 ${usdcSymbol}`,
|
|
||||||
{ matchCase: false }
|
|
||||||
);
|
|
||||||
|
|
||||||
cy.getByTestId(toastCloseBtn).click({ multiple: true });
|
|
||||||
cy.getByTestId(openOrdersTab).click();
|
|
||||||
cy.get('.ag-center-cols-container')
|
|
||||||
.children()
|
|
||||||
.first()
|
|
||||||
.within(() => {
|
|
||||||
cy.get(`[col-id='${orderPrice}']`).then(($price) => {
|
|
||||||
expect(parseFloat($price.text())).to.equal(parseFloat(newPrice));
|
|
||||||
});
|
|
||||||
checkIfDataAndTimeOfCreationAndUpdateIsEqual(orderUpdatedAt);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('can cancel order', function () {
|
|
||||||
const market = this.market;
|
|
||||||
cy.visit(`/#/markets/${market.id}`);
|
|
||||||
cy.getByTestId(toastCloseBtn, txTimeout).click();
|
|
||||||
cy.getByTestId(openOrdersTab).click();
|
|
||||||
cy.getByTestId('cancel').first().click();
|
|
||||||
cy.getByTestId(toastContent).should(
|
|
||||||
'contain.text',
|
|
||||||
`Order cancelledYour transaction has been confirmed View in block explorerCancel order - cancelledTEST.24h+${size} @ ${newPrice}.00 ${usdcSymbol}`,
|
|
||||||
{ matchCase: false }
|
|
||||||
);
|
|
||||||
cy.getByTestId(toastCloseBtn).click({ multiple: true });
|
|
||||||
cy.getByTestId('Closed').click();
|
|
||||||
cy.getByTestId('tab-closed-orders')
|
|
||||||
.get('.ag-center-cols-container')
|
|
||||||
.children()
|
|
||||||
.first()
|
|
||||||
.get(`[col-id='${orderStatus}']`, txTimeout)
|
|
||||||
.should('contain.text', OrderStatusMapping.STATUS_CANCELLED);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('can withdrawal', function () {
|
it('can withdrawal', function () {
|
||||||
// 1002-WITH-0014
|
// 1002-WITH-0014
|
||||||
// 1002-WITH-006
|
// 1002-WITH-006
|
||||||
@ -524,22 +335,3 @@ describe('capsule', { tags: '@slow', testIsolation: true }, () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function checkIfDataAndTimeOfCreationAndUpdateIsEqual(date: string) {
|
|
||||||
cy.get(`[col-id='${date}'] .ag-cell-wrapper`)
|
|
||||||
.children('span')
|
|
||||||
.children('span')
|
|
||||||
.invoke('data', 'value')
|
|
||||||
.then(($dateTime) => {
|
|
||||||
// allow a date 5 seconds either side to allow for
|
|
||||||
// unexpected latency
|
|
||||||
const minBefore = subSeconds(new Date(), 5);
|
|
||||||
const maxAfter = addSeconds(new Date(), 5);
|
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.log(maxAfter);
|
|
||||||
const date = new Date($dateTime.toString());
|
|
||||||
expect(isAfter(date, minBefore) && isBefore(date, maxAfter)).to.equal(
|
|
||||||
true
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
@ -1,72 +0,0 @@
|
|||||||
const dialogContent = 'dialog-content';
|
|
||||||
const nodeHealth = 'node-health';
|
|
||||||
const nodeHealthTrigger = 'node-health-trigger';
|
|
||||||
|
|
||||||
describe('home', { tags: '@regression' }, () => {
|
|
||||||
before(() => {
|
|
||||||
cy.setOnBoardingViewed();
|
|
||||||
cy.mockTradingPage();
|
|
||||||
cy.mockSubscription();
|
|
||||||
cy.visit('/');
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('node health', () => {
|
|
||||||
it('shows current block height', () => {
|
|
||||||
// 0006-NETW-004
|
|
||||||
// 0006-NETW-008
|
|
||||||
// 0006-NETW-009
|
|
||||||
cy.getByTestId(nodeHealthTrigger).realHover();
|
|
||||||
cy.getByTestId(nodeHealth)
|
|
||||||
.children()
|
|
||||||
.first()
|
|
||||||
.should('contain.text', 'Operational', {
|
|
||||||
timeout: 10000,
|
|
||||||
})
|
|
||||||
.should('contain.text', '100'); // all mocked queries have x-block-height header set to 100
|
|
||||||
cy.getByTestId(nodeHealth)
|
|
||||||
.children()
|
|
||||||
.eq(1)
|
|
||||||
.should('contain.text', new URL(Cypress.env('VEGA_URL')).hostname);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('shows node switcher details', () => {
|
|
||||||
// 0006-NETW-012
|
|
||||||
// 0006-NETW-013
|
|
||||||
// 0006-NETW-014
|
|
||||||
// 0006-NETW-015
|
|
||||||
// 0006-NETW-016
|
|
||||||
cy.getByTestId(nodeHealthTrigger).click();
|
|
||||||
cy.getByTestId(dialogContent).should('contain.text', 'Connected node');
|
|
||||||
cy.getByTestId(dialogContent).should(
|
|
||||||
'contain.text',
|
|
||||||
'This app will only work on CUSTOM. Select a node to connect to.'
|
|
||||||
);
|
|
||||||
cy.getByTestId('node')
|
|
||||||
.first()
|
|
||||||
.should('contain.text', new URL(Cypress.env('VEGA_URL')).origin)
|
|
||||||
.next()
|
|
||||||
.should('contain.text', 'Response time')
|
|
||||||
.next()
|
|
||||||
.should('contain.text', 'Block')
|
|
||||||
.next()
|
|
||||||
.should('contain.text', 'Subscription');
|
|
||||||
cy.getByTestId('custom-row').should('contain.text', 'Other');
|
|
||||||
cy.getByTestId('dialog-close').click();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('switch to other node', () => {
|
|
||||||
// 0006-NETW-017
|
|
||||||
// 0006-NETW-018
|
|
||||||
// 0006-NETW-019
|
|
||||||
// 0006-NETW-020
|
|
||||||
cy.getByTestId(nodeHealthTrigger).click();
|
|
||||||
cy.getByTestId('connect').should('be.disabled');
|
|
||||||
cy.getByTestId('node-url-custom').click({ force: true });
|
|
||||||
cy.getByTestId('connect').should('be.disabled');
|
|
||||||
cy.get("input[placeholder='https://']")
|
|
||||||
.focus()
|
|
||||||
.type(new URL(Cypress.env('VEGA_URL')).origin + '/graphql');
|
|
||||||
cy.getByTestId('connect').click();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
@ -60,6 +60,7 @@ describe('NodeSwitcher', () => {
|
|||||||
|
|
||||||
const rows = screen.getAllByTestId('node-row');
|
const rows = screen.getAllByTestId('node-row');
|
||||||
expect(rows).toHaveLength(nodes.length);
|
expect(rows).toHaveLength(nodes.length);
|
||||||
|
// 0006-NETW-014
|
||||||
rows.forEach((r) => {
|
rows.forEach((r) => {
|
||||||
const row = within(r);
|
const row = within(r);
|
||||||
expect(row.getByTestId('response-time-cell')).toHaveTextContent(
|
expect(row.getByTestId('response-time-cell')).toHaveTextContent(
|
||||||
@ -86,7 +87,7 @@ describe('NodeSwitcher', () => {
|
|||||||
nodes,
|
nodes,
|
||||||
});
|
});
|
||||||
render(<NodeSwitcher closeDialog={jest.fn()} />);
|
render(<NodeSwitcher closeDialog={jest.fn()} />);
|
||||||
|
// 0006-NETW-013
|
||||||
nodes.forEach((node) => {
|
nodes.forEach((node) => {
|
||||||
expect(
|
expect(
|
||||||
screen.getByRole('radio', {
|
screen.getByRole('radio', {
|
||||||
@ -98,6 +99,7 @@ describe('NodeSwitcher', () => {
|
|||||||
expect(
|
expect(
|
||||||
screen.getByRole('radio', { checked: false, name: 'Other' })
|
screen.getByRole('radio', { checked: false, name: 'Other' })
|
||||||
).toBeInTheDocument();
|
).toBeInTheDocument();
|
||||||
|
// 0006-NETW-020
|
||||||
expect(
|
expect(
|
||||||
screen.getByRole('button', { name: 'Connect to this node' })
|
screen.getByRole('button', { name: 'Connect to this node' })
|
||||||
).toHaveAttribute('disabled');
|
).toHaveAttribute('disabled');
|
||||||
@ -116,7 +118,7 @@ describe('NodeSwitcher', () => {
|
|||||||
expect(
|
expect(
|
||||||
screen.getByRole('button', { name: 'Connect to this node' })
|
screen.getByRole('button', { name: 'Connect to this node' })
|
||||||
).toBeDisabled();
|
).toBeDisabled();
|
||||||
|
// 0006-NETW-018
|
||||||
fireEvent.click(screen.getByRole('radio', { name: 'Other' }));
|
fireEvent.click(screen.getByRole('radio', { name: 'Other' }));
|
||||||
|
|
||||||
fireEvent.change(screen.getByRole('textbox'), {
|
fireEvent.change(screen.getByRole('textbox'), {
|
||||||
@ -131,6 +133,7 @@ describe('NodeSwitcher', () => {
|
|||||||
fireEvent.click(screen.getByRole('button', { name: 'Check' }));
|
fireEvent.click(screen.getByRole('button', { name: 'Check' }));
|
||||||
|
|
||||||
const customRow = within(screen.getByTestId('custom-row'));
|
const customRow = within(screen.getByTestId('custom-row'));
|
||||||
|
// 0006-NETW-015
|
||||||
expect(customRow.getByTestId('block-height-cell')).toBeInTheDocument();
|
expect(customRow.getByTestId('block-height-cell')).toBeInTheDocument();
|
||||||
|
|
||||||
fireEvent.click(
|
fireEvent.click(
|
||||||
@ -163,6 +166,7 @@ describe('NodeSwitcher', () => {
|
|||||||
value: mockUrl,
|
value: mockUrl,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
// 0006-NETW-019
|
||||||
expect(
|
expect(
|
||||||
screen.getByRole('button', {
|
screen.getByRole('button', {
|
||||||
name: 'Connect to this node',
|
name: 'Connect to this node',
|
||||||
@ -171,4 +175,5 @@ describe('NodeSwitcher', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it.todo('displays errors');
|
it.todo('displays errors');
|
||||||
|
it.todo('connect to a node with "bad statuses - 0006-NETW-017');
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user