vue-cli 脚手架基于Nightwatch的端到端测试环境的过程

yizhihongxing

下面我将详细讲解Vue CLI脚手架基于Nightwatch的端到端测试环境的过程。

简介

Vue CLI是Vue.js官方提供的一个标准工具,用于快速构建基于Vue.js的单页应用和组件库。而Nightwatch是一个基于Node.js和Webdriver API的可扩展自动化测试框架,它可以实现端到端的自动化测试。Vue CLI利用Nightwatch提供了一个默认的端到端测试环境,可以很方便的进行自动化测试。

环境搭建

  1. 安装Vue CLI

Vue CLI是一个npm包,因此,我们可以使用npm安装它。在命令行中输入:

npm install -g @vue/cli

这样就可以全局安装Vue CLI了。

  1. 创建Vue项目

使用Vue CLI创建一个新的Vue项目。在命令行中输入:

vue create my-project

需要注意的是,在后面的选项中,务必选择“Manually select features”并勾选“E2E测试”,这样就可以安装Nightwatch了。

  1. 修改Nightwatch配置

在创建好的Vue项目中,可以看到一个目录名为tests/e2e,其中就是Nightwatch的测试用例文件。Vue CLI已经为我们生成了一个默认的Nightwatch配置,但这个配置并不是完整的。我们需要在tests/e2e/nightwatch.conf.js文件中添加以下代码:

const path = require('path')
const webpackConfig = require('@vue/cli-service/webpack.config.js')

module.exports = {
  src_folders: ['./tests/e2e/specs'],
  page_objects_path: './tests/e2e/page-objects',
  webdriver: {
    start_process: true,
    server_path: require('chromedriver').path,
    cli_args: [
      // --verbose
    ],
  },
  test_settings: {
    default: {
      webdriver: {
        port: 9515,
        default_path_prefix: '',
        desiredCapabilities: {
          browserName: 'chrome',
          chromeOptions: {
            // Here is where you can specify additional chrome options
            // for more information see https://sites.google.com/a/chromium.org/chromedriver/capabilities
            //args: ["--no-sandbox"]
          },
        },
      },
      request_timeout_options: {
        timeout: 60000,
        retry_attempts: 3,
      },
      screenshots: {
        enabled: true,
        on_failure: true,
        on_error: false,
        path: path.join(__dirname, 'screenshots'),
      },
      globals: {
        waitForConditionTimeout: 5000, // sometimes internet is slow so wait.
      },
    },
    chrome: {
      desiredCapabilities: {
        browserName: 'chrome',
      },
    },
    firefox: {
      desiredCapabilities: {
        browserName: 'firefox',
      },
    },
  },
}

这里需要注意的是,我们需要将Nightwatch的配置文件中的webdriver.server_path修改为ChromeDriver的路径。此外,我们还需要通过globas.waitForConditionTimeout属性设置每个测试用例的最长等待时间。

  1. 编写测试用例

tests/e2e/specs目录下创建一个测试用例文件test.js,并编写测试用例代码。例如,我们可以编写一个测试用例测试Vue的路由功能:

module.exports = {
  'Vue Router Test': function (browser) {
    browser
      .url('http://localhost:8080/')
      .waitForElementVisible('#app', 5000)
      .assert.urlEquals('http://localhost:8080/')

      .click('#about-link')
      .pause(1000)
      .assert.urlEquals('http://localhost:8080/about')
      .assert.containsText('h1', 'About')

      .click('#home-link')
      .pause(1000)
      .assert.urlEquals('http://localhost:8080/')
      .assert.containsText('h1', 'Home')
      .end()
  },
}
  1. 运行测试

在命令行中输入以下命令运行测试:

npm run test:e2e

这样Nightwatch就会执行我们编写的测试用例,并输出测试结果。

示例说明

这里有两个示例说明,分别是测试按钮的点击事件和测试表单输入的功能。

测试按钮点击事件

在测试用例中,我们可以使用click方法模拟按钮的点击事件,测试点击按钮后是否触发了正确的事件。

module.exports = {
  'Button Click Test': function (browser) {
    browser
      .url('http://localhost:8080/')
      .waitForElementVisible('#app', 5000)
      .click('#btn-click')
      .pause(1000)
      .assert.containsText('#result', 'button clicked!')
      .end()
  },
}

这个测试用例会先访问Vue应用的首页,找到一个id为#btn-click的按钮,并模拟点击事件。然后,它会等待1秒钟,再断言在页面上有一个id为#result的元素,并且它的文本内容是“button clicked!”。

测试表单输入

另一个很重要的测试功能是测试表单输入。在测试用例中,我们可以使用setValue方法模拟表单输入,测试是否正确地将输入的值保存在了Vue组件实例的数据中。

