chutney 3.12.2 → 3.12.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/chutney.gemspec +3 -3
- data/lib/chutney/version.rb +1 -1
- data/spec/chutney_mcp_spec.rb +0 -0
- data/usechutney.com.site/.gitignore +2 -0
- data/usechutney.com.site/site/assets/favicons/android-chrome-192x192.png +0 -0
- data/usechutney.com.site/site/assets/favicons/android-chrome-512x512.png +0 -0
- data/usechutney.com.site/site/assets/favicons/apple-touch-icon.png +0 -0
- data/usechutney.com.site/site/assets/favicons/favicon-16x16.png +0 -0
- data/usechutney.com.site/site/assets/favicons/favicon-32x32.png +0 -0
- data/usechutney.com.site/site/assets/favicons/favicon.ico +0 -0
- data/usechutney.com.site/site/assets/favicons/site.webmanifest +19 -0
- data/usechutney.com.site/site/assets/styles.css +298 -0
- data/{usechutney.com/pages/about/index.md → usechutney.com.site/site/src/about.page.md} +1 -6
- data/{usechutney.com/docs/configuration/index.md → usechutney.com.site/site/src/docs/configuration.page.md} +2 -6
- data/{usechutney.com/docs/disabling-rules/index.md → usechutney.com.site/site/src/docs/disabling-rules.page.md} +2 -6
- data/usechutney.com.site/site/src/docs/index.page.md +17 -0
- data/{usechutney.com/docs/installing/index.md → usechutney.com.site/site/src/docs/installing.page.md} +2 -6
- data/{usechutney.com/docs/language-server/index.md → usechutney.com.site/site/src/docs/language-server.page.md} +3 -8
- data/{usechutney.com/docs/mcp/index.md → usechutney.com.site/site/src/docs/mcp.page.md} +3 -8
- data/{usechutney.com/docs/rules/avoid-colons-at-start-of-names/index.md → usechutney.com.site/site/src/docs/rules/avoid-colons-at-start-of-names.page.md} +2 -6
- data/{usechutney.com/docs/rules/avoid-comma-in-tags/index.md → usechutney.com.site/site/src/docs/rules/avoid-comma-in-tags.page.md} +2 -6
- data/{usechutney.com/docs/rules/avoid-full-stops/index.md → usechutney.com.site/site/src/docs/rules/avoid-full-stops.page.md} +2 -6
- data/{usechutney.com/docs/rules/avoid-outline-for-single-example/index.md → usechutney.com.site/site/src/docs/rules/avoid-outline-for-single-example.page.md} +2 -6
- data/{usechutney.com/docs/rules/avoid-scripting/index.md → usechutney.com.site/site/src/docs/rules/avoid-scripting.page.md} +2 -6
- data/{usechutney.com/docs/rules/avoid-splat-steps-in-background/index.md → usechutney.com.site/site/src/docs/rules/avoid-splat-steps-in-background.page.md} +2 -6
- data/{usechutney.com/docs/rules/avoid-splat-steps-in-scenarios/index.md → usechutney.com.site/site/src/docs/rules/avoid-splat-steps-in-scenarios.page.md} +2 -6
- data/{usechutney.com/docs/rules/avoid-typographers-quotes/index.md → usechutney.com.site/site/src/docs/rules/avoid-typographers-quotes.page.md} +2 -6
- data/{usechutney.com/docs/rules/background-does-more-than-setup/index.md → usechutney.com.site/site/src/docs/rules/background-does-more-than-setup.page.md} +2 -6
- data/{usechutney.com/docs/rules/background-requires-multiple-scenarios/index.md → usechutney.com.site/site/src/docs/rules/background-requires-multiple-scenarios.page.md} +2 -6
- data/{usechutney.com/docs/rules/bad-scenario-name/index.md → usechutney.com.site/site/src/docs/rules/bad-scenario-name.page.md} +2 -6
- data/usechutney.com.site/site/src/docs/rules/empty-feature-file.page.md +3 -0
- data/{usechutney.com/docs/rules/file-name-differs-feature-name/index.md → usechutney.com.site/site/src/docs/rules/file-name-differs-feature-name.page.md} +2 -6
- data/{usechutney.com/docs/rules/givens-after-background/index.md → usechutney.com.site/site/src/docs/rules/givens-after-background.page.md} +2 -6
- data/{usechutney.com/docs/rules/inconsistent-quoting/index.md → usechutney.com.site/site/src/docs/rules/inconsistent-quoting.page.md} +2 -6
- data/usechutney.com.site/site/src/docs/rules/index.page.md +43 -0
- data/{usechutney.com/docs/rules/invalid-step-flow/index.md → usechutney.com.site/site/src/docs/rules/invalid-step-flow.page.md} +2 -6
- data/{usechutney.com/docs/rules/invalid_file_name/index.md → usechutney.com.site/site/src/docs/rules/invalid_file_name.page.md} +2 -6
- data/{usechutney.com/docs/rules/missing-example-name/index.md → usechutney.com.site/site/src/docs/rules/missing-example-name.page.md} +2 -6
- data/{usechutney.com/docs/rules/missing-example-table/index.md → usechutney.com.site/site/src/docs/rules/missing-example-table.page.md} +2 -6
- data/{usechutney.com/docs/rules/missing-feature-description/index.md → usechutney.com.site/site/src/docs/rules/missing-feature-description.page.md} +2 -6
- data/{usechutney.com/docs/rules/missing-feature-name/index.md → usechutney.com.site/site/src/docs/rules/missing-feature-name.page.md} +2 -6
- data/{usechutney.com/docs/rules/missing-scenario-name/index.md → usechutney.com.site/site/src/docs/rules/missing-scenario-name.page.md} +2 -6
- data/{usechutney.com/docs/rules/missing-scenario-outline/index.md → usechutney.com.site/site/src/docs/rules/missing-scenario-outline.page.md} +2 -6
- data/{usechutney.com/docs/rules/missing-test-action/index.md → usechutney.com.site/site/src/docs/rules/missing-test-action.page.md} +2 -6
- data/{usechutney.com/docs/rules/missing-test-verification/index.md → usechutney.com.site/site/src/docs/rules/missing-test-verification.page.md} +2 -6
- data/{usechutney.com/docs/rules/required-tag-starts-with/index.md → usechutney.com.site/site/src/docs/rules/required-tag-starts-with.page.md} +2 -6
- data/{usechutney.com/docs/rules/same-scenario/index.md → usechutney.com.site/site/src/docs/rules/same-scenario.page.md} +2 -7
- data/{usechutney.com/docs/rules/same-tag-different-case/index.md → usechutney.com.site/site/src/docs/rules/same-tag-different-case.page.md} +2 -6
- data/{usechutney.com/docs/rules/same-tag-for-all-scenarios/index.md → usechutney.com.site/site/src/docs/rules/same-tag-for-all-scenarios.page.md} +2 -6
- data/{usechutney.com/docs/rules/scenario-names-match/index.md → usechutney.com.site/site/src/docs/rules/scenario-names-match.page.md} +2 -6
- data/{usechutney.com/docs/rules/tag-used-multiple-times/index.md → usechutney.com.site/site/src/docs/rules/tag-used-multiple-times.page.md} +2 -6
- data/{usechutney.com/docs/rules/too-clumsy/index.md → usechutney.com.site/site/src/docs/rules/too-clumsy.page.md} +2 -6
- data/{usechutney.com/docs/rules/too-long-step/index.md → usechutney.com.site/site/src/docs/rules/too-long-step.page.md} +2 -6
- data/{usechutney.com/docs/rules/too-many-different-tags/index.md → usechutney.com.site/site/src/docs/rules/too-many-different-tags.page.md} +2 -6
- data/{usechutney.com/docs/rules/too-many-steps/index.md → usechutney.com.site/site/src/docs/rules/too-many-steps.page.md} +2 -6
- data/{usechutney.com/docs/rules/too-many-tags/index.md → usechutney.com.site/site/src/docs/rules/too-many-tags.page.md} +2 -6
- data/{usechutney.com/docs/rules/unique-scenario-names/index.md → usechutney.com.site/site/src/docs/rules/unique-scenario-names.page.md} +2 -6
- data/{usechutney.com/docs/rules/unknown-variable/index.md → usechutney.com.site/site/src/docs/rules/unknown-variable.page.md} +2 -6
- data/{usechutney.com/docs/rules/unused-variable/index.md → usechutney.com.site/site/src/docs/rules/unused-variable.page.md} +2 -6
- data/{usechutney.com/docs/rules/use-background/index.md → usechutney.com.site/site/src/docs/rules/use-background.page.md} +2 -6
- data/{usechutney.com/docs/rules/use-outline/index.md → usechutney.com.site/site/src/docs/rules/use-outline.page.md} +2 -6
- data/{usechutney.com/docs/running/index.md → usechutney.com.site/site/src/docs/running.page.md} +2 -6
- data/{usechutney.com/pages/index.markdown → usechutney.com.site/site/src/index.page.md} +15 -24
- data/usechutney.com.site/site/templates/_nav.html.erb +6 -0
- data/usechutney.com.site/site/templates/layout.html.erb +35 -0
- data/usechutney.com.site/site/templates/page.html.erb +3 -0
- metadata +73 -66
- data/usechutney.com/.gitignore +0 -5
- data/usechutney.com/Gemfile +0 -37
- data/usechutney.com/_config.yml +0 -299
- data/usechutney.com/_data/navigation.yml +0 -120
- data/usechutney.com/_data/ui-text.yml +0 -2132
- data/usechutney.com/_posts/2024-09-23-welcome-to-jekyll.markdown +0 -28
- data/usechutney.com/assets/images/pug.png +0 -0
- data/usechutney.com/docs/rules/empty-feature-file/index.md +0 -7
- data/usechutney.com/pages/404.html +0 -25
- /data/{usechutney.com/assets/images → usechutney.com.site/site/assets}/mr_pickle.png +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 60a3a93f0607331e34bd1af294bd142a0922041f75a896fea010344b6a34e814
|
|
4
|
+
data.tar.gz: 7162f57716f199229576ab04d14ec73a526cc694435c88d356257423e6792e20
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fcd4b9f4c1016813b51318f4ac8485e49dcf908e433290dcf70c644bfecedbea6acf8a6763b56cac824af6b8737dd6c9f6bd25dcec8ec983b487894b3d775cfb
|
|
7
|
+
data.tar.gz: b472494d26b2e532259aed6962a492a466da78435df5a0a8e3bda15b7d04504c05f27320fc288a7ba0b586ea348f9860f578b9635d0a9131eae9b4d1e59c935a
|
data/chutney.gemspec
CHANGED
|
@@ -48,13 +48,13 @@ Gem::Specification.new do |spec|
|
|
|
48
48
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
49
49
|
spec.require_paths = ['lib']
|
|
50
50
|
|
|
51
|
-
spec.add_dependency 'amatch', '>= 0.4', '< 0.
|
|
52
|
-
spec.add_dependency 'cuke_modeler', '~> 3.
|
|
51
|
+
spec.add_dependency 'amatch', '>= 0.4', '< 0.7'
|
|
52
|
+
spec.add_dependency 'cuke_modeler', '~> 3.26'
|
|
53
53
|
spec.add_dependency 'i18n', '>= 1.8.2', '< 1.15.0'
|
|
54
54
|
spec.add_dependency 'fast-mcp', '~> 1.5'
|
|
55
55
|
spec.add_dependency 'language_server-protocol', '~> 3.17'
|
|
56
56
|
spec.add_dependency 'pastel', '~> 0.7'
|
|
57
57
|
spec.add_dependency 'tty-pie', '~> 0.3'
|
|
58
58
|
|
|
59
|
-
spec.required_ruby_version = '>= 3.
|
|
59
|
+
spec.required_ruby_version = '>= 3.4'
|
|
60
60
|
end
|
data/lib/chutney/version.rb
CHANGED
|
File without changes
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Chutney",
|
|
3
|
+
"short_name": "Chutney",
|
|
4
|
+
"icons": [
|
|
5
|
+
{
|
|
6
|
+
"src": "/favicons/android-chrome-192x192.png",
|
|
7
|
+
"sizes": "192x192",
|
|
8
|
+
"type": "image/png"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"src": "/favicons/android-chrome-512x512.png",
|
|
12
|
+
"sizes": "512x512",
|
|
13
|
+
"type": "image/png"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"theme_color": "#0d9488",
|
|
17
|
+
"background_color": "#ffffff",
|
|
18
|
+
"display": "standalone"
|
|
19
|
+
}
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--primary: #0d9488;
|
|
3
|
+
--primary-dark: #115e59;
|
|
4
|
+
--primary-light: #ccfbf1;
|
|
5
|
+
--accent: #f59e0b;
|
|
6
|
+
--text-main: #1e293b;
|
|
7
|
+
--text-muted: #64748b;
|
|
8
|
+
--bg-body: #ffffff;
|
|
9
|
+
--bg-subtle: #f8fafc;
|
|
10
|
+
--border: #e2e8f0;
|
|
11
|
+
|
|
12
|
+
--nav-height: 70px;
|
|
13
|
+
--container-width: 1000px;
|
|
14
|
+
|
|
15
|
+
--radius-sm: 6px;
|
|
16
|
+
--radius-md: 12px;
|
|
17
|
+
--radius-lg: 20px;
|
|
18
|
+
|
|
19
|
+
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
20
|
+
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
|
21
|
+
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
|
22
|
+
|
|
23
|
+
--font-sans: 'Inter', system-ui, -apple-system, sans-serif;
|
|
24
|
+
--font-mono: 'JetBrains Mono', monospace;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* Reset & Base */
|
|
28
|
+
*,
|
|
29
|
+
*::before,
|
|
30
|
+
*::after {
|
|
31
|
+
box-sizing: border-box;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
body {
|
|
35
|
+
margin: 0;
|
|
36
|
+
font-family: var(--font-sans);
|
|
37
|
+
color: var(--text-main);
|
|
38
|
+
background: var(--bg-body);
|
|
39
|
+
line-height: 1.7;
|
|
40
|
+
-webkit-font-smoothing: antialiased;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
img {
|
|
44
|
+
max-width: 100%;
|
|
45
|
+
height: auto;
|
|
46
|
+
border-radius: var(--radius-md);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* Layout */
|
|
50
|
+
.container {
|
|
51
|
+
max-width: var(--container-width);
|
|
52
|
+
margin: 0 auto;
|
|
53
|
+
padding: 0 24px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/* Header */
|
|
57
|
+
.site-header {
|
|
58
|
+
height: var(--nav-height);
|
|
59
|
+
position: sticky;
|
|
60
|
+
top: 0;
|
|
61
|
+
z-index: 100;
|
|
62
|
+
background: rgba(255, 255, 255, 0.8);
|
|
63
|
+
backdrop-filter: blur(12px);
|
|
64
|
+
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.site-header .container {
|
|
68
|
+
display: flex;
|
|
69
|
+
align-items: center;
|
|
70
|
+
justify-content: space-between;
|
|
71
|
+
height: 100%;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.site-title {
|
|
75
|
+
font-weight: 800;
|
|
76
|
+
font-size: 1.5rem;
|
|
77
|
+
background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
|
|
78
|
+
-webkit-background-clip: text;
|
|
79
|
+
-webkit-text-fill-color: transparent;
|
|
80
|
+
text-decoration: none;
|
|
81
|
+
letter-spacing: -0.02em;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* Nav */
|
|
85
|
+
nav a {
|
|
86
|
+
margin-left: 8px;
|
|
87
|
+
padding: 8px 16px;
|
|
88
|
+
color: var(--text-muted);
|
|
89
|
+
text-decoration: none;
|
|
90
|
+
font-weight: 600;
|
|
91
|
+
font-size: 0.95rem;
|
|
92
|
+
border-radius: 50px;
|
|
93
|
+
transition: all 0.2s ease;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
nav a:hover {
|
|
97
|
+
color: var(--primary);
|
|
98
|
+
background: var(--primary-light);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* Main Content */
|
|
102
|
+
main {
|
|
103
|
+
min-height: calc(100vh - var(--nav-height) - 100px);
|
|
104
|
+
padding: 60px 0;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/* Typography */
|
|
108
|
+
h1,
|
|
109
|
+
h2,
|
|
110
|
+
h3,
|
|
111
|
+
h4,
|
|
112
|
+
h5,
|
|
113
|
+
h6 {
|
|
114
|
+
color: var(--text-main);
|
|
115
|
+
margin-top: 2.5em;
|
|
116
|
+
margin-bottom: 0.8em;
|
|
117
|
+
line-height: 1.25;
|
|
118
|
+
letter-spacing: -0.02em;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
h1 {
|
|
122
|
+
font-size: 3rem;
|
|
123
|
+
font-weight: 800;
|
|
124
|
+
margin-top: 0.5em;
|
|
125
|
+
background: linear-gradient(to right, var(--text-main), var(--text-muted));
|
|
126
|
+
-webkit-background-clip: text;
|
|
127
|
+
-webkit-text-fill-color: transparent;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
h2 {
|
|
131
|
+
font-size: 2rem;
|
|
132
|
+
font-weight: 700;
|
|
133
|
+
border-bottom: 1px solid var(--border);
|
|
134
|
+
padding-bottom: 0.3em;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
h3 {
|
|
138
|
+
font-size: 1.5rem;
|
|
139
|
+
font-weight: 600;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
p {
|
|
143
|
+
margin-bottom: 1.5em;
|
|
144
|
+
color: #475569;
|
|
145
|
+
font-size: 1.05rem;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
a {
|
|
149
|
+
color: var(--primary);
|
|
150
|
+
text-decoration: none;
|
|
151
|
+
font-weight: 500;
|
|
152
|
+
transition: color 0.2s;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
a:hover {
|
|
156
|
+
color: var(--primary-dark);
|
|
157
|
+
text-decoration: underline;
|
|
158
|
+
text-decoration-thickness: 2px;
|
|
159
|
+
text-underline-offset: 2px;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/* Buttons */
|
|
163
|
+
.btn {
|
|
164
|
+
display: inline-flex;
|
|
165
|
+
align-items: center;
|
|
166
|
+
justify-content: center;
|
|
167
|
+
padding: 12px 24px;
|
|
168
|
+
border-radius: 50px;
|
|
169
|
+
font-weight: 600;
|
|
170
|
+
text-decoration: none !important;
|
|
171
|
+
transition: transform 0.2s, box-shadow 0.2s;
|
|
172
|
+
cursor: pointer;
|
|
173
|
+
border: none;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.btn:hover {
|
|
177
|
+
transform: translateY(-2px);
|
|
178
|
+
box-shadow: var(--shadow-md);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.btn-primary {
|
|
182
|
+
background: var(--primary);
|
|
183
|
+
color: white;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.btn-primary:hover {
|
|
187
|
+
background: var(--primary-dark);
|
|
188
|
+
color: white;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.hero-section {
|
|
192
|
+
text-align: center;
|
|
193
|
+
padding: 20px 0;
|
|
194
|
+
background: radial-gradient(circle at 50% 50%, var(--bg-subtle) 0%, #fff 100%);
|
|
195
|
+
border-radius: var(--radius-lg);
|
|
196
|
+
margin-bottom: 60px;
|
|
197
|
+
border: 1px solid var(--border);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/* Code Blocks */
|
|
201
|
+
pre {
|
|
202
|
+
background: #1e293b;
|
|
203
|
+
color: #e2e8f0;
|
|
204
|
+
padding: 24px;
|
|
205
|
+
border-radius: var(--radius-md);
|
|
206
|
+
overflow-x: auto;
|
|
207
|
+
margin: 2em 0;
|
|
208
|
+
box-shadow: var(--shadow-lg);
|
|
209
|
+
position: relative;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/* "Mac" dots for code blocks */
|
|
213
|
+
pre::before {
|
|
214
|
+
content: " ";
|
|
215
|
+
display: block;
|
|
216
|
+
position: absolute;
|
|
217
|
+
top: 15px;
|
|
218
|
+
left: 15px;
|
|
219
|
+
width: 10px;
|
|
220
|
+
height: 10px;
|
|
221
|
+
border-radius: 50%;
|
|
222
|
+
background: #ff5f56;
|
|
223
|
+
box-shadow: 20px 0 0 #ffbd2e, 40px 0 0 #27c93f;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
code {
|
|
227
|
+
font-family: var(--font-mono);
|
|
228
|
+
font-size: 0.9em;
|
|
229
|
+
background: var(--bg-subtle);
|
|
230
|
+
color: var(--primary-dark);
|
|
231
|
+
padding: 0.2em 0.4em;
|
|
232
|
+
border-radius: 4px;
|
|
233
|
+
border: 1px solid var(--border);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
pre code {
|
|
237
|
+
background: transparent;
|
|
238
|
+
color: inherit;
|
|
239
|
+
padding: 0;
|
|
240
|
+
border: none;
|
|
241
|
+
display: block;
|
|
242
|
+
margin-top: 15px;
|
|
243
|
+
/* Space for the dots */
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/* Tables */
|
|
247
|
+
table {
|
|
248
|
+
width: 100%;
|
|
249
|
+
border-collapse: separate;
|
|
250
|
+
border-spacing: 0;
|
|
251
|
+
margin: 2em 0;
|
|
252
|
+
border: 1px solid var(--border);
|
|
253
|
+
border-radius: var(--radius-md);
|
|
254
|
+
overflow: hidden;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
th,
|
|
258
|
+
td {
|
|
259
|
+
padding: 16px;
|
|
260
|
+
border-bottom: 1px solid var(--border);
|
|
261
|
+
text-align: left;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
th {
|
|
265
|
+
background: var(--bg-subtle);
|
|
266
|
+
font-weight: 600;
|
|
267
|
+
color: var(--text-main);
|
|
268
|
+
text-transform: uppercase;
|
|
269
|
+
font-size: 0.75rem;
|
|
270
|
+
letter-spacing: 0.05em;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
tr:last-child td {
|
|
274
|
+
border-bottom: none;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
tr:hover td {
|
|
278
|
+
background: var(--bg-subtle);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/* Blockquotes */
|
|
282
|
+
blockquote {
|
|
283
|
+
border-left: 4px solid var(--accent);
|
|
284
|
+
margin: 2em 0;
|
|
285
|
+
padding: 1em 2em;
|
|
286
|
+
background: #fffbeb;
|
|
287
|
+
border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
|
|
288
|
+
color: var(--text-main);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/* Footer */
|
|
292
|
+
.site-footer {
|
|
293
|
+
border-top: 1px solid var(--border);
|
|
294
|
+
padding: 60px 0;
|
|
295
|
+
background: var(--bg-subtle);
|
|
296
|
+
text-align: center;
|
|
297
|
+
color: var(--text-muted);
|
|
298
|
+
}
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
title: "About"
|
|
3
|
-
layout: single
|
|
4
|
-
permalink: /pages/about/
|
|
5
|
-
author_profile: true
|
|
6
|
-
---
|
|
1
|
+
# About
|
|
7
2
|
|
|
8
3
|
Chutney is originally a fork of the abandoned [gherkin_lint](https://github.com/funkwerk/gherkin_lint). The original authors remain credited in the gemspec. It has been reworked and extended to support more rules and to be more flexible.
|
|
9
4
|
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
title: "Configuring Chutney"
|
|
3
|
-
layout: single
|
|
4
|
-
permalink: /docs/configuration/
|
|
5
|
-
---
|
|
1
|
+
# Configuring Chutney
|
|
6
2
|
|
|
7
3
|
Chutney has a default configuration which may or may not suit your needs. It's rules are defined in a simple YAML configuration file that you can customise.
|
|
8
4
|
|
|
@@ -101,4 +97,4 @@ UseBackground:
|
|
|
101
97
|
Enabled: true
|
|
102
98
|
UseOutline:
|
|
103
99
|
Enabled: true
|
|
104
|
-
```
|
|
100
|
+
```
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
title: "Disabling Rules"
|
|
3
|
-
layout: single
|
|
4
|
-
permalink: /docs/disabling-rules/
|
|
5
|
-
---
|
|
1
|
+
# Disabling Rules
|
|
6
2
|
|
|
7
3
|
With all the best will and good intentions in the world, sometimes you need to break a rule. You might need to do this for a very good reason or because the rule is mis-identifing something that you think is valid.
|
|
8
4
|
|
|
9
5
|
To do this, use the tag format `@disable<Linter Name>`. For example `@disableTooLongStep`.
|
|
10
6
|
|
|
11
|
-
If used at the feature level, the linter will be deactivated for the whole file, used at the scenario level, only that one scenario will be excused.
|
|
7
|
+
If used at the feature level, the linter will be deactivated for the whole file, used at the scenario level, only that one scenario will be excused.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Documentation
|
|
2
|
+
|
|
3
|
+
## Getting Started
|
|
4
|
+
|
|
5
|
+
* [Installation](/docs/installing)
|
|
6
|
+
* [Running Chutney](/docs/running)
|
|
7
|
+
* [Configuration](/docs/configuration)
|
|
8
|
+
|
|
9
|
+
## Rules
|
|
10
|
+
|
|
11
|
+
* [All Rules](/docs/rules)
|
|
12
|
+
* [Disabling Rules](/docs/disabling-rules)
|
|
13
|
+
|
|
14
|
+
## Advanced Usage
|
|
15
|
+
|
|
16
|
+
* [Language Server](/docs/language-server)
|
|
17
|
+
* [MCP Server (Model Context Protocol)](/docs/mcp)
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
title: "Installing Chutney"
|
|
3
|
-
layout: single
|
|
4
|
-
permalink: /docs/installing/
|
|
5
|
-
---
|
|
1
|
+
# Installing Chutney
|
|
6
2
|
|
|
7
3
|
Chutney is written in Ruby and distributed as a Ruby gem. This means you need to have Ruby installed on your system to use Chutney.
|
|
8
4
|
|
|
@@ -27,4 +23,4 @@ or you can install Chutney locally by adding it to your Gemfile (you should do t
|
|
|
27
23
|
```ruby
|
|
28
24
|
gem 'chutney', "~> <latest version number>"
|
|
29
25
|
```
|
|
30
|
-
(you can grab the latest version number from the [RubyGems page](https://rubygems.org/gems/chutney).)
|
|
26
|
+
(you can grab the latest version number from the [RubyGems page](https://rubygems.org/gems/chutney).)
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
title: "Chutney Language Server"
|
|
3
|
-
layout: single
|
|
4
|
-
permalink: /docs/language-server/
|
|
5
|
-
---
|
|
1
|
+
# Chutney Language Server
|
|
6
2
|
|
|
7
|
-
|
|
8
|
-
Since v3.8.0
|
|
3
|
+
> Since v3.8.0
|
|
9
4
|
|
|
10
5
|
Chutney now includes a Language Server (LSP), which can be used with your favourite editor to provide real-time feedback on your feature files.
|
|
11
6
|
|
|
@@ -25,4 +20,4 @@ It will listen for open / close and save events to evaluate the current feature
|
|
|
25
20
|
|
|
26
21
|
[vscode-chutney](https://github.com/BillyRuffian/vscode-chutney) adds Chutney LSP integration into VS Code,
|
|
27
22
|
|
|
28
|
-
You can install this extension from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=NigelBrookes-Thomas.vscode-chutney).
|
|
23
|
+
You can install this extension from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=NigelBrookes-Thomas.vscode-chutney).
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
permalink: /docs/mcp/
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
{: .notice}
|
|
8
|
-
Since v3.12.0
|
|
1
|
+
# Chutney MCP Server
|
|
2
|
+
|
|
3
|
+
> Since v3.12.0
|
|
9
4
|
|
|
10
5
|
Chutney now ships with a Model Context Protocol (MCP) server for easy integration with AI LLMs, afterall if they're helping author gherkin, it should be tasty.
|
|
11
6
|
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
title: "Avoid Colons at Start of Names"
|
|
3
|
-
layout: single
|
|
4
|
-
permalink: /docs/rules/avoid-colons-at-start-of-names/
|
|
5
|
-
---
|
|
1
|
+
# Avoid Colons at Start of Names
|
|
6
2
|
|
|
7
3
|
Don't have colons at the start of feature or scenario names. It's probably a mistake if you have them from double typing the colon after the `Feature` or `Scenario` keyword.
|
|
8
4
|
|
|
@@ -25,4 +21,4 @@ Feature: My Feature
|
|
|
25
21
|
Given I have visited the website
|
|
26
22
|
When I log in
|
|
27
23
|
Then I will see my account
|
|
28
|
-
```
|
|
24
|
+
```
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
title: "Avoid Comma in Tags"
|
|
3
|
-
layout: single
|
|
4
|
-
permalink: /docs/rules/avoid-comma-in-tags/
|
|
5
|
-
---
|
|
1
|
+
# Avoid Comma in Tags
|
|
6
2
|
|
|
7
3
|
Don't put a comma in tags. It's probably a mistake if you have them from trying write a list of tags but the comma will form part of the name and makes it hard to include or exclude the tag from a Cucumber run.
|
|
8
4
|
|
|
@@ -23,4 +19,4 @@ Then I will see my account
|
|
|
23
19
|
Given I have visited the website
|
|
24
20
|
When I log in
|
|
25
21
|
Then I will see my account
|
|
26
|
-
```
|
|
22
|
+
```
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
title: "Avoid Full Stops"
|
|
3
|
-
layout: single
|
|
4
|
-
permalink: /docs/rules/avoid-full-stops/
|
|
5
|
-
---
|
|
1
|
+
# Avoid Full Stops
|
|
6
2
|
|
|
7
3
|
Don't include a full stop (a period) in your steps because it makes reuse a lot harder, espcially if that step suddenly appears in the middle of a scenario.
|
|
8
4
|
|
|
@@ -20,4 +16,4 @@ Then I will see my account
|
|
|
20
16
|
Given I have visited the website
|
|
21
17
|
When I log in
|
|
22
18
|
Then I will see my account
|
|
23
|
-
```
|
|
19
|
+
```
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
title: "Avoid Outline for Single Example"
|
|
3
|
-
layout: single
|
|
4
|
-
permalink: /docs/rules/avoid-outline-for-single-example/
|
|
5
|
-
---
|
|
1
|
+
# Avoid Outline for Single Example
|
|
6
2
|
|
|
7
3
|
If you have a Scenario Outline, but only one example, then you should convert it to a Scenario because it reduces the complexity of the feature file.
|
|
8
4
|
|
|
@@ -25,4 +21,4 @@ Scenario: Log in with valid credentials
|
|
|
25
21
|
Given I have visited the website
|
|
26
22
|
When I log in with "user1" and "pass1"
|
|
27
23
|
Then I will see my account
|
|
28
|
-
```
|
|
24
|
+
```
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
title: "Avoid Scripting"
|
|
3
|
-
layout: single
|
|
4
|
-
permalink: /docs/rules/avoid-scripting/
|
|
5
|
-
---
|
|
1
|
+
# Avoid Scripting
|
|
6
2
|
|
|
7
3
|
If you find yourself needing to write more than one `when` step, you a probably scripting. This is a bad practice because it makes your tests harder to read and maintain. It also makes it harder to debug when something goes wrong.
|
|
8
4
|
|
|
@@ -30,4 +26,4 @@ Scenario: Log in with valid credentials
|
|
|
30
26
|
Given I have visited the website
|
|
31
27
|
When I log in with "user1" and "pass1"
|
|
32
28
|
Then I will see my account
|
|
33
|
-
```
|
|
29
|
+
```
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
title: "Avoid Splat Steps in Background"
|
|
3
|
-
layout: single
|
|
4
|
-
permalink: /docs/rules/avoid-splat-steps-in-background/
|
|
5
|
-
---
|
|
1
|
+
# Avoid Splat Steps in Background
|
|
6
2
|
|
|
7
3
|
Splat steps (using an asterisk `*`) can obscure the what kind of step is present and make it less like reading natural language.
|
|
8
4
|
|
|
@@ -22,4 +18,4 @@ Background:
|
|
|
22
18
|
Given I have visited the website
|
|
23
19
|
And I have logged in
|
|
24
20
|
And I have viewed sale items
|
|
25
|
-
```
|
|
21
|
+
```
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
title: "Avoid Splat Steps in Scenarios"
|
|
3
|
-
layout: single
|
|
4
|
-
permalink: /docs/rules/avoid-splat-steps-in-scenarios/
|
|
5
|
-
---
|
|
1
|
+
# Avoid Splat Steps in Scenarios
|
|
6
2
|
|
|
7
3
|
Splat steps (using an asterisk `*`) can obscure the what kind of step is present and make it less like reading natural language.
|
|
8
4
|
|
|
@@ -26,4 +22,4 @@ Scenario: Log in with valid credentials
|
|
|
26
22
|
And I have viewed sale items
|
|
27
23
|
When I view special offers
|
|
28
24
|
Then I will see my discount code
|
|
29
|
-
```
|
|
25
|
+
```
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
title: "Avoid Typographers' Quotes"
|
|
3
|
-
layout: single
|
|
4
|
-
permalink: /docs/rules/avoid-typographers-quotes/
|
|
5
|
-
---
|
|
1
|
+
# Avoid Typographers' Quotes
|
|
6
2
|
|
|
7
3
|
Cutting and pasting from Word documents? Is that pasting in curly-quotes instead of neutral ones you would type on a keyboard? Are you sure that’s what you want?
|
|
8
4
|
|
|
@@ -21,4 +17,4 @@ Scenario: Log in with valid credentials
|
|
|
21
17
|
Scenario: Log in with valid credentials
|
|
22
18
|
When I visit the website
|
|
23
19
|
Then I will see the message "account information"
|
|
24
|
-
```
|
|
20
|
+
```
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
title: "Background Does More Than Setup"
|
|
3
|
-
layout: single
|
|
4
|
-
permalink: /docs/rules/background-does-more-than-setup/
|
|
5
|
-
---
|
|
1
|
+
# Background Does More Than Setup
|
|
6
2
|
|
|
7
3
|
The `Background` should only perform common setup activities to prepare the scenarios that follow. They should not contain any `When` or `Then` steps, only `Given`.
|
|
8
4
|
|
|
@@ -25,4 +21,4 @@ Background:
|
|
|
25
21
|
Scenario: logging in
|
|
26
22
|
When I log in
|
|
27
23
|
Then I will see my account
|
|
28
|
-
```
|
|
24
|
+
```
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
title: "Background Requires Multiple Scenarios"
|
|
3
|
-
layout: single
|
|
4
|
-
permalink: /docs/rules/background-requires-multiple-scenarios/
|
|
5
|
-
---
|
|
1
|
+
# Background Requires Multiple Scenarios
|
|
6
2
|
|
|
7
3
|
If you only have one scenario, you don't need a `Background`. The `Background` should only be used when you have multiple scenarios that share the same setup steps.
|
|
8
4
|
|
|
@@ -23,4 +19,4 @@ Scenario: logging in
|
|
|
23
19
|
Given I have visited the website
|
|
24
20
|
When I log in
|
|
25
21
|
Then I will see my account
|
|
26
|
-
```
|
|
22
|
+
```
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
title: "Bad Scenario Name"
|
|
3
|
-
layout: single
|
|
4
|
-
permalink: /docs/rules/bad-scenario-name/
|
|
5
|
-
---
|
|
1
|
+
# Bad Scenario Name
|
|
6
2
|
|
|
7
3
|
{: .notice}
|
|
8
4
|
English language only.
|
|
@@ -25,4 +21,4 @@ Scenario: logging in
|
|
|
25
21
|
Given I have visited the website
|
|
26
22
|
When I log in
|
|
27
23
|
Then I will see my account
|
|
28
|
-
```
|
|
24
|
+
```
|