|
| 1 | +# GitHub Copilot Instructions for TestingConferences.org |
| 2 | + |
| 3 | +## Project Overview |
| 4 | + |
| 5 | +TestingConferences.org is a community-driven website that lists software testing conferences and workshops. It's built with Jekyll (Ruby-based static site generator) and deployed as a GitHub Pages site. |
| 6 | + |
| 7 | +## Repository Structure |
| 8 | + |
| 9 | +- `_data/` - Contains YAML files with conference data |
| 10 | + - `current.yml` - Upcoming conferences and workshops |
| 11 | + - `past.yml` - Past conferences with optional video playlists |
| 12 | +- `_layouts/` - Jekyll layout templates |
| 13 | +- `_includes/` - Reusable Jekyll components |
| 14 | +- `_posts/` - Blog posts and news |
| 15 | +- `_sass/` - Sass stylesheets |
| 16 | +- `devops/` - Docker setup scripts for local development |
| 17 | +- `.circleci/` - CI/CD configuration |
| 18 | + |
| 19 | +## Build and Test Commands |
| 20 | + |
| 21 | +### Local Development (Docker) |
| 22 | + |
| 23 | +```bash |
| 24 | +# Setup (starts Docker container and opens browser) |
| 25 | +./devops/setup.sh |
| 26 | + |
| 27 | +# Teardown (stops Docker container) |
| 28 | +./devops/teardown.sh |
| 29 | +``` |
| 30 | + |
| 31 | +### CI/CD Build (CircleCI) |
| 32 | + |
| 33 | +```bash |
| 34 | +# Install dependencies |
| 35 | +gem install bundler |
| 36 | +bundle install |
| 37 | + |
| 38 | +# Build site |
| 39 | +bundle exec jekyll build --verbose |
| 40 | + |
| 41 | +# Test (validates HTML and links) |
| 42 | +bundle exec htmlproofer ./_site --check-html --disable-external |
| 43 | +``` |
| 44 | + |
| 45 | +## Data Schema Guidelines |
| 46 | + |
| 47 | +### Conference Entry Format |
| 48 | + |
| 49 | +When adding or updating conferences in `_data/current.yml` or `_data/past.yml`: |
| 50 | + |
| 51 | +**Required Fields:** |
| 52 | + |
| 53 | +- `name` - Full conference name with year |
| 54 | + - Include abbreviations in parentheses when commonly used |
| 55 | + - Examples: `Automation Guild 2026`, `Workshop on Performance and Reliability (WOPR) 2026` |
| 56 | +- `location` - City, state/country, and whether online |
| 57 | +- `dates` - Event dates (use quotes if complex format) |
| 58 | +- `url` - Conference website with `?utm_source=testingconferences` tracking |
| 59 | + |
| 60 | +**Optional Fields:** |
| 61 | + |
| 62 | +- `twitter` - Twitter handle WITHOUT @ symbol |
| 63 | +- `status` - Current status (CFP open/closed, registration status, etc.) |
| 64 | + - Can include HTML links: `<a href="..." target="_blank">Registration is Open</a>` |
| 65 | +- `video_playlist` - (past.yml only) Link to conference presentation videos |
| 66 | + |
| 67 | +**Important Rules:** |
| 68 | + |
| 69 | +1. Order in YAML files determines display order - insert events in correct chronological position |
| 70 | +2. If conference name contains colon (:), wrap in quotes: `"test:fest 2026"` |
| 71 | +3. No marketing videos in video_playlist - only actual presentation/talk recordings |
| 72 | +4. Only include conferences specifically focused on software testing |
| 73 | + |
| 74 | +### Example Entry |
| 75 | + |
| 76 | +```yaml |
| 77 | +- name: Automation Guild 2026 |
| 78 | + location: Online |
| 79 | + dates: "February 9-13, 2026" |
| 80 | + url: https://testguild.com/ag-2026/?utm_source=testingconferences |
| 81 | + twitter: testguilds |
| 82 | + status: <a href="https://testguild.com/register/?utm_source=testingconferences" target="_blank">Registration is Open</a> |
| 83 | +``` |
| 84 | +
|
| 85 | +## Code Style and Conventions |
| 86 | +
|
| 87 | +- **YAML Files**: Follow existing indentation (2 spaces) |
| 88 | +- **Markdown**: Use standard markdown formatting |
| 89 | +- **HTML**: Semantic HTML5, accessibility-friendly |
| 90 | +- **Links**: Always add `?utm_source=testingconferences` to conference URLs for tracking |
| 91 | +- **External Links**: Use `target="_blank"` when appropriate |
| 92 | + |
| 93 | +## Testing Standards |
| 94 | + |
| 95 | +- Always run `bundle exec htmlproofer` after making changes to validate HTML |
| 96 | +- Check that Jekyll builds successfully with `bundle exec jekyll build` |
| 97 | +- Test locally with Docker before submitting PRs |
| 98 | +- All external links should be valid and not broken |
| 99 | + |
| 100 | +## Contributing Guidelines |
| 101 | + |
| 102 | +### Pull Request Workflow |
| 103 | + |
| 104 | +1. Fork the repository and create a branch from `main` |
| 105 | +2. Make changes following the data schema |
| 106 | +3. Test locally using Docker setup |
| 107 | +4. Ensure CircleCI build passes |
| 108 | +5. Submit PR with clear description |
| 109 | + |
| 110 | +### Conference Eligibility |
| 111 | + |
| 112 | +Only include conferences/workshops specifically for software testing. Per the README: |
| 113 | + |
| 114 | +- Focus is a goal - only conferences that are specifically for software testing are listed |
| 115 | +- If a conference covers software testing but is not specifically for testers, it is excluded |
| 116 | +- Good heuristic: conference name includes "Test", "Testing", "Quality", "Automation", or is otherwise clearly focused on testing (e.g., "Robocon", "Automation Guild") |
| 117 | +- Conference describes itself as specifically for software testers |
| 118 | + |
| 119 | +## Common Tasks |
| 120 | + |
| 121 | +### Adding a New Conference |
| 122 | + |
| 123 | +1. Check if conference already exists in `_data/current.yml` |
| 124 | +2. Add entry following the data schema above |
| 125 | +3. Insert in correct chronological order |
| 126 | +4. Include all required fields and relevant optional fields |
| 127 | +5. Run local build to test |
| 128 | +6. Submit PR |
| 129 | + |
| 130 | +### Moving Conference to Past List |
| 131 | + |
| 132 | +1. Remove entry from `_data/current.yml` |
| 133 | +2. Add to `_data/past.yml` in chronological order |
| 134 | +3. Optionally add `video_playlist` if available |
| 135 | +4. Update status if needed |
| 136 | + |
| 137 | +### Updating Conference Information |
| 138 | + |
| 139 | +1. Locate conference in appropriate YAML file |
| 140 | +2. Update relevant fields |
| 141 | +3. Ensure format compliance |
| 142 | +4. Test build locally |
| 143 | + |
| 144 | +## Dependencies |
| 145 | + |
| 146 | +Per the Gemfile and CircleCI config: |
| 147 | + |
| 148 | +- **Ruby**: 3.1 (cimg/ruby:3.1) |
| 149 | +- **Bundler**: 2.4.17 |
| 150 | +- **Jekyll**: >= 3.10.0 |
| 151 | +- **GitHub Pages**: >= 232 |
| 152 | +- **html-proofer**: ~> 3.19.4 |
| 153 | +- **Docker**: Required for local development |
| 154 | + |
| 155 | +## Security and Best Practices |
| 156 | + |
| 157 | +- Never commit sensitive data or credentials |
| 158 | +- Validate all external URLs before adding |
| 159 | +- Use HTML escaping for user-provided content |
| 160 | +- Keep dependencies updated per Gemfile |
| 161 | +- Follow Jekyll security best practices |
| 162 | + |
| 163 | +## Notes for Copilot |
| 164 | + |
| 165 | +- **Minimal Changes**: Make surgical, precise changes to YAML files |
| 166 | +- **Preserve Formatting**: Maintain existing indentation and structure |
| 167 | +- **Validate Schema**: Always check against the data schema before modifying |
| 168 | +- **Test First**: Understand existing build/test process before changes |
| 169 | +- **Documentation**: Update README/CONTRIBUTING if making structural changes |
| 170 | +- **Focus**: This project is specifically about testing conferences - don't include general tech conferences |
0 commit comments