chore(explorer): explorer market e2e test (#4355)
This commit is contained in:
parent
e01fb7f9ae
commit
47694e7b72
@ -16,5 +16,10 @@ NX_EXPLORER_NETWORK_PARAMETERS=1
|
|||||||
NX_EXPLORER_PARTIES=1
|
NX_EXPLORER_PARTIES=1
|
||||||
NX_EXPLORER_VALIDATORS=1
|
NX_EXPLORER_VALIDATORS=1
|
||||||
|
|
||||||
CYPRESS_VEGA_WALLET_API_TOKEN=
|
|
||||||
CYPRESS_VEGA_URL=http://localhost:3008/graphql
|
CYPRESS_VEGA_URL=http://localhost:3008/graphql
|
||||||
|
CYPRESS_ETH_WALLET_MNEMONIC=ozone access unlock valid olympic save include omit supply green clown session
|
||||||
|
CYPRESS_ETHEREUM_PROVIDER_URL=http://localhost:8545
|
||||||
|
CYPRESS_FAUCET_URL=http://localhost:1790/api/v1/mint
|
||||||
|
CYPRESS_VEGA_PUBLIC_KEY=02eceaba4df2bef76ea10caf728d8a099a2aa846cced25737cccaa9812342f65
|
||||||
|
CYPRESS_VEGA_WALLET_URL=http://localhost:1789
|
||||||
|
CYPRESS_VEGA_WALLET_API_TOKEN=
|
||||||
|
@ -1,19 +1,130 @@
|
|||||||
//Tests set to skip until market bug for capsule checkpoint is fixed
|
context('Market page', { tags: '@regression' }, function () {
|
||||||
context.skip('Market page', { tags: '@regression' }, function () {
|
|
||||||
describe('Verify elements on page', function () {
|
describe('Verify elements on page', function () {
|
||||||
const marketHeaders = '[data-testid="markets-header"]';
|
const marketHeaders = 'markets-heading';
|
||||||
const marketNavigation = 'a[href="/markets"]';
|
const createdMarketId =
|
||||||
|
'2eab0e66545a789047561bc5a2e5cbc3b19eb708da41104e3cac2474ee36c4d4';
|
||||||
|
|
||||||
it('Markets page is displayed', function () {
|
before('Create market', function () {
|
||||||
cy.visit('/');
|
cy.visit('/');
|
||||||
cy.get(marketNavigation).click();
|
cy.createMarket();
|
||||||
cy.common_validate_blocks_data_displayed(marketHeaders);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Markets page displayed on mobile', function () {
|
beforeEach('Get market id', function () {
|
||||||
|
cy.navigate_to('markets');
|
||||||
|
cy.get('[col-id="id"]').eq(1).invoke('text').as('createdMarketId');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Market displayed on market page', function () {
|
||||||
|
cy.navigate_to('markets');
|
||||||
|
cy.getByTestId(marketHeaders).should('be.visible');
|
||||||
|
cy.get(`[row-id="${this.createdMarketId}"]`)
|
||||||
|
.should('be.visible')
|
||||||
|
.within(() => {
|
||||||
|
cy.get_element_by_col_id('code').should('have.text', 'TEST.24h');
|
||||||
|
cy.get_element_by_col_id('name').should('have.text', 'Test market 1');
|
||||||
|
cy.get_element_by_col_id('state').should('have.text', 'Pending');
|
||||||
|
cy.get_element_by_col_id('asset').should('have.text', 'fUSDC');
|
||||||
|
cy.get_element_by_col_id('id').should(
|
||||||
|
'have.text',
|
||||||
|
this.createdMarketId
|
||||||
|
);
|
||||||
|
cy.get_element_by_col_id('actions')
|
||||||
|
.find('a')
|
||||||
|
.should('have.attr', 'href', `/markets/${this.createdMarketId}`);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Able to go to market details page', function () {
|
||||||
|
cy.navigate_to('markets');
|
||||||
|
cy.get_element_by_col_id('actions').eq(1).click();
|
||||||
|
cy.getByTestId(marketHeaders).should('have.text', 'Test market 1');
|
||||||
|
cy.validate_element_from_table('Name', 'Test market 1');
|
||||||
|
cy.validate_element_from_table('Market ID', this.createdMarketId);
|
||||||
|
cy.validate_element_from_table('Trading Mode', 'Opening auction');
|
||||||
|
cy.validate_element_from_table('Market Decimal Places', '5');
|
||||||
|
cy.validate_element_from_table('Position Decimal Places', '5');
|
||||||
|
cy.validate_element_from_table('Settlement Asset Decimal Places', '5');
|
||||||
|
// Instrument
|
||||||
|
cy.validate_element_from_table('Market Name', 'Test market 1');
|
||||||
|
cy.validate_element_from_table('Code', 'TEST.24h');
|
||||||
|
cy.validate_element_from_table('Product Type', 'Future');
|
||||||
|
cy.validate_element_from_table('Quote Name', 'fUSDC');
|
||||||
|
// Settlement Asset
|
||||||
|
cy.validate_element_from_table('Quote Name', 'fUSDC');
|
||||||
|
cy.validate_element_from_table('Symbol', 'fUSDC');
|
||||||
|
cy.validate_element_from_table('Decimals', '5');
|
||||||
|
cy.validate_element_from_table('Quantum', '0.00');
|
||||||
|
cy.validate_element_from_table('Status', 'Enabled');
|
||||||
|
cy.validate_element_from_table('Max faucet amount', '10,000,000.00');
|
||||||
|
cy.validate_element_from_table(
|
||||||
|
'Infrastructure fee account balance',
|
||||||
|
'0.00'
|
||||||
|
);
|
||||||
|
cy.validate_element_from_table(
|
||||||
|
'Global reward pool account balance',
|
||||||
|
'0.00'
|
||||||
|
);
|
||||||
|
// Metadata
|
||||||
|
cy.validate_element_from_table('Sector', 'tech');
|
||||||
|
cy.validate_element_from_table('Source', 'docs.vega.xyz');
|
||||||
|
// Risk model
|
||||||
|
cy.validate_element_from_table('Tau', '0.0001140771161');
|
||||||
|
cy.validate_element_from_table('Risk Aversion Parameter', '0.01');
|
||||||
|
// Risk parameters
|
||||||
|
// cy.validate_element_from_table('R', '0.016')
|
||||||
|
cy.validate_element_from_table('Sigma', '0.5');
|
||||||
|
// Risk factors
|
||||||
|
cy.validate_element_from_table('Short', '0.0143218738374871');
|
||||||
|
cy.validate_element_from_table('Long', '0.0141450471498822');
|
||||||
|
// Price monitoring settings 1
|
||||||
|
cy.validate_element_from_table('Horizon Secs', '43,200');
|
||||||
|
cy.validate_element_from_table('Probability', '1');
|
||||||
|
cy.validate_element_from_table('Auction Extension Secs', '600');
|
||||||
|
// Liquidity Monitoring
|
||||||
|
cy.validate_element_from_table('Triggering Ratio', '0.7');
|
||||||
|
cy.validate_element_from_table('Time Window', '3,600');
|
||||||
|
cy.validate_element_from_table('Scaling Factor', '10');
|
||||||
|
// Liquidity
|
||||||
|
cy.validate_element_from_table('Target Stake', '0.00 fUSDC');
|
||||||
|
cy.validate_element_from_table('Supplied Stake', '0.00 fUSDC');
|
||||||
|
cy.validate_element_from_table('Market Value Proxy', '0.00 fUSDC');
|
||||||
|
// Liquidity price range
|
||||||
|
cy.validate_element_from_table(
|
||||||
|
'Liquidity Price Range',
|
||||||
|
'1,000.00% of mid price'
|
||||||
|
);
|
||||||
|
cy.validate_element_from_table('Lowest Price', '0.00 fUSDC');
|
||||||
|
cy.validate_element_from_table('Highest Price', '0.00 fUSDC');
|
||||||
|
|
||||||
|
cy.getByTestId('oracle-spec-links')
|
||||||
|
.should('have.attr', 'href')
|
||||||
|
.and(
|
||||||
|
'contain',
|
||||||
|
'/oracles/bf242aa5c9f64fcbb77808aa8582e73711519f4b35264eb797a80f1803590a24'
|
||||||
|
);
|
||||||
|
|
||||||
|
// Able to view Json
|
||||||
|
cy.contains('View JSON').click();
|
||||||
|
cy.get('.language-json').should('exist');
|
||||||
|
});
|
||||||
|
|
||||||
|
// Skipping due to resize observer loop limit error
|
||||||
|
it.skip('Markets page displayed on mobile', function () {
|
||||||
cy.common_switch_to_mobile_and_click_toggle();
|
cy.common_switch_to_mobile_and_click_toggle();
|
||||||
cy.get(marketNavigation).click();
|
cy.navigate_to('markets', true);
|
||||||
cy.common_validate_blocks_data_displayed(marketHeaders);
|
cy.getByTestId(marketHeaders).should('be.visible');
|
||||||
|
cy.get(`[row-id="${createdMarketId}"]`)
|
||||||
|
.should('be.visible')
|
||||||
|
.within(() => {
|
||||||
|
cy.get_element_by_col_id('code').should('have.text', 'TEST.24h');
|
||||||
|
cy.get_element_by_col_id('name').should('have.text', 'Test market 1');
|
||||||
|
cy.get_element_by_col_id('state').should('have.text', 'Pending');
|
||||||
|
cy.get_element_by_col_id('asset').should('have.text', 'fUSDC');
|
||||||
|
cy.get_element_by_col_id('id').should('have.text', createdMarketId);
|
||||||
|
cy.get_element_by_col_id('actions')
|
||||||
|
.find('a')
|
||||||
|
.should('have.attr', 'href', `/markets/${createdMarketId}`);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -28,7 +28,7 @@ Cypress.Commands.add('switchToMobile', () => {
|
|||||||
Cypress.Commands.add('common_switch_to_mobile_and_click_toggle', function () {
|
Cypress.Commands.add('common_switch_to_mobile_and_click_toggle', function () {
|
||||||
cy.viewport('iphone-x');
|
cy.viewport('iphone-x');
|
||||||
cy.visit('/');
|
cy.visit('/');
|
||||||
cy.get('[data-testid="open-menu"]').click();
|
cy.get('[data-testid="button-menu-drawer"]').click();
|
||||||
});
|
});
|
||||||
|
|
||||||
Cypress.Commands.add('monitor_clipboard', () => {
|
Cypress.Commands.add('monitor_clipboard', () => {
|
||||||
@ -88,3 +88,42 @@ Cypress.Commands.add('convert_number_to_max_four_decimal', (number) => {
|
|||||||
maximumFractionDigits: 4,
|
maximumFractionDigits: 4,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add('navigate_to', (page, mobileView = false) => {
|
||||||
|
const navigation = {
|
||||||
|
transactions: '/txs',
|
||||||
|
blocks: '/blocks',
|
||||||
|
oracles: '/oracles',
|
||||||
|
validators: '/validators',
|
||||||
|
parties: '/parties',
|
||||||
|
assets: '/assets',
|
||||||
|
markets: '/markets',
|
||||||
|
governanceProposals: '/governance',
|
||||||
|
networkParameters: '/network-parameters',
|
||||||
|
genesisParameters: '/genesis',
|
||||||
|
};
|
||||||
|
|
||||||
|
const topLevelRoutes = ['transactions', 'blocks', 'oracles', 'validators'];
|
||||||
|
|
||||||
|
cy.getByTestId('navigation').within(() => {
|
||||||
|
if (!topLevelRoutes.includes(page) && mobileView === false) {
|
||||||
|
cy.getByTestId('other').first().click();
|
||||||
|
}
|
||||||
|
cy.get(`[href="${navigation[page]}"]`).first().click();
|
||||||
|
});
|
||||||
|
cy.url().should('include', navigation[page]);
|
||||||
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add('get_element_by_col_id', (elementName) => {
|
||||||
|
cy.get(`[col-id="${elementName}"]`);
|
||||||
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add(
|
||||||
|
'validate_element_from_table',
|
||||||
|
(tableRowName, tableRowValue) => {
|
||||||
|
cy.contains(tableRowName)
|
||||||
|
.parentsUntil("[data-testid='key-value-table-row']")
|
||||||
|
.siblings()
|
||||||
|
.should('have.text', tableRowValue);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
@ -95,7 +95,10 @@ export const Header = () => {
|
|||||||
{mainItems.map(routeToNavigationItem)}
|
{mainItems.map(routeToNavigationItem)}
|
||||||
{groupedItems && groupedItems.length > 0 && (
|
{groupedItems && groupedItems.length > 0 && (
|
||||||
<NavigationItem>
|
<NavigationItem>
|
||||||
<NavigationTrigger isActive={Boolean(isOnOther)}>
|
<NavigationTrigger
|
||||||
|
isActive={Boolean(isOnOther)}
|
||||||
|
data-testid="other"
|
||||||
|
>
|
||||||
{t('Other')}
|
{t('Other')}
|
||||||
</NavigationTrigger>
|
</NavigationTrigger>
|
||||||
<NavigationContent>
|
<NavigationContent>
|
||||||
|
Loading…
Reference in New Issue
Block a user