ercos / cakephp-cypress

cypress控制器集成,用于处理身份验证和数据库数据

安装: 384

依赖项: 0

建议者: 0

安全: 0

类型:cakephp-plugin

v1.0.2 2023-05-09 06:48 UTC

This package is auto-updated.

Last update: 2024-09-09 09:28:40 UTC


README

此包允许您在CakePHP项目中使用工厂和固定值运行Cypress测试,并受Laravel Cypress包的启发。

要求

API设置

  1. 安装包:composer require ercos/cakephp-cypress
  2. src/Application.php文件中加载插件:bin/cake plugin load Ercos/CakephpCypress
  3. 将数据库结构(所有表 + phinxlog结构 + 数据)提取为SQL文件。
  4. 将SQL文件添加到您的项目中,例如在/dump/my-database.sql中。
  5. config/.env复制到config/.env.cypress重要:请确保在DB_DATABASE(默认)和DB_TEST_DATABASE(测试)环境变量中设置测试数据库。
  6. config/.env.cypress文件中添加SQL文件的路径,如下所示:export SQL_DUMP_FOLDER="/dump/my-database.sql"

  7. 在您的.htaccess文件中添加以下代码

RewriteEngine On
SetEnvIf x-cypress-header true cypress
...

这将允许插件检测请求是否来自Cypress,并自动切换到测试数据库(根据.env.cypress

  1. 在您的config/bootstrap.php文件中,添加逻辑以在请求来自Cypress时加载.env.cypress文件。您应该在config/bootstrap.php文件中的导入之后找到要更新的代码部分。
if (!env('APP_NAME')) {
    $dotenv = '';
    if (env('cypress') && file_exists(CONFIG . '.env.cypress')) {
        $dotenv = new Loader([CONFIG . '.env.cypress']);
    } elseif (file_exists(CONFIG . '.env')) {
        $dotenv = new Loader([CONFIG . '.env']);
    }
    if ($dotenv instanceof Loader) {
        $dotenv->parse()
        ->toEnv();
    }
}
  1. 在您的src/Application.php中,在bootstrap()函数中添加以下代码
if (env('cypress')) {
    require TESTS . 'bootstrap.php';
}
  1. 在您的tests/bootstrap.php文件中,当Cypress运行时不要导入bootstrap.php文件,如下所示
if (!env('cypress', false)) {
    require dirname(__DIR__) . '/config/bootstrap.php';
}
  1. 在您的tests/bootstrap.php文件中,添加以下代码以修复会话的使用。
    由于php7.2+不允许在stdout写入后设置sessionid,因此请尽早固定sessionid。
    if (!env('cypress', false)) {
    session_id('cli');
    }
    

前端设置

  1. npm install cypress --save-dev
  2. front-end文件夹的内容复制到前端项目的根目录。
  3. 更新Cypress配置(根据您的Cypress版本,请使用cypress.jsoncypress.config.ts文件作为示例)
  4. 将固定值添加到tests/cypress/support/commands.js中,以启用数据库刷新命令
body: {
    fixtures: [
        "app.Users",
        ...
    ]
},

可用命令

  • refreshDatabase:在Cypress before钩子中调用。此命令删除所有表,执行SQL文件以创建新的数据库,并最后运行迁移。您可以不时更新该文件以加快测试设置时间。
  • create:使用工厂在数据库中创建记录。例如,cy.create('Users', { username: 'John' })将创建用户名为"John"的用户。
  • login:登录用户。您需要完成tests/cypress/support/commands.js中的login函数,使其与您的前端项目一起工作。

用法

  1. tests/cypress/integration文件夹中创建测试
  2. 运行npx cypress open