Cucumber 文件是開放原始碼的,歡迎任何人貢獻。事實上,我們非常感謝您的幫助!

每個頁面都提供一個連結來編輯該頁面的內容。您也可以在 Github 上的 docs.cucumber.io 專案中進行變更。

流程

首次貢獻者必須發送 Pull Request。

一旦您的第一個 Pull Request 被接受,您將被提升為提交者,並獲得對 GitHub 儲存庫的寫入權限。身為提交者,您仍然應該使用 Pull Request。

每個 Pull Request 應該只修改/新增一個主題。請勿將許多不相關的文件變更合併到同一個 Pull Request 中。如果您想要修改或新增多個主題,請為每個主題開啟一個 Pull Request。

標題應說明您正在修改/建立哪些文件以及原因。例如 [docs] 新增 tags.md[docs] 修改 tags.md 以說明布林運算式

更一般的貢獻流程在Cucumber 社群貢獻指南中說明。

討論文件

獲得您寫作的回饋意見是很好的。先從小變更開始,然後等待其他貢獻者在 Pull Request 上提供回饋意見。

您可以加入 Cucumber Discord 來討論或提出問題。

貢獻內容

開始貢獻的一個好方法是回答 Cucumber DiscordGitHub 討論區上的問題。如果文件中目前缺少答案,您可以將問題的答案新增至文件中。

您也可以將問題新增至常見問題頁面,並連結到文件中相關的部分。

另一個選項是尋找在 GitHub 上的 docs.cucumber.io 專案中標記為 Good first issue 和/或 Help wanted 的問題。如果您對這些問題有任何疑問,您可以在問題本身新增評論,或在 Discord 上聯絡我們。

一般寫作風格

一般而言,文件應該簡潔扼要。

當沒有什麼可以再刪除時,而不是當沒有什麼可以再新增時,才達到完美 - Antoine de Saint Exupéry

一些指南

  • 每個頁面都應該以資訊/動機段落開始
  • 段落應該簡短到足以閱讀,但長到足以發展一個想法
  • 每個頁面都應該以 h1 標題開始。章節使用 h2;子章節使用 h3
  • 斷開長行。在大約第 80 列插入新行。這很重要,因為只能將評論新增到一行。
  • 以現在時態寫作
  • 使用中性語言,但盡量使其有點有趣(這很難!)
  • 盡可能以平台中立的方式寫作。Cucumber 是以多種語言實作的,文件不應假設特定的平台
  • 對所有程式碼範例(Gherkin 除外)以及與一種或多種特定語言相關的段落使用程式碼區塊
  • 對僅與一種或多種特定語言相關的文字使用語言區塊
  • 根據需要標記多語頁面
  • 所有文件都應使用英國英語。以美式英語的貢獻是可以的 - 編輯者會進行翻譯。
  • 謹慎使用外部網站的連結
  • 請勿使用受著作權保護的材料(圖像、文字或其他)
  • 插圖很棒,但請使用低保真繪圖;Cucumber 的設計團隊會根據 Cucumber 的品牌指南重新建立插圖
  • 盡量讓您的貢獻與目前的文件保持一致。例如
    • 使用一致的措辭和格式
    • 在關鍵字周圍使用反引號;在這種情況下,關鍵字可以使用大寫字母書寫,例如 Step Definition
    • 在句子中引用概念時使用小寫字母:例如,「step definition」而不是「Step Definition」

教學寫作風格

  • 假設讀者對該主題知之甚少或一無所知
  • 使用對話式的風格
  • 確保教學中的每個步驟都清楚地說明
  • 如果需要,請描述每個步驟的結果應該是什麼

工具鏈

文件以 Markdown 撰寫。

文件儲存在 Github 上的 docs.cucumber.io 專案中。

選單結構

頁面會顯示在自己的區段中;這是檔案所在的目錄。預設情況下,區段中的頁面會依字母順序排列,但可以透過指定 weight 來覆寫。

頁面結構

  • YAML 前言(帶有標題和摘要)
    • 包含程式碼或特定語言文字的頁面應標記為多語頁面
    • 指定 weight 以給予它們在選單中的(相對)順序(請參閱 #menu-structure)
  • 簡介段落
  • 段落

YAML 前言中頁面的標題會以 <h1> 標題在頁面頂部呈現。以段落開始內文,而不是標題。如果您以標題開始,頁面頂部將會緊接著另一個標題的 h1,這樣看起來不太好。

多語頁面

頁面可以包含相同內容的變體,這些變體會根據特定的程式設計語言有條件地顯示文字或原始碼。

如果頁面在 front-matter 中指定以下內容,則會顯示語言選擇

 polyglot:
 - java
 - javascript
 - ruby
 - kotlin
 - scala
 - dotnet

目前支援以下語言

  • Java
  • JavaScript
  • Ruby
  • Kotlin(選用)
  • Scala(選用)
  • .Net(選用;僅限部分頁面)

  • 我們盡可能偏好提供 Java、JavaScript 和 Ruby 的資訊。

    • 如果您只熟悉一種程式設計語言,請新增該語言的範例;其他人會填補其他語言的空白!
    • 您可以向 Discord 上該語言的說明頻道或在您的 GitHub Pull Request/問題中請求其他語言的說明

特定語言的原始碼和段落

在段落和已加上圍籬的程式碼區塊周圍加上 {{% block %}} 簡碼

{{% block "ruby" %}}
Put this in your `hello.rb`:

```ruby
puts "hello"
```
{{% /block %}}

{{% block "javascript" %}}
Put this in your `hello.js`:

```javascript
console.log("hello")
```
{{% /block %}}

{{% block "java" %}}
Put this in your `Hello.java`:
```java
System.out.println("hello")
```

{{%/* block "kotlin" %}}
Put this in your `Hello.kt`:
```kotlin
println("hello")
```
{{% /block %}}

{{% block "scala" %}}
Put this in your `Hello.scala`:
```scala
println("hello")
```
{{% /block %}}

請注意,您不能在語言區塊內部使用標題!如果您正在撰寫包含特定語言內容的頁面,也許它應該是一個單獨的頁面。或者,您可以針對每種語言使用一個標題。

特定語言的文字片段

在僅應針對特定程式設計語言顯示的文字片段周圍使用 {{% text %}} 簡碼

The preferred build tool is
{{% text "ruby" %}}Rake{{% /text %}}
{{% text "javascript" %}}Yarn{{% /text %}}
{{% text "java,kotlin,scala" %}}Maven{{% /text %}}.

適用於多種程式設計語言的段落或文字

請注意,您也可以對適用於多種語言的段落或文字使用簡碼,而無需為每種單獨的語言重複使用。若要這麼做,請列出以逗號 (,) 分隔的相關語言

{{% text "java,kotlin,scala" %}}Maven{{% /text %}}

其他簡碼

其他簡碼定義於 layouts/shortcodes 中。

方法與函式

為 stepdef 主體建立了一個特定的短代碼

{{% stepdef-body %}}

當使用此短代碼時,它將根據程式語言,在文字中被替換為 methodfunction 這兩個詞。

表達式參數

為表達式參數建立了一個特定的短代碼

{{% expression-parameter %}}

當使用此短代碼時,它將根據程式語言,在文字中被替換為 capture groupoutput parameter 這兩個詞。

在本機工作

有關如何在本地工作和建置專案的資訊,請參閱 README.md

您可以協助我們改進此文件。編輯此頁面