4c58258f01
* add npm secret and modify github actions * inject npm secret for tests as well * revert changes to staging and prod actions because we arent going to use themmm * remove unused github actions * minor copy change for convenience lol * feat: add DutchOrderTrade type to Swap components (#8) * feat: add flag for gouda (#5) * feat: add new signature details type (#4) * feat: local gouda activity (#9) * feat: Unified Routing API classic and dutch limit quote requests (#10) * chore: Rebase 5/26 (#13) Co-authored-by: Mike Grabowski <grabbou@gmail.com> Co-authored-by: Zach Pomerantz <zzmp@uniswap.org> Co-authored-by: Jordan Frankfurt <jordanwfrankfurt@gmail.com> Co-authored-by: Vignesh Mohankumar <me@vig.xyz> Co-authored-by: cartcrom <39385577+cartcrom@users.noreply.github.com> Co-authored-by: Jack Short <john.short.tj@gmail.com> Co-authored-by: eddie <66155195+just-toby@users.noreply.github.com> Co-authored-by: Jordan Frankfurt <jordan@CORN-Jordan-949.frankfurt> Co-authored-by: Jordan Frankfurt <jordan@corn-jordan-949.lan> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: Nate Wienert <natewienert@gmail.com> Co-authored-by: Charles Bachmeier <charles@bachmeier.io> Co-authored-by: Charles Bachmeier <charlie@genie.xyz> * feat: add UniswapX to Settings (#7) * feat: merge upstream 5/31 (#16) * feat: Upgrade unified-routing-api URL (#15) * chore: merge upstream 6/2 (#19) Co-authored-by: Mike Grabowski <grabbou@gmail.com> Co-authored-by: Zach Pomerantz <zzmp@uniswap.org> Co-authored-by: Tina <59578595+tinaszheng@users.noreply.github.com> Co-authored-by: Jordan Frankfurt <jordanwfrankfurt@gmail.com> Co-authored-by: Vignesh Mohankumar <me@vig.xyz> Co-authored-by: cartcrom <39385577+cartcrom@users.noreply.github.com> Co-authored-by: Jack Short <john.short.tj@gmail.com> Co-authored-by: Jordan Frankfurt <jordan@CORN-Jordan-949.frankfurt> Co-authored-by: Jordan Frankfurt <jordan@corn-jordan-949.lan> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: Nate Wienert <natewienert@gmail.com> Co-authored-by: Charles Bachmeier <charles@bachmeier.io> Co-authored-by: Charles Bachmeier <charlie@genie.xyz> * feat: uniswapx gas tooltip (#12) Co-authored-by: Mike Grabowski <grabbou@gmail.com> Co-authored-by: Zach Pomerantz <zzmp@uniswap.org> Co-authored-by: Tina <59578595+tinaszheng@users.noreply.github.com> Co-authored-by: Jordan Frankfurt <jordanwfrankfurt@gmail.com> Co-authored-by: Vignesh Mohankumar <me@vig.xyz> Co-authored-by: cartcrom <39385577+cartcrom@users.noreply.github.com> Co-authored-by: Jack Short <john.short.tj@gmail.com> Co-authored-by: Jordan Frankfurt <jordan@CORN-Jordan-949.frankfurt> Co-authored-by: Jordan Frankfurt <jordan@corn-jordan-949.lan> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: Nate Wienert <natewienert@gmail.com> Co-authored-by: Charles Bachmeier <charles@bachmeier.io> Co-authored-by: Charles Bachmeier <charlie@genie.xyz> * feat: swap callback (#17) * feat: gouda gating (#14) Co-authored-by: Mike Grabowski <grabbou@gmail.com> Co-authored-by: Zach Pomerantz <zzmp@uniswap.org> Co-authored-by: Tina <59578595+tinaszheng@users.noreply.github.com> Co-authored-by: Jordan Frankfurt <jordanwfrankfurt@gmail.com> Co-authored-by: Vignesh Mohankumar <me@vig.xyz> Co-authored-by: cartcrom <39385577+cartcrom@users.noreply.github.com> Co-authored-by: Jack Short <john.short.tj@gmail.com> Co-authored-by: Jordan Frankfurt <jordan@CORN-Jordan-949.frankfurt> Co-authored-by: Jordan Frankfurt <jordan@corn-jordan-949.lan> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: Nate Wienert <natewienert@gmail.com> Co-authored-by: Charles Bachmeier <charles@bachmeier.io> Co-authored-by: Charles Bachmeier <charlie@genie.xyz> * fix: settings e2e test (#22) * feat: update swap callback to add orders to redux state (#18) * chore: Fix types for useBestTrade return result (#21) * feat: gql gouda orders (#20) * feat: show $0 for gas fee for now (#25) * chore: Rebase 06/08 (#26) Co-authored-by: Zach Pomerantz <zzmp@uniswap.org> Co-authored-by: Tina <59578595+tinaszheng@users.noreply.github.com> Co-authored-by: Jordan Frankfurt <jordanwfrankfurt@gmail.com> Co-authored-by: Vignesh Mohankumar <me@vig.xyz> Co-authored-by: cartcrom <39385577+cartcrom@users.noreply.github.com> Co-authored-by: Jack Short <john.short.tj@gmail.com> Co-authored-by: eddie <66155195+just-toby@users.noreply.github.com> Co-authored-by: Jordan Frankfurt <jordan@CORN-Jordan-949.frankfurt> Co-authored-by: Jordan Frankfurt <jordan@corn-jordan-949.lan> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: Nate Wienert <natewienert@gmail.com> Co-authored-by: Charles Bachmeier <charles@bachmeier.io> Co-authored-by: Charles Bachmeier <charlie@genie.xyz> Co-authored-by: Brendan Wong <35351983+LunrEclipse@users.noreply.github.com> Co-authored-by: cartcrom <cartergcromer@gmail.com> Co-authored-by: clrdo <129212060+clrdo@users.noreply.github.com> Co-authored-by: clrdo <clrdo@github.com> Co-authored-by: Eddie Dugan <eddie.dugan@uniswap.org> * feat: poll on order submit (#23) * feat: update gouda-sdk to 1.0.0-alpha.3 (#31) * feat: rename gasUseEstimateUSD for dutch orders (#30) Co-authored-by: Tina Zheng <tina.s.zheng+github@gmail.com> * chore: Fix response types (#36) * feat: Gouda ETH input flow (#29) Co-authored-by: Eddie Dugan <eddie.dugan@uniswap.org> * fix: use trade to determine what router label to show (#41) * feat: open uniswapx modal on click (#32) * feat: gouda logging new params in swap quote received (#33) * fix: wrap step ui fixes (#40) * feat: use BE deadline padding (#46) * chore: merge 6/23 (#50) Co-authored-by: Mike Grabowski <grabbou@gmail.com> Co-authored-by: Zach Pomerantz <zzmp@uniswap.org> Co-authored-by: Jordan Frankfurt <jordanwfrankfurt@gmail.com> Co-authored-by: Vignesh Mohankumar <me@vig.xyz> Co-authored-by: cartcrom <39385577+cartcrom@users.noreply.github.com> Co-authored-by: Jack Short <john.short.tj@gmail.com> Co-authored-by: eddie <66155195+just-toby@users.noreply.github.com> Co-authored-by: Jordan Frankfurt <jordan@CORN-Jordan-949.frankfurt> Co-authored-by: Jordan Frankfurt <jordan@corn-jordan-949.lan> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: Nate Wienert <natewienert@gmail.com> Co-authored-by: Charles Bachmeier <charles@bachmeier.io> Co-authored-by: Charles Bachmeier <charlie@genie.xyz> Co-authored-by: Brendan Wong <35351983+LunrEclipse@users.noreply.github.com> Co-authored-by: cartcrom <cartergcromer@gmail.com> Co-authored-by: clrdo <129212060+clrdo@users.noreply.github.com> Co-authored-by: clrdo <clrdo@github.com> Co-authored-by: Shubham Rasal <95695273+Shubham-Rasal@users.noreply.github.com> Co-authored-by: Saro Vindigni <sarovindigni@bolket.com> Co-authored-by: Jordan Frankfurt <<jordan@CORN-Jordan-949.frankfurt> Co-authored-by: John Short <john.short@CORN-Jack-899.local> * feat: Gouda opt-in flow request logic (#37) Co-authored-by: eddie <66155195+just-toby@users.noreply.github.com> * feat: hide slippage and deadline settings when the current trade is gouda (#44) * feat: use settled order amounts (#45) * feat: fetch receipt before dispatch (#49) * fix: updated order popups to launch modal (#48) * feat: Use slippage value from URA response for UniswapX trades (#51) * fix: Bump gouda-sdk to match backend response for quotes (#58) * feat: Change gouda order status URL param from offerer -> swapper (#59) * feat: disable opt in flow (#57) * feat: Dont show USD value change for uniswapx trades (#55) * fix: Don't use WETH as input currency for Classic ETH-in trades (#54) * feat: Reset to WETH after wrap is complete (#52) * fix: correct descriptor in UniswapX activity row items (#61) * fix: align review modal and gouda activity modal (#60) Co-authored-by: Charles Bachmeier <charles@bachmeier.io> * feat: Get wrap and approve gas info (#53) Co-authored-by: eddie <66155195+just-toby@users.noreply.github.com> * fix: restore summary view when wrap is rejected (#66) * fix: serialize tx receipts before storing (#64) * fix: Insufficient balance check should read from the right currency (#65) * feat: update designs for gas tooltips (#67) * fix: UniswapX gas descriptor boolean (#69) * chore: Bump conedison for better gas price formatting (#70) * chore: Switch from gouda-sdk to uniswapx-sdk (#71) * chore: Rename all variables `gouda` to UniswapX (#72) * chore: Merge 7/8/23 (#73) Co-authored-by: Mike Grabowski <grabbou@gmail.com> Co-authored-by: Zach Pomerantz <zzmp@uniswap.org> Co-authored-by: Jordan Frankfurt <jordanwfrankfurt@gmail.com> Co-authored-by: Vignesh Mohankumar <me@vig.xyz> Co-authored-by: cartcrom <39385577+cartcrom@users.noreply.github.com> Co-authored-by: Jack Short <john.short.tj@gmail.com> Co-authored-by: eddie <66155195+just-toby@users.noreply.github.com> Co-authored-by: Jordan Frankfurt <jordan@CORN-Jordan-949.frankfurt> Co-authored-by: Jordan Frankfurt <jordan@corn-jordan-949.lan> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: Nate Wienert <natewienert@gmail.com> Co-authored-by: Charles Bachmeier <charles@bachmeier.io> Co-authored-by: Charles Bachmeier <charlie@genie.xyz> Co-authored-by: Brendan Wong <35351983+LunrEclipse@users.noreply.github.com> Co-authored-by: cartcrom <cartergcromer@gmail.com> Co-authored-by: clrdo <129212060+clrdo@users.noreply.github.com> Co-authored-by: clrdo <clrdo@github.com> Co-authored-by: Shubham Rasal <95695273+Shubham-Rasal@users.noreply.github.com> Co-authored-by: Saro Vindigni <sarovindigni@bolket.com> Co-authored-by: Jordan Frankfurt <<jordan@CORN-Jordan-949.frankfurt> Co-authored-by: John Short <john.short@CORN-Jack-899.local> Co-authored-by: Charlie Bachmeier <charlie.bachmeier@Charlies-MacBook-Pro.local> Co-authored-by: UL Service Account <hello-happy-puppy@users.noreply.github.com> * chore(conedison): update package (#77) * feat: add opt-in UI (#68) * chore: address some todos (#79) * chore: Rename feature flag from gouda_enabled to uniswapx_enabled (#81) * feat: Copy changes (#82) * fix: improve timings on animations for gouda opt-in (#80) * chore: Use updated URLs (#84) * chore: Merge 7/14 (#85) Co-authored-by: Mike Grabowski <grabbou@gmail.com> Co-authored-by: Zach Pomerantz <zzmp@uniswap.org> Co-authored-by: Jordan Frankfurt <jordanwfrankfurt@gmail.com> Co-authored-by: Vignesh Mohankumar <me@vig.xyz> Co-authored-by: cartcrom <39385577+cartcrom@users.noreply.github.com> Co-authored-by: Jack Short <john.short.tj@gmail.com> Co-authored-by: eddie <66155195+just-toby@users.noreply.github.com> Co-authored-by: Jordan Frankfurt <jordan@CORN-Jordan-949.frankfurt> Co-authored-by: Jordan Frankfurt <jordan@corn-jordan-949.lan> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: Nate Wienert <natewienert@gmail.com> Co-authored-by: Charles Bachmeier <charles@bachmeier.io> Co-authored-by: Charles Bachmeier <charlie@genie.xyz> Co-authored-by: Brendan Wong <35351983+LunrEclipse@users.noreply.github.com> Co-authored-by: cartcrom <cartergcromer@gmail.com> Co-authored-by: clrdo <129212060+clrdo@users.noreply.github.com> Co-authored-by: clrdo <clrdo@github.com> Co-authored-by: Shubham Rasal <95695273+Shubham-Rasal@users.noreply.github.com> Co-authored-by: Saro Vindigni <sarovindigni@bolket.com> Co-authored-by: Jordan Frankfurt <<jordan@CORN-Jordan-949.frankfurt> Co-authored-by: John Short <john.short@CORN-Jack-899.local> Co-authored-by: Charlie Bachmeier <charlie.bachmeier@Charlies-MacBook-Pro.local> Co-authored-by: UL Service Account <hello-happy-puppy@users.noreply.github.com> * remove changes to github actions files * fix import * actually revert changes to yml * remove method export * feat: Add feature flag for synthetic quotes (#6938) * fix: use Lingui Trans macro (#6943) * fix: use trans macro * add comments * fix: update updater.tsx (#6942) * fix: reformat variable to use ms * move interval definition above getOrderStatus * lint :) * revert * chore: bunch of nits (#6944) bunch of nits * fix: translations etc (#6945) * chore: Remove placeholder signature types (#6937) remove placeholder * chore: merge main into branch (#6948) * fix: Handle Scientific Notation for NFT Collection Activity Prices (#6936) wrap nft activity price in * fix: e2e tests (#6941) * fix: e2e test * fix: set flag for buy-crypto-modal test * fix: fund DAI --------- Co-authored-by: Zach Pomerantz <zzmp@uniswap.org> --------- Co-authored-by: Charles Bachmeier <charles@bachmeier.io> * feat: make inputCurrency optional for swapheader (#6947) * make inputCurrency optional for swapheader * optional pass in * fix: function defined twice (#6950) fix lint * test: add signatureToActivity undefined tests (#6949) * fix: update token lists schema (#6951) fix: update token list schema * chore: some last nits (#6953) * refactor: base type * test: useUserDisabledUniswapX * chore: simplify useAllSignatures usage * chore: standard check order * lint --------- Co-authored-by: eddie <66155195+just-toby@users.noreply.github.com> Co-authored-by: cartcrom <39385577+cartcrom@users.noreply.github.com> Co-authored-by: Mike Grabowski <grabbou@gmail.com> Co-authored-by: Zach Pomerantz <zzmp@uniswap.org> Co-authored-by: Jordan Frankfurt <jordanwfrankfurt@gmail.com> Co-authored-by: Vignesh Mohankumar <me@vig.xyz> Co-authored-by: Jack Short <john.short.tj@gmail.com> Co-authored-by: Jordan Frankfurt <jordan@CORN-Jordan-949.frankfurt> Co-authored-by: Jordan Frankfurt <jordan@corn-jordan-949.lan> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: Nate Wienert <natewienert@gmail.com> Co-authored-by: Charles Bachmeier <charles@bachmeier.io> Co-authored-by: Charles Bachmeier <charlie@genie.xyz> Co-authored-by: Brendan Wong <35351983+LunrEclipse@users.noreply.github.com> Co-authored-by: cartcrom <cartergcromer@gmail.com> Co-authored-by: clrdo <129212060+clrdo@users.noreply.github.com> Co-authored-by: clrdo <clrdo@github.com> Co-authored-by: Eddie Dugan <eddie.dugan@uniswap.org> Co-authored-by: marktoda <toda.mark@gmail.com> Co-authored-by: Shubham Rasal <95695273+Shubham-Rasal@users.noreply.github.com> Co-authored-by: Saro Vindigni <sarovindigni@bolket.com> Co-authored-by: Jordan Frankfurt <<jordan@CORN-Jordan-949.frankfurt> Co-authored-by: John Short <john.short@CORN-Jack-899.local> Co-authored-by: Charlie Bachmeier <charlie.bachmeier@Charlies-MacBook-Pro.local> Co-authored-by: UL Service Account <hello-happy-puppy@users.noreply.github.com>
108 lines
4.8 KiB
TypeScript
108 lines
4.8 KiB
TypeScript
import { BigNumber } from '@ethersproject/bignumber'
|
|
import { ChainId } from '@uniswap/sdk-core'
|
|
|
|
import { DEFAULT_DEADLINE_FROM_NOW } from '../../../src/constants/misc'
|
|
import { UNI, USDC_MAINNET } from '../../../src/constants/tokens'
|
|
import { getBalance, getTestSelector } from '../../utils'
|
|
|
|
const UNI_MAINNET = UNI[ChainId.MAINNET]
|
|
|
|
describe('Swap errors', () => {
|
|
it('wallet rejection', () => {
|
|
cy.visit(`/swap?inputCurrency=ETH&outputCurrency=${USDC_MAINNET.address}`, { ethereum: 'hardhat' })
|
|
cy.hardhat().then((hardhat) => {
|
|
// Stub the wallet to reject any transaction.
|
|
cy.stub(hardhat.wallet, 'sendTransaction').log(false).rejects(new Error('user cancelled'))
|
|
|
|
// Enter amount to swap
|
|
cy.get('#swap-currency-output .token-amount-input').type('1').should('have.value', '1')
|
|
cy.get('#swap-currency-input .token-amount-input').should('not.have.value', '')
|
|
|
|
// Submit transaction
|
|
cy.get('#swap-button').click()
|
|
cy.contains('Confirm swap').click()
|
|
cy.wait('@eth_estimateGas')
|
|
|
|
// Verify rejection
|
|
cy.contains('Review swap')
|
|
cy.contains('Confirm swap')
|
|
})
|
|
})
|
|
|
|
it('transaction past deadline', () => {
|
|
cy.visit(`/swap?inputCurrency=ETH&outputCurrency=${USDC_MAINNET.address}`, { ethereum: 'hardhat' })
|
|
cy.hardhat({ automine: false })
|
|
getBalance(USDC_MAINNET).then((initialBalance) => {
|
|
// Enter amount to swap
|
|
cy.get('#swap-currency-output .token-amount-input').type('1').should('have.value', '1')
|
|
cy.get('#swap-currency-input .token-amount-input').should('not.have.value', '')
|
|
|
|
// Submit transaction
|
|
cy.get('#swap-button').click()
|
|
cy.contains('Confirm swap').click()
|
|
cy.wait('@eth_estimateGas').wait('@eth_sendRawTransaction').wait('@eth_getTransactionReceipt')
|
|
cy.contains('Swap submitted')
|
|
cy.get(getTestSelector('confirmation-close-icon')).click()
|
|
cy.get(getTestSelector('web3-status-connected')).should('contain', '1 Pending')
|
|
|
|
// Mine transaction
|
|
cy.hardhat().then(async (hardhat) => {
|
|
// Remove the transaction from the mempool, so that it doesn't fail but it is past the deadline.
|
|
// This should result in it being removed from pending transactions, without a failure notificiation.
|
|
const transactions = await hardhat.send('eth_pendingTransactions', [])
|
|
await hardhat.send('hardhat_dropTransaction', [transactions[0].hash])
|
|
// Mine past the deadline
|
|
await hardhat.mine(1, DEFAULT_DEADLINE_FROM_NOW + 1)
|
|
})
|
|
cy.wait('@eth_getTransactionReceipt')
|
|
|
|
// Verify transaction did not occur
|
|
cy.get(getTestSelector('web3-status-connected')).should('not.contain', 'Pending')
|
|
cy.get(getTestSelector('popups')).should('not.contain', 'Swap failed')
|
|
cy.get('#swap-currency-output').contains(`Balance: ${initialBalance}`)
|
|
getBalance(USDC_MAINNET).should('eq', initialBalance)
|
|
})
|
|
})
|
|
|
|
it.skip('slippage failure', () => {
|
|
cy.visit(`/swap?inputCurrency=ETH&outputCurrency=${UNI_MAINNET.address}`, { ethereum: 'hardhat' })
|
|
cy.hardhat({ automine: false })
|
|
getBalance(USDC_MAINNET).then((initialBalance) => {
|
|
// Gas estimation fails for this transaction (that would normally fail), so we stub it.
|
|
cy.hardhat().then((hardhat) => {
|
|
const send = cy.stub(hardhat.provider, 'send').log(false)
|
|
send.withArgs('eth_estimateGas').resolves(BigNumber.from(2_000_000))
|
|
send.callThrough()
|
|
})
|
|
|
|
// Set slippage to a very low value.
|
|
cy.get(getTestSelector('open-settings-dialog-button')).click()
|
|
cy.get(getTestSelector('max-slippage-settings')).click()
|
|
cy.get(getTestSelector('slippage-input')).clear().type('0.01')
|
|
cy.get('body').click('topRight') // close modal
|
|
cy.get(getTestSelector('slippage-input')).should('not.exist')
|
|
|
|
// Submit 2 transactions
|
|
for (let i = 0; i < 2; i++) {
|
|
cy.get('#swap-currency-input .token-amount-input').type('200').should('have.value', '200')
|
|
cy.get('#swap-currency-output .token-amount-input').should('not.have.value', '')
|
|
cy.get('#swap-button').click()
|
|
cy.contains('Confirm swap').click()
|
|
cy.wait('@eth_sendRawTransaction').wait('@eth_getTransactionReceipt')
|
|
cy.contains('Swap submitted')
|
|
cy.get(getTestSelector('confirmation-close-icon')).click()
|
|
}
|
|
cy.get(getTestSelector('web3-status-connected')).should('contain', '2 Pending')
|
|
|
|
// Mine transactions
|
|
cy.hardhat().then((hardhat) => hardhat.mine())
|
|
cy.wait('@eth_getTransactionReceipt')
|
|
|
|
// Verify transaction did not occur
|
|
cy.get(getTestSelector('web3-status-connected')).should('not.contain', 'Pending')
|
|
cy.get(getTestSelector('popups')).contains('Swap failed')
|
|
getBalance(UNI_MAINNET).should('eq', initialBalance)
|
|
})
|
|
})
|
|
})
|