Cypress で npm のライブラリを使いたい場合にはプラグイン側にロジックを書いて cy.task で呼び出して使う

結論

ドキュメントに書いてあるとおりです。

docs.cypress.io

The code you write in Cypress is executed in the browser, so you can import or require JS modules, but only those that work in a browser.

具体例

具体例についてもドキュメントに書いてあります。fs を用いる例です。

docs.cypress.io

// in plugins/index.js
const fs = require('fs')

module.exports = (on, config) => {
  on('task', {
    readFileMaybe(filename) {
      if (fs.existsSync(filename)) {
        return fs.readFileSync(filename, 'utf8')
      }

      return null
    },
  })
}

cypress.json の中の pluginsFile で指定したファイルに記述します。

上記の記述をした上で、テスト中で以下のように呼び出すように買いてあります。

// in test
cy.task('readFileMaybe', 'my-file.txt').then((textOrNull) => { ... })

感想

Cypress、かゆいところにも手が届きます。

Powered by はてなブログ