First off, thank you for considering contributing to Symphony! 🎉 It's people like you that make Symphony such a great tool for E2E testing.
Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue, assessing changes, and helping you finalize your pull requests.
Before you begin, make sure you have Bun installed. Bun is a required prerequisite for this project.
Follow these steps to set up Symphony locally:
Go to https://github.com/kriptonian1/symphony and click the "Fork" button in the top right to create your own copy of the repository.
# Clone your forked repository (replace YOUR_USERNAME with your GitHub username)
git clone https://github.com/YOUR_USERNAME/symphony.git
cd symphony# Install all project dependencies using Bun
bun installSymphony uses Playwright for browser automation. Install the required browsers for Chrome, Firefox, and WebKit:
# Install Chromium, Firefox, and WebKit browsers
npx playwright@1.56.0 install chromium firefox webkitTo check if everything is working correctly, run a test workflow:
# Run the Tailwind example workflow
bun start -f ./flow-example/tailwind.ymlIf the browser opens and runs the test successfully, congratulations! 🎉 Your local setup is complete and you're ready to contribute.
# Quick setup commands
git clone https://github.com/YOUR_USERNAME/symphony.git
cd symphony
bun install
npx playwright@1.56.0 install chromium firefox webkit
bun start -f flow-example/tailwind.ymlSymphony uses Biome for code formatting and linting.
# Auto-fix formatting and linting issues
bun run format-lint
# Check without fixing
bun run format-lint:check- Indentation: Tabs (not spaces)
- Quotes: Double quotes for strings
- File naming: kebab-case (e.g.,
my-flow.ts)
Symphony uses Conventional Commits for standardized commit messages.
<type>(<scope>): <subject>
feat: A new featurefix: A bug fixdocs: Documentation only changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringperf: Performance improvementstest: Adding or updating testschore: Maintenance tasks
git commit -m "feat(flows): add hover flow support"
git commit -m "fix(browser): resolve Chrome headless detection issue"
git commit -m "docs: update CONTRIBUTING.md with setup steps"Found a bug? Create an issue with:
- Title: Short, descriptive summary
- Description: What happened vs what should happen
- Steps to reproduce
- YAML workflow that reproduces the issue
- Error messages/logs
- Environment:
- Symphony version:
symphony --version - Bun version:
bun --version - OS: macOS / Linux / Windows
- Browser engine: chromium / webkit / Firefox
- Symphony version:
Have questions? Here's how to get help:
- Check the Developer Docs
- Search existing issues
- Create a new issue for your question
Thank you for contributing to Symphony!