仅在e2e测试中将静态html文件包含在Angular CLI应用程序中

时间:2019-06-24 14:58:01

标签: angular jasmine protractor angular-cli

我希望有一个仅在Angular CLI应用程序中运行e2e测试时才构建并提供的静态(非Angular)html文件。在生产应用程序中,该静态文件不可用。

我正在尝试以最小的复制使它起作用,但是看不到我该怎么做。我首先创建一个具有所有默认设置的ng new(Angular CLI 7.3.9)应用程序。然后,我这样做了:

  1. 在我的"src/production-static-page.html",文件中的"assets"主条目下的angular.json中添加projects
  2. 仅以<p id="foo">bar</p>作为内容创建了该文件。
  3. 对此进行了扩展的e2e支架测试:

    it('can navigate to e2e-only html', () => {
      browser.waitForAngularEnabled(false);
      browser.get('/e2e-only-static-page.html');
      const text = element(by.css('#foo')).getText();
      expect(text).toEqual('bar');
      browser.waitForAngularEnabled(true);
    });
    

那是可行的,因为该html文件只是普通的生产文件,因此当我将应用程序部署到生产中时也可以使用该文件。

我看不到应该如何在"foo-bar-e2e"文件中配置angular.json项目的方式,以便仅将另一个html文件(例如e2e-only-static-page.html)用于e2e测试?

1 个答案:

答案 0 :(得分:0)

我找到了办法。那里seems to be no reuse of configs in angular.json不太方便,但是可以。

进入angular.json的步骤:

  1. 复制"build"部分,将其命名为"build-e2e"
  2. 在该版本中包含仅e2e资产
  3. 复制"serve"部分,将其命名为"serve-e2e"
  4. 重新配置该部分以使用"browserTarget": "my-project:build-e2e"
  5. "my-project-e2e"> "architect"> "e2e"> "configurations"> "production"> "devServerTarget"更改为"my-project:serve-e2e:production"(元素在步骤3和4中创建。
  6. "my-project-e2e"> "architect"> "e2e"> "options"> "devServerTarget"更改为"my-project:serve-e2e"(在步骤3和4中创建的元素。

完成!现在ng e2e可以访问该html文件,而ng serve和生产版本则不能。