How It Works
After Devin creates a PR, it can enter testing mode — a structured workflow where Devin:- Sets up the environment — installs dependencies, starts services, logs into required accounts
- Plans the test — reads the diff and codebase to create a minimal, focused test plan
- Records a video — starts a screen recording, executes the test plan in the desktop, and annotates key moments
- Sends you the result — stops the recording, processes the video, and sends it to you as a message attachment
Triggering a Test
After creating a PR, Devin will offer to test the app for you. Click Test the app to have Devin start the testing workflow.
A setting to automatically run testing after PR creation — without needing to click the button — is coming soon.
The Testing Workflow
When Devin enters testing mode, it follows a structured three-phase process:Phase 1: Setup
Before any testing begins, Devin prepares the environment:- Reads the PR and codebase to understand what needs testing
- Checks for relevant skills in the repo (under
.agents/skills/) and follows them if found - Logs into required services and resolves access issues
- Checks available environments (staging, dev, local) and verifies connectivity
- Requests missing secrets from you if needed — Devin will ask for credentials up front and save them for future sessions
Phase 2: Test planning
Once setup is complete, Devin writes a short test plan:- Identifies the single most important end-to-end flow that proves the feature works
- Writes concrete, unambiguous steps (e.g., “click the button labeled Save at the top right” — not “find the save option”)
- Grounds the plan in actual code — traces through the frontend to find the exact UI path to the feature
- Only adds additional test flows if there’s a genuinely critical edge case
Phase 3: Recording and execution
After CI is green and any review comments are addressed, Devin executes the test:- Starts recording — captures the full screen
- Annotates key moments — adds text labels at important points (e.g., “Testing login flow”, “Feature confirmed working”) that appear in the final video
- Executes the test plan — interacts with the app through the browser, following each step
- Stops recording — the video is automatically processed with annotations and speed adjustments around key moments
- Sends the video — attaches the recording to a message so you can watch it directly
Video Recording Details
Devin’s screen recordings have several features that make them useful for review:- Annotations — Text labels appear at key moments in the video, marking what Devin is testing. The video slows down around annotated points so you can see the details.
- Auto-zoom — The video automatically zooms into where Devin clicks and interacts, smoothly panning to follow the cursor and easing back out during idle moments.
- Automatic processing — Raw recordings are processed to highlight important actions and compress idle time
- Sent as attachments — Videos are attached to messages in your session, viewable directly in the Devin webapp or Slack
Skill Suggestions
After testing your app, Devin writes down what it tried and what worked — setup steps, environment configuration, how to start the app — and proposes creating or updating a Skill via PR. You can merge the PR as-is or tweak it to refine the instructions. Over time, this means Devin gets better at testing your project — each session’s learnings build on the last. You can also prompt Devin to do this at any time (e.g., “create a skill for how to test this app”). See the Skills guide for full details on creating and managing skills. Here’s an example of a testing skill:Good instructions
- “Test the checkout flow: add an item to cart, go to checkout, fill in the form, and verify the order confirmation page shows the correct total”
- “Verify the dark mode toggle works on the settings page — text should be readable and no elements should disappear”
- “Test that the CSV export downloads a file with the correct headers”
Vague instructions
- “Test everything”
- “Make sure the app works”
- “Check that nothing is broken”
