點燈坊

失くすものさえない今が強くなるチャンスよ

使用 Cypress 測試 Vue

Sam Xiao's Avatar 2021-04-02

Cypress 雖然不是為 Vue 量身定做,但因為其與 Framework 無關,因此也能將 Cypress 整合進 Vue CLI,讓我們在開發階段也能使用 Cypress 測試 Vue。

Version

Vue 3.0.11
Cypress 7.4.0

Vue Project

$ yarn create @vitejs/app vue3-cypress --template vue

使用 Vite 直接建立 Vue。

Install Cypress

$ yarn add --dev cypress

使用 Yarn 安裝 Cypress。

Test Runner

$ yarn run cypress open

以 CLI 第一次執行 Cypress。

第一次執行 test runner 將在根目錄建立 cypress 目錄以及其他子目錄

Integration Test

cypress/integration/hello.spec.js

describe('Hello', () => {
  it('Welcome', () => {
    cy.visit('/')
    cy.get('#app h1').contains('Hello Vue 3 + Vite')
  })
})

建立 hello.spec.js 測試 Vue 專案預設頁面。

Cypress Config

cypress.json

{
  "baseUrl": "http://localhost:3000"
}

在根目錄下的 cypress.json 設定 baseUrl 變數。

NPM Script

package.json

{
  "scripts": {
    "test:gui": "cypress open",
    "test:cli": "cypress run --spec 'cypress/integration/*'"
  },
}
  • test:gui:以 GUI 的 test runner 執行 Cypress
  • test:cli:以 CLI 的 headless 執行 Cypress

Dev Server

$ yarn dev

啟動 Dev Server。

vue002

Test Runner

vue000

以 GUI 的 test runner 執行 Cypress。

Headless

vue001

以 CLI 的 headless 執行 Cypress。

Conclusion

  • Cypress 基於 Node 生態系,只要使用 Yarn 安裝 Cypress,就能無縫接軌測試 Vue
  • Cypress 無法單獨執行,必須同時啟動 Dev Server