PureScript 语言 端到端测试 E2E Testing 集成 Cypress/Playwright 前端 + 后端流程

PureScript阿木 发布于 1 天前 2 次阅读


Cypress/Playwright 集成 PureScript 端到端测试(E2E Testing)

随着前端技术的不断发展,前端测试变得越来越重要。端到端测试(End-to-End Testing,简称E2E测试)是确保应用程序在用户环境中正常工作的一种测试方法。本文将探讨如何使用 Cypress 和 Playwright 集成 PureScript 语言进行端到端测试。

PureScript 是一种函数式编程语言,它基于 Haskell,旨在提高代码的可读性和可维护性。Cypress 和 Playwright 是两种流行的端到端测试框架,它们可以与多种前端技术集成。本文将介绍如何将 Cypress 和 Playwright 集成到 PureScript 项目中,以实现端到端测试。

环境搭建

在开始之前,我们需要搭建一个支持 PureScript、Cypress 和 Playwright 的开发环境。

安装 Node.js 和 npm

确保你的计算机上安装了 Node.js 和 npm。你可以从 [Node.js 官网](https://nodejs.org/) 下载并安装。

创建 PureScript 项目

使用 `purescript-create` 工具创建一个新的 PureScript 项目:

bash
npx purescript-create my-purescript-app
cd my-purescript-app

安装 Cypress 和 Playwright

在你的 PureScript 项目目录中,安装 Cypress 和 Playwright:

bash
npm install cypress playwright cypress-playwright

配置 Cypress

创建一个 `cypress.config.js` 文件,配置 Cypress:

javascript
const { defineConfig } = require('cypress');

module.exports = defineConfig({
fixturesFolder: 'src/fixtures',
screenshotsFolder: 'src/screenshots',
videosFolder: 'src/videos',
viewportWidth: 1280,
viewportHeight: 720,
// 其他配置...
});

配置 Playwright

创建一个 `playwright.config.js` 文件,配置 Playwright:

javascript
const { defineConfig } = require('@playwright/test');

module.exports = defineConfig({
testDir: 'src/e2e',
outputDir: 'src/e2e/results',
timeout: 30 1000,
// 其他配置...
});

编写端到端测试

使用 Cypress 编写测试

在 `src/e2e` 目录下,创建一个测试文件 `example_spec.purs`:

```purescript
module E2ETest where

import Test (Spec, describe, it, expect)
import Effect (Effect)
import Effect.Aff (Aff)
import Effect.Class (liftEffect)
import Node.Process (argv)
import Node.FS (readTextFile)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node.Path (FilePath)
import Node