Skip to content

Commit

Permalink
test: fix dapp test
Browse files Browse the repository at this point in the history
  • Loading branch information
beemi committed Oct 26, 2022
1 parent c7cec46 commit 4f62637
Showing 1 changed file with 68 additions and 85 deletions.
153 changes: 68 additions & 85 deletions test/e2e/dapp_injection_tests/sushi_dapp_injection.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,59 +35,46 @@ describe.only("Sushi Dapp Injection-['MAINNET','PULL_REQUEST_TEST']", async () =
});

it("Sushi injection - ETH", async () => {
const dappPage = await browser.newPage();
await dappPage.goto(metamaskTestDappUrl, { waitUntil: "load", timeout: 0 });
await dappPage.waitForSelector("#connectButton", { visible: true, timeout: 0})
await dappPage.waitForSelector('.container-fluid', { visible: true, timeout: 0})
console.log("metmask test dapp loaded")
await testUtil.takeScreenshot(dappPage, "metamask-test-dapp-before-connect")
const metaMaskTestDapp = await browser.newPage();
await metaMaskTestDapp.goto(metamaskTestDappUrl, { waitUntil: "load", timeout: 0 });
await metaMaskTestDapp.waitForSelector("#connectButton", { visible: true, timeout: 0})
console.log("Metmask test dapp loaded with connect button");
await testUtil.takeScreenshot(metaMaskTestDapp, "metamask-test-dapp-before-connect")

// await dappPage.waitForFunction('window.ethereum', { timeout: 0 })
await dappPage.evaluate(async () => {
window.ethereum.enable().then(() => {
console.log("window.ethereum.enable() called")
})
}, { timeout: 0 });
await metaMaskTestDapp.click("#connectButton");
await metaMaskTestDapp.waitForTimeout(2000);
let sizeOfWindow = await browser.pages();

const newPagePromise = new Promise((x) =>
browser.once('targetcreated', (target) => x(target.page()))
) /* eslint-disable-line */

const connectRequestWindow = await newPagePromise;
await testUtil.takeScreenshot(connectRequestWindow, "sushi-ethereum-loading-issue-before");
try {
if (sizeOfWindow.length > 1) {
console.log("Metamask popup detected");
const connectRequestWindow = (await browser.pages())[3];
await connectRequestWindow.waitForSelector("#filter_by_chain", {
visible: true,
timeout: 90000
});
await connectRequestWindow.click("#filter_by_chain");
await connectRequestWindow.waitForSelector("#ethereum_web_network", { visible: true, timeout: 60000 });
await connectRequestWindow.click("#ethereum_web_network");
} catch (e) {
await testUtil.takeScreenshot(connectRequestWindow, "sushi-ethereum-loading-issue");
expect(e, "Sushi injection not listed, connected window not loaded.....").equals(null);
}

await connectRequestWindow.waitForSelector("#ETHEREUM", { visible: true, timeout: 60000 });
// click Next button
await connectRequestWindow.click("#connect_request_button");
await connectRequestWindow.waitForSelector("#make_sure_you_trust_this_site", {
visible: false,
timeout: 60000
});
await connectRequestWindow.click("#connect_request_button");
await connectRequestWindow.waitForSelector("#ETHEREUM", { visible: true, timeout: 60000 });
// click Next button
await connectRequestWindow.click("#connect_request_button");
await connectRequestWindow.waitForSelector("#make_sure_you_trust_this_site", {
visible: false,
timeout: 60000
});
await connectRequestWindow.click("#connect_request_button");
console.log("user clicked on connect button");

// Check web3 status as connected
await dappPage.waitForSelector("#connectButton", { visible: true, timeout: 30000})
.catch((e) => expect(e, "Sushi dapp ETH chain injection not connected.....").to.not.throw());
await dappPage.click("#connectButton").catch((e) => e);
await dappPage.waitForSelector('#accounts', { visible: true, timeout: 30000 })
.catch((e) => expect(e, "Sushi dapp ETH chain injection not connected.....").to.not.throw());
const connectedAddress = await dappPage.$eval('#accounts', (el) => el.innerText)
expect(connectedAddress, "Sushi dapp ETH chain injection not connected.....").to.not.equal("");
expect(connectedAddress, "Sushi dapp ETH chain injection not connected.....").to.not.null;
// Check web3 status as connected
await metaMaskTestDapp.waitForSelector('#accounts', { visible: true, timeout: 30000 })
.catch((e) => expect(e, "Sushi dapp ETH chain injection not connected.....").to.not.throw());
const connectedAddress = await metaMaskTestDapp.$eval('#accounts', (el) => el.innerText)
console.log("Connected address: ", connectedAddress);
expect(connectedAddress, "Sushi dapp ETH chain injection not connected.....").to.not.equal("");
expect(connectedAddress, "Sushi dapp ETH chain injection not connected.....").to.not.null;
}
});
it.skip("Sushi injection - Polygon", async () => {
it("Sushi injection - Polygon", async () => {
let chain = "polygon";

// Connected dapp option
Expand All @@ -97,51 +84,47 @@ describe.only("Sushi Dapp Injection-['MAINNET','PULL_REQUEST_TEST']", async () =
await page.click("#dropdown-item", { delay: 1000 });
await page.waitForSelector(`#${chain}_web_network`, { visible: true });
await page.click(`#${chain}_web_network`, { delay: 2000 });
await page.waitForTimeout(3000)
await page.waitForTimeout(3000);

const dappPage = await browser.newPage();
await dappPage.goto(metamaskTestDappUrl, { waitUntil: "load", timeout: 0 });
await dappPage.waitForSelector("#connectButton", { visible: true, timeout: 0})
const metaMaskTestDapp = await browser.newPage();
await metaMaskTestDapp.goto(metamaskTestDappUrl, { waitUntil: "load", timeout: 0 });
await metaMaskTestDapp.waitForSelector("#connectButton", { visible: true, timeout: 0})
console.log("Metmask test dapp loaded with connect button");
await testUtil.takeScreenshot(metaMaskTestDapp, "metamask-test-dapp-before-connect")

await dappPage.evaluate(async () => {
window.ethereum.enable().then(() => {
console.log("window.ethereum.enable() called")
})
});
/* eslint-disable-line */
const newPagePromise = new Promise((x) =>
browser.once('targetcreated', (target) => x(target.page()))
)
const connectRequestWindow = await newPagePromise;
await connectRequestWindow.waitForSelector("#filter_by_chain", {
visible: true,
timeout: 90000
});
await connectRequestWindow.click("#filter_by_chain").catch((e) => e);
await connectRequestWindow.waitForSelector(`#${chain}_web_network`, { visible: true });
await connectRequestWindow.click(`#${chain}_web_network`, { delay: 1000 });
await metaMaskTestDapp.click("#connectButton");
await metaMaskTestDapp.waitForTimeout(2000);
let sizeOfWindow = await browser.pages();

await connectRequestWindow.waitForSelector("#POLYGON", { visible: true });
await connectRequestWindow.click("#POLYGON");
// Check connect button is enabled
await connectRequestWindow.click("#connect_request_button");
await connectRequestWindow.waitForSelector("#make_sure_you_trust_this_site", {
visible: false,
timeout: 60000
});
// check origin url
await connectRequestWindow
.$eval("#origin_url", (el) => el.innerText)
.then((text) => expect(text).to.contains("https://metamask.github.io"));
await connectRequestWindow.click("#connect_request_button").catch((e) => e);
// Check web3 status as connected
await dappPage.waitForSelector("#connectButton", { visible: true, timeout: 30000})
.catch((e) => expect(e, "Sushi dapp polygon chain injection not connected.....").to.not.throw());
await dappPage.click("#connectButton");
await dappPage.waitForSelector('#accounts', { visible: true, timeout: 30000 })
.catch((e) => expect(e, "Sushi dapp polygon chain injection not connected.....").to.not.throw());
const connectedAddress = await dappPage.$eval('#accounts', (el) => el.innerText)
expect(connectedAddress, "Sushi dapp polygon chain injection not connected.....").to.not.equal("");
expect(connectedAddress, "Sushi dapp polygon chain injection not connected.....").to.not.null;
if (sizeOfWindow.length > 1) {
console.log("Metamask popup detected");
const connectRequestWindow = (await browser.pages())[3];
await connectRequestWindow.waitForSelector("#filter_by_chain", {
visible: true,
timeout: 90000
});
await connectRequestWindow.click("#filter_by_chain").catch((e) => e);
await connectRequestWindow.waitForSelector(`#${chain}_web_network`, { visible: true });
await connectRequestWindow.click(`#${chain}_web_network`, { delay: 1000 });

await connectRequestWindow.waitForSelector("#POLYGON", { visible: true });
await connectRequestWindow.click("#POLYGON");
// click Next button
await connectRequestWindow.click("#connect_request_button");
await connectRequestWindow.waitForSelector("#make_sure_you_trust_this_site", {
visible: false,
timeout: 60000
});
await connectRequestWindow.click("#connect_request_button");
console.log("user clicked on connect button");

// Check web3 status as connected
await metaMaskTestDapp.waitForSelector('#accounts', { visible: true, timeout: 30000 })
.catch((e) => expect(e, "Sushi dapp ETH chain injection not connected.....").to.not.throw());
const connectedAddress = await metaMaskTestDapp.$eval('#accounts', (el) => el.innerText)
console.log("Connected address: ", connectedAddress);
expect(connectedAddress, "Sushi dapp polygon chain injection not connected.....").to.not.equal("");
expect(connectedAddress, "Sushi dapp polygon chain injection not connected.....").to.not.null;
}
});
});

0 comments on commit 4f62637

Please sign in to comment.