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