javascript - Cypress 中的 SSO 登录

标签 javascript node.js authentication single-sign-on cypress

enter image description here我测试的应用程序具有 SSO 登录功能。所以,第一个我是 cy.vist(xxx) 到一个 URL,然后系统引导我另一个 cy.visit(yyy)。但目前我无法处理我目前面临的问题。你能帮我弄清楚吗?

谢谢

it.only("logs in using env variables", () => {
    
    const username = Cypress.env("username");
    const password = Cypress.env("password");
    let href;

    cy.visit("/");
    cy.get(".chakra-stack > .css-1n94901").click()
    

    cy.contains("Login with Carmarket").click();

    cy.get(":nth-child(1) > .form-control").type(username);
      
      cy.get(":nth-child(2) > .form-control").type(password);
      
      cy.get(".login > .submit > .button").click({multiple: true,force: true});
      

    cy.url().then((url) => {
      href = url;

      cy.log("href ", href);


      cy.visit(href);
      cy.url().should("include", "blabla[][1]][1]"); //assertion of that we are in this url
    });
  });
});

最佳答案

点击登录按钮后,可以直接断言url是否包含一些文本。您还可以添加一些超时以完成重定向。

cy.url({timeout: 6000}).should("include", "blabla[][1]][1]")

考虑到您的网址是 https://example.com/ 在同一测试中,如果网址的格式类似于 https://,您就可以使用它们example.com/somethinghttps://example.com/something/123https://superdomain.example.com/。所以基本上 url 应该具有相同的来源。但如果 url 与您的情况不同,那么您必须进行新的测试来解决此问题。这是 cypress 的一种权衡,您可以从 here 阅读更多相关信息。 。所以你可以做这样的事情:

it('logs in using env variables', () => {
  const username = Cypress.env('username')
  const password = Cypress.env('password')
  let href
  cy.visit('/')
  cy.get('.chakra-stack > .css-1n94901').click()
  cy.contains('Login with Carmarket').click()
  cy.get(':nth-child(1) > .form-control').type(username)
  cy.get(':nth-child(2) > .form-control').type(password)
  cy.get('.login > .submit > .button').click({multiple: true, force: true})
})

it('validate content of url', () => {
  cy.url({timeout: 6000}).should('include', 'blabla[][1]][1]')
})

关于javascript - Cypress 中的 SSO 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69738395/

相关文章:

javascript - 自动递增序列 Mongoose

mysql - 使用 sequelize 等待查询

swift - 如何为多个实体使用 AuthMiddleware?

c# - HTTP 请求未经授权,客户端身份验证方案为 'Ntlm' 从服务器收到的身份验证 header 为 'NTLM'

php - 我的登录和注册脚本出现问题

javascript - jQuery fadeIn 动画显示数据

javascript - 有什么方法可以将 Node 项目转换为 Deno?

javascript - 为什么JS中blob的hash与终端中使用sha256sum得到的hash不一样?

node.js - 使用 node-postgres 从 SELECT 返回结果

node.js - 使用 Node Js 获取 ECONNRESET 消息的 Azure Analytics HTTP Api 调用