Skip to content

Commit

Permalink
feat: many fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
JoseRFelix committed Nov 30, 2024
1 parent c787085 commit 3d288ea
Show file tree
Hide file tree
Showing 42 changed files with 1,518 additions and 1,513 deletions.
40 changes: 20 additions & 20 deletions packages/e2e/pages/pool-page.ts
Original file line number Diff line number Diff line change
@@ -1,36 +1,36 @@
/* eslint-disable import/no-extraneous-dependencies */
import type { Locator, Page } from "@playwright/test";
import type { Locator, Page } from '@playwright/test'

import { BasePage } from "./base-page";
import { BasePage } from './base-page'

import { SwapPage } from "./swap-page";
import { SwapPage } from './swap-page'

export class PoolPage extends BasePage {
readonly page: Page;
readonly viewMore: Locator;
readonly poolsLink: Locator;
readonly balance: Locator;
readonly tradeBtn: Locator;
readonly page: Page
readonly viewMore: Locator
readonly poolsLink: Locator
readonly balance: Locator
readonly tradeBtn: Locator

constructor(page: Page) {
super(page);
this.page = page;
this.viewMore = page.getByText("View more");
this.poolsLink = page.locator('//a//div[contains(text(), "Pools")]');
super(page)
this.page = page
this.viewMore = page.getByText('View more')
this.poolsLink = page.locator('//a//div[contains(text(), "Pools")]')
this.balance = page.locator(
'//span[.="Total balance"]/..//h4[contains(@class, "text-osmoverse-100")]'
);
this.tradeBtn = page.locator('//button/span[.="Trade Pair"]');
'//span[.="Total balance"]/..//h4[contains(@class, "text-osmoverse-100")]',
)
this.tradeBtn = page.locator('//button/span[.="Trade Pair"]')
}

async getBalance() {
const totalBalance: string = await this.balance.innerText();
console.log(`Total Balance for a Pool [${totalBalance}]`);
return totalBalance;
const totalBalance: string = await this.balance.innerText()
console.log(`Total Balance for a Pool [${totalBalance}]`)
return totalBalance
}

async getTradeModal() {
await this.tradeBtn.click();
return new SwapPage(this.page);
await this.tradeBtn.click()
return new SwapPage(this.page)
}
}
110 changes: 55 additions & 55 deletions packages/e2e/pages/pools-page.ts
Original file line number Diff line number Diff line change
@@ -1,99 +1,99 @@
/* eslint-disable import/no-extraneous-dependencies */
import type { Locator, Page } from "@playwright/test";
import type { Locator, Page } from '@playwright/test'

import { BasePage } from "./base-page";
import { BasePage } from './base-page'

import { PoolPage } from "./pool-page";
import { PoolPage } from './pool-page'

export class PoolsPage extends BasePage {
readonly page: Page;
readonly viewMore: Locator;
readonly poolsLink: Locator;
readonly balance: Locator;
readonly searchInput: Locator;
readonly page: Page
readonly viewMore: Locator
readonly poolsLink: Locator
readonly balance: Locator
readonly searchInput: Locator

constructor(page: Page) {
super(page);
this.page = page;
this.viewMore = page.getByText("View more");
this.poolsLink = page.locator('//a//div[contains(text(), "Pools")]');
super(page)
this.page = page
this.viewMore = page.getByText('View more')
this.poolsLink = page.locator('//a//div[contains(text(), "Pools")]')
this.balance = page.locator(
'//span[.="Total balance"]/..//h4[contains(@class, "text-osmoverse-100")]'
);
this.searchInput = page.locator('//input[@id="search-input"]');
'//span[.="Total balance"]/..//h4[contains(@class, "text-osmoverse-100")]',
)
this.searchInput = page.locator('//input[@id="search-input"]')
}

