0

我试图测试我们应用程序的登录页面。我正在使用 cypress 来测试 Vuejs 前端与 AspNet Api 的配合。当我单击 chrome 上的登录按钮时,它会发出以下请求并访问主页“localhost:44389”

来自 Chrome 的第一个请求

来自 Chrome 的第二个请求

如果我想在 cypress 上模拟它,它会发送相同的请求,但从第二个请求中获得 302 而不是 200。

赛普拉斯的第一个请求

赛普拉斯的第二个请求

有人可以帮我找出问题吗?

Cypress.Commands.add('IdentityServerAPILogin', (email, password) => {
  
  console.log("SERVER_URL is called. Server: " + Cypress.env('SERVER_URL'));
  
  cy.request({
    method: 'GET',
    url: Cypress.env('SERVER_URL'),
    failOnStatusCode: false,
    headers: {
      'Cookie': '...coookies...'
    }
    })
    .then(response => {
      if (response.status == 401){
        console.log ("Check for NOnce");
        console.dir(response, { depth: null });
        const requestURL = response.allRequestResponses[1]["Request URL"]
        console.dir(requestURL, { depth: null })
        //const signInPage = (response.redirects[0]).replace('302: ', '');
        const signInPage = (response.redirects[1]).replace('302: ', '');
        console.log("signInPage:" + signInPage);
        const nOnceObj = response.allRequestResponses[0]["Response Headers"];
        console.dir(nOnceObj, { depth: null });
        const nOnce = nOnceObj["set-cookie"][0];
        console.log("Nonce:" + nOnce);
        cy.visit({
          method: 'GET',
          url: signInPage,
          failOnStatusCode: false,
          headers: {
            //'Cookie': nOnce
          }
        })
        // TODO: Create all needed tests later to test sign in
        cy.get('#username').type(email)
        cy.get('#password').type(password)
        // TODO: Waiting for to click signIn button. When I call the click() method I get infinite loop!!
        cy.get('.ping-button')
        // .click()
        //  .then((response_login) => {
        //     console.log("Status REsponse_Login: "+ response_login);
        //     console.dir(response_login, { depth: null });
        //     if (response_login.status == 401){
        //     cy.visit(Cypress.env('SERVER_URL'))  
        //     }     
        //   })
      }else
        cy.visit(Cypress.env('SERVER_URL'))             
    })  
  console.log("vorbei");
});

刚刚发现 Cypress 无法从中获取 Cookie .../signin-oidc,因为下面的照片中存在错误

SameSite=Lax 错误

恳请解决办法。我不允许对授权服务进行更改。在柏树周围寻找可能性。

4

0 回答 0