Skip to content

Commit

Permalink
test: fix flaky native send and transaction decoding test (#29362)
Browse files Browse the repository at this point in the history
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

The test dapp page loads and the element is visible but not enabled yet
and this causes sometimes for the test to click on the button too soon
and to fail. Added a new wait condition in the waitForSelector method to
wait until the element is enabled and then click on it.

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29362?quickstart=1)

## **Related issues**

Fixes: #28485

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
  • Loading branch information
pnarayanaswamy authored Dec 23, 2024
1 parent c91b4ee commit 768716d
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
6 changes: 6 additions & 0 deletions test/e2e/page-objects/pages/test-dapp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -238,10 +238,16 @@ class TestDapp {
}

async clickSimpleSendButton() {
await this.driver.waitForSelector(this.simpleSendButton, {
state: 'enabled',
});
await this.driver.clickElement(this.simpleSendButton);
}

async clickERC721MintButton() {
await this.driver.waitForSelector(this.erc721MintButton, {
state: 'enabled',
});
await this.driver.clickElement(this.erc721MintButton);
}

Expand Down
8 changes: 7 additions & 1 deletion test/e2e/webdriver/driver.js
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,7 @@ class Driver {
// bucket that can include the state attribute to wait for elements that
// match the selector to be removed from the DOM.
let element;
if (!['visible', 'detached'].includes(state)) {
if (!['visible', 'detached', 'enabled'].includes(state)) {
throw new Error(`Provided state selector ${state} is not supported`);
}
if (state === 'visible') {
Expand All @@ -368,7 +368,13 @@ class Driver {
until.stalenessOf(await this.findElement(rawLocator)),
timeout,
);
} else if (state === 'enabled') {
element = await this.driver.wait(
until.elementIsEnabled(await this.findElement(rawLocator)),
timeout,
);
}

return wrapElementWithAPI(element, this);
}

Expand Down

0 comments on commit 768716d

Please sign in to comment.