SAP Spartacus Definition of Done Coding guidelinesSpartacus 團(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)行單元測試和端到端測試等。 LintingLinting 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] 當(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 Alternatively, you can run the following commands: yarn test [project] --code-coverage The coverage report can be found in ./coverage/index.html. 端到端測試Spartacus 中的所有新功能都需要使用 Cypress 編寫的端到端測試。 請(qǐng)確保新功能具有端到端測試,并且它們正在通過。 在適用的情況下,編寫端到端測試以確保您的新功能或更新功能萬無一失。如果編寫端到端測試有意義,那么最低要求是編寫基本的 UI 端到端測試。您還可以考慮使用用戶流編寫 UI 端到端測試,但這是可選的。 必須審查、更新或重用所有新編寫的端到端測試。 他們還應(yīng)該遵循端到端測試指南。 運(yùn)行以下命令以執(zhí)行端到端測試:
注意:在運(yùn)行端到端測試之前,請(qǐng)確保在 projects/storefrontapp-e2e-cypress 中安裝依賴項(xiàng),并確保應(yīng)用程序正在運(yùn)行。 端到端測試的目標(biāo)是確保您的功能正常工作。 例如,如果您要實(shí)現(xiàn)一個(gè)帶有兩個(gè)按鈕(例如登錄和取消按鈕)的簡單登錄屏幕,您可以編寫以下測試:
注意:E2E 測試目前只能在 SAP 內(nèi)運(yùn)行。 我們正在努力向貢獻(xiàn)者公開 E2E 測試。 瀏覽器兼容性要使新功能滿足完成的定義,至少,必須成功對(duì)新功能進(jìn)行手動(dòng)、快樂路徑測試,并且在以下瀏覽器的最新主要版本中沒有明顯的布局問題:
The Library Builds Without ErrorsRun 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)容:
Shell App 中的新功能 Happy Path運(yùn)行該功能的冒煙測試,部署在 shell 應(yīng)用程序的庫中。 然后確定新功能是否需要在 shell 應(yīng)用程序或配置文件中進(jìn)行更改。 一些文件和概念存在于 shell 應(yīng)用程序本身中。 問問自己新代碼是否需要更新 shell 應(yīng)用程序或配置文件。 以下更改可能是候選對(duì)象:
驗(yàn)證生產(chǎn)構(gòu)建工作運(yùn)行以下命令以驗(yàn)證生產(chǎn)構(gòu)建是否有效,尤其是提前 (AOT) 編譯器: yarn build:libs 以下是生產(chǎn)構(gòu)建可能失敗的一些原因:
使用 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"; |
|