Workflow: Automatic Unit Test Creator from GitHub
Workflow: Automatic Unit Test Creator from GitHub 🏗️ Architecture Overview This workflow listens for GitHub pull-request events, analyzes changed React/TypeScript files, auto-generates Jest tests via AI, has them reviewed by a second AI pass, and posts suggestions back as PR comments: GitHub Webhook → PR opened or updated Fetch & Diff → Retrieve raw diff of changed files Filter & Split → Isolate .tsx files & their diffs Fetch File Contents → Provide full context for tests Test Maker Agent → Generate Jest tests for diff hunks Code Reviewer Agent → Refine tests for style & edge-cases Post PR Comment → Sends suggested tests back to GitHub 📦 Node-by-Node Breakdown flowchart LR A[Webhook: /github/pr-events] --> B[GitHub: Get PR] B --> C[Function: Parse diff_url + owner/repo] C --> D[HTTP Request: GET diff_url] D --> E[Function: Split on "diff --git"] E --> F[Filter: /\.tsx$/] F --> G[GitHub: Get File Contents] G --> H[Test Maker Agent] H --> I[Code Reviewer Agent] I --> J[Function: Build Comment Payload] J --> K[HTTP Request: POST to PR Comments] Webhook: GitHub PR Events Type: HTTP Webhook (/webhook/github/pr-events) Subscribed Events: pull_request.opened, pull_request.synchronize GitHub: Get PR Node: GitHub Action: "Get Pull Request" Inputs: owner, repo, pull_number Function: Parse diff_url + owner/repo Extracts: diff_url (e.g. …/pulls/123.diff) owner, repo, merge_commit_sha HTTP Request: GET diff_url Fetches unified-diff text for the PR. Function: Split on "diff --git" Splits the diff into file-specific segments. Filter: /.tsx$/ Keeps only segments where the file path ends with .tsx. GitHub: Get File Contents For each .tsx file, fetches the latest blob via GitHub API. Test Maker Agent Prompt: "Generate Jest unit tests covering only the behaviors changed in these diff hunks." Output: Raw Jest test code. Code Reviewer Agent Reads file + generated tests Prompt: "Review and improve these tests for readability, edge-cases, and naming conventions." Output: Polished test suite. Function: Build Comment Payload Wraps tests in TypeScript fences: // generated tests… Constructs JSON: { "body": "<tests>" } HTTP Request: POST to PR Comments URL: https://api.github.com/repos/{owner}/{repo}/issues/{pull_number}/comments Body: Contains the suggested tests. 🔍 Design Rationale & Best Practices Focused Diff Analysis Targets only .tsx files to cover UI logic. Two-Stage AI Separate "generate" + "review" steps mimic TDD + code review. Stateless Functions Pure JS for parsing & transformation, easy to test. Non-Blocking PR Comments Asynchronous suggestions—developers aren't blocked. Scoped Permissions GitHub token limited to reading PRs & posting comments. An n8n automation workflow template by Varritech.
Varritech
web
paid
Others in the same category, ranked by how often they are opened.