1. 程式人生 > 其它 >SAP Spartacus Definition of Done

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