在对cypress js进行测试之前提供SPA服务

时间:2017-12-24 04:51:13

标签: npm circleci cypress

使用赛普拉斯,我可以轻松测试我的dev子域名。我有一个角度/反应应用程序,当我创建dist(包括index.html)时,我想对构建的文件运行赛普拉斯测试。

很遗憾,在开始赛普拉斯测试之前,我不知道如何提供dist文件夹(如serve npm包)。

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

在开始实际测试之前,赛普拉斯是否可以替换localhost并提供静态文件?

2 个答案:

答案 0 :(得分: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

以下是您需要在package.json中添加的npm脚本配置示例。不要忘记自定义包含SPA路径的<port>(例如:4000)和<folder>(例如:公开)。

{
  "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

答案 1 :(得分:0)

我做了以下事情:

我安装了

npm i serve

并添加了

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

到我的package.json。然后在你的travis.yml你添加

- npm run serve & 
- npm test

命令末尾的&将使其在后端运行,因此测试可以在其后运行。由于serve非常快速地为静态文件提供服务,因此npm test无需等待任何AND,因此大多数CI环境正在清理后您不必担心会停止npm run serve测试完成后自动进行后台处理。

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