-
Notifications
You must be signed in to change notification settings - Fork 0
how to contribute testing
khanhthanhdev edited this page May 30, 2026
·
1 revision
This page covers how to test changes locally and understand the CI checks that run on every PR.
Docker is the recommended way to test. It mirrors the CI environment and avoids local Ruby/Python issues.
docker compose pull && docker compose up
# Site runs at http://localhost:8080After the build completes (wait 30–60 seconds):
- Navigation — all menu links work.
- Pages — about, CV, publications, blog, projects render correctly.
- Images — profile photo, project thumbnails, publication previews load.
- Dark mode — toggle works and styles apply.
- Responsive layout — check at mobile and desktop widths.
- Console — open browser DevTools, confirm no JS errors or 404s.
docker compose up --buildIf you cannot use Docker:
bundle install
pip install jupyter
bundle exec jekyll serve --port 4000
# Visit http://localhost:4000ImageMagick must be installed on the host for image processing. Ubuntu/Debian:
sudo apt-get install imagemagick. macOS:brew install imagemagick.
Prettier formatting is mandatory. CI will fail if code is not formatted.
npm install --save-dev prettier @shopify/prettier-plugin-liquid
npx prettier . --write # Format everything
npx prettier . --check # Verify (no changes needed)The following GitHub Actions workflows run automatically:
- Runs Prettier on all files.
- Fails the PR if formatting is off.
- On failure, downloads the HTML diff artifact to see exactly what changed.
- Sets up Ruby 3.3.5, Python 3.13, ImageMagick, nbconvert.
- Runs
bundle exec jekyll buildwithJEKYLL_ENV=production. - Runs PurgeCSS for CSS optimization.
- Commits the built site to
gh-pages(onmainpushes only).
- Scans for broken internal and external links.
- Fix any broken links before merging.
- Runs axe-core accessibility checks against the built site.
- Catches missing alt text, color contrast issues, ARIA problems.
- GitHub CodeQL analysis for security vulnerabilities.
- Runs on push and PR events.
-
update-citations.yml— automatically updates citation counts. -
render-cv.yml— generates CV PDF from_data/cv.yml.
docker compose up
# Visit http://localhost:8080/publications/
# Verify entries from _bibliography/papers.bib render correctly# Visit http://localhost:8080/blog/
# Verify post appears with correct date, categories, and content# Visit http://localhost:8080
# Use the search bar (ninja-keys) to find pages and postsIf docker compose up shows errors:
docker compose up 2>&1 | grep -i errorCommon issues:
-
YAML parse error — check
_config.ymlfor unquoted special characters. See Debugging. - Unknown tag — a Liquid tag in a template is misspelled or a plugin is missing.
-
BibTeX error — check
_bibliography/papers.bibfor unclosed braces.
- Development Workflow — the full branch-code-test-PR cycle
- Debugging — common errors and fixes
- Tooling — CI workflows and build tools
- How to Contribute — PR process and commit conventions