SAP Spartacus Definition of Done

Posted JerryWang_汪子熙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAP Spartacus Definition of Done相关的知识,希望对你有一定的参考价值。

SAP Spartacus Definition of Done)

Coding guidelines

Spartacus 团队采用了以下一组规则来保持 Spartacus 代码的可读性和可维护性。 作为贡献者,我们要求您遵守这些规则(即使您发现它们在某处被违反)。 当文件始终不遵循这些规则,并且遵守这些规则会使代码变得更糟时,请遵循本地风格。

TL;DR

您可以运行位于项目根目录的 build.sh 脚本。 它将运行下面提到的大部分检查或规则,例如 linting 和 prettier 检查、运行单元测试和端到端测试等。

Linting

Linting

We use TSLint to analyze and improve our typescript code.

You can run the following command to lint your code:

yarn lint

We also encourage you to use the TSLint plugin in VS Code.

Coding Format

我们使用 Prettier 来格式化我们的代码(并使其更漂亮)。

要检查是否所有文件都经过美化,请运行以下命令:

yarn prettier

要格式化和美化您的代码库,请运行以下命令:

yarn prettier:fix

我们还鼓励使用 Prettier VS Code 插件。 有关更多信息,请参阅 Spartacus 的开发工具。

SCSS is Preprocessed (node-sass)

We use Sass for all of our CSS, which then is converted to CSS using node-sass.

Use the following command to preprocess the Sass in projects/storefrontstyles

yarn sass

单元测试

Spartacus 代码需要单元测试。 确保新功能或错误具有单元测试,并确保它们通过。

运行以下命令以运行库的单元测试:

yarn test [project]

yarn test storefrontlib

当您运行测试时,Chrome 会打开,您可以看到测试的进度以及详细信息,包括测试是否通过。

单元测试代码覆盖率

Please ensure that unit test coverage is >= 80% for everything, and >=60% for branches.

To get the test coverage report, run the following commands:

yarn test [project] --code-coverage

yarn test storefrontlib --code-coverage

Alternatively, you can run the following commands:

yarn test [project] --code-coverage

yarn test:core:lib

The coverage report can be found in ./coverage/index.html.

端到端测试

Spartacus 中的所有新功能都需要使用 Cypress 编写的端到端测试。 请确保新功能具有端到端测试,并且它们正在通过。

在适用的情况下,编写端到端测试以确保您的新功能或更新功能万无一失。如果编写端到端测试有意义,那么最低要求是编写基本的 UI 端到端测试。您还可以考虑使用用户流编写 UI 端到端测试,但这是可选的。

必须审查、更新或重用所有新编写的端到端测试。 他们还应该遵循端到端测试指南。

运行以下命令以执行端到端测试:

  • yarn e2e:cy:run # smoke tests
  • yarn e2e:cy:run:mobile # mobile tests
  • yarn e2e:cy:run:regression # regression tests

注意:在运行端到端测试之前,请确保在 projects/storefrontapp-e2e-cypress 中安装依赖项,并确保应用程序正在运行。

端到端测试的目标是确保您的功能正常工作。 例如,如果您要实现一个带有两个按钮(例如登录和取消按钮)的简单登录屏幕,您可以编写以下测试:

  • 使用有效凭据登录
  • 尝试使用无效凭据登录
  • 填写输入字段,然后单击取消按钮。

注意:E2E 测试目前只能在 SAP 内运行。 我们正在努力向贡献者公开 E2E 测试。

浏览器兼容性

要使新功能满足完成的定义,至少,必须成功对新功能进行手动、快乐路径测试,并且在以下浏览器的最新主要版本中没有明显的布局问题:

  • Chrome
  • Firefox
  • Safari
  • Edge

The Library Builds Without Errors

Run the following command to ensure the libraries build without errors:

yarn build:libs

Shell 启动时没有错误

运行以下命令以确保 shell 店面应用程序启动时没有错误:

yarn start

运行命令后,您应该看到以下内容:

  • webpack终端输出没有错误
  • 显示主页时,Chrome 中的 JS 控制台没有错误。

Shell App 中的新功能 Happy Path

运行该功能的冒烟测试,部署在 shell 应用程序的库中。

然后确定新功能是否需要在 shell 应用程序或配置文件中进行更改。

一些文件和概念存在于 shell 应用程序本身中。 问问自己新代码是否需要更新 shell 应用程序或配置文件。

以下更改可能是候选对象:

  • 添加或更改 route
  • 添加或更改模块(更改路径或名称)
  • 添加组件
  • 添加模块
  • 改变配置机制的工作方式。

验证生产构建工作

运行以下命令以验证生产构建是否有效,尤其是提前 (AOT) 编译器:

yarn build:libs

yarn start

以下是生产构建可能失败的一些原因:

  • 由于 AOT,我们必须显式指定一些类型,例如函数返回类型。尽管 TypeScript 不需要它们,但它可以推断它们。

使用 index.ts 文件(即桶文件)时要小心。运行生产构建时,您可能会在 node/webpack 控制台中看到以下错误:

ERROR in : Encountered undefined provider! Usually this means you have a circular dependencies (might be caused by using \'barrel\' index.ts files.

这通常是由导入语句引起的,例如:

import * as fromServices from \'../../services\'。

相反,您应该专门导入每个类,如以下示例所示:


import { OccCmsService } from "../../services/occ-cms.service";

import { DefaultPageService } from "../../services/default-page.service";

以上是关于SAP Spartacus Definition of Done的主要内容,如果未能解决你的问题,请参考以下文章

SAP Spartacus 升级时关于 schematics 的更新

SAP Spartacus 表单个性化

SAP Spartacus 表单个性化

如何在 SAP Commerce Cloud Portal 构建和部署 SAP Spartacus Storefront

SAP Spartacus RouterModule.forRoot() called twice 的错误消息

SAP Spartacus Popover Directive 构造函数的用途分析