我正在探索赛普拉斯进行e2e测试,看起来像很棒的软件。
问题是身份验证,赛普拉斯文档解释了为什么使用UI非常糟糕。
因此,我尝试查看应用程序的网络连接,以查看是否可以创建对firebase API的POST请求,并在不使用GUI的情况下进行身份验证。但是我可以看到至少有2个请求被触发,令牌已保存到应用程序存储中。
那我应该用什么方法呢?
使用我的应用程序的UI进行身份验证,并指示Cybress不要触摸本地存储
继续尝试发送正确的POST请求的方法,然后将值保存到本地存储中。
使赛普拉斯运行自定义JS代码,然后使用Firebase SDK登录。
我真的在这里寻找一些建议:)
最佳答案
当我自己执行此操作时,我做了一些自定义命令(例如cy.login
用于身份验证,然后cy.callRtdb
和cy.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的作者,这是完整的答案。