* feat(#473): add positions metrics data provider * feat(#473) add positions stats * feat(#473) add positions stats * feat(#473): add positions stats * feat(#473): add positions stats * feat(#473): position metrics, test and refactoring * feat(#473): add unit tests to positions table * feat(#473): fix spelling, order positions by updated at desc * feat(#473): protect from division by 0 * feat(#473): fix trading positions e2e tests * feat(#473): fix e2e data mocks * feat(#473): post code review clean up * feat(#993): dependencies handling in data provider * feat(#993): fix e2e tests data mocks * feat(#993): remove position metrics mocks, add market data market id * feat: #994 add price monitoring bounds and candles update interface * fix: move best bid price to diff section * feat(#993): add missing mocks, fix combine function * fix: add insurance pool and calc volume 24h * feat: display some oracle min info, asset id, insurance pool, move open interest and 24hVol * fix: add market-info.cy.ts case * fix: remove # from numbered price monitoring settings * fix: add insurance pool test * fix: format 24hvol * feat(#993): set loading initially to true, add unit tests * feat(#993): cleanup, add comments * feat(#993): remove undefined from client type * fix: remove indicativeVolume and oracleSpecBinding from market info * feat(#993): cosmetic changes * fix: add oracleSpecBinding back * Update libs/deal-ticket/src/components/info-market.tsx Co-authored-by: botond <105208209+notbot00@users.noreply.github.com> * feat: add initial queries * fix: memo yesterday's timestamp * fix: add back info * fix: update query * fix: add view full oracle details link and update mappings * fix: regen code, make link reactnode, fix index.ts * feat: add liquidity lib, refactor info market * fix: remove liquidity query from deal-ticket * feat:(#993): pass informaton about update callback cause * fix: small ui tweaks * fix: display in grid * feat: navigate to oracle by termination id * feat: #491 add use liquidity provision merging * fix: remove logs, add extra check on my liquidity provision * fix: type number trivially inferred from a number literal, remove type annotation * fix: cypress tests and formatting for market info * Update libs/deal-ticket/src/components/market-info/info-market.tsx * fix: use position decimal places for stake and market value proxy * fix: #491 use size/position decimal places for obligation, supplied and commitment amount * fix: add size component and use decimal places * fix: update readme liquidity * fix: #491 add correct asset decimal formatters * Update libs/deal-ticket/src/components/market-info/tooltip-mapping.tsx Co-authored-by: candida-d <62548908+candida-d@users.noreply.github.com> * fix: make link instead of button to open liquidity * fix: #491 add liquidity page, link to trading mode tooltip, tabs hidden or choose active * fix: remove LP dialog, use only link to page * fix: add market id in LP view * fix: follow trade grid design * fix: add one line tabs , remove link styling, remove any, add value formatters * fix: remove falsy check LP undefined * fix: keep date formatter in LP table * fix: add generic type market info, hooks in body function * fix: revert number formatters * fix: use one param only in network params query * fix: use network param in web3 lib * fix: move lp container to trading app * fix: remove resizable panel * feat: add header component, remove isEstimate * chore: remove unnecessary type cast * fix: fix build with children map clone element * chore: lint * fix: move use network params to react helpers * fix: add const for LP tabs * fix: fix formatting on LP page * fix: only show tilde for liquidity monitoring auction end date * fix: market id being rendered twice in market info * chore: fix lint * fix: types for generate withdraw form query * chore: fix intermittent failing withdrawal test * Update libs/deal-ticket/src/components/market-info/info-market.tsx * chore: add another wait for market Co-authored-by: Bartłomiej Głownia <bglownia@gmail.com> Co-authored-by: botond <105208209+notbot00@users.noreply.github.com> Co-authored-by: candida-d <62548908+candida-d@users.noreply.github.com> Co-authored-by: Matthew Russell <mattrussell36@gmail.com> Co-authored-by: Joe <joe@vega.xyz>
148 lines
4.7 KiB
TypeScript
148 lines
4.7 KiB
TypeScript
import { MarketState } from '@vegaprotocol/types';
|
|
import { mockTradingPage } from '../support/trading';
|
|
|
|
describe('markets table', () => {
|
|
beforeEach(() => {
|
|
cy.mockGQL((req) => {
|
|
mockTradingPage(req, MarketState.STATE_ACTIVE);
|
|
});
|
|
});
|
|
|
|
it('renders markets correctly', () => {
|
|
cy.visit('/');
|
|
cy.wait('@Market');
|
|
cy.wait('@MarketList');
|
|
cy.get('[data-testid^="market-link-"]')
|
|
.should('not.be.empty')
|
|
.and('have.attr', 'href');
|
|
cy.getByTestId('price').invoke('text').should('not.be.empty');
|
|
cy.getByTestId('settlement-asset').should('not.be.empty');
|
|
cy.getByTestId('price-change-percentage').should('not.be.empty');
|
|
cy.getByTestId('price-change').should('not.be.empty');
|
|
cy.getByTestId('sparkline-svg').should('be.visible');
|
|
});
|
|
|
|
it('renders market list drop down', () => {
|
|
cy.visit('/');
|
|
cy.wait('@MarketList');
|
|
openMarketDropDown();
|
|
cy.getByTestId('price').invoke('text').should('not.be.empty');
|
|
cy.getByTestId('trading-mode').should('not.be.empty');
|
|
cy.getByTestId('taker-fee').should('contain.text', '%');
|
|
cy.getByTestId('market-volume').should('not.be.empty');
|
|
cy.getByTestId('market-name').should('not.be.empty');
|
|
});
|
|
|
|
it('Able to select market from dropdown', () => {
|
|
cy.visit('/');
|
|
cy.wait('@MarketList');
|
|
openMarketDropDown();
|
|
cy.getByTestId('market-link-market-0').should('be.visible').click();
|
|
|
|
cy.wait('@Market');
|
|
cy.contains('ACTIVE MARKET');
|
|
cy.url().should('include', '/markets/market-0');
|
|
verifyMarketSummaryDisplayed();
|
|
});
|
|
|
|
it('Able to open and sort full market list - market page', () => {
|
|
const ExpectedSortedMarkets = [
|
|
'AAPL.MF21',
|
|
'BTCUSD.MF21',
|
|
'ETHBTC.QM21',
|
|
'SOLUSD',
|
|
];
|
|
cy.visit('/');
|
|
cy.wait('@MarketList');
|
|
cy.getByTestId('link').should('have.attr', 'href', '/markets').click();
|
|
cy.url().should('eq', Cypress.config('baseUrl') + '/markets');
|
|
cy.contains('AAPL.MF21').should('be.visible');
|
|
cy.contains('Market').click(); // sort by market name
|
|
for (let i = 0; i < ExpectedSortedMarkets.length; i++) {
|
|
cy.get(`[row-index=${i}]`)
|
|
.find('[col-id="tradableInstrument.instrument.code"]')
|
|
.should('have.text', ExpectedSortedMarkets[i]);
|
|
}
|
|
});
|
|
|
|
it('Settlement expiry is displayed', () => {
|
|
cy.visit('/markets/market-0');
|
|
cy.wait('@Market');
|
|
|
|
cy.getByTestId('trading-expiry')
|
|
.should('have.text', 'Not time-based')
|
|
.realHover();
|
|
cy.getByTestId('expiry-tool-tip').should(
|
|
'contain.text',
|
|
'This market expires when triggered by its oracle, not on a set date.'
|
|
);
|
|
cy.getByTestId('link')
|
|
.should('have.attr', 'href')
|
|
.and('include', 'https://explorer.fairground.wtf/');
|
|
});
|
|
|
|
it('Auction conditions are displayed', () => {
|
|
const toolTipLabel = 'tooltip-label';
|
|
const toolTipValue = 'tooltip-value';
|
|
const auctionToolTipLabels = [
|
|
'Auction start',
|
|
'Est auction end',
|
|
'Target liquidity',
|
|
'Current liquidity',
|
|
'Est uncrossing price',
|
|
'Est uncrossing vol',
|
|
];
|
|
|
|
cy.visit('/markets/market-0');
|
|
cy.wait('@Market');
|
|
|
|
cy.getByTestId('trading-mode').eq(0).realHover();
|
|
cy.getByTestId('tooltip-market-info').within(() => {
|
|
cy.get('span')
|
|
.eq(0)
|
|
.should(
|
|
'contain.text',
|
|
'This market is in auction until it reaches sufficient liquidity.'
|
|
);
|
|
cy.getByTestId('link')
|
|
.should('have.attr', 'href')
|
|
.and(
|
|
'include',
|
|
'https://docs.fairground.vega.xyz/docs/trading-questions/#auctions-what-is-a-liquidity-monitoring-auction'
|
|
);
|
|
});
|
|
|
|
for (let i = 0; i < 6; i++) {
|
|
cy.getByTestId(toolTipLabel)
|
|
.eq(i)
|
|
.should('have.text', auctionToolTipLabels[i]);
|
|
cy.getByTestId(toolTipValue).eq(i).should('not.be.empty');
|
|
}
|
|
});
|
|
|
|
function openMarketDropDown() {
|
|
cy.getByTestId('dialog-close').click();
|
|
cy.getByTestId('popover-trigger').click();
|
|
cy.contains('Loading market data...').should('not.exist');
|
|
}
|
|
|
|
function verifyMarketSummaryDisplayed() {
|
|
const marketSummaryBlock = 'market-summary';
|
|
const percentageValue = 'price-change-percentage';
|
|
const priceChangeValue = 'price-change';
|
|
const tradingVolume = 'trading-volume';
|
|
const tradingMode = 'trading-mode';
|
|
|
|
cy.getByTestId(marketSummaryBlock).within(() => {
|
|
cy.contains('Change (24h)');
|
|
cy.getByTestId(percentageValue).should('not.be.empty');
|
|
cy.getByTestId(priceChangeValue).should('not.be.empty');
|
|
cy.contains('Volume');
|
|
cy.getByTestId(tradingVolume).should('not.be.empty');
|
|
cy.contains('Trading mode');
|
|
cy.getByTestId(tradingMode).should('not.be.empty');
|
|
cy.getByTestId('mark-price').should('not.be.empty');
|
|
});
|
|
}
|
|
});
|