黄瓜文档是开源的,任何人都可以贡献。事实上,我们非常感谢您的帮助!

每个页面都提供一个链接来编辑该页面的内容。您也可以在 Github 上的 docs.cucumber.io 项目 中进行更改。

流程

首次贡献者需要发送一个拉取请求。

一旦您的第一个拉取请求被接受,您将被提升为提交者,并获得对 GitHub 存储库的写入权限。作为提交者,您仍应使用拉取请求。

每个拉取请求都应仅修改/添加一个主题。请不要将许多不相关的文档更改合并到同一个拉取请求中。如果您想修改或添加多个主题,请每个主题打开一个拉取请求。

标题应说明您正在修改/创建哪些文档以及原因。例如 [docs] Add tags.md[docs] Modify tags.md to explain boolean expressions

更通用的贡献流程在 黄瓜社区贡献指南 中描述。

讨论文档

获得有关您的写作的反馈非常棒。从小的更改开始,然后等待其他贡献者对拉取请求的反馈。

您可以加入 黄瓜 Discord 进行讨论或提出问题。

贡献内容

开始贡献的一个好方法是回答 黄瓜 DiscordGitHub 讨论板 上的问题。您可以将答案添加到文档中,如果目前缺失。

您还可以将问题添加到 常见问题解答页面 中,并提供指向文档相关部分的链接。

另一个选择是查找在 Github 上的 docs.cucumber.io 项目 中标记为 Good first issue 和/或 Help wanted 的问题。如果您对这些问题有任何疑问,可以在问题本身添加评论或在 Discord 上与我们联系。

一般写作风格

一般来说,文档应该简洁明了。

完美并非在于无所增减,而在于无可删减 - 安托万·德·圣-埃克苏佩里

一些指南

  • 每个页面都应以一段信息/激励性文字开头
  • 段落应足够短以易于阅读,但又足够长以展开一个想法
  • 每个页面都应以一个 h1 标题开头。章节使用 h2;小节使用 h3
  • 换行。在大约第 80 列插入一个新行。这很重要,因为审查评论只能添加到一行中。
  • 使用现在时态
  • 使用中性语言,但尝试使其有点娱乐性(这很难!)
  • 尽可能以平台中立的方式编写。黄瓜在多种语言中实现,文档不应假设特定的平台
  • 对于所有代码示例(Gherkin 除外)以及与一种或多种特定语言相关的段落,使用 代码块
  • 对于仅与一种或多种特定语言相关的文本,使用 语言块
  • 根据需要标记 多语言页面
  • 所有文档都应使用 英式英语。用 美式英语 贡献是可以的 - 编辑人员将进行翻译。
  • 谨慎使用指向外部网站的链接
  • 不要使用受版权保护的材料(图像、文本或其他)
  • 插图很棒,但请使用低保真度图纸;黄瓜的设计团队将根据黄瓜的 品牌指南 重新创建插图
  • 尝试使您的贡献与当前文档保持一致。例如
    • 使用一致的措辞和格式
    • 在关键词周围使用反引号;在这种情况下,关键词可以用大写字母编写,例如 Step Definition
    • 在句子中引用概念时使用小写字母:例如“step definition”而不是“Step Definition”

教程写作风格

  • 假设读者对主题知之甚少或一无所知
  • 使用对话式风格
  • 确保教程中的每个步骤都清晰描述
  • 如果需要,描述每个步骤的结果应是什么

工具链

文档是用 Markdown 编写的。

文档存储在 Github 上的 docs.cucumber.io 项目 中。

菜单结构

页面显示在它们自己的部分中;这是文件所在的目录。默认情况下,一个部分中的页面按字母顺序排列,但可以通过指定 weight 来覆盖此顺序。

页面结构

  • YAML 前置 matter(包含标题和摘要)
    • 包含代码或特定于语言的文本的页面应标记为 多语言页面
    • 指定 weight 以给出它们在菜单中的(相对)顺序(参见 #menu-structure)
  • 介绍性段落
  • 段落

来自 YAML 前置 matter 的页面标题将渲染为页面顶部的 <h1> 标题。以段落开头,而不是以标题开头。如果您以标题开头,则页面的顶部将有一个 h1,紧随其后是另一个标题,这看起来不好。

多语言页面

页面可以包含相同内容的不同变体,这些变体有条件地显示特定编程语言的文本或源代码。

如果页面在 front-matter 中指定了以下内容,则将显示一个语言选择。

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

目前支持以下语言

  • Java
  • JavaScript
  • Ruby
  • Kotlin(可选)
  • Scala(可选)
  • .Net(可选;仅限某些页面)

  • 我们尽可能希望有 Java、JavaScript 和 Ruby 的信息。

    • 如果您只熟悉一种编程语言,请为该语言添加一个示例;其他人将为其他语言填补空白!
    • 您可以在 Discord 上的该语言的帮助频道中或在您的 GitHub 拉取请求/问题中寻求有关其他语言的帮助

特定于语言的源代码和段落

在段落和围栏代码块周围包裹 {{% 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

您可以帮助我们改进本文档。 编辑此页面