description | coverY |
---|---|
List of all Cypress/Playwright APIs used in Synpress |
0 |
{% tabs %} {% tab title="Cypress" %}
Connect Playwright with Cypress instance.
function initPlaywright(): Chainable<boolean>;
Example
cy.initPlaywright();
{% endtab %}
{% tab title="Playwright" %}
Initialize Playwright instance.
function init(playwrightInstance: BrowserType<{}>): Promise<boolean>;
Example
import * as playwright from "@synthetixio/synpress/commands/playwright";
const connected = await playwright.init();
{% endtab %} {% endtabs %}
Assign currently open tabs with Playwright.
{% tabs %} {% tab title="Cypress" %}
function assignWindows(): Chainable<boolean>;
Example
cy.assignWindows().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function assignWindows(): Promise<boolean>;
Example
import * as playwright from "@synthetixio/synpress/commands/playwright";
const connected = await playwright.init();
const assigned = await playwright.assignWindows();
{% endtab %} {% endtabs %}
Assigns currently active tab.
{% tabs %} {% tab title="Cypress" %}
function assignActiveTabName(tabName: string): Chainable<boolean>;
Example
cy.assignActiveTabName("my_tab");
{% endtab %}
{% tab title="Playwright" %}
function assignActiveTabName(tabName: string): Promise<boolean>;
Example
import * as playwright from "@synthetixio/synpress/commands/playwright";
await playwright.assignActiveTabName("my_tab");
{% endtab %} {% endtabs %}
Checks if the currently active window is Metamask.
{% tabs %} {% tab title="First Tab" %}
function isMetamaskWindowActive(): Chainable<boolean>;
Example
cy.isMetamaskWindowActive().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function isMetamaskWindowActive(): Promise<boolean>;
Example
import * as playwright from "@synthetixio/synpress/commands/playwright";
const isActive = await playwright.isMetamaskWindowActive();
{% endtab %} {% endtabs %}
Checks if the currently active window is Cypress.
{% tabs %} {% tab title="First Tab" %}
function isCypressWindowActive(): Chainable<boolean>;
Example
cy.isCypressWindowActive();
{% endtab %}
{% tab title="Playwright" %}
function isCypressWindowActive(): Promise<boolean>;
Example
import * as playwright from "@synthetixio/synpress/commands/playwright";
const isActive = await playwright.isCypressWindowActive();
{% endtab %} {% endtabs %}
Will focus on the Cypress window (tab) (the dApp)
{% tabs %} {% tab title="Cypress" %}
function switchToCypressWindow(): Chainable<boolean>;
Example
cy.switchToCypressWindow().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function switchToCypressWindow(): Promise<boolean>;
Example
import * as playwright from "@synthetixio/synpress/commands/playwright";
const switched = await playwright.switchToCypressWindow();
{% endtab %} {% endtabs %}
Will focus on the Metamask window (tab)
{% tabs %} {% tab title="Cypress" %}
function switchToMetamaskWindow(): Chainable<boolean>;
Example
cy.switchToMetamaskWindow().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function switchToMetamaskWindow(): Promise<boolean>;
Example
import * as playwright from "@synthetixio/synpress/commands/playwright";
const switched = await playwright.switchToMetamaskWindow();
{% endtab %} {% endtabs %}
Will focus on the Metamask popup and will bring it to the top.
{% tabs %} {% tab title="Cypress" %}
function switchToMetamaskNotification(): Chainable<boolean>;
Example
cy.switchToMetamaskNotification().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function switchToMetamaskNotification(): Promise<boolean>;
Example
import * as playwright from "@synthetixio/synpress/commands/playwright";
const switched = await playwright.switchToMetamaskNotification();
{% endtab %} {% endtabs %}
Get current network info from Metamask
{% tabs %} {% tab title="Cypress" %}
function getCurrentNetwork(): {
networkName: string;
networkDisplayName: string;
networkId: number;
isTestnet: boolean;
};
Example
cy.getCurrentNetwork().then((network) => {
expect(network.networkName).to.be.equal("sepolia");
expect(network.networkId).to.be.equal(11155111);
expect(network.isTestnet).to.be.true;
});
{% endtab %}
{% tab title="Playwright" %}
function getCurrentNetwork(): {
networkName: string;
networkDisplayName: string;
networkId: number;
isTestnet: boolean;
};
Example
import { getCurrentNetwork } from "@synthetixio/synpress/helpers";
const network = getCurrentNetwork();
expect(network.networkName).to.be.equal("sepolia");
expect(network.networkId).to.be.equal(11155111);
expect(network.isTestnet).to.be.true;
{% endtab %} {% endtabs %}
Add network in MetaMask (and switch to the newly added network).
{% tabs %} {% tab title="Cypress" %}
function addMetamaskNetwork(network: {
networkName: string;
rpcUrl: string;
chainId: string;
symbol?: string;
blockExplorer?: string;
isTestnet: boolean;
}): Chainable<boolean>;
Example
cy.addMetamaskNetwork({
networkName: "Optimism Network",
rpcUrl: "https://mainnet.optimism.io",
chainId: "10",
symbol: "OETH",
blockExplorer: "https://optimistic.etherscan.io",
isTestnet: false,
});
{% endtab %}
{% tab title="Playwright" %}
function addNetwork(network: {
networkName: string;
rpcUrl: string;
chainId: string;
symbol?: string;
blockExplorer?: string;
isTestnet: boolean;
}): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.addNetwork({
networkName: "Optimism Network",
rpcUrl: "https://mainnet.optimism.io",
chainId: "10",
symbol: "OETH",
blockExplorer: "https://optimistic.etherscan.io",
isTestnet: false,
});
{% endtab %} {% endtabs %}
Add network screen in MetaMask
Change network in MetaMask.
Predefined networks: mainnet
, goerli
, sepolia
, localhost
If no network is provided, it will default to using the NETWORK_NAME
environment variable. If not, it will default to goerli
the network.
{% tabs %} {% tab title="Cypress" %}
function changeMetamaskNetwork(networkName?: string): Chainable<boolean>;
Example
// Pass one of the predefined networks (mainnet, goerli, sepolia , localhost)
cy.changeMetamaskNetwork("mainnet");
// Pass the network name (from the Metamask networks dropdown menu)
cy.changeMetamaskNetwork("optimism network");
cy.changeMetamaskNetwork("sepolia");
{% endtab %}
{% tab title="Playwright" %}
function changeNetwork(networkName?: string): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.changeNetwork("mainnet");
// Switch to the network defined in `process.env.NETWORK_NAME` or default to `goerli`
await metamask.changeNetwork();
{% endtab %} {% endtabs %}
Switch network from Metamask
Import a new account in Metamask using a private key.
{% tabs %} {% tab title="Cypress" %}
function importMetamaskAccount(pk: string): Chainable<boolean>;
Example
cy.importMetamaskAccount(
"0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6"
);
cy.importMetamaskAccount(Cypress.env("E2E_PRIVATE_KEY"));
{% endtab %}
{% tab title="Playwright" %}
function importAccount(pk: string): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.importAccount(
"0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6"
);
await metamask.importAccount(process.env.E2E_PRIVATE_KEY);
{% endtab %} {% endtabs %}
Import account using private key in Metamask
{% tabs %} {% tab title="Cypress" %}
function createMetamaskAccount(accountName?: string): Chainable<boolean>;
Example
// Create a new account with the default name
cy.createMetamaskAccount();
cy.createMetamaskAccount("custom-wallet");
{% endtab %}
{% tab title="Playwright" %}
function createAccount(accountName?: string): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.createAccount("my_account");
await metamask.createAccount();
{% endtab %} {% endtabs %}
Create new account in Metamask
{% tabs %} {% tab title="Cypress" %}
function switchMetamaskAccount(
accountNameOrAccountNumber: string | number
): Chainable<boolean>;
Example
// Switch using the account number
cy.switchMetamaskAccount(2);
// Switch using the account name
cy.switchMetamaskAccount("account 1");
{% endtab %}
{% tab title="Playwright" %}
function switchAccount(
accountNameOrAccountNumber: string | number
): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.switchAccount("my_account");
await metamask.switchAccount(2);
{% endtab %} {% endtabs %}
Switch account from Metamask
Get the current wallet address of Metamask wallet.
{% tabs %} {% tab title="Cypress" %}
function getMetamaskWalletAddress(): Chainable<string>;
Example
cy.getMetamaskWalletAddress().then((address) => {
expect(address).to.be.equal("0x70997970C51812dc3A010C7d01b50e0d17dc79C8");
});
{% endtab %}
{% tab title="Playwright" %}
function getWalletAddress(): Promise<string>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
const walletAddress = await metamask.getWalletAddress();
expect(walletAddress).to.be.equal("0x70997970C51812dc3A010C7d01b50e0d17dc79C8");
{% endtab %} {% endtabs %}
Disconnects Metamask wallet from last connected dApp.
{% tabs %} {% tab title="Cypress" %}
function disconnectMetamaskWalletFromDapp(): Chainable<boolean>;
Example
cy.disconnectMetamaskWalletFromDapp().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function disconnectWalletFromDapp(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.disconnectWalletFromDapp();
{% endtab %} {% endtabs %}
Disconnect dApp from Metamask
Disconnects Metamask wallet from all connected dApps.
{% tabs %} {% tab title="Cypress" %}
function disconnectMetamaskWalletFromAllDapps(): Chainable<boolean>;
Example
cy.disconnectMetamaskWalletFromAllDapps().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function disconnectWalletFromAllDapps(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.disconnectWalletFromAllDapps();tab
{% endtab %} {% endtabs %}
Disconnect dApps from Metamask
Confirm Metamask's permission to sign a "regular" message.
{% tabs %} {% tab title="Cypress" %}
function confirmMetamaskSignatureRequest(): Chainable<boolean>;
Example
cy.confirmMetamaskSignatureRequest().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function confirmSignatureRequest(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.confirmSignatureRequest();
{% endtab %} {% endtabs %}
Confirm signature request in Metamask
Confirm Metamask's permission to sign a Data "type 4" message.
{% tabs %} {% tab title="Cypress" %}
function confirmMetamaskDataSignatureRequest(): Chainable<boolean>;
Example
cy.confirmMetamaskDataSignatureRequest().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function confirmDataSignatureRequest(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.confirmDataSignatureRequest();
{% endtab %} {% endtabs %}
Confirm data (type 4) signing request in Metamask
Reject Metamask permission to sign a "regular" message.
{% tabs %} {% tab title="Cypress" %}
function rejectMetamaskSignatureRequest(): Chainable<boolean>;
Example
cy.rejectMetamaskSignatureRequest().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function rejectSignatureRequest(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.rejectSignatureRequest();
{% endtab %} {% endtabs %}
Reject signature request from Metamask
Reject Metamask's permission to sign a Data "Type 4" message.
{% tabs %} {% tab title="Cypress" %}
function rejectMetamaskDataSignatureRequest(): Chainable<boolean>;
Example
cy.rejectMetamaskDataSignatureRequest().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function rejectDataSignatureRequest(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.rejectDataSignatureRequest();
{% endtab %} {% endtabs %}
Reject data (type 4) signing request in Metamask
Confirm Metamask's request for the public encryption key.
{% tabs %} {% tab title="Cypress" %}
function confirmMetamaskEncryptionPublicKeyRequest(): Chainable<boolean>;
Example
cy.confirmMetamaskEncryptionPublicKeyRequest().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function confirmEncryptionPublicKeyRequest(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.confirmEncryptionPublicKeyRequest();s
{% endtab %} {% endtabs %}
Request encryption public key in Metamask
Reject Metamask's request for the public encryption key.
{% tabs %} {% tab title="Cypress" %}
function rejectMetamaskEncryptionPublicKeyRequest(): Chainable<boolean>;
Example
cy.rejectMetamaskEncryptionPublicKeyRequest().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function rejectEncryptionPublicKeyRequest(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.rejectEncryptionPublicKeyRequest();
{% endtab %} {% endtabs %}
Confirm Metamask's request to decrypt a message with the private key.
{% tabs %} {% tab title="Cypress" %}
function confirmMetamaskDecryptionRequest(): Chainable<boolean>;
Example
cy.confirmMetamaskDecryptionRequest().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function confirmDecryptionRequest(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.confirmDecryptionRequest();ta
{% endtab %} {% endtabs %}
Accept decryption request in Metamask
Reject Metamask's request to decrypt the message with the private key.
{% tabs %} {% tab title="Cypress" %}
function rejectMetamaskDecryptionRequest(): Chainable<boolean>;
Example
cy.rejectMetamaskDecryptionRequest().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function rejectDecryptionRequest(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.rejectDecryptionRequest();abs
{% endtab %} {% endtabs %}
Reject decryption request in Metamask
Add custom token to Metamask.
{% tabs %} {% tab title="Cypress" %}
function importMetamaskToken(
tokenConfig: { address: string; symbol: string } | string
): Chainable<{
tokenContractAddress: string;
tokensymbol: string;
tokenDecimals: string;
imported: boolean;
}>;
Example
it(`importMetamaskToken should import token to metamask`, () => {
const USDCContractAddressOnSepolia =
"0xda9d4f9b69ac6C22e444eD9aF0CfC043b7a7f53f";
cy.importMetamaskToken(USDCContractAddressOnSepolia).then((tokenData) => {
expect(tokenData.tokenContractAddress).to.be.equal(
USDCContractAddressOnSepolia
);
expect(tokenData.tokenSymbol).to.be.equal("USDC");
expect(tokenData.tokenDecimals).to.be.equal("6");
expect(tokenData.imported).to.be.true;
});
});
{% endtab %}
{% tab title="Playwright" %}
function importToken(
tokenConfig: { address: string; symbol: string } | string
): Promise<{
tokenContractAddress: string;
tokensymbol: string;
tokenDecimals: string;
imported: boolean;
}>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
test("import token", async ({ page }) => {
await page.click("#import-token");
const USDCContractAddressOnSepolia =
"0xda9d4f9b69ac6C22e444eD9aF0CfC043b7a7f53f";
const tokenData = await metamask.importToken(USDCContractAddressOnSepolia);
await expect(tokenData.tokenContractAddress).to.be.equal(
USDCContractAddressOnSepolia
);
await expect(tokenData.tokenSymbol).to.be.equal("USDC");
await expect(tokenData.tokenDecimals).to.be.equal("6");
await expect(tokenData.imported).to.be.true;
});
{% endtab %} {% endtabs %}
Import token in Metamask
Confirm Metamask's request to add a token.
{% tabs %} {% tab title="Cypress" %}
function confirmMetamaskAddToken(): Chainable<boolean>;
Example
cy.confirmMetamaskAddToken().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function confirmAddToken(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.confirmAddToken();
{% endtab %} {% endtabs %}
Add tokens request to Metamask
Reject Metamask's request to add a token.
{% tabs %} {% tab title="Cypress" %}
function rejectMetamaskAddToken(): Chainable<boolean>;
Example
cy.rejectMetamaskAddToken().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function rejectAddToken(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.rejectAddToken();
{% endtab %} {% endtabs %}
Reject add token request in Metamask
Confirm Metamask's permission to spend assets.
{% tabs %} {% tab title="Cypress" %}
function confirmMetamaskPermissionToSpend(
spendLimit?: string
): Chainable<boolean>;
Example
cy.confirmMetamaskPermissionToSpend().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function confirmPermissionToSpend(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.confirmPermissionToSpend();
{% endtab %} {% endtabs %}
Approve permission to spend tokens
Reject Metamask's permission to spend assets.
{% tabs %} {% tab title="Cypress" %}
function rejectMetamaskPermissionToSpend(): Chainable<boolean>;
Example
cy.rejectMetamaskPermissionToSpend().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function rejectPermissionToSpend(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.rejectPermissionToSpend();
{% endtab %} {% endtabs %}
Reject permission to spend tokens in MetaMask
Accept Metamask access request.
{% tabs %} {% tab title="Cypress" %}
function acceptMetamaskAccess(options?: {
allAccounts?: boolean; // Will select all the accounts.
confirmSignatureRequest?: boolean; // Will accept "regular" signing request after connection.
confirmDataSignatureRequest?: boolean; // Will accept "data" signing request after connection.
}): Chainable<boolean>;
Example
// Use default Metamask options (will click next with the default selected account)
cy.acceptMetamaskAccess();
// Will accept "regular" signing requests after connection.
cy.acceptMetamaskAccess({ confirmSignatureRequest: true });
// Will accept "data" signing request after connection.
cy.acceptMetamaskAccess({ confirmDataSignatureRequest: true });
// Accept MetaMask connection to all accounts
cy.acceptMetamaskAccess({ allAccounts: true });
{% endtab %}
{% tab title="Playwright" %}
function acceptAccess(options?: {
allAccounts?: boolean; // Will select all the accounts.
confirmSignatureRequest?: boolean; // Will accept "regular" signing request after connection.
confirmDataSignatureRequest?: boolean; // Will accept "data" signing request after connection.
}): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
// Will accept "regular" signing requests after connection.
await playwright.acceptAccess({ confirmSignatureRequest: true });
// Will accept "data" signing request after connection.
await playwright.acceptAccess({ confirmDataSignatureRequest: true });
// Accept Metamask connection to all accounts
await playwright.acceptAccess({ allAccounts: true });
{% endtab %} {% endtabs %}
Confirm Metamask transaction (auto-detects eip-1559
and legacy transactions).
{% tabs %} {% tab title="Cypress" %}
function confirmMetamaskTransaction(
gasConfig?:
| {
gasLimit?: number;
gasPrice?: number;
baseFee?: number;
priorityFee?: number;
}
| "low"
| "market"
| "aggressive"
| "site"
): Chainable<{
recipientPublicAddress: string;
networkName: string;
customNonce: string;
confirmed: boolean;
}>;
Example
it(`confirmMetamaskTransaction should confirm legacy transaction using default settings`, () => {
cy.get("#sendButton").click();
cy.confirmMetamaskTransaction().then((txData) => {
expect(txData.recipientPublicAddress).to.be.not.empty;
expect(txData.networkName).to.be.not.empty;
expect(txData.customNonce).to.be.not.empty;
expect(txData.confirmed).to.be.true;
});
});
cy.confirmMetamaskTransaction({
gasLimit: 210000,
gasPrice: 100,
}).then((txData) => {
expect(txData.confirmed).to.be.true;
});
cy.confirmMetamaskTransaction("low");
cy.confirmMetamaskTransaction("market");
cy.confirmMetamaskTransaction("aggressive");
cy.confirmMetamaskTransaction("site");
{% endtab %}
{% tab title="Playwright" %}
function confirmTransaction(
gasConfig?:
| {
gasLimit?: number;
gasPrice?: number;
baseFee?: number;
priorityFee?: number;
}
| "low"
| "market"
| "aggressive"
| "site"
): Promise<{
recipientPublicAddress: string;
networkName: string;
customNonce: string;
confirmed: boolean;
}>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
const txData = await metamask.confirmTransaction({
gasLimit: 210000,
gasPrice: 100,
});
await expect(txData.confirmed).to.be.true;
await metamask.confirmMetamaskTransaction("low");
await metamask.confirmMetamaskTransaction("market");
await metamask.confirmMetamaskTransaction("aggressive");
await metamask.confirmMetamaskTransaction("site");ta
{% endtab %} {% endtabs %}
Confirm Metamask transaction
{% tabs %} {% tab title="Cypress" %}
function rejectMetamaskTransaction(): Chainable<boolean>;
Example
cy.rejectMetamaskTransaction().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function rejectTransaction(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.rejectTransaction();bs
{% endtab %} {% endtabs %}
Reject Metamask transaction
Allow the dApp to add a new network in Metamask.
{% tabs %} {% tab title="Cypress" %}
function allowMetamaskToAddNetwork(waitForEvent?: string): Chainable<boolean>;
Example
cy.allowMetamaskToAddNetwork("close").should("be.true");
cy.allowMetamaskToAddNetwork().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function allowToAddNetwork(waitForEvent?: string): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.allowToAddNetwork();
{% endtab %} {% endtabs %}
Allow dApp to add a network in Metamask
Reject dApp to add a new network in Metamask.
{% tabs %} {% tab title="Cypress" %}
function rejectMetamaskToAddNetwork(): Chainable<boolean>;
Example
cy.rejectMetamaskToAddNetwork().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function rejectToAddNetwork(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.rejectToAddNetwork();
{% endtab %} {% endtabs %}
Reject dApp to add a network in Metamask
Allow the dApp to switch the network in Metamask.
{% tabs %} {% tab title="Cypress" %}
function allowMetamaskToSwitchNetwork(): Chainable<boolean>;
Example
cy.allowMetamaskToSwitchNetwork().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function allowToSwitchNetwork(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.allowToSwitchNetwork();
{% endtab %} {% endtabs %}
Allow the dApp to switch the network in Metamask
Reject the dApp to switch the network in Metamask.
{% tabs %} {% tab title="Cypress" %}
function rejectMetamaskToSwitchNetwork(): Chainable<boolean>;
Example
cy.rejectMetamaskToSwitchNetwork().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function rejectToSwitchNetwork(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.rejectToSwitchNetwork();bs
{% endtab %} {% endtabs %}
Allow the dApp to add a new network in Metamask and switch to it.
{% tabs %} {% tab title="Cypress" %}
function allowMetamaskToAddAndSwitchNetwork(): Chainable<boolean>;
Example
cy.allowMetamaskToAddAndSwitchNetwork().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function allowToAddAndSwitchNetwork(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.allowToAddAndSwitchNetwork();
{% endtab %} {% endtabs %}
{% tabs %} {% tab title="Cypress" %}
function unlockMetamask(password: string): Chainable<boolean>;
Example
cy.unlockMetamask("my_password");
{% endtab %}
{% tab title="Playwright" %}
function unlock(password: string): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.unlock("my_password");
{% endtab %} {% endtabs %}
Unlock Metamask
Fetches previous Metamask wallet address.
{% tabs %} {% tab title="Cypress" %}
function fetchMetamaskWalletAddress(): Chainable<string>;
Example
cy.fetchMetamaskWalletAddress().then((address) => cy.log(address));
{% endtab %}
{% tab title="Playwright" %}
function fetchWalletAddress(): Promise<string>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
const walletAddr = await metamask.fetchWalletAddress();
await expect(walletAddr).to.be.eq("0x...");
{% endtab %} {% endtabs %}
Load the MetaMask extension and go through the setup process.
Note: you will need to have the SKIP_METAMASK_SETUP
environment variable set to true
to be able to use this API. Read this guide to know more.
TODO: adding/switching networks will be updated after merking this PR
{% embed url="Synthetixio/synpress#770" %}
{% tabs %} {% tab title="Cypress" %}
setupMetamask(
secretWordsOrPrivateKey?: string,
network?: string | {
networkName: string,
rpcUrl: string,
chainId: number,
symbol?: string,
blockExplorer?: string,
isTestnet?: string,
},
password?: string,
enableAdvancedSettings?: boolean,
enableExperimentalSettings?: boolean,
): Chainable<boolean>;
Example
cy.setupMetamask();
cy.setupMetamask("secret, words, ...", "goerli", "metamask_password");
cy.setupMetamask(
"secret, words, ...",
{
networkName: "name",
rpcUrl: "https://eth.llamarpc.com",
chainId: 1,
symbol: "ETH",
blockExplorer: "https://etherscan.io/",
isTestnet: true,
},
"metamask_password"
);
{% endtab %}
{% tab title="Playwright" %}
function initialSetup(browser: BrowserType<{}> | null, {
secretWordsOrPrivateKey?: string,
network?: string | {
networkName: string,
rpcUrl: string,
chainId: number,
symbol?: string,
blockExplorer?: string,
isTestnet?: string,
},
password?: string,
enableAdvancedSettings?: boolean,
enableExperimentalSettings?: boolean,
}): Promise<boolean>;
Example
import {chromium} from "@playwright/test";
import { initialSetup } from "@synthetixio/synpress/commands/metamask";
// Setup Metamask
await initialSetup(chromium, {
secretWordsOrPrivateKey:"test test test test test test test test test test test share",
network: "sepolia",
password: "Tester@1234",
enableAdvancedSettings: true,
});
{% endtab %} {% endtabs %}
Get transaction status from Etherscan API.
type TxStatus = {
status: string;
message: string;
result: {
isError: string;
errDescription: string;
};
};
type TxReceipt = {
blockHash: string;
blockNumber: string;
contractAddress: string | null;
cumulativeGasUsed: string;
effectiveGasPrice: string;
from: string;
to: string;
gasUsed: string;
logs: Array<any>;
logsBloom: string;
status: string;
transactionHash: string;
transactionIndex: string;
type: string;
};
function etherscanGetTransactionStatus(txid: string): Chainable<{
txStatus: TxStatus;
txReceipt: TxReceipt;
}>;
cy.etherscanGetTransactionStatus(
"0x3af85fa2369b75f327619f5968fd4cc08806ef9481d57ac32774beaf34641be9"
);
Wait until the transaction succeeds using Etherscan API.
function etherscanWaitForTxSuccess(txid: string): Chainable<boolean>;
Activate the ability (in Metamask settings) to specify custom gas prices and limits while doing transactions in Metamask.
{% tabs %} {% tab title="Cypress" %}
function activateAdvancedGasControlInMetamask(
skipSetup?: boolean
): Chainable<boolean>;
Example
cy.activateAdvancedGasControlInMetamask().should('be.true');
{% endtab %}
{% tab title="Playwright" %}
function activateAdvancedGasControl(skipSetup?: boolean): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.activateAdvancedGasControl();
{% endtab %} {% endtabs %}
Activate the ability (in Metamask settings) to show hex data while doing transactions in Metamask.
{% tabs %} {% tab title="Cypress" %}
function activateShowHexDataInMetamask(skipSetup?: boolean): Chainable<boolean>;
Example
cy.activateShowHexDataInMetamask().should("be.true");
{% endtab %}
{% tab title="Second Tab" %}
function activateShowHexData(skipSetup?: boolean): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.activateShowHexData();
{% endtab %} {% endtabs %}
Show hex data option in Metamask settings
Activate the ability (in Metamask settings) to show fiat conversions on test networks in Metamask.
{% tabs %} {% tab title="Cypress" %}
function activateTestnetConversionInMetamask(
skipSetup?: boolean
): Chainable<boolean>;
Example
cy.activateTestnetConversionInMetamask().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function activateTestnetConversion(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.activateTestnetConversion();
{% endtab %} {% endtabs %}
Show conversion on test networks option in Metamask settings
Activate the ability (in Metamask settings) to show test networks in Metamask.
{% tabs %} {% tab title="Cypress" %}
function activateShowTestnetNetworksInMetamask(
skipSetup?: boolean
): Chainable<boolean>;
Example
cy.activateShowTestnetNetworksInMetamask().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function activateShowTestnetNetworks(skipSetup?: boolean): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.activateShowTestnetNetworks();
{% endtab %} {% endtabs %}
Show test networks option in Metamask settings
Activate the ability (in Metamask settings) to specify custom nonce while doing transactions in Metamask.
{% tabs %} {% tab title="Cypress" %}
function activateCustomNonceInMetamask(skipSetup?: boolean): Chainable<boolean>;
Example
cy.activateCustomNonceInMetamask().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function activateCustomNonce(skipSetup?: boolean): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.activateCustomNonce();
{% endtab %} {% endtabs %}
Customize transaction nonce option in Metamask settings
Activate the ability (in Metamask settings) to dismiss secret recovery phrase reminders in Metamask.
{% tabs %} {% tab title="Cypress" %}
function activateDismissBackupReminderInMetamask(
skipSetup?: boolean
): Chainable<boolean>;
Example
cy.activateDismissBackupReminderInMetamask().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function activateDismissBackupReminder(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.activateDismissBackupReminder();
{% endtab %} {% endtabs %}
Dismiss secret recovery phrase backup reminder option in Metamask settings
Activate eth sign requests in Metamask settings.
{% tabs %} {% tab title="Cypress" %}
function activateEthSignRequestsInMetamask(skipSetup?: boolean): Chainable<boolean>;
Example
cy.activateEthSignRequestsInMetamask().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function activateEthSignRequests(skipSetup?: boolean): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.activateEthSignRequests();
{% endtab %} {% endtabs %}
Toggle eth_sign requests option in Metamask settings
Activate improved token allowance in Metamask settings (experimental).
{% tabs %} {% tab title="Cypress" %}
function activateImprovedTokenAllowanceInMetamask(
skipSetup?: boolean
): Chainable<boolean>;
Example
cy.activateImprovedTokenAllowanceInMetamask().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function activateImprovedTokenAllowance(skipSetup?: boolean): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.activateImprovedTokenAllowance();
{% endtab %} {% endtabs %}
Reset the Metamask account state in settings.
{% tabs %} {% tab title="Cypress" %}
function resetMetamaskAccount(): Chainable<boolean>;
Example
cy.resetMetamaskAccount().should("be.true");
{% endtab %}
{% tab title="Playwright" %}
function resetAccount(): Promise<boolean>;
Example
import * as metamask from "@synthetixio/synpress/commands/metamask";
await metamask.resetAccount();
{% endtab %} {% endtabs %}
Reset Metamask account