Skip to content

Commit

Permalink
Merge pull request #119 from OasisDEX/ajna-tests-fixes
Browse files Browse the repository at this point in the history
Ajna - Test fixes
  • Loading branch information
juan-langa authored Jan 12, 2024
2 parents 57e22fc + 9f51ea2 commit 96db581
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 69 deletions.
11 changes: 7 additions & 4 deletions src/pages/position/overview.ts
Original file line number Diff line number Diff line change
Expand Up @@ -284,12 +284,15 @@ export class Overview {
protocol,
}: {
amount: string;
protocol?: 'Maker';
protocol?: 'Maker' | 'Ajna';
}) {
let regexObj = new RegExp(`${protocol ? '\\$' : ''}${amount}${protocol ? '' : ' USD'}`);
const locator = protocol
? this.page.getByText('Buying Power').locator('..')
: this.page.locator('li:has-text("Buying Power")');
const locator =
protocol === 'Maker'
? this.page.getByText('Buying Power').locator('..')
: protocol === 'Ajna'
? this.page.locator('li:has-text("Buying Power")').locator('div')
: this.page.locator('li:has-text("Buying Power")');

await expect(locator.getByText('After')).toContainText(regexObj);
}
Expand Down
2 changes: 1 addition & 1 deletion tests/noWallet/ajna/poolFinder/earnPoolFinder.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ test.describe('Pool finder - Earn', async () => {

await app.poolFinder.filterBy({ filter: 'Pool address', value: ajnaPoolAddress });
await app.poolFinder.list.shouldHavePoolsCount(1);
await app.poolFinder.list.shouldHaveTokensPair('ETH/USDC');
await app.poolFinder.list.shouldHaveTokensPair('WSTETH/ETH');
await app.poolFinder.list.allPoolsShouldBe('Earn');
});

Expand Down
123 changes: 59 additions & 64 deletions tests/withWallet/ajna/ethereum/ajnaMultiplyEthereum.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,7 @@ import { resetState } from '@synthetixio/synpress/commands/synpress';
import * as metamask from '@synthetixio/synpress/commands/metamask';
import * as tenderly from 'utils/tenderly';
import { setup } from 'utils/setup';
import {
hooksTimeout,
extremelyLongTestTimeout,
veryLongTestTimeout,
baseUrl,
longTestTimeout,
} from 'utils/config';
import { extremelyLongTestTimeout, veryLongTestTimeout, longTestTimeout } from 'utils/config';
import { App } from 'src/app';

let context: BrowserContext;
Expand All @@ -21,17 +15,6 @@ let walletAddress: string;
test.describe.configure({ mode: 'serial' });

