> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Testing & Refactoring

export const PromptBlock = ({children, type, agent, intent, playbookId}) => {
  var utm = 'utm_source=docs&utm_medium=use-case-gallery&utm_campaign=prompt-block';
  var tag = 'docs-use-case-gallery';
  var agentParams = (agent ? '&agent=' + agent : '') + (intent ? '&intent=' + intent : '') + (playbookId ? '&playbookId=' + playbookId : '');
  var label = type === 'schedule' ? 'Schedule in Devin' : type === 'playbook' ? 'Create Playbook' : type === 'knowledge' ? 'Add to Knowledge' : agent === 'advanced' ? 'Try in Devin' : agent === 'dana' ? 'Try in Dana' : agent === 'ada' ? 'Try in Ask Devin' : 'Try in Devin';
  var buildUrl = function (text) {
    var encoded = encodeURIComponent(text);
    if (type === 'schedule') return 'https://app.devin.ai/settings/schedules/create?' + utm + agentParams + '&prompt=' + encoded;
    if (type === 'playbook') return 'https://app.devin.ai/settings/playbooks/create?' + utm + '&body=' + encoded;
    if (type === 'knowledge') return 'https://app.devin.ai/knowledge?' + utm + '&body=' + encoded;
    if (agent === 'ada') return 'https://app.devin.ai/search?' + utm + '&noSubmit=true&prompt=' + encoded;
    return 'https://app.devin.ai/?tags=' + tag + '&' + utm + agentParams + '&prompt=' + encoded;
  };
  const ref = React.useRef(null);
  const [href, setHref] = React.useState('#');
  React.useEffect(() => {
    if (!ref.current) return;
    var codeEl = ref.current.querySelector('pre code');
    if (codeEl) {
      var text = codeEl.textContent.trim();
      if (text) setHref(buildUrl(text));
    }
    var header = ref.current.querySelector('[data-component-part="code-block-header"]');
    if (header && !header.querySelector('.prompt-block-devin-link')) {
      var link = document.createElement('a');
      link.href = href;
      link.target = '_blank';
      link.rel = 'noopener noreferrer';
      link.className = 'prompt-block-devin-link';
      link.style.cssText = 'display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:#fff;font-size:11px;font-weight:500;padding:4px 10px;border-radius:6px;white-space:nowrap;background:#317CFF;transition:background 0.2s;margin-left:8px;';
      link.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg> ' + label;
      link.onmouseenter = function () {
        link.style.background = '#2968D9';
      };
      link.onmouseleave = function () {
        link.style.background = '#317CFF';
      };
      header.appendChild(link);
    }
    var existingLink = ref.current.querySelector('.prompt-block-devin-link');
    if (existingLink && href !== '#') existingLink.href = href;
  });
  return <div className="prompt-block" ref={ref}>{children}</div>;
};

## Overview

Devin can analyze existing codebases, identify areas for improvement, or execute on refactoring requirements you share without breaking functionality.

## Common Use Cases

1. Writing and expanding test coverage
2. Code refactoring and optimization
3. API endpoint development and modification
4. Performance improvements
5. Code review and quality assurance
6. Automated testing workflows via the [API Reference](/api-reference/overview)

## Example Prompts

<AccordionGroup>
  <Accordion title="Write unit test" icon="magnifying-glass">
    <PromptBlock>
      ```txt Write unit test theme={null}
      Can you get https://github.com/markedjs/marked set up, use the command line tool with the --output/-o flag, then add a unit test to test the --output flag?
      There should already be similar tests in bin.test.js that you can add to.
      ```
    </PromptBlock>
  </Accordion>

  <Accordion title="Endpoint refactor" icon="gear-code">
    <PromptBlock>
      ```txt Endpoint refactor theme={null}
      Currently when users sends a POST to <endpoint>, we <describe endpoint behavior>. It would be better to split this endpoint into 2 separate endpoints because <explain reasoning>.
      <Describe what the first endpoint should do>.
      <Describe what the second endpoint should do>.
      Test by <explain how Devin can test each endpoint to verify it's on the right track>.
      ```
    </PromptBlock>
  </Accordion>

  <Accordion title="General refactor" icon="code">
    <PromptBlock>
      ```txt General refactor theme={null}
      In the slack server, refactor AppRegistry into its own file.
      ```
    </PromptBlock>
  </Accordion>
</AccordionGroup>

## Example Sessions

### Code Coverage Tutorial

Learn how to improve test coverage systematically through our detailed tutorial:

* Writing comprehensive unit tests
* Identifying coverage gaps
* Implementing missing test cases

[View the Code Coverage Tutorial](/use-cases/tutorials/code-coverage)

### Connect4 Code Refactor

A complete refactoring session showing:

* Code structure improvement
* Component separation
* Performance optimization
* Test coverage enhancement

**View Session:**
[https://app.devin.ai/sessions/8965de5e3ae0436985bf3dd2e1a5b4af](https://app.devin.ai/sessions/8965de5e3ae0436985bf3dd2e1a5b4af)

<iframe src="https://app.devin.ai/sessions/8965de5e3ae0436985bf3dd2e1a5b4af?embedded=true" width="100%" height="800px" />
