我知道这可能不是做这件事的最佳方式.我在这里读了同样标题的问题,但它不能解决我的问题.

问题是:我有一个服务器,只有当我在服务器中运行命令行时,它才能实现我想要的结果.所以我想编写一个测试,在运行该命令之前和之后判断一页的状态.我该怎么做呢?

我try 使用Simple-ssh程序包,但在try 读取ssh密钥文件时不断收到以下错误:

fs.readFileSync is not a function

实际上,我的代码如下所示:

import * as fs from 'fs';

let sshConfig = Cypress.config('ssh')
sshConfig.key = fs.readFileSync('path/to/key/file')
let SSH = require('simple-ssh');

Cypress.Commands.add('teste', () => {
    let ssh = new SSH(sshConfig)

    ssh.exec('echo', {
        args: ['$PATH'],
        out: function(stdout) {
            console.log(stdout);
        }
    }).start();
})

欢迎其他可能的 Select .

推荐答案

正如Fody提到的,simple-ssh中存在node.js函数,因此需要一个任务.

这是基本配置.

它是对您所拥有的内容的直接翻译,但您可能希望从任务中返回一些东西.实际上,console.log()会转到终端控制台,而不是浏览器控制台.

cypress.config.js

const { defineConfig } = require('cypress')
const fs = require('fs')
const SSH = require('simple-ssh');

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      on('task', {
        ssh() {
          const sshConfig = config.ssh
          sshConfig.key = fs.readFileSync('path/to/key/file')
 
          const ssh = new SSH(sshConfig)      
          ssh.exec('echo', {
            args: ['$PATH'],
            out: function(stdout) {
              console.log(stdout);
            }
          }).start();

          return null
        },
      })
    }
  }
})

test

Cypress.Commands.add('ssh', () => {
  cy.task('ssh')
})

cy.ssh()

Javascript相关问答推荐

将旋转的矩形zoom 到覆盖它所需的最小尺寸&S容器

屏幕右侧屏障上的产卵点""

如何从html元素创建树 struct ?

在286之后恢复轮询

如何在输入元素中附加一个属性为checkbox?

使用Promise.All并发解决时,每个promise 的线性时间增加?

用JS从平面文件构建树形 struct 的JSON

对路由DOM嵌套路由作出react

Web Crypto API解密失败,RSA-OAEP

在Reaction中的handleSubmit按钮内,useSelector值仍然为空

根据一个条件,如何从处理过的数组中移除一项并将其移动到另一个数组?

为什么这个.add.group({})在教程中运行得很好,但在我的游戏中就不行了?

元素字符串长度html

使用自动识别发出信号(&Q)

为什么这个最小Angular 的Licial.dev设置不起作用?

观察子组件中的@Output事件emits 器?

如何在Angular中运行没有哈希的项目

FiRestore按字段的提取顺序

对两个不同值的数组进行排序,并保持平面数组 struct

我不能在ANGLE项目中使用addEventListner添加方法