Skip to content

Commit

Permalink
Improve connect (#18)
Browse files Browse the repository at this point in the history
* step 1 of improving connect

* further improvement of connect

* minor ux improvements

* fix improve button do not wrap

* fix no wallet tests

* fix specs

* fix Donation/approve

* finish improving connect

* remove only test

* fix specs for connect walletconnect
  • Loading branch information
spape authored Oct 11, 2021
1 parent 63f1eea commit 6b69951
Show file tree
Hide file tree
Showing 34 changed files with 8,339 additions and 8,500 deletions.
14 changes: 13 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1192,6 +1192,18 @@ let { account, accounts, wallet } = await DePayWidgets.Connect()
See [depay-web3-wallets](https://github.com/depayfi/depay-web3-wallets) for more details about the returned `wallet`.
### Rejections
1. Rejects if user just closes the dialog without connecting any wallet:
```javascript

DePayWidgets.Connect().then(()=>{}).catch((error)=>{
error // "USER_CLOSED_DIALOG"
})

```
## Development
### Quick start
Expand All @@ -1214,7 +1226,7 @@ test:cypress:debug
Test and debug single cypress file:
```
yarn test:cypress:debug --spec "cypress/integration/Payment/pay-smart-contracts.js"
yarn test:cypress:debug --spec "cypress/integration/Payment/nowallet.js"
```
### Release new versions to npm
Expand Down
97 changes: 91 additions & 6 deletions cypress/integration/Connect/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,112 @@ import React from 'react'
import ReactDOM from 'react-dom'
import { mock, resetMocks } from 'depay-web3-mock'

describe('execute Payment', () => {
describe('Connect wallet', () => {

const blockchain = 'ethereum'
const accounts = ['0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045']
beforeEach(resetMocks)
beforeEach(()=>mock({ blockchain, accounts: { return: accounts } }))

it('opens a connect widget ', () => {
afterEach(()=>{
cy.wait(1000).then(()=>{
cy.get('body').then((body) => {
if (body.find('.ReactShadowDOMOutsideContainer').length > 0) {
cy.get('.ReactShadowDOMOutsideContainer').shadow().find('button[title="Close dialog"]').click()
}
cy.wait(1000)
})
})
})

it('directly resolves if a wallet is already connected', () => {
cy.document().then(async (document)=>{
let accountsReturned, accountReturned, walletReturned
mock({ blockchain, wallet: 'metamask', accounts: { return: accounts } })
DePayWidgets.Connect({ document }).then(({ accounts, account, wallet })=>{
accountsReturned = accounts
accountReturned = account
walletReturned = wallet
})
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('.DialogHeader h1', 'Select a wallet')
cy.get('.ReactShadowDOMOutsideContainer').shadow().find('.Card[title="Connect MetaMask"]').click().then(()=>{
}).catch(()=>{})
cy.wait(1000).then(()=>{
expect(accountsReturned).to.eq(accounts)
expect(accountReturned).to.eq(accounts[0])
expect(walletReturned.name).to.eq('MetaMask')
})
})
})

it('opens a dialog indicating connection is in progress when wallet connection has been initiated automatically and connection can be reinitalized by clicking connect', () => {
cy.document().then(async (document)=>{
let accountsReturned, accountReturned, walletReturned
mock({ blockchain, wallet: 'metamask', accounts: { return: [] } }) // initialy no accounts connected
DePayWidgets.Connect({ document }).then(({ accounts, account, wallet })=>{
accountsReturned = accounts
accountReturned = account
walletReturned = wallet
}).catch(()=>{})
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('h1', 'Connect Wallet')
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('p', 'Access to your wallet is required. Please login and authorize access to your account to continue.')
cy.wait(2000).then(()=>{
mock({ blockchain, wallet: 'metamask', accounts: { return: accounts } }) // now connected
cy.wait(1000).then(()=>{
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('.ButtonPrimary', 'Connect').click().then(()=>{
expect(accountsReturned).to.eq(accounts)
expect(accountReturned).to.eq(accounts[0])
expect(walletReturned.name).to.eq('MetaMask')
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('h1', 'Connect Wallet').should('not.exist')
})
})
})
})
})

it('opens wallet connect if widget was not able to autodetect any wallet', () => {
cy.document().then(async (document)=>{
let accountsReturned, accountReturned, walletReturned
DePayWidgets.Connect({ document }).then(({ accounts, account, wallet })=>{
accountsReturned = accounts
accountReturned = account
walletReturned = wallet
}).catch(()=>{})
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('.DialogHeader h1', 'Select a wallet')
cy.get('.ReactShadowDOMOutsideContainer').shadow().find('.Card[title="Connect WalletConnect"]')
})
})

it('rejects if user just closes the dialog', () => {
cy.document().then(async (document)=>{
let rejectionReason
DePayWidgets.Connect({ document }).catch((error)=>{
rejectionReason = error
}).catch(()=>{})
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('.DialogHeader h1', 'Select a wallet')
cy.wait(1000).then(()=>{
cy.get('.ReactShadowDOMOutsideContainer').shadow().find('button[title="Close dialog"]').click().then(()=>{
cy.wait(1000).then(()=>{
expect(rejectionReason).to.eq('USER_CLOSED_DIALOG')
})
})
})
})
})

it('allows you to return to the list of available wallets even if it autodetected one (and still suggests the autodetected one)', () => {
cy.document().then(async (document)=>{
let accountsReturned, accountReturned, walletReturned
mock({ blockchain, wallet: 'metamask', accounts: { return: [] } }) // initialy no accounts connected
DePayWidgets.Connect({ document }).then(({ accounts, account, wallet })=>{
accountsReturned = accounts
accountReturned = account
walletReturned = wallet
}).catch(()=>{})
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('h1', 'Connect Wallet')
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('p', 'Access to your wallet is required. Please login and authorize access to your account to continue.')
cy.get('.ReactShadowDOMOutsideContainer').shadow().find('button[title="Go back"]').click()
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('.DialogHeader h1', 'Select a wallet')
cy.get('.ReactShadowDOMOutsideContainer').shadow().find('.Card[title="Connect WalletConnect"]')
cy.get('.ReactShadowDOMOutsideContainer').shadow().find('.Card[title="Connect MetaMask"]').click()
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('button', 'Connect with another wallet').click()
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('.DialogHeader h1', 'Select a wallet')
})
})
})
39 changes: 39 additions & 0 deletions cypress/integration/Connect/walletconnect.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import DePayWidgets from '../../../src'
import React from 'react'
import ReactDOM from 'react-dom'
import { mock, resetMocks } from 'depay-web3-mock'
import { wallets } from 'depay-web3-wallets'

describe('WalletConnect Payment', () => {

const blockchain = 'ethereum'
const accounts = ['0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045']
beforeEach(resetMocks)

it('allows to connect wallet via WalletConnect', () => {
cy.visit('cypress/test.html').then((contentWindow) => {
cy.document().then((document)=>{
let connectedAccount, connectedWallet
DePayWidgets.Connect({ document }).then(({ account, wallet })=>{
connectedAccount = account
connectedWallet = wallet
})
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('.DialogHeader h1', 'Select a wallet').then(()=>{
mock({
blockchain,
accounts: { return: accounts },
wallet: 'walletconnect',
connector: wallets.WalletConnect.connector
})

cy.get('.ReactShadowDOMOutsideContainer').shadow().find('.Card[title="Connect WalletConnect"]').click().then(()=>{
cy.wait(1000).then(()=>{
expect(connectedAccount).to.equal(accounts[0])
expect(connectedWallet.name).to.equal('WalletConnect')
})
})
})
})
})
})
})
2 changes: 1 addition & 1 deletion cypress/integration/Donation/amount.js
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ describe('change Donation amount', () => {
})
})

it.only('allows me to submit a changed amount for a token sale', ()=> {
it('allows me to submit a changed amount for a token sale', ()=> {

let fromAddress = accounts[0]

Expand Down
4 changes: 2 additions & 2 deletions cypress/integration/Donation/approve.js
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ describe('approve Donation payment', () => {
}))
})

it('forces me to approve the token for the payment router before I can execute it', () => {
it('asks me to approve the token for the payment router before I can execute it', () => {
let mockedTransaction = mock({
blockchain,
transaction: {
Expand All @@ -121,7 +121,7 @@ describe('approve Donation payment', () => {
DePayWidgets.Donation({ ...defaultArguments, document })
cy.get('.ReactShadowDOMOutsideContainer').shadow().find('.Card[title="Change payment"]').click()
cy.get('.ReactShadowDOMOutsideContainer').shadow().find('.Card[title="Select DAI as payment"]').click()
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('.ButtonPrimary', 'Allow DAI to be used as payment').click()
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('.ButtonPrimary[title="Allow DAI to be used as payment"]', 'Allow DAI to be used as payment').click()
cy.get('button[title="Close dialog"]', { includeShadowDom: true }).should('not.exist')
cy.get('.ReactShadowDOMOutsideContainer').shadow().find('.Card.disabled')
cy.get('.ReactShadowDOMOutsideContainer').shadow().find('.ButtonPrimary.wide').should('contain.text', 'Approving...').then(()=>{
Expand Down
4 changes: 2 additions & 2 deletions cypress/integration/Donation/nowallet.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ describe('having no wallet and opening the Donation widget', () => {
cy.document().then((document)=>{
DePayWidgets.Donation({ ...defaultArguments, document })
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('.DialogHeader h1', 'Select a wallet')
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('.CardText', 'MetaMask')
cy.get('.ReactShadowDOMOutsideContainer').shadow().find('.Card[title="Connect MetaMask"]').find('.CardImage img').invoke('attr', 'src').should('eq', 'data:image/png;base64,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')
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('.CardText', 'WalletConnect')
cy.get('.ReactShadowDOMOutsideContainer').shadow().find('.Card[title="Connect WalletConnect"]').find('.CardImage img')
})
})
})
Expand Down
2 changes: 1 addition & 1 deletion cypress/integration/Payment/approve.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ describe('approve Payment', () => {
}))
})

it('forces me to approve the token for the payment router before I can execute it', () => {
it('asks me to approve the token for the payment router before I can execute it', () => {
let mockedTransaction = mock({
blockchain,
transaction: {
Expand Down
4 changes: 2 additions & 2 deletions cypress/integration/Payment/nowallet.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ describe('having no wallet and opening the Payment widget', () => {
cy.document().then((document)=>{
DePayWidgets.Payment({ ...defaultArguments, document })
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('.DialogHeader h1', 'Select a wallet')
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('.CardText', 'MetaMask')
cy.get('.ReactShadowDOMOutsideContainer').shadow().find('.Card[title="Connect MetaMask"]').find('.CardImage img').invoke('attr', 'src').should('eq', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAAclBMVEVHcEyBTif0snbypF3nhijulD7cq4Hv1b/wrW3dvqSieVvWyL2PXjvJuazndgD5hQB3PQ/PYQDkdADCrp3YwrPsegAVFRZyOg7ZawDzgQD/iQAeMklxNQMMDQ+3XwiLRw2hVAyCdmxPQz7dqoAyKiSgkoj9gMFYAAAADnRSTlMA8X2g78dnGzZPp57O1Hi2/psAAApFSURBVHja7Z2LVqM6FIZ7pUUrtbQRqEyLHX3/Vzy5soHcICSd41r5z3EcFUL+7m/vXKDOIioqKioqKioqKioqKioqKioqKioqKurXKnlJd4t/rB3uxGKuXur7Zr1f/EPt15t7/TK3ld2yKN5vaLv6R2HZrbbo9l4Uy7nXT+t33EyTZ5ttsls8Wbtku8nypihwH9LZZL1jFfcS5fmTEcNI5XlW3gvSg/plNlnvRASvDDf7NMQwUuR6GCvegeVuNllYDC+UkbafgNguwS6wEMWKqU49kPUu8MqwleCIUaRyEo7TndmYz5YgC/DCYogF8kKRYj4ygZUHtjhZPbywQiEmkBJYvfeunvohi+N1QhkXQSxdeFTKkBpg5YUtQZaMl3fEMFLUwRArP2wBWTJePhEDpDL6gUqOlS+2OFlqvLwhJpASVgArX2wJsmS8qAMviAFSGTXRxcobW5wsWQKvIWIzqpT4rMSqHRN9kqXESwyUqSNSGf2jh5VHtgRZOrzACnjBiI3Uatt3MahWPtlKWZNavMiMRfZSHUepkmxkBKtuOLzVLSDLjhc4QeOMIAETWAGs/LIlyLLgJWmcEdLxYUQajpVnthJjQGBCPFQ1lqy+lT5WPuvWC23XFpQTcmILiTDwP2EF5Z8tGhG7k0bCayRZEJF2BWU3kvgcDi14jalbFSDVxSoMWvpklyfEU9lCeadedbEKkeyLg611mBBnaFK6V1l3xt5iZb/SIcQ4MsBrCltIpHnWxSpQrotsn46Xna1MtYIKlet4N0PfomW9VdlTPZtQrUB775NGA172kCB5YR4y13G2E7ac8LKSBSuoCaoP3tcjNrwqI1nD/Z7AuS6yfSJedrbQAKvQuS6y3Qkv8yDSwyp4rpNsnxISWM6bh5KqXZhPDQjJ9WdkO6y3jGyhLlZPyXWW7Y54VfqAAFZPynWR7U54IW1AMgVW4aa+ItvJJZ3w0kaEYeUU6RnbzHRsd8NL46SajBWM6x5vK0y47O2q8nG9MRvPTRGeJI55oo5Ih6tnDYdEqbOPe642Uro7SefcuHCOh24koTMsN9Hh8JlDIkkQ7SwF/4A4eepwSNDCZct1wqWZaLG9Bpeilc7I9elXhE27SmcEz1Dc2k3ciy+5nstU3myEbDi4tOxcgPeH2sGHcXFVsZ+h3MFJfdg7F62XYuL1YIsrVxvJuZPJKV8UL7MeBFwW09PcbmR6yhfLxMfzWlPS3G4EnDxpgoLZOtTTllS2LWAERiYur+rDbs4wUk8sV2ONOBSvesZAktTFtMX6NCPZpPlKUSdzJo31lFnJVCNT5iv1rEnjYr+sx5arSUYmp3y9FIOI86A49laig5Hx85XiMPtxKlv9LfCYSdJ8uhFIedJI0OpLZykWF/fmVBIfsjSzeIWT8tTccVOB5id8PWIOxa2srldsw8kIWLleq/JGAxNoPULKliEU2fF6FbjIqnRzRhWGpKWMBSZE0SJO5IZ5KI5X0bl5RuDYNjCKcjL7OdCkloBqbjm+Jty2mW+krQyk3fzWkMv420KRyxZuHQOF8NW6dchHRKgT8IJODQ6Mr8ewwUk/t+1dg+mvPPm12u5D5uWtCjAFhtyWBwY/RuRhB7K/Psx+IFfc8GlDIfvwFZHWiRwYXz4Wi1XrQmbel5EWLtmLh0TnWhvuPhle4vnHM60XnrTb6H34M6J3svGFVqq9P5v5NKK/Xzd7MBRkVbonGPwayTVOKk9s6ciqTlhlq84jWEwqI6LLreB80loVlK1Ul4T5SaPyRJ0pziDfJz9XKz8GZaslSy6mJ5NKxW0e4wmkYAdkqyVLhbxPI4anDDYLD0qNj5WYOiafYDqcpnpItoAsVfLmk0gxHU2LQ0i2KFn6kSSfYKQyHExHkZBspZan+vROoGfgW1uv2LATkq1VZX6CV4pJKT6bjJQDH9an7laLudraHrRkTsDG8rEszUbK+2N5K7s+7A90bhdByWIhASflbfn5+fkQVUhX5R74oI6Vks+zgrKFybKFBJxgG1R30kf8nJx8LDmwbNhRj+bEQ8cDEpSt7XFMSGgHmwftHw2JzkjGAyKsUB88IEHZ2kNLlsXV7fEJakrcP6WRkgWktXIb/Q6H/TyyRrwXhK9r89uyExK9EQgISXk8tox8P9MqLFmicOF9R7y6PgkvjRgZ5FGnaV0gfAoxwo4MytZu1Bu/aETafcLm8cDd1Bt50OQo8bHsbD6GhGXLRhb0T3SFBAbdlph9tZHshkOR4YPal6F1XGn/Zx+rwGSxGRcabOFkSF1+UTbYWqrwihJ/CsvW7jhOik5fK42Rq+5cu9wXvMnYN94qMNIYqRS48RMM7fMxMTBZtDeyEXWOVKZTK9WHB7Z2x9FSrIrURhRrs3FBn8NWMt4IQpYowbfkM9vXPdR8a30cL3cjVdvPzqeq/UvX5tb79oni1ZK/ozKiOKz3RZC6lRwdZDdiP9H3fCtBWmWdnVK+V1qNKAAo071zDDfTKkO6/1DiiFauk2ITQTFCIPk71n0VOm3WyXUPeG3YOy9V+1J2I/Z9sdKwW791Lb+m+0uqDZ2q/2pLRoYHqDaTTNdcuQ6I+OTRIWnvb9iNwNiPzxkdEHzs3nmKkpudyB2ozEZ6X6ibCUAWXo4Yb/kNeiAvvuXtoF4pVhkxXnDtvqmVjYarhNtnRiOAlboVk5F0xgZ2PtZJ2b8RaJ/3qxsxiBdf/wW4D1fveV77rF/XSBiyoADbQ9I5sK3DV0ngAw62BAQOTObsomRjneTSfeYrak4DNegqsIJjLT5AlKwgBbjbC+mO+fX0/edjoD/fpysezDVN4O+HKb68AI8LyfDXbG02H5KPD/ytzSYfNNkLSIBhnWlPG7E7KQc2/l5+iA/Zyc/lL7Mit2ARLb6hCnBLRjmwcbl8qY184R/93SiM2K7D7iKGKsBtP8q+DbORC42K3ECw4kuU5qPgKjs2mB5qIw/2U7AC54crvnx1ZbtEC0aecRt2I2AFzg82rANb9pDk3AboW23km/8YrOQ8ICGLryjAdif5wMbl/P2h1Pf50rOCaWQ+ghZfUYDtcAkbYORDI2EErJB4WjX77SNkcLeHZGjjAsOIPJBchlbK7Alk2djKCVTr1/NoI1/DI8+va/qrWQOTZSzAxAT7BbnpeWDl649GXwMb55Twu1pviJkQaypbAc7pb/lt/yWM9K1v5fH9pdT3o2/jLRWX2bPfTx6o+EIBlnnq/37f3du5a+Xr56zS5acTEfz1W7+NhAXG+7AuVldDF5QnSa+sq9BLtZXuAa/yK40DQ3Y4/Q7r7eqqx9Oa8aRzctb6kH78qrlg2kt/fHkvZNECDDwpCzokCpXNCPvLmymD95wyb8WXFWDOk/Ufudm98t6ajOAPJVY6yvwUX769te2lti0odsnh0FM2e00F6vFkD4pRcjisgfGT6j15Csqbt5c4rHav/sLxj/Vq9LH4Rdq9abH6PeHgQVHrV4UjKioqKioqKioqKioqKioqKioqKioqKirq/6z/AMhLOEXbTKvCAAAAAElFTkSuQmCC')
cy.get('.ReactShadowDOMOutsideContainer').shadow().contains('.CardText', 'WalletConnect')
cy.get('.ReactShadowDOMOutsideContainer').shadow().find('.Card[title="Connect WalletConnect"]').find('.CardImage img')
})
})
})
Expand Down
Loading

0 comments on commit 6b69951

Please sign in to comment.