async goto() {
await this.page.goto("/");
await this.page.waitForTimeout(2000);
await this.poolsLink.click();
await this.page.waitForTimeout(2000);
await this.page.goto('/')
await this.page.waitForTimeout(2000)
await this.poolsLink.click()
await this.page.waitForTimeout(2000)
// Sometimes pools take longer to load
// we expect that after 10 seconds tokens are loaded and any failure after this point should be considered a bug.
// 1464 is an OSMO/USDC pool
const locRows = '//tr/td/a[contains(@href, "pool/1464")]/../..';
await this.page.locator(locRows).hover({ timeout: 10000 });
await super.printUrl();
const locRows = '//tr/td/a[contains(@href, "pool/1464")]/../..'
await this.page.locator(locRows).hover({ timeout: 10000 })
await super.printUrl()
}

async viewPool(id: number, pair: string) {
await this.page
.locator(`//table//td/a[@href="/pool/${id}"]//span[.="${pair}"]`)
.click();
.click()
// we expect that after 2 seconds tokens are loaded and any failure after this point should be considered a bug.
await this.page.waitForTimeout(2000);
await super.printUrl();
return new PoolPage(this.page);
await this.page.waitForTimeout(2000)
await super.printUrl()
return new PoolPage(this.page)
}

async searchForPool(poolName: string) {
await this.searchInput.fill(poolName);
await this.searchInput.fill(poolName)
// we expect that after 2 seconds tokens are loaded and any failure after this point should be considered a bug.
await this.page.waitForTimeout(2000);
await this.page.waitForTimeout(2000)
}

async getPoolsNumber() {
const loc = '//tr/td//a[contains(@href, "/pool/")]/../..';
const num = await this.page.locator(loc).count();
console.log(`Pools Count: ${num}`);
return num;
const loc = '//tr/td//a[contains(@href, "/pool/")]/../..'
const num = await this.page.locator(loc).count()
console.log(`Pools Count: ${num}`)
return num
}

async getTopTenPoolsByLiquidity() {
const loc = '//tr/td//a[contains(@href, "/pool/")]/../..';
const liquidityList = [];
const loc = '//tr/td//a[contains(@href, "/pool/")]/../..'
const liquidityList = []
for (let i = 0; i < 10; i++) {
const tt = this.page.locator(loc).nth(i).locator("//td").nth(2);
const text: string = await tt.innerText();
const n: number = Number(text.replace(/[^0-9.-]+/g, ""));
liquidityList.push(n);
const tt = this.page.locator(loc).nth(i).locator('//td').nth(2)
const text: string = await tt.innerText()
const n: number = Number(text.replace(/[^0-9.-]+/g, ''))
liquidityList.push(n)
}
console.log(`Top 10 pools Liquidity: ${liquidityList}`);
return liquidityList;
console.log(`Top 10 pools Liquidity: ${liquidityList}`)
return liquidityList
}

async getTopTenPoolsByVolume() {
const loc = '//tr/td//a[contains(@href, "/pool/")]/../..';
const volumeList = [];
const loc = '//tr/td//a[contains(@href, "/pool/")]/../..'
const volumeList = []
for (let i = 0; i < 10; i++) {
const tt = this.page.locator(loc).nth(i).locator("//td").nth(1);
const text: string = await tt.innerText();
const n: number = Number(text.replace(/[^0-9.-]+/g, ""));
volumeList.push(n);
const tt = this.page.locator(loc).nth(i).locator('//td').nth(1)
const text: string = await tt.innerText()
const n: number = Number(text.replace(/[^0-9.-]+/g, ''))
volumeList.push(n)
}
console.log(`Top 10 pools Volume: ${volumeList}`);
return volumeList;
console.log(`Top 10 pools Volume: ${volumeList}`)
return volumeList
}

async getTopTenPoolsByAPR() {
const loc = '//tr/td//a[contains(@href, "/pool/")]/../..';
const aprList = [];
const loc = '//tr/td//a[contains(@href, "/pool/")]/../..'
const aprList = []
for (let i = 0; i < 10; i++) {
const tt = this.page.locator(loc).nth(i).locator("//td").nth(3);
const text: string = await tt.innerText();
aprList.push(text);
const tt = this.page.locator(loc).nth(i).locator('//td').nth(3)
const text: string = await tt.innerText()
aprList.push(text)
}
console.log(`Top 10 pools APRs: ${aprList}`);
return aprList;
console.log(`Top 10 pools APRs: ${aprList}`)
return aprList
}
}
74 changes: 36 additions & 38 deletions packages/e2e/pages/portfolio-page.ts
Original file line number Diff line number Diff line change
@@ -1,73 +1,71 @@
/* eslint-disable import/no-extraneous-dependencies */
import type { Locator, Page } from "@playwright/test";
import type { Locator, Page } from '@playwright/test'

