首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Cypress会跳过某些命令

为什么Cypress会跳过某些命令
EN

Stack Overflow用户
提问于 2020-12-16 23:19:30
回答 2查看 197关注 0票数 2

下面的测试是扫描和认证二维码,并使用接收到的认证令牌。将跳过最后两个命令(.type)。有人知道为什么吗?我已经被困在这里一段时间了。

getUrlVars是一个助手函数,它返回我用来生成令牌的字符串。我

谢谢

代码语言:javascript
复制
        /// <reference types='Cypress' />
    import { Decoder } from "@nuintun/qrcode";
    const qrcode = new Decoder();
    const OTPAuth = require("otpauth");
    
    import Navbar from "../page-objects/components/Navbar";
    import UserProfileNav from "../page-objects/components/UserProfileNav";
    import BasePage from "../page-objects/pages/BasePage";
    import LoginPage from "../page-objects/pages/LoginPage";
    import RegistrationPage from "../page-objects/pages/RegistrationPage";
    import { createEmail, getUrlVars } from "../utils/utils";
    
    describe("test", () => {
      it("ttest", () => {
        cy.visit("/");
        LoginPage.login("test_1608122224686.kkvbvvks@mailosaur.io", "P@ssword1");
        Navbar.navigateToProfile();
        UserProfileNav.twoStepVerificationTab();
    
        cy.findAllByAltText("2FA QR kód").then(function ($img) {
          qrcode.scan($img.prop("src")).then((result) => {
            const totp = new OTPAuth.TOTP({
              algorithm: "SHA1",
              digits: 6,
              period: 30,
              secret: getUrlVars(result.data)["secret"],
            });
            const token = totp.generate();
            console.log(token);
            cy.findByLabelText("Jednorázový kód").type(token);
          });
        });
      });
    });
EN

回答 2

Stack Overflow用户

发布于 2020-12-17 02:00:37

你能试试这个吗?问题可能是因为javascript的异步性质,这是首先执行的:

代码语言:javascript
复制
const token = totp.generate();
console.log(token);
cy.findByLabelText("Jednorázový kód").type(token);

然后是:

代码语言:javascript
复制
const totp = new OTPAuth.TOTP({
  algorithm: "SHA1",
  digits: 6,
  period: 30,
  secret: getUrlVars(result.data)["secret"],
});

因此,令牌是未定义的。我们必须使用then()来告诉cypress同步运行所有内容。

代码语言:javascript
复制
/// <reference types='Cypress' />
import {
  Decoder
} from "@nuintun/qrcode";
const qrcode = new Decoder();
const OTPAuth = require("otpauth");

import Navbar from "../page-objects/components/Navbar";
import UserProfileNav from "../page-objects/components/UserProfileNav";
import BasePage from "../page-objects/pages/BasePage";
import LoginPage from "../page-objects/pages/LoginPage";
import RegistrationPage from "../page-objects/pages/RegistrationPage";
import {
  createEmail,
  getUrlVars
} from "../utils/utils";

describe("test", () => {
  it("ttest", () => {
    cy.visit("/");
    LoginPage.login("test_1608122224686.kkvbvvks@mailosaur.io", "P@ssword1");
    Navbar.navigateToProfile();
    UserProfileNav.twoStepVerificationTab();

    cy.findAllByAltText("2FA QR kód").then(function($img) {
      qrcode.scan($img.prop("src")).then((result) => {
        const totp = new OTPAuth.TOTP({
          algorithm: "SHA1",
          digits: 6,
          period: 30,
          secret: getUrlVars(result.data)["secret"],
        }).then((totp) => {
          const token = totp.generate();
          console.log(token);
          cy.findByLabelText("Jednorázový kód").type(token);
        });
      });
    });
  });
});
票数 0
EN

Stack Overflow用户

发布于 2020-12-18 01:43:24

这解决了我的问题。感谢大家的帮助。

代码语言:javascript
复制
     cy.findAllByAltText("2FA QR kód").then(async function ($img) {
            await qrcode.scan($img.prop("src")).then((result) => {
              const totp = new OTPAuth.TOTP({
                algorithm: "SHA1",
                digits: 6,
                period: 30,
                secret: getUrlVars(result.data)["secret"],
              });
              token = totp.generate();
            });
    
            cy.findByLabelText("Jednorázový kód").type(token);
            cy.findByRole("button", { name: "Uložit" }).click({
              force: true,
            });
            cy.findByText("Zařízení bylo úspěšně nastaveno.").should("be.visible");
          });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65326117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档