Skip to content

Commit

Permalink
Added e2e for switch network
Browse files Browse the repository at this point in the history
  • Loading branch information
hjetpoluru committed Oct 18, 2024
1 parent e8bc6a5 commit e858389
Show file tree
Hide file tree
Showing 3 changed files with 108 additions and 0 deletions.
46 changes: 46 additions & 0 deletions test/e2e/page-objects/pages/dialog/select-network.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { Driver } from '../../../webdriver/driver';

class SelectNetwork {
private driver: Driver;

private networkName: string | undefined;

private addNetworkButton: object;

private closeButton: string;

private toggleButton: string;

constructor(driver: Driver) {
this.driver = driver;
this.addNetworkButton = {
tag: 'button',
text: 'Add a custom network',
};
this.closeButton = 'button[aria-label="Close"]';
this.toggleButton = '.toggle-button > div';
}

async clickNetworkName(networkName: string): Promise<void> {
console.log(`Click ${networkName}`);
this.networkName = `[data-testid="${networkName}"]`;
await this.driver.clickElement(this.networkName);
}

async addNewNetwork(): Promise<void> {
console.log('Click Add network');
await this.driver.clickElement(this.addNetworkButton);
}

async clickCloseButton(): Promise<void> {
console.log('Click Close Button');
await this.driver.clickElement(this.closeButton);
}

async clickToggleButton(): Promise<void> {
console.log('Click Toggle Button');
await this.driver.clickElement(this.toggleButton);
}
}

export default SelectNetwork;
16 changes: 16 additions & 0 deletions test/e2e/page-objects/pages/header-navbar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ class HeaderNavbar {

private readonly settingsButton = '[data-testid="global-menu-settings"]';

private readonly switchNetworkDropDown = '[data-testid="network-display"]';

constructor(driver: Driver) {
this.driver = driver;
}
Expand Down Expand Up @@ -63,6 +65,20 @@ class HeaderNavbar {
await this.driver.clickElement(this.settingsButton);
}

async clickSwitchNetworkDropDown(): Promise<void> {
console.log(`Click switch network menu`);
await this.driver.clickElement(this.switchNetworkDropDown);
}

async check_networkNameSwitchDropDown(networkName: string): Promise<boolean> {
console.log(`Validate the Switch network to ${networkName}`);
const switchNetworkName = await this.driver.findElements({
tag: 'span',
text: networkName,
});
return switchNetworkName.length === 1;
}

/**
* Verifies that the displayed account label in header matches the expected label.
*
Expand Down
46 changes: 46 additions & 0 deletions test/e2e/tests/network/switch-network.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { Suite } from 'mocha';
import { Driver } from '../../webdriver/driver';
import { withFixtures, defaultGanacheOptions } from '../../helpers';
import FixtureBuilder from '../../fixture-builder';
import { Ganache } from '../../seeder/ganache';
import { loginWithBalanceValidation } from '../../page-objects/flows/login.flow';
import HomePage from '../../page-objects/pages/homepage';
import HeaderNavbar from '../../page-objects/pages/header-navbar';
import SelectNetwork from '../../page-objects/pages/dialog/select-network';

describe('Switch network - ', function (this: Suite) {
it('Ethereum Mainnet and Sepolia', async function () {
await withFixtures(
{
fixtures: new FixtureBuilder().build(),
ganacheOptions: defaultGanacheOptions,
title: this.test?.fullTitle(),
},
async ({
driver,
ganacheServer,
}: {
driver: Driver;
ganacheServer?: Ganache;
}) => {
await loginWithBalanceValidation(driver, ganacheServer);
const homePage = new HomePage(driver);
const headerNavbar = new HeaderNavbar(driver);
const selectNetwork = new SelectNetwork(driver);

// Validate the switch network functionality to default Ethereum Mainnet
await headerNavbar.clickSwitchNetworkDropDown();
await selectNetwork.clickNetworkName('Ethereum Mainnet');
await homePage.check_expectedBalanceIsDisplayed('25');
await headerNavbar.check_networkNameSwitchDropDown('Ethereum Mainnet');
// Validate the switch network functionality to test network Sepolia
await headerNavbar.clickSwitchNetworkDropDown();
await selectNetwork.clickToggleButton();
await selectNetwork.clickNetworkName('Sepolia');
// Validate the transaction made in Ethereum network is not displayed in Sepolia network
await homePage.check_expectedBalanceIsDisplayed('25 Sepolia');
await headerNavbar.check_networkNameSwitchDropDown('Sepolia');
},
);
});
});

0 comments on commit e858389

Please sign in to comment.