import { BasePage } from "./base-page";
import { TransactionsPage } from "./transactions-page";
import { BasePage } from './base-page'
import { TransactionsPage } from './transactions-page'

export class PortfolioPage extends BasePage {
readonly hideZeros: Locator;
readonly viewMore: Locator;
readonly portfolioLink: Locator;
readonly viewTransactions: Locator;
readonly searchInput: Locator;
readonly hideZeros: Locator
readonly viewMore: Locator
readonly portfolioLink: Locator
readonly viewTransactions: Locator
readonly searchInput: Locator

constructor(page: Page) {
super(page);
super(page)
this.hideZeros = page.locator(
'//label[.="Hide zero balances"]/following-sibling::button'
);
this.viewMore = page.getByText("View more");
this.portfolioLink = page.locator(
'//a//div[contains(text(), "Portfolio")]'
);
this.viewTransactions = page.locator('//div/a[.="View all"]');
this.searchInput = page.locator('//input[@id="search-input"]');
'//label[.="Hide zero balances"]/following-sibling::button',
)
this.viewMore = page.getByText('View more')
this.portfolioLink = page.locator('//a//div[contains(text(), "Portfolio")]')
this.viewTransactions = page.locator('//div/a[.="View all"]')
this.searchInput = page.locator('//input[@id="search-input"]')
}

async goto() {
await this.page.goto("/");
await this.portfolioLink.click();
await this.page.goto('/')
await this.portfolioLink.click()
// we expect that after 2 seconds tokens are loaded and any failure after this point should be considered a bug.
await this.page.waitForTimeout(2000);
const currentUrl = this.page.url();
console.log(`FE opened at: ${currentUrl}`);
await this.page.waitForTimeout(2000)
const currentUrl = this.page.url()
console.log(`FE opened at: ${currentUrl}`)
}

async getBalanceFor(token: string) {
await this.page.evaluate(() => window.scrollBy(0, 250));
await this.page.evaluate(() => window.scrollBy(0, 250))
const bal = this.page
.locator(`//tbody/tr//a[contains(@href, "/assets/${token}")]`)
.nth(1);
const tokenBalance: string = await bal.innerText();
console.log(`Balance for ${token}: ${tokenBalance}`);
return tokenBalance;
.nth(1)
const tokenBalance: string = await bal.innerText()
console.log(`Balance for ${token}: ${tokenBalance}`)
return tokenBalance
}

async viewTransactionsPage() {
await this.viewTransactions.click();
await this.page.waitForTimeout(1000);
return new TransactionsPage(this.page);
await this.viewTransactions.click()
await this.page.waitForTimeout(1000)
return new TransactionsPage(this.page)
}

async hideZeroBalances() {
const isVisible = await this.hideZeros.isVisible({ timeout: 2000 });
const isVisible = await this.hideZeros.isVisible({ timeout: 2000 })
if (isVisible) {
await this.hideZeros.click();
await this.page.waitForTimeout(1000);
await this.hideZeros.click()
await this.page.waitForTimeout(1000)
}
}

async viewMoreBalances() {
const isVisible = await this.viewMore.isVisible({ timeout: 2000 });
const isVisible = await this.viewMore.isVisible({ timeout: 2000 })
if (isVisible) {
await this.viewMore.click();
await this.page.waitForTimeout(1000);
await this.viewMore.click()
await this.page.waitForTimeout(1000)
}
}

async searchForToken(tokenName: string) {
await this.searchInput.fill(tokenName);
await this.searchInput.fill(tokenName)
// we expect that after 2 seconds tokens are loaded and any failure after this point should be considered a bug.
await this.page.waitForTimeout(2000);
await this.page.waitForTimeout(2000)
}
}
Loading

0 comments on commit 3d288ea

Please sign in to comment.