我正在探索赛普拉斯进行e2e测试,看起来像很棒的软件。
问题是身份验证,赛普拉斯文档解释了为什么使用UI非常糟糕。

因此,我尝试查看应用程序的网络连接,以查看是否可以创建对firebase API的POST请求,并在不使用GUI的情况下进行身份验证。但是我可以看到至少有2个请求被触发,令牌已保存到应用程序存储中。

那我应该用什么方法呢?


使用我的应用程序的UI进行身份验证,并指示Cybress不要触摸本地存储
继续尝试发送正确的POST请求的方法,然后将值保存到本地存储中。
使赛普拉斯运行自定义JS代码,然后使用Firebase SDK登录。


我真的在这里寻找一些建议:)

最佳答案

当我自己执行此操作时,我做了一些自定义命令(例如cy.login用于身份验证,然后cy.callRtdbcy.callFirestore用于验证数据)。在厌倦了重复构建它们所需的逻辑之后,我将其包装到一个名为cypress-firebase的库中。它包括自定义命令和cli以生成自定义身份验证令牌。

安装程序主要包括在cypress/support/commands.js中添加自定义命令:

import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/database';
import 'firebase/firestore';
import { attachCustomCommands } from 'cypress-firebase';

const fbConfig = {
    // Your config from Firebase Console
};

window.fbInstance = firebase.initializeApp(fbConfig);

attachCustomCommands({ Cypress, cy, firebase })


并将插件添加到cypress/plugins/index.js

const cypressFirebasePlugin = require('cypress-firebase').plugin

module.exports = (on, config) => {
  // `on` is used to hook into various events Cypress emits
  // `config` is the resolved Cypress config

  // Return extended config (with settings from .firebaserc)
  return cypressFirebasePlugin(config)
}


但是,有关设置are available in the setup docs的完整详细信息。

披露,我是cypress-firebase的作者,这是完整的答案。

09-26 01:34
查看更多