809841df0a
* feat: new app provider w/ fallback behavior * progress * update useContractX signer params * Revert "update useContractX signer params" This reverts commit 386d1580dff77338810a4b31be38efd039d4b138. * extend jsonrpcprovider * add mainnet quicknode example, use old staticJsonRpc extension * add tests * unit testing * fixes to tests/tsc * Update src/state/routing/gas.ts Co-authored-by: Zach Pomerantz <zzmp@uniswap.org> * pr review * e2e tests should only talk to the chain via connected wallet * Revert "e2e tests should only talk to the chain via connected wallet" This reverts commit 0ce76eb7e4132917a52b49531db871a189448e51. * add charlie's null nit * fix e2e * add feature flag * Update cypress/support/setupTests.ts Co-authored-by: Zach Pomerantz <zzmp@uniswap.org> * pr review * pr feedback * fix tests * add generic send test * fix merge error * add a failure rate calculation and inline comments on scoring algo w/ an example * fix sort test * cleaner provider creation * simplify sort --------- Co-authored-by: Zach Pomerantz <zzmp@uniswap.org>
61 lines
2.1 KiB
TypeScript
61 lines
2.1 KiB
TypeScript
// @ts-ignore
|
|
import TokenListJSON from '@uniswap/default-token-list'
|
|
import { CyHttpMessages } from 'cypress/types/net-stubbing'
|
|
|
|
beforeEach(() => {
|
|
// Many API calls enforce that requests come from our app, so we must mock Origin and Referer.
|
|
cy.intercept('*', (req) => {
|
|
req.headers['referer'] = 'https://app.uniswap.org'
|
|
req.headers['origin'] = 'https://app.uniswap.org'
|
|
})
|
|
|
|
// Network RPCs are disabled for cypress tests - calls should be routed through the connected wallet instead.
|
|
cy.intercept(/infura.io/, { statusCode: 404 })
|
|
cy.intercept(/quiknode.pro/, { statusCode: 404 })
|
|
|
|
// Log requests to hardhat.
|
|
cy.intercept(/:8545/, logJsonRpc)
|
|
|
|
// Mock analytics responses to avoid analytics in tests.
|
|
cy.intercept('https://api.uniswap.org/v1/amplitude-proxy', (req) => {
|
|
const requestBody = JSON.stringify(req.body)
|
|
const byteSize = new Blob([requestBody]).size
|
|
req.alias = 'amplitude'
|
|
req.reply(
|
|
JSON.stringify({
|
|
code: 200,
|
|
server_upload_time: Date.now(),
|
|
payload_size_bytes: byteSize,
|
|
events_ingested: req.body.events.length,
|
|
})
|
|
)
|
|
}).intercept('https://*.sentry.io', { statusCode: 200 })
|
|
|
|
// Mock our own token list responses to avoid the latency of IPFS.
|
|
cy.intercept('https://gateway.ipfs.io/ipns/tokens.uniswap.org', TokenListJSON)
|
|
.intercept('https://gateway.ipfs.io/ipns/extendedtokens.uniswap.org', { statusCode: 404 })
|
|
.intercept('https://gateway.ipfs.io/ipns/unsupportedtokens.uniswap.org', { statusCode: 404 })
|
|
|
|
// Reset hardhat between tests to ensure isolation.
|
|
// This resets the fork, as well as options like automine.
|
|
cy.hardhat().then((hardhat) => hardhat.reset())
|
|
})
|
|
|
|
function logJsonRpc(req: CyHttpMessages.IncomingHttpRequest) {
|
|
req.alias = req.body.method
|
|
const log = Cypress.log({
|
|
autoEnd: false,
|
|
name: req.body.method,
|
|
message: req.body.params?.map((param: any) =>
|
|
typeof param === 'object' ? '{...}' : param?.toString().substring(0, 10)
|
|
),
|
|
})
|
|
req.on('after:response', (res) => {
|
|
if (res.statusCode === 200) {
|
|
log.end()
|
|
} else {
|
|
log.error(new Error(`${res.statusCode}: ${res.statusMessage}`))
|
|
}
|
|
})
|
|
}
|