我正在尝试为 Cypress 创建登录命令,并注意到他们关于如何执行此操作的博客与预期值不匹配Auth0反应SDK https://auth0.com/docs/libraries/auth0-react。看来他们使用了自定义的 Express 应用程序来处理登录,而不是使用 SDK 来处理此问题(根据Auth0 官方文档 https://auth0.com/docs/libraries/auth0-react).
柏树酒店官方文档 https://docs.cypress.io/guides/testing-strategies/auth0-authentication#Custom-Command-for-Auth0-Authentication生成一个本地存储键值对,如下所示。
const item = {
body: {
decodedToken: {
claims,
user: { ... },
audience,
client_id,
},
},
expiresAt: exp,
}
window.localStorage.setItem('auth0Cypress', JSON.stringify(item))
然而,由 Auth0 React SDK 创建的生成的内容类似于:
const item = {
body: {
access_token,
audience,
client_id,
decodedToken: {
claims,
user: { ... },
encoded,
header
},
expires_in,
id_token,
scope,
token_type
},
expiresAt: exp
}
window.localStorage.setItem(`@@auth0spajs@@::${client_id}::${audience}::${scope}`, JSON.stringify(item))
我能够得到https://${auth)_domain}/oauth/token
请求工作,但是我无法弄清楚如何从响应中获取数据,以使其适合 Auth0 React SDK 想要的数据结构。
有人在这方面取得过成功吗?
经过一番探索后,我从/oauth/token
不包含 Auth0 React SDK 登录时输出的值的所有字段。
我也注意到Auth0有一个指南 https://auth0.com/blog/cypress-write-automated-tests-to-validate-web-applications/#The-Test-Pyramid-and-Importance-of-E2E-tests关于如何与 Cypress 集成,但它不使用此 SDK,而是使用 SPA SDK。该指南还使用自定义登录表单,我在其中使用 LockUI。
需要注意的一件事是,我没有使用后端进行身份验证(就像大多数示例一样)。我使用的是loginWithRedirect
按照官方建议登录。