module.exports = {
  'Form Input Test': function (browser) {
    browser
      .url('http://localhost:8080/')
      .waitForElementVisible('#app', 5000)
      .setValue('#input-field', 'test value')
      .pause(1000)
      .assert.value('#input-field', 'test value')
      .assert.containsText('#result', 'test value')
      .end()
  },
}

这个测试用例会先访问Vue应用的首页,找到一个id为#input-field的输入框,并模拟输入“test value”的文本。然后,它会等待1秒钟,再断言输入框中的值是“test value”,并且在页面上有一个id为#result的元素,它的文本内容也是“test value”。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue-cli 脚手架基于Nightwatch的端到端测试环境的过程 - Python技术站

(0)
上一篇 2023年5月29日
下一篇 2023年5月29日

相关文章

  • 教你如何使用VUE组件创建SpreadJS自定义单元格

    教你如何使用VUE组件创建SpreadJS自定义单元格 前言 本篇文章将会详细讲解如何使用VUE组件创建SpreadJS自定义单元格。在讲解具体实现过程前,我们需要先明确两个概念: SpreadJS:一款可用于构建企业级Web应用程序的JavaScript电子表格控件。 自定义单元格:就是我们可以在电子表格中添加自己的HTML代码并且自由布局的单元格。 步骤…

    Vue 2023年5月27日
    00
  • vue使用pdfjs显示PDF可复制的实现方法

    下面我将详细讲解“vue使用pdfjs显示PDF可复制的实现方法”的完整攻略。 1. 确认使用pdfjs 首先,我们需要确认使用的是pdfjs库。pdfjs是一款功能强大的开源JavaScript库,它可以实现在网页上显示PDF文档。 在Vue项目中,可以使用npm安装pdfjs,命令如下: npm install pdfjs-dist@2.0.943 –…

    Vue 2023年5月28日
    00
  • vue3中给数组赋值丢失响应式的解决

    在Vue 3中,直接对一个数组进行赋值不会触发响应式更新。这是因为Vue 3使用了Proxy作为响应式系统的实现,而Proxy只会拦截对象的新增、修改和删除操作,不会拦截数组的直接赋值操作。所以我们需要使用Vue提供的一些工具来解决这个问题。 1. Vue提供的工具 Vue 3提供了几个工具来解决数组赋值丢失响应式的问题。 1.1. Array.protot…

    Vue 2023年5月28日
    00
  • 浅谈Vue+Ant Design form表单的一些坑

    浅谈Vue+Ant Design form表单的一些坑 前言 在Vue结合Ant Design使用form表单时,可能会遇到一些坑。本攻略将会详细讲解如何解决这些坑,并提供一些示例说明。 Ant Design form表单-基本使用 首先,在使用Ant Design form表单时,我们需要先安装Ant Design of Vue。安装命令如下: npm i…

    Vue 2023年5月28日
    00
  • vue实现评论列表功能

    下面是vue实现评论列表功能的完整攻略。 1. 初始化 首先,我们需要使用vue-cli初始化一个项目,使用以下命令: vue create project-name 初始化完成后,我们需要安装axios和bootstrap,使用以下命令: npm install axios bootstrap 2. 创建数据模型 我们需要先定义一个评论数据的模型,包含评论…

    Vue 2023年5月28日
    00
  • 如何理解Vue简单状态管理之store模式

    下面是关于如何理解Vue简单状态管理之store模式的完整攻略: 什么是Vue中的store模式 在Vue.js中,store模式是一种用于管理应用程序状态的场所。这个模式主要是围绕一个全局的状态树进行设计的,这个状态树可以通过store对象中定义的getter函数进行访问,并且这个状态树中的所有变化均可被自动地保存下来。在整个应用的开发过程中,你的每一个组…

    Vue 2023年5月29日
    00
  • Vue动态实现评分效果

    下面就是 “Vue动态实现评分效果” 的完整攻略。 1. 了解评分组件的实现细节 评分组件是一个很常见的组件,在 Vue 中实现起来也比较简单。我们可以通过 v-for 指令渲染出固定个数的星星图标,然后通过绑定 @click 事件来处理星星的选中状态,进而实现评分效果。具体实现步骤如下: 首先,我们需要定义一个数组 starList 来存储星星的显示状态,…

    Vue 2023年5月27日
    00
  • 详细聊聊vue中组件的props属性

    下面详细讲解在Vue中组件的props属性的使用攻略: 什么是props属性? props属性是Vue组件中的属性,用以接收父组件传递的数据,并在组件中使用。组件内部不能修改props属性,props属性应该被认为是父组件所有的数据。 如何使用props属性? 在组件中定义props属性 当一个Vue组件中需要接受父组件传递的数据时,应该在组件中定义prop…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部