微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

让 Cypress 正确登录到 Auth0

如何解决让 Cypress 正确登录到 Auth0

我正在使用 cypress 设置一套 E2E 测试。我有一个 react typescript 应用程序,我正试图让它与 cypress 一起工作。我面临的主要问题是我使用 Auth0 作为我的身份验证提供程序。这意味着我需要在每次测试之前以编程方式登录用户。但是我似乎无法获得正确的方法。当我尝试调用回调 url 时,它似乎没有对用户进行身份验证,因为他们只是转到一个空白页面?我正在使用 @auth0/auth0-react 包,它有一个用于访问所有 Auth0 数据的钩子。

赛普拉斯命令:

import jwt_decode from 'jwt-decode';

Cypress.Commands.add('login',() => {
    cy.log(`logging in as ${Cypress.env('auth_username')}`);

    cy.request({
        method: 'POST',url: Cypress.env('auth_url'),body: {
            grant_type: 'password',username: Cypress.env('auth_username'),password: Cypress.env('auth_password'),audience: Cypress.env('auth_audience'),scope: 'openid profile email',client_id: Cypress.env('auth_client_id'),client_secret: Cypress.env('auth_client_secret'),},}).then(({ body }) => {
        const claims = jwt_decode(body.id_token);
        const { nickname,name,picture,updated_at,email,email_verified,sub,exp } = claims;
        const item = {
            body: {
                ...body,decodedToken: {
                    claims,user: {
                        nickname,expiresAt: exp,};
        window.localStorage.setItem('auth0Cypress',JSON.stringify(item));
    });
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?