rails_accessibility_testing 1.1.0
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 +7 -0
- data/ARCHITECTURE.md +307 -0
- data/CHANGELOG.md +81 -0
- data/CODE_OF_CONDUCT.md +125 -0
- data/CONTRIBUTING.md +225 -0
- data/GUIDES/continuous_integration.md +326 -0
- data/GUIDES/getting_started.md +205 -0
- data/GUIDES/working_with_designers_and_content_authors.md +398 -0
- data/GUIDES/writing_accessible_views_in_rails.md +412 -0
- data/LICENSE +22 -0
- data/README.md +350 -0
- data/docs_site/404.html +11 -0
- data/docs_site/Gemfile +11 -0
- data/docs_site/Makefile +14 -0
- data/docs_site/_config.yml +41 -0
- data/docs_site/_includes/header.html +13 -0
- data/docs_site/_layouts/default.html +130 -0
- data/docs_site/assets/main.scss +4 -0
- data/docs_site/ci_integration.md +76 -0
- data/docs_site/configuration.md +114 -0
- data/docs_site/contributing.md +69 -0
- data/docs_site/getting_started.md +57 -0
- data/docs_site/index.md +57 -0
- data/exe/rails_a11y +12 -0
- data/exe/rails_server_safe +41 -0
- data/lib/generators/rails_a11y/install/generator.rb +51 -0
- data/lib/rails_accessibility_testing/accessibility_helper.rb +701 -0
- data/lib/rails_accessibility_testing/change_detector.rb +114 -0
- data/lib/rails_accessibility_testing/checks/aria_landmarks_check.rb +33 -0
- data/lib/rails_accessibility_testing/checks/base_check.rb +156 -0
- data/lib/rails_accessibility_testing/checks/color_contrast_check.rb +56 -0
- data/lib/rails_accessibility_testing/checks/duplicate_ids_check.rb +49 -0
- data/lib/rails_accessibility_testing/checks/form_errors_check.rb +40 -0
- data/lib/rails_accessibility_testing/checks/form_labels_check.rb +62 -0
- data/lib/rails_accessibility_testing/checks/heading_hierarchy_check.rb +53 -0
- data/lib/rails_accessibility_testing/checks/image_alt_text_check.rb +52 -0
- data/lib/rails_accessibility_testing/checks/interactive_elements_check.rb +66 -0
- data/lib/rails_accessibility_testing/checks/keyboard_accessibility_check.rb +36 -0
- data/lib/rails_accessibility_testing/checks/skip_links_check.rb +24 -0
- data/lib/rails_accessibility_testing/checks/table_structure_check.rb +36 -0
- data/lib/rails_accessibility_testing/cli/command.rb +259 -0
- data/lib/rails_accessibility_testing/config/yaml_loader.rb +131 -0
- data/lib/rails_accessibility_testing/configuration.rb +30 -0
- data/lib/rails_accessibility_testing/engine/rule_engine.rb +97 -0
- data/lib/rails_accessibility_testing/engine/violation.rb +58 -0
- data/lib/rails_accessibility_testing/engine/violation_collector.rb +59 -0
- data/lib/rails_accessibility_testing/error_message_builder.rb +354 -0
- data/lib/rails_accessibility_testing/integration/minitest_integration.rb +74 -0
- data/lib/rails_accessibility_testing/rspec_integration.rb +58 -0
- data/lib/rails_accessibility_testing/shared_examples.rb +93 -0
- data/lib/rails_accessibility_testing/version.rb +4 -0
- data/lib/rails_accessibility_testing.rb +83 -0
- data/lib/tasks/accessibility.rake +28 -0
- metadata +218 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 44226ec4973a99bf8f1547ea8097b1692149aff661462c49e49f231fa922ee68
|
|
4
|
+
data.tar.gz: 6cbe080229e8ab7895b9a43c318e613b23c9f47630ee3d059f3c62a155d79840
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 6a9ebf9993e2e0c62ebfee115edd8af562ea7545ad9ea3324e76f08d2cc0ad7617d92c7703a8cac2eb703381b4e8737b57e6fb238fb90918aecfe84c383ef65d
|
|
7
|
+
data.tar.gz: 2c8063de81c13388d38f01b289a6cf5a806aac8e0e176496857a4c4fbc714a18f187c2fb90d846cefded37e5e2896454eaddbfa87a98262548a420633c95aec4
|
data/ARCHITECTURE.md
ADDED
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
# Rails Accessibility Testing Gem - Architecture Overview
|
|
2
|
+
|
|
3
|
+
## Project Identity
|
|
4
|
+
|
|
5
|
+
### Gem Name Options
|
|
6
|
+
|
|
7
|
+
After careful consideration, we've selected:
|
|
8
|
+
|
|
9
|
+
**Final Name: `rails_accessibility_testing`**
|
|
10
|
+
|
|
11
|
+
**Note:** The gem uses `rails_a11y` as a short alias for the generator command and CLI tool, but the official gem name is `rails_accessibility_testing`.
|
|
12
|
+
|
|
13
|
+
**Alternative names considered:**
|
|
14
|
+
1. `rails_accessibility_testing` - **SELECTED** - Clear and descriptive
|
|
15
|
+
2. `rails_a11y` - Short alias used for CLI and generator
|
|
16
|
+
3. `a11y_rails` - Alternative short form
|
|
17
|
+
4. `accessible_rails` - Descriptive but longer
|
|
18
|
+
|
|
19
|
+
### Tagline
|
|
20
|
+
|
|
21
|
+
**"The RSpec + RuboCop of accessibility for Rails. Catch WCAG violations before they reach production."**
|
|
22
|
+
|
|
23
|
+
### Positioning Statement
|
|
24
|
+
|
|
25
|
+
Rails Accessibility Testing fills a critical gap in the Rails testing ecosystem. While RSpec ensures code works and RuboCop ensures code style, Rails Accessibility Testing ensures applications are accessible to everyone. Unlike manual accessibility audits that happen late in development, Rails Accessibility Testing integrates directly into your test suite, catching violations as you code. It's opinionated enough to guide teams new to accessibility, yet configurable enough for experienced teams. By making accessibility testing as natural as unit testing, Rails Accessibility Testing helps teams build accessible applications from day one, not as an afterthought.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Architecture Overview
|
|
30
|
+
|
|
31
|
+
### Core Principles
|
|
32
|
+
|
|
33
|
+
1. **DevX First**: Every feature prioritizes developer experience
|
|
34
|
+
2. **Accessibility at Core**: WCAG 2.1 AA compliance is the foundation
|
|
35
|
+
3. **Rails Native**: Feels like a natural part of Rails, not a bolt-on
|
|
36
|
+
4. **Progressive Enhancement**: Works with zero config, scales with configuration
|
|
37
|
+
|
|
38
|
+
### Component Architecture
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
rails_a11y/
|
|
42
|
+
├── Core Engine
|
|
43
|
+
│ ├── Rule Engine # Evaluates accessibility rules
|
|
44
|
+
│ ├── Check Definitions # WCAG-aligned check implementations
|
|
45
|
+
│ └── Violation Collector # Aggregates and formats violations
|
|
46
|
+
│
|
|
47
|
+
├── Rails Integration
|
|
48
|
+
│ ├── Railtie # Rails initialization hooks
|
|
49
|
+
│ ├── RSpec Integration # RSpec helpers and matchers
|
|
50
|
+
│ ├── Minitest Integration # Minitest helpers
|
|
51
|
+
│ └── System Test Helpers # Capybara integration
|
|
52
|
+
│
|
|
53
|
+
├── Configuration
|
|
54
|
+
│ ├── YAML Config Loader # Loads config/accessibility.yml
|
|
55
|
+
│ ├── Profile Manager # Dev/test/CI profiles
|
|
56
|
+
│ └── Rule Overrides # Ignore rules with comments
|
|
57
|
+
│
|
|
58
|
+
├── CLI
|
|
59
|
+
│ ├── Command Runner # Main CLI entry point
|
|
60
|
+
│ ├── URL Scanner # Scans URLs/routes
|
|
61
|
+
│ └── Report Generator # Human-readable + JSON reports
|
|
62
|
+
│
|
|
63
|
+
├── Generators
|
|
64
|
+
│ └── Install Generator # Rails generator for setup
|
|
65
|
+
│
|
|
66
|
+
└── Documentation
|
|
67
|
+
├── Guides/ # Practical guides
|
|
68
|
+
├── API Docs (YARD) # Generated documentation
|
|
69
|
+
└── Doc Site # Static documentation site
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Data Flow
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
Test Execution
|
|
76
|
+
↓
|
|
77
|
+
System Test Helper (RSpec/Minitest)
|
|
78
|
+
↓
|
|
79
|
+
Rule Engine
|
|
80
|
+
↓
|
|
81
|
+
Check Definitions (11+ checks)
|
|
82
|
+
↓
|
|
83
|
+
Violation Collector
|
|
84
|
+
↓
|
|
85
|
+
Error Message Builder
|
|
86
|
+
↓
|
|
87
|
+
Test Failure / CLI Report
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Rule Engine Design
|
|
91
|
+
|
|
92
|
+
The rule engine is the heart of the gem. It:
|
|
93
|
+
|
|
94
|
+
1. **Loads Configuration**: Reads `config/accessibility.yml` with profile support**
|
|
95
|
+
2. **Applies Rule Overrides**: Respects ignored rules with comments
|
|
96
|
+
3. **Executes Checks**: Runs enabled checks in order
|
|
97
|
+
4. **Collects Violations**: Aggregates all violations before reporting
|
|
98
|
+
5. **Formats Output**: Creates actionable error messages
|
|
99
|
+
|
|
100
|
+
### Check Definition Structure
|
|
101
|
+
|
|
102
|
+
Each check is a self-contained class that:
|
|
103
|
+
|
|
104
|
+
- Implements a standard interface
|
|
105
|
+
- Returns violations with context
|
|
106
|
+
- Includes WCAG references
|
|
107
|
+
- Provides remediation suggestions
|
|
108
|
+
- Can be enabled/disabled via config
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Key Design Decisions
|
|
113
|
+
|
|
114
|
+
### 1. YAML Configuration
|
|
115
|
+
|
|
116
|
+
**Why YAML?**
|
|
117
|
+
- Human-readable and comment-friendly
|
|
118
|
+
- Easy to version control
|
|
119
|
+
- Familiar to Rails developers
|
|
120
|
+
- Supports profiles (dev/test/CI)
|
|
121
|
+
|
|
122
|
+
### 2. Rule-Based Architecture
|
|
123
|
+
|
|
124
|
+
**Why separate rules?**
|
|
125
|
+
- Easy to enable/disable specific checks
|
|
126
|
+
- Allows teams to gradually adopt stricter rules
|
|
127
|
+
- Makes it easy to add custom rules later
|
|
128
|
+
- Clear separation of concerns
|
|
129
|
+
|
|
130
|
+
### 3. Violation Collection vs Immediate Failure
|
|
131
|
+
|
|
132
|
+
**Why collect then fail?**
|
|
133
|
+
- Shows all issues at once (better DX)
|
|
134
|
+
- Allows prioritization
|
|
135
|
+
- More efficient than stopping at first error
|
|
136
|
+
- Better for CI/CD reports
|
|
137
|
+
|
|
138
|
+
### 4. View File Detection
|
|
139
|
+
|
|
140
|
+
**Why detect view files?**
|
|
141
|
+
- Points developers to exact file to fix
|
|
142
|
+
- Works with partials and layouts
|
|
143
|
+
- Reduces debugging time
|
|
144
|
+
- Makes errors actionable
|
|
145
|
+
|
|
146
|
+
### 5. Dual Test Framework Support
|
|
147
|
+
|
|
148
|
+
**Why both RSpec and Minitest?**
|
|
149
|
+
- Rails teams use both
|
|
150
|
+
- Reduces friction for adoption
|
|
151
|
+
- Shared core logic, different interfaces
|
|
152
|
+
- Better market fit
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## File Structure
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
lib/
|
|
160
|
+
├── rails_a11y.rb # Main entry point
|
|
161
|
+
├── rails_a11y/
|
|
162
|
+
│ ├── version.rb
|
|
163
|
+
│ ├── configuration.rb # Config management
|
|
164
|
+
│ ├── railtie.rb # Rails integration
|
|
165
|
+
│ │
|
|
166
|
+
│ ├── engine/
|
|
167
|
+
│ │ ├── rule_engine.rb # Core rule evaluator
|
|
168
|
+
│ │ ├── violation_collector.rb # Aggregates violations
|
|
169
|
+
│ │ └── check_context.rb # Context for checks
|
|
170
|
+
│ │
|
|
171
|
+
│ ├── checks/
|
|
172
|
+
│ │ ├── base_check.rb # Base class for all checks
|
|
173
|
+
│ │ ├── form_labels_check.rb
|
|
174
|
+
│ │ ├── image_alt_text_check.rb
|
|
175
|
+
│ │ ├── interactive_elements_check.rb
|
|
176
|
+
│ │ ├── heading_hierarchy_check.rb
|
|
177
|
+
│ │ ├── keyboard_accessibility_check.rb
|
|
178
|
+
│ │ ├── aria_landmarks_check.rb
|
|
179
|
+
│ │ ├── form_errors_check.rb
|
|
180
|
+
│ │ ├── table_structure_check.rb
|
|
181
|
+
│ │ ├── duplicate_ids_check.rb
|
|
182
|
+
│ │ ├── skip_links_check.rb
|
|
183
|
+
│ │ └── color_contrast_check.rb # New
|
|
184
|
+
│ │
|
|
185
|
+
│ ├── integration/
|
|
186
|
+
│ │ ├── rspec_integration.rb
|
|
187
|
+
│ │ ├── minitest_integration.rb
|
|
188
|
+
│ │ └── system_test_helper.rb # Shared Capybara helpers
|
|
189
|
+
│ │
|
|
190
|
+
│ ├── cli/
|
|
191
|
+
│ │ ├── command.rb # Main CLI command
|
|
192
|
+
│ │ ├── url_scanner.rb # Scans URLs/routes
|
|
193
|
+
│ │ └── report_generator.rb # Generates reports
|
|
194
|
+
│ │
|
|
195
|
+
│ ├── config/
|
|
196
|
+
│ │ ├── yaml_loader.rb # Loads YAML config
|
|
197
|
+
│ │ ├── profile_manager.rb # Manages profiles
|
|
198
|
+
│ │ └── rule_override.rb # Handles ignored rules
|
|
199
|
+
│ │
|
|
200
|
+
│ ├── errors/
|
|
201
|
+
│ │ ├── error_message_builder.rb # Formats error messages
|
|
202
|
+
│ │ └── violation_formatter.rb # Formats individual violations
|
|
203
|
+
│ │
|
|
204
|
+
│ └── utils/
|
|
205
|
+
│ ├── view_file_detector.rb # Detects view files
|
|
206
|
+
│ └── wcag_reference.rb # WCAG reference data
|
|
207
|
+
│
|
|
208
|
+
├── generators/
|
|
209
|
+
│ └── rails_a11y/
|
|
210
|
+
│ └── install/
|
|
211
|
+
│ ├── generator.rb
|
|
212
|
+
│ └── templates/
|
|
213
|
+
│ ├── initializer.rb.erb
|
|
214
|
+
│ └── accessibility.yml.erb
|
|
215
|
+
│
|
|
216
|
+
└── tasks/
|
|
217
|
+
└── accessibility.rake # Rake tasks
|
|
218
|
+
|
|
219
|
+
exe/
|
|
220
|
+
└── rails_a11y # CLI executable
|
|
221
|
+
|
|
222
|
+
GUIDES/
|
|
223
|
+
├── getting_started.md
|
|
224
|
+
├── continuous_integration.md
|
|
225
|
+
├── working_with_designers_and_content_authors.md
|
|
226
|
+
└── writing_accessible_views_in_rails.md
|
|
227
|
+
|
|
228
|
+
docs_site/
|
|
229
|
+
├── index.html
|
|
230
|
+
├── usage.html
|
|
231
|
+
├── configuration.html
|
|
232
|
+
├── ci_integration.html
|
|
233
|
+
└── contributing.html
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## Extension Points
|
|
239
|
+
|
|
240
|
+
### Adding Custom Checks
|
|
241
|
+
|
|
242
|
+
```ruby
|
|
243
|
+
module RailsA11y
|
|
244
|
+
module Checks
|
|
245
|
+
class CustomCheck < BaseCheck
|
|
246
|
+
def check
|
|
247
|
+
# Implementation
|
|
248
|
+
end
|
|
249
|
+
end
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Custom Error Formatters
|
|
255
|
+
|
|
256
|
+
```ruby
|
|
257
|
+
module RailsA11y
|
|
258
|
+
module Errors
|
|
259
|
+
class CustomFormatter < ViolationFormatter
|
|
260
|
+
# Custom formatting logic
|
|
261
|
+
end
|
|
262
|
+
end
|
|
263
|
+
end
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### Profile-Specific Configuration
|
|
267
|
+
|
|
268
|
+
```yaml
|
|
269
|
+
# config/accessibility.yml
|
|
270
|
+
development:
|
|
271
|
+
checks:
|
|
272
|
+
color_contrast: false # Skip in dev for speed
|
|
273
|
+
|
|
274
|
+
ci:
|
|
275
|
+
checks:
|
|
276
|
+
color_contrast: true # Full checks in CI
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Performance Considerations
|
|
282
|
+
|
|
283
|
+
1. **Lazy Loading**: Checks loaded only when needed
|
|
284
|
+
2. **Caching**: View file detection cached
|
|
285
|
+
3. **Parallel Execution**: Checks can run in parallel (future)
|
|
286
|
+
4. **Selective Execution**: Only run checks for changed files (existing feature)
|
|
287
|
+
5. **Configurable Depth**: Expensive checks behind flags
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Testing Strategy
|
|
292
|
+
|
|
293
|
+
1. **Unit Tests**: Each check tested in isolation
|
|
294
|
+
2. **Integration Tests**: Full Rails app with RSpec/Minitest
|
|
295
|
+
3. **CLI Tests**: Test CLI against real Rails routes
|
|
296
|
+
4. **Documentation Tests**: Ensure examples work
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## Future Enhancements
|
|
301
|
+
|
|
302
|
+
1. **Custom Rules**: Allow teams to define custom checks
|
|
303
|
+
2. **Visual Regression**: Screenshot comparison for visual issues
|
|
304
|
+
3. **Performance Monitoring**: Track check performance
|
|
305
|
+
4. **IDE Integration**: VS Code/IntelliJ plugins
|
|
306
|
+
5. **CI/CD Templates**: Pre-built GitHub Actions, CircleCI configs
|
|
307
|
+
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [1.1.0] - 2024-11-15
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- GitHub Pages documentation site with Jekyll
|
|
12
|
+
- Comprehensive GitHub Actions workflow for automatic documentation deployment
|
|
13
|
+
- Enhanced workflow diagnostics and verification steps
|
|
14
|
+
- Test step to verify index.html exists before deployment
|
|
15
|
+
- Improved error messages and troubleshooting guides
|
|
16
|
+
- Token support for GitHub Pages deployment (OIDC with PAT fallback)
|
|
17
|
+
|
|
18
|
+
### Improved
|
|
19
|
+
- Better artifact structure verification in CI/CD
|
|
20
|
+
- Enhanced deployment diagnostics
|
|
21
|
+
- More detailed build output and verification steps
|
|
22
|
+
- Improved documentation structure and organization
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
- Jekyll build configuration and dependencies
|
|
26
|
+
- GitHub Pages deployment path isolation
|
|
27
|
+
- Artifact structure for subdirectory deployment
|
|
28
|
+
|
|
29
|
+
## [1.0.0] - 2024-11-14
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
- Initial release of Rails Accessibility Testing gem
|
|
33
|
+
- Automatic accessibility checking for Rails system specs
|
|
34
|
+
- 11+ comprehensive accessibility checks:
|
|
35
|
+
- Form labels
|
|
36
|
+
- Image alt text
|
|
37
|
+
- Interactive element names
|
|
38
|
+
- Heading hierarchy
|
|
39
|
+
- Keyboard accessibility
|
|
40
|
+
- ARIA landmarks
|
|
41
|
+
- Form error associations
|
|
42
|
+
- Table structure
|
|
43
|
+
- Duplicate IDs
|
|
44
|
+
- Skip links
|
|
45
|
+
- Color contrast (optional)
|
|
46
|
+
- Rule engine architecture for extensible checks
|
|
47
|
+
- YAML configuration system with profile support (development, test, ci)
|
|
48
|
+
- CLI tool (`rails_a11y`) for checking URLs and routes
|
|
49
|
+
- Rails generator (`rails generate rails_a11y:install`) for easy setup
|
|
50
|
+
- RSpec integration with automatic hooks
|
|
51
|
+
- Minitest integration for system tests
|
|
52
|
+
- Automatic system spec detection by file location
|
|
53
|
+
- Smart change detection (only runs when code changes)
|
|
54
|
+
- Detailed error messages with file locations and remediation steps
|
|
55
|
+
- WCAG 2.1 AA compliance references
|
|
56
|
+
- Zero-configuration setup with sensible defaults
|
|
57
|
+
- Skip checks for specific tests via `skip_a11y: true` metadata
|
|
58
|
+
- Manual comprehensive check method `check_comprehensive_accessibility`
|
|
59
|
+
- Comprehensive documentation:
|
|
60
|
+
- Getting Started guide
|
|
61
|
+
- Continuous Integration guide
|
|
62
|
+
- Writing Accessible Views guide
|
|
63
|
+
- Working with Designers guide
|
|
64
|
+
- Architecture documentation
|
|
65
|
+
- Error message builder with semantic element names
|
|
66
|
+
- View file detection including partials and layouts
|
|
67
|
+
- Batch error collection (reports all errors, not just first)
|
|
68
|
+
- Human-readable and JSON report formats
|
|
69
|
+
- Profile-based configuration for different environments
|
|
70
|
+
|
|
71
|
+
### Technical Details
|
|
72
|
+
- Built on axe-core-capybara for WCAG testing
|
|
73
|
+
- Integrates with RSpec Rails and Minitest
|
|
74
|
+
- Uses Capybara for browser automation
|
|
75
|
+
- Supports Rails 6.0+ and Ruby 3.0+
|
|
76
|
+
- Compatible with RSpec Rails 6.0+
|
|
77
|
+
- Modular architecture with rule engine and check definitions
|
|
78
|
+
|
|
79
|
+
[1.1.0]: https://github.com/rayraycodes/rails-accessibility-testing/releases/tag/v1.1.0
|
|
80
|
+
[1.0.0]: https://github.com/rayraycodes/rails-accessibility-testing/releases/tag/v1.0.0
|
|
81
|
+
|
data/CODE_OF_CONDUCT.md
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Pledge
|
|
4
|
+
|
|
5
|
+
We as members, contributors, and leaders pledge to make participation in our
|
|
6
|
+
community a harassment-free experience for everyone, regardless of age, body
|
|
7
|
+
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
|
8
|
+
identity and expression, level of experience, education, socio-economic status,
|
|
9
|
+
nationality, personal appearance, race, religion, or sexual identity
|
|
10
|
+
and orientation.
|
|
11
|
+
|
|
12
|
+
We pledge to act and interact in ways that contribute to an open, welcoming,
|
|
13
|
+
diverse, inclusive, and healthy community.
|
|
14
|
+
|
|
15
|
+
## Our Standards
|
|
16
|
+
|
|
17
|
+
Examples of behavior that contributes to a positive environment for our
|
|
18
|
+
community include:
|
|
19
|
+
|
|
20
|
+
* Demonstrating empathy and kindness toward other people
|
|
21
|
+
* Being respectful of differing opinions, viewpoints, and experiences
|
|
22
|
+
* Giving and gracefully accepting constructive feedback
|
|
23
|
+
* Accepting responsibility and apologizing to those affected by our mistakes,
|
|
24
|
+
and learning from the experience
|
|
25
|
+
* Focusing on what is best not just for us as individuals, but for the
|
|
26
|
+
overall community
|
|
27
|
+
|
|
28
|
+
Examples of unacceptable behavior include:
|
|
29
|
+
|
|
30
|
+
* The use of sexualized language or imagery, and sexual attention or
|
|
31
|
+
advances of any kind
|
|
32
|
+
* Trolling, insulting or derogatory comments, and personal or political attacks
|
|
33
|
+
* Public or private harassment
|
|
34
|
+
* Publishing others' private information, such as a physical or email
|
|
35
|
+
address, without their explicit permission
|
|
36
|
+
* Other conduct which could reasonably be considered inappropriate in a
|
|
37
|
+
professional setting
|
|
38
|
+
|
|
39
|
+
## Enforcement Responsibilities
|
|
40
|
+
|
|
41
|
+
Community leaders are responsible for clarifying and enforcing our standards of
|
|
42
|
+
acceptable behavior and will take appropriate and fair corrective action in
|
|
43
|
+
response to any behavior that they deem inappropriate, threatening, offensive,
|
|
44
|
+
or harmful.
|
|
45
|
+
|
|
46
|
+
Community leaders have the right and responsibility to remove, edit, or reject
|
|
47
|
+
comments, commits, code, wiki edits, issues, and other contributions that are
|
|
48
|
+
not aligned to this Code of Conduct, or to ban temporarily or permanently
|
|
49
|
+
any contributor for other behaviors that they deem inappropriate, threatening,
|
|
50
|
+
offensive, or harmful.
|
|
51
|
+
|
|
52
|
+
## Scope
|
|
53
|
+
|
|
54
|
+
This Code of Conduct applies within all community spaces, and also applies when
|
|
55
|
+
an individual is officially representing the community in public spaces.
|
|
56
|
+
Examples of representing our community include using an official e-mail address,
|
|
57
|
+
posting via an official social media account, or acting as an appointed
|
|
58
|
+
representative at an online or offline event.
|
|
59
|
+
|
|
60
|
+
## Enforcement
|
|
61
|
+
|
|
62
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
63
|
+
reported to the community leaders responsible for enforcement at
|
|
64
|
+
imregan@umich.edu. All complaints will be reviewed and investigated promptly and
|
|
65
|
+
fairly.
|
|
66
|
+
|
|
67
|
+
All community leaders are obligated to respect the privacy and security of the
|
|
68
|
+
reporter of any incident.
|
|
69
|
+
|
|
70
|
+
## Enforcement Guidelines
|
|
71
|
+
|
|
72
|
+
Community leaders will follow these Community Impact Guidelines in determining
|
|
73
|
+
the consequences for any action they deem in violation of this Code of Conduct:
|
|
74
|
+
|
|
75
|
+
### 1. Correction
|
|
76
|
+
**Community Impact**: Use of inappropriate language or other behavior deemed
|
|
77
|
+
unprofessional or unwelcome in the community.
|
|
78
|
+
|
|
79
|
+
**Consequence**: A private, written warning from community leaders, providing
|
|
80
|
+
clarity around the nature of the violation and an explanation of why the
|
|
81
|
+
behavior was inappropriate. A public apology may be requested.
|
|
82
|
+
|
|
83
|
+
### 2. Warning
|
|
84
|
+
**Community Impact**: A violation through a single incident or series
|
|
85
|
+
of actions.
|
|
86
|
+
|
|
87
|
+
**Consequence**: A warning with consequences for continued behavior. No
|
|
88
|
+
interaction with the people involved, including unsolicited interaction with
|
|
89
|
+
those enforcing the Code of Conduct, for a specified period of time. This
|
|
90
|
+
includes avoiding interactions in community spaces as well as external channels
|
|
91
|
+
like social media. Violating these terms may lead to a temporary or
|
|
92
|
+
permanent ban.
|
|
93
|
+
|
|
94
|
+
### 3. Temporary Ban
|
|
95
|
+
**Community Impact**: A serious violation of community standards, including
|
|
96
|
+
sustained inappropriate behavior.
|
|
97
|
+
|
|
98
|
+
**Consequence**: A temporary ban from any sort of interaction or public
|
|
99
|
+
communication with the community for a specified period of time. No public or
|
|
100
|
+
private interaction with the people involved, including unsolicited interaction
|
|
101
|
+
with those enforcing the Code of Conduct, is allowed during this period.
|
|
102
|
+
Violating these terms may lead to a permanent ban.
|
|
103
|
+
|
|
104
|
+
### 4. Permanent Ban
|
|
105
|
+
**Community Impact**: Demonstrating a pattern of violation of community
|
|
106
|
+
standards, including sustained inappropriate behavior, harassment of an
|
|
107
|
+
individual, or aggression toward or disparagement of classes of individuals.
|
|
108
|
+
|
|
109
|
+
**Consequence**: A permanent ban from any sort of public interaction within
|
|
110
|
+
the community.
|
|
111
|
+
|
|
112
|
+
## Attribution
|
|
113
|
+
|
|
114
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
|
115
|
+
version 2.0, available at
|
|
116
|
+
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
|
|
117
|
+
|
|
118
|
+
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
|
119
|
+
enforcement ladder](https://github.com/mozilla/diversity).
|
|
120
|
+
|
|
121
|
+
[homepage]: https://www.contributor-covenant.org
|
|
122
|
+
|
|
123
|
+
For answers to common questions about this code of conduct, see
|
|
124
|
+
https://www.contributor-covenant.org/faq
|
|
125
|
+
|