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的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 三相电空调坏处
 - 下一篇: TypeScript class 的静态