使用Cypress+JavaScript进行自动化测试

Issue

我无法在登录后保持登录状态,同时运行我的脚本.登录几秒钟后,它会将我重定向到登录页面.

Expected Result

我想登录,直到整个脚本运行.

请找到我使用的以下代码:

LoginPage.js
//Page objects and functions for login page 

class LoginPage{
    
    navigate() {
        cy.visit('stageURL')
    }

    firstLogin(){
        //cy.wait(10000)
        cy.get('.MuiButton-root', {timeout: 30000})
            .should('be.visible')
            .and('be.enabled')
            .and('have.text', 'Sign In')
            .click()
    }

    enterEmail(username) {
        cy.get('#username')
            .clear()
            .type(username)
        return this
    }

    enterPassword(pswd) {
        cy.get('#password')
            .clear()
            .type(pswd)
        return this
    }

    submit() {
        cy.get('#kc-login').click()
    }

}
export default LoginPage
LoginSpec.js
/// <reference types="cypress" />

import LoginPage from "./PageObjects/LoginPage"
describe("Cypress POM Test Suite", function () {
    before(function () {
        cy.fixture('credentials').then(function (testdata) {
            this.testdata = testdata
        })
    })
    it("Login with valid credentials", function () {
        const login = new LoginPage();
        login.navigate();
        login.firstLogin();
        login.enterEmail(this.testdata.username)
        login.enterPassword(this.testdata.password)
        login.submit();
    });
});

Suite.js
import './LoginSpec'
import './SitesSpec'
import './LogoutSpec'

我运行一个Suite.js文件.(我没有在这里附加其他文件,除了登录.如果您需要解决方案,请告诉我)

What I tried:

I tried both of available options on how do I stop a website from automatically logging me out when I'm using cypress?. But it's not working for me.

有什么解决办法吗?谢谢!

它在我同事的机器上运行得很好.我正在使用Windows 10

推荐答案

感谢你们的努力!

当我使用cy.ession()时,它给我的错误是experimentalsessionandorigin.启用experimentalsessionandorigin:true后,它向我显示testIsolation的另一个错误.但添加testIsolation:false带来了一个新的错误,通过更新Cypress解决了这个问题.

简而言之,以下步骤解决了我的问题.

  1. 升级Cypress -"cypress": "^13.3.0"
  2. cypress.config.js文件内添加testIsolation: false
module.exports = defineConfig({
  
  video: true,
   
  e2e: {
    setupNodeEvents(on, config) {
      // implement node event listeners here
    },
    chromeWebSecurity: false,
    testIsolation: false,
    specPattern: 'cypress/integration/examples/*.js'
  },
  
});

以下是我找到解决方案的链接:https://github.com/cypress-io/cypress/issues/24497

你可以从Cypress documentation中找到更多信息.

谢谢!

Javascript相关问答推荐

错误:找不到react-redux上下文值;请确保该组件包装在React原生Expo应用程序中的提供者中

用户单击仅在JavaScript中传递一次以及其他行为

如何将连续的十六进制字符串拆分为以空间分隔的十六进制块,每个十六进制块包含32个二元组?

在grafana情节,避免冲突的情节和传说

如何解决useState错误—setSelect Image不是函数''

如何将react—flanet map添加到remixjs应用程序

我正在建立一个基于文本的游戏在react ,我是从JS转换.我怎样才能使变量变呢?

WhatsApp Cloud API上载问题:由于MIME类型不正确而导致接收&Quot;INVALID_REQUEST";错误

将内容大小设置为剩余可用空间,但如果需要,可在div上显示滚动条

对路由DOM嵌套路由作出react

禁用.js文件扩展名并从目录导入隐式根index.js时,找不到NodeJS导入模块

用于在路径之间移动图像的查询

从Nextjs中的 Select 项收集值,但当单击以处理时,未发生任何情况

如何在Angular拖放组件中同步数组?

使用NextJS+MongoDB+Prisma ORM获取无效请求正文,无法发布错误

MongoDB受困于太多的数据

如何使用抽屉屏幕及其子屏幕/组件的上下文?

构建器模式与参数对象输入

如何在尚未创建的鼠标悬停事件上访问和着色div?

我们是否可以在reactjs中创建多个同名的路由