SAP Spartacus Definition of Done
SAP Spartacus Definition of Done
Coding guidelines
Spartacus 團(tuán)隊(duì)采用了以下一組規(guī)則來保持 Spartacus 代碼的可讀性和可維護(hù)性。 作為貢獻(xiàn)者,我們要求您遵守這些規(guī)則(即使您發(fā)現(xiàn)它們?cè)谀程幈贿`反)。 當(dāng)文件始終不遵循這些規(guī)則,并且遵守這些規(guī)則會(huì)使代碼變得更糟時(shí),請(qǐng)遵循本地風(fēng)格。
TL;DR
您可以運(yùn)行位于項(xiàng)目根目錄的 build.sh 腳本。 它將運(yùn)行下面提到的大部分檢查或規(guī)則,例如 linting 和 prettier 檢查、運(yùn)行單元測試和端到端測試等。
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 來格式化我們的代碼(并使其更漂亮)。
要檢查是否所有文件都經(jīng)過美化,請(qǐng)運(yùn)行以下命令:
yarn prettier
要格式化和美化您的代碼庫,請(qǐng)運(yùn)行以下命令:
yarn prettier:fix
我們還鼓勵(lì)使用 Prettier VS Code 插件。 有關(guān)更多信息,請(qǐng)參閱 Spartacus 的開發(fā)工具。
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 代碼需要單元測試。 確保新功能或錯(cuò)誤具有單元測試,并確保它們通過。
運(yùn)行以下命令以運(yùn)行庫的單元測試:
yarn test [project]
yarn test storefrontlib
當(dāng)您運(yùn)行測試時(shí),Chrome 會(huì)打開,您可以看到測試的進(jìn)度以及詳細(xì)信息,包括測試是否通過。
單元測試代碼覆蓋率
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 編寫的端到端測試。 請(qǐng)確保新功能具有端到端測試,并且它們正在通過。
在適用的情況下,編寫端到端測試以確保您的新功能或更新功能萬無一失。如果編寫端到端測試有意義,那么最低要求是編寫基本的 UI 端到端測試。您還可以考慮使用用戶流編寫 UI 端到端測試,但這是可選的。
必須審查、更新或重用所有新編寫的端到端測試。 他們還應(yīng)該遵循端到端測試指南。
運(yùn)行以下命令以執(zhí)行端到端測試:
-
yarn e2e:cy:run # smoke tests
-
yarn e2e:cy:run:mobile # mobile tests
-
yarn e2e:cy:run:regression # regression tests
注意:在運(yùn)行端到端測試之前,請(qǐng)確保在 projects/storefrontapp-e2e-cypress 中安裝依賴項(xiàng),并確保應(yīng)用程序正在運(yùn)行。
端到端測試的目標(biāo)是確保您的功能正常工作。 例如,如果您要實(shí)現(xiàn)一個(gè)帶有兩個(gè)按鈕(例如登錄和取消按鈕)的簡單登錄屏幕,您可以編寫以下測試:
-
使用有效憑據(jù)登錄
-
嘗試使用無效憑據(jù)登錄
-
填寫輸入字段,然后單擊取消按鈕。
注意:E2E 測試目前只能在 SAP 內(nèi)運(yùn)行。 我們正在努力向貢獻(xiàn)者公開 E2E 測試。
瀏覽器兼容性
要使新功能滿足完成的定義,至少,必須成功對(duì)新功能進(jìn)行手動(dòng)、快樂路徑測試,并且在以下瀏覽器的最新主要版本中沒有明顯的布局問題:
-
Chrome
-
Firefox
-
Safari
-
Edge
The Library Builds Without Errors
Run the following command to ensure the libraries build without errors:
yarn build:libs
Shell 啟動(dòng)時(shí)沒有錯(cuò)誤
運(yùn)行以下命令以確保 shell 店面應(yīng)用程序啟動(dòng)時(shí)沒有錯(cuò)誤:
yarn start
運(yùn)行命令后,您應(yīng)該看到以下內(nèi)容:
-
webpack終端輸出沒有錯(cuò)誤
-
顯示主頁時(shí),Chrome 中的 JS 控制臺(tái)沒有錯(cuò)誤。
Shell App 中的新功能 Happy Path
運(yùn)行該功能的冒煙測試,部署在 shell 應(yīng)用程序的庫中。
然后確定新功能是否需要在 shell 應(yīng)用程序或配置文件中進(jìn)行更改。
一些文件和概念存在于 shell 應(yīng)用程序本身中。 問問自己新代碼是否需要更新 shell 應(yīng)用程序或配置文件。
以下更改可能是候選對(duì)象:
-
添加或更改 route
-
添加或更改模塊(更改路徑或名稱)
-
添加組件
-
添加模塊
-
改變配置機(jī)制的工作方式。
驗(yàn)證生產(chǎn)構(gòu)建工作
運(yùn)行以下命令以驗(yàn)證生產(chǎn)構(gòu)建是否有效,尤其是提前 (AOT) 編譯器:
yarn build:libs
yarn start
以下是生產(chǎn)構(gòu)建可能失敗的一些原因:
- 由于 AOT,我們必須顯式指定一些類型,例如函數(shù)返回類型。盡管 TypeScript 不需要它們,但它可以推斷它們。
使用 index.ts 文件(即桶文件)時(shí)要小心。運(yùn)行生產(chǎn)構(gòu)建時(shí),您可能會(huì)在 node/webpack 控制臺(tái)中看到以下錯(cuò)誤:
ERROR in : Encountered undefined provider! Usually this means you have a circular dependencies (might be caused by using ‘barrel’ index.ts files.
這通常是由導(dǎo)入語句引起的,例如:
import * as fromServices from ‘…/…/services’。
相反,您應(yīng)該專門導(dǎo)入每個(gè)類,如以下示例所示:
import { OccCmsService } from "../../services/occ-cms.service";import { DefaultPageService } from "../../services/default-page.service";總結(jié)
以上是生活随笔為你收集整理的SAP Spartacus Definition of Done的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三相电空调坏处
- 下一篇: TypeScript class 的静态