test.describe('Ajna Ethereum Multiply - Wallet connected', async () => {
test.beforeAll(async () => {
test.setTimeout(hooksTimeout);

({ context } = await metamaskSetUp({ network: 'mainnet' }));
let page = await context.newPage();
app = new App(page);

({ forkId, walletAddress } = await setup({ app, network: 'mainnet' }));
await tenderly.setRethBalance({ forkId, walletAddress, rEthBalance: '100' });
});

test.afterAll(async () => {
await tenderly.deleteFork(forkId);

Expand All @@ -48,60 +31,79 @@ test.describe('Ajna Ethereum Multiply - Wallet connected', async () => {
description: '12729',
});

test.setTimeout(veryLongTestTimeout);
test.setTimeout(extremelyLongTestTimeout);

await test.step('Test setup', async () => {
({ context } = await metamaskSetUp({ network: 'mainnet' }));
let page = await context.newPage();
app = new App(page);

({ forkId, walletAddress } = await setup({ app, network: 'mainnet' }));

await app.page.goto('/ethereum/ajna/multiply/WBTC-USDC#setup');
await tenderly.setTokenBalance({
forkId,
network: 'mainnet',
walletAddress,
token: 'WBTC',
balance: '2',
});
});

await app.page.goto('/ethereum/ajna/multiply/WBTC-DAI#setup');
await app.position.setup.acknowlegeAjnaInfo();
await app.position.setup.deposit({ token: 'WBTC', amount: '3.123456' });
await app.position.setup.deposit({ token: 'WBTC', amount: '0.654321' });

// !!!!! BUG - 'Liquidation Price' returning 0.00 at the moment !!!!!!
await app.position.overview.shouldHaveLiquidationPriceAfterPill('[1-9],[0-9]{3}.[0-9]{2}');
await app.position.overview.shouldHaveLoanToValueAfterPill('[1-4][0-9].[0-9]{2}%');
await app.position.overview.shouldHaveNetValueAfterPill('[0-9]{2,3},[0-9]{3}.[0-9]{2}');
await app.position.overview.shouldHaveLiquidationPriceAfterPill(
'[0-9]{1,2},[0-9]{3}.[0-9]{2} WBTC/DAI'
);
await app.position.overview.shouldHaveLoanToValueAfterPill('[0-9]{1,2}.[0-9]{2}%');
await app.position.overview.shouldHaveNetValueAfterPill('\\$[0-9]{1,2},[0-9]{3}.[0-9]{2}');
await app.position.overview.shouldHaveBuyingPowerAfterPill({
amount: '[0-9]{1,2},[0-9]{3}(.[0-9]{1,2})?',
protocol: 'Ajna',
});
await app.position.overview.shouldHaveExposureAfterPill({
amount: '[3-5].[0-9]{4}',
amount: '[0-1].[0-9]{3,4}',
token: 'WBTC',
});
await app.position.overview.shouldHaveDebtAfterPill({
amount: '[1-3][0-9],[0-9]{3}.[0-9]{2}',
token: 'USDC',
amount: '[1-9],[0-9]{3}.[0-9]{2}',
token: 'DAI',
protocol: 'Ajna',
});
await app.position.overview.shouldHaveMultipleAfterPill('1(.[0-9]{1,2})?');
await app.position.overview.shouldHaveBuyingPowerAfterPill({
amount: '[1-9][0-9],[0-9]{3}(.[0-9]{1,2})?',
});
// !!!!! BUG - 'Liquidation Price' returning 0.00 at the moment !!!!!!

await app.position.setup.shouldHaveLiquidationPrice({
amount: '[0-9]{1,2},[0-9]{3}(.[0-9]{1,2})? USDC',
amount: '[0-9]{1,2},[0-9]{3}(.[0-9]{1,2})? WBTC/DAI',
});
// Ajna LTV displays both current and future values: 0.00% -> 10.00%
await app.position.setup.shouldHaveLoanToValue('0.00%10.00');
await app.position.setup.orderInformation.shouldHaveBuyingAmount({
tokenAmount: '[0-1].[0-9]{4}',
tokenAmount: '0.[0-9]{4}',
token: 'WBTC',
dollarsAmount: '[1-3][0-9],[0-9]{3}.[0-9]{2}',
dollarsAmount: '[1-9],[0-9]{3}.[0-9]{2}',
protocol: 'Ajna',
});
await app.position.setup.orderInformation.shouldHaveTotalExposure({
token: 'WBTC',
current: '0.00',
future: '3.[0-9]{3,4}',
future: '[0-1].[0-9]{3,4}',
});
await app.position.setup.orderInformation.shouldHavePriceImpact({
amount: '[2-6][0-9],[0-9]{3}.[0-9]{2}',
amount: '[2-9][0-9],[0-9]{3}.[0-9]{2}',
percentage: '[0-9].[0-9]{2}',
protocol: 'Ajna',
pair: 'WBTC\\/USDC',
pair: 'WBTC/DAI',
});
await app.position.setup.orderInformation.shouldHaveMultiple({
current: '1.00',
future: '1(.[0-9]{1,2})?',
});
await app.position.setup.orderInformation.shouldHaveSlippageLimit('0.[0-9]{2}');
await app.position.setup.orderInformation.shouldHaveSlippageLimit('0.50');
await app.position.setup.orderInformation.shouldHaveDebt({
token: 'USDC',
token: 'DAI',
current: '0.00',
future: '[0-9]{1,2},[0-9]{3}.[0-9]{2}',
future: '[1-9],[0-9]{3}.[0-9]{2}',
});
await app.position.setup.orderInformation.shouldHaveLTV({
current: '0.00',
Expand All @@ -120,14 +122,6 @@ test.describe('Ajna Ethereum Multiply - Wallet connected', async () => {
description: '12730',
});

await app.page.goto('/ethereum/ajna/multiply/WBTC-DAI#setup');

await app.position.setup.acknowlegeAjnaInfo();
await app.position.setup.deposit({ token: 'WBTC', amount: '5' });

// Wait for simulation values to be updated
await app.position.overview.shouldHaveLoanToValueAfterPill('[1-3][0-9].[0-9]{2}%');

const initialLiqPrice = await app.position.manage.getLiquidationPrice();
const initialLoanToValue = await app.position.manage.getLoanToValue('Ajna');

Expand All @@ -140,19 +134,19 @@ test.describe('Ajna Ethereum Multiply - Wallet connected', async () => {

const updatedLiqPrice = await app.position.manage.getLiquidationPrice();
const updatedLoanToValue = await app.position.manage.getLoanToValue('Ajna');
expect(updatedLiqPrice).toBeLessThan(initialLiqPrice);
expect(updatedLiqPrice).toBeGreaterThan(initialLiqPrice);
expect(updatedLoanToValue).toBeGreaterThan(initialLoanToValue);

// RISK DOWN
await app.position.setup.moveSlider({ value: 0.3 });
await app.position.setup.moveSlider({ protocol: 'Ajna', value: 0.3 });

// Wait for simulation to update with new risk
await app.position.setup.shouldHaveButtonDisabled('Create Smart DeFi account');
await app.position.setup.shouldHaveButtonEnabled('Create Smart DeFi account');

const updatedLiqPrice2 = await app.position.manage.getLiquidationPrice();
const updatedLoanToValue2 = await app.position.manage.getLoanToValue('Ajna');
expect(updatedLiqPrice2).toBeGreaterThan(updatedLiqPrice);
expect(updatedLiqPrice2).toBeLessThan(updatedLiqPrice);
expect(updatedLoanToValue2).toBeLessThan(updatedLoanToValue);
});

Expand All @@ -162,13 +156,9 @@ test.describe('Ajna Ethereum Multiply - Wallet connected', async () => {
description: '12104',
});

test.skip(baseUrl.includes('staging') || baseUrl.includes('//summer.fi'));

test.setTimeout(extremelyLongTestTimeout);
test.setTimeout(veryLongTestTimeout);

await app.page.goto('/ethereum/ajna/multiply/RETH-ETH');
await app.position.setup.acknowlegeAjnaInfo();
await app.position.setup.deposit({ token: 'RETH', amount: '7.543' });
await app.position.setup.deposit({ token: 'WBTC', amount: '0.8' });
await app.position.setup.createSmartDeFiAccount();

// Smart DeFi Acount creation randomly fails - Retry until it's created.
Expand All @@ -182,11 +172,15 @@ test.describe('Ajna Ethereum Multiply - Wallet connected', async () => {

await app.position.setup.continue();

// await app.position.setup.setupAllowance();
await app.position.setup.approveAllowance();
await test.step('Metamask: ConfirmAddToken', async () => {
await metamask.confirmAddToken();
});
// Setting up allowance randomly fails - Retry until it's set.
await expect(async () => {
await app.position.setup.approveAllowance();
await test.step('Metamask: ConfirmAddToken', async () => {
await metamask.confirmAddToken();
});
await app.position.setup.continueShouldBeVisible();
}).toPass({ timeout: longTestTimeout });

await app.position.setup.continue();

// Position creation randomly fails - Retry until it's created.
Expand All @@ -199,6 +193,7 @@ test.describe('Ajna Ethereum Multiply - Wallet connected', async () => {
}).toPass({ timeout: longTestTimeout });

await app.position.setup.goToPosition();
await app.position.manage.shouldBeVisible('Manage ');
await app.position.setup.continue();
await app.position.manage.shouldBeVisible('Manage your Ajna Multiply Position');
});
});

0 comments on commit 96db581

Please sign in to comment.