【问题标题】:Serve SPA before running tests on cypress js在 cypress js 上运行测试之前提供 SPA
【发布时间】:2018-06-06 02:09:43
【问题描述】:

使用 Cypress,我可以轻松测试我的开发子域。我有一个 angular/react 应用程序,当我创建 dist(包括 index.html)时,我想对构建的文件运行 Cypress 测试。

不幸的是,在开始赛普拉斯测试之前,我不知道如何提供 dist 文件夹(例如 servenpm 包)。

我知道我可以在另一个终端选项卡上提供 index.html,但这不会在 CircleCi(我的 CI)上发生。

赛普拉斯是否可以在开始实际测试之前替换本地主机并提供​​静态文件?

【问题讨论】:

    标签: npm circleci cypress


    【解决方案1】:

    我使用browser-sync 启动了一个分发我的静态文件的服务器。

    你需要安装3个包:cypress(很明显),browser-sync启动服务器,npm-run-all连续启动服务器和cypress。

    npm install --save-dev cypress
    npm install --save-dev browser-sync
    npm install --save-dev npm-run-all
    

    这是一个 npm 脚本配置示例,您需要将其添加到您的 package.json 中。不要忘记自定义包含 SPA 路径的 <port>(例如:4000)和 <folder>(例如:public)。

    {
      "scripts": {
        "cypress": "cypress run",
        "server": "browser-sync start --port <port> --server <folder> --no-open",
        "test": "run-p -r server cypress"
      }
    }
    

    现在你必须编写你的第一个Hello world 测试:

    describe('My App', function() {
        it('is up', function() {
            cy.visit('http://localhost:4000');
    
            cy.contains('Hello world!');
        });
    });
    

    就是这样!我们可以启动我们的测试:

    npm test
    

    【讨论】:

    【解决方案2】:

    我做了以下事情:

    我安装了

    npm i serve
    

    并添加

    serve: "serve -s <build-folder>"
    

    致我的package.json。然后在你的例如travis.yml 你添加

    - npm run serve & 
    - npm test
    

    命令末尾的&amp; 将使它在后端运行,因此测试可以在它之后运行。由于serve 提供静态文件的速度非常快,因此npm test 也无需等待,而且您不必担心事后停止npm run serve,因为大多数 CI 环境会在您的测试后自动清理后台进程完成了。

    上面的大部分信息也可以在here找到。

    【讨论】:

    • 如果同一端口同时在 2 个 jenkins pr 上运行相同的 repo,即 2 个单独的 PR,这会导致问题吗?
    猜你喜欢
    • 2021-11-15
    • 2023-01-12
    • 2018-07-27
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 2017-09-25
    相关资源
    最近更新 更多