Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/test-prof/test-prof-aiptimize-action
GitHub action to refactor Rails tests with TestProf and AI
https://github.com/test-prof/test-prof-aiptimize-action
github-action peformance rails testing
Last synced: about 1 month ago
JSON representation
GitHub action to refactor Rails tests with TestProf and AI
- Host: GitHub
- URL: https://github.com/test-prof/test-prof-aiptimize-action
- Owner: test-prof
- License: mit
- Created: 2024-08-19T10:22:55.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-08-19T10:23:18.000Z (3 months ago)
- Last Synced: 2024-09-26T00:19:32.502Z (about 2 months ago)
- Topics: github-action, peformance, rails, testing
- Language: Ruby
- Homepage:
- Size: 7.81 KB
- Stars: 11
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# TestProf AI GitHub Action
This GitHub Action allows you to optimize Rails tests via [TestProf][] and [Claude AI][Claude].
The action performs the given test file profiling and refactors it to speed up the execution (using `let_it_be` and `before_all` helpers from TestProf). It opens a PR and shares the refactoring progress as it executes.
## Requirements
- **Configured testing environment**. This action runs your tests during the refactoring (to verify the correctness), so you must configure it as for regular tests.
- **GitHub token permissions**. This action uses the default `GITHUB_TOKEN` provided by GitHub Actions. You must configure its permissions (Settings -> Actions -> Workflow permissions): enable "Read and write permissions" and "Allow GitHub Actions to create and approve pull requests".
## Inputs
- **api-key** (required): you API key to communicate with Claude API.
- **issue-number**: GitHub issue number to read the task from (the issue must contain the path to the test file to refactor).
- **test-file-path**: Path to test file to refactor. **IMPORTANT:** one of the `issue-number` or `test-file-path` must be specified.
- **base-branch** (optional, default: main): Base Git branch to open a PR against.
- **test-command** (optional, default: `bundle exec rspec`): Command to execute a test file.
- **example-patch-path** (optional): Path to the example Git patch to use by AI's prompt.
- **custom-prompt-path** (optional): Path to the custom AI prompt file.## Example
We suggest to use GitHub Issues to initiate refactoring tasks. Here is an example workflow:
```yml
name: TestProf AIon:
issues:
types: [labeled]jobs:
optimize:
# IMPORTANT: Only run this workflow for explicitly labeled issues
if: github.event.label.name == 'test-prof'
runs-on: ubuntu-latestenv:
RAILS_ENV: test
# ... here goes your environment setupsteps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Prepare app
run: |
bundle exec rails db:test:prepare- name: Run TestProf AI
uses: test-prof/test-prof-aiptimize-action@main
with:
api-key: ${{ secrets.CLAUDE_API_KEY }}
issue-number: ${{ github.event.issue.number }}
```Here is also an example [issue template](./ISSUE_TEMPLATE/test_prof.yml).
[TestProf]: https://github.com/test-prof/test-prof
[Claude]: https://claude.ai