在使用赛普拉斯测试Angular 6应用时,我需要使用Google登录的帮助。它无法使用登录弹出窗口,因此我试图遵循赛普拉斯的建议“始终使用cy.request()
通过其API与第三方服务器通信”。那是来自https://docs.cypress.io/guides/references/best-practices.html#Visiting-external-sites的内容,然后为我们提供了以下示例:https://github.com/cypress-io/cypress-example-recipes/blob/master/examples/logging-in__single-sign-on/cypress/integration/logging-in-single-sign-on-spec.js-在赛普拉斯作者的演示文稿的第23分钟,可以看到有关如何执行此操作的更多信息:https://www.youtube.com/watch?v=5XQOK0v_YRE
我正在采用视频解决方案,并尝试根据https://firebase.google.com/docs/auth/web/google-signin#advanced-authenticate-with-firebase-in-nodejs对其进行Firebase Auth的修改,但是我仍然在如何获取正确的id_token
方面陷入困境,到目前为止,我已经在我的commands.js文件:
Cypress.Commands.add('login', () => {
var id_token = ___?____;
cy.request({
method: 'POST',
url: 'https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyAssertion?key=[API_KEY]',
body: {
"requestUri": "http://localhost:3500",
"postBody": `id_token=${id_token}&providerId=google.com`,
"returnSecureToken": true,
"returnIdpCredential": true
}
})
})
我认为我需要使用其他API来启动登录并请求用户凭证,其中包括id_token,因此我尝试了https://firebase.google.com/docs/auth/web/google-signin#advanced-authenticate-with-firebase-in-nodejs,但还不够熟练以提取外部js文件({ {3}})插入节点(在js文件中可能无法像在html中那样实现)。使用以下软件包:https://apis.google.com/js/platform.js是我的下一个尝试。有没有人可以从这里拿起它?
与https://github.com/google/google-auth-library-nodejs类似的问题-但他们正在使用用户登录